인기글
최신글
[Java, 자바] Object클래스에 관하여
Java2024.06.23 23:40[Java, 자바] Object클래스에 관하여

Object클래스란?먼저 Object는 java.lang 패키지의 대표적인 클래스입니다. 자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object클래스입니다. 아래 그림을 보며 설명을 이어나가겠습니다.클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object 클래스를 상속 받습니다.쉽게 이야기해서 자바가 extends Object 코드를 넣어줍니다.따라서 extends Object는 생략하는 것을 권장합니다.클래스에 상속 받을 부모 클래스를 명시적으로 지정하면 Object를 상속 받짖 않습니다.쉽게 이야기해서 이미 명시적으로 상속했기 때문에 자바가 extends Object 코드를 넣지 않습니다.묵시적(Implicit) vs 명시적(Explicit)묵시적 : 개발자가 코드에 직접 기술하지 않아..

2024년 06월 회고록
기록2024.06.21 01:032024년 06월 회고록

백엔드 개발자로 입사한 지 어느덧 3개월 차.취업 시장은 아직도 혹한기인데 운 좋게 취업에 성공해 열심히 일하고 있다.꾸준하게 공부하면 더 나아질 것이라고 생각하고 하루도 거르지 않고 있다.하지만 뚜렷한 방향성을 가지고 공부하고 있냐고 물어본다면 확실하게 대답을 못하겠다.프로젝트를 하면서 그때, 그때 모르는 것들을 찾아 공부하고 포스팅하고, 깊지 않은 지식으로 이 정도면 되겠지라는 멍청한 생각으로 공부하고 있다는 생각이 들었다. 사실 지금와서 현실을 깨달았다는 것만으로도 다행이라고 생각한다.앞으로 공부할 때는 내가 공부하는 내용에 대해 왜 필요하고, 실무에는 어떻게 적용하는지, 본질이 무엇인지 지금 보다 더 꼼꼼히 블로그를 통해 기록하고 공부하려고 한다.회고록이자 좋은 개발자로 성장하기 위한 나의 새로운..

[IntelliJ] 인텔리제이 한글 인코딩 방법 [UTF-8]
설정2024.06.20 20:14[IntelliJ] 인텔리제이 한글 인코딩 방법 [UTF-8]

IntelliJ로 자바 프로젝트 중, 한글 깨짐 문제가 발생할 수 있습니다.이는 VM, 서버(Tomcat), 파일(JSP 등), DB에서 각각 사용하는 인코딩 방식이 달라서 발생합니다. 따라서 사용하는 모든 것들의 인코딩을 가장 범용적인 UTF-8 인코딩 설정을 하는 방법을 알아보겠습니다 !첫번 째 방법사진속 빨간 부분과 같이 동일하게 'UTF-8'로 변경해줍니다.두번 째 방법IntelliJ 상단에 [Help] -> [Edit Custom VM Options] 로 들어간 뒤 -Dfile.encoding=UTF-8 을 입력해주세요. 모두 진행하였으면 캐시를 날리신 다음 Restart까지 해주면 끝 !

Java, Spring
[Java, 자바] JVM의 동작원리와 기본개념
[Java, 자바] JVM의 동작원리와 기본개념
카테고리 없음
2024.06.18 20:30
자바는 OS에 독립적인 특징을 가지고 있다.JVM이 OS와 프로그램 사이에서 기계어로 해석해주는 역할을 하기 때문이다. Java의 탄생배경Java는 썬 마이크로시스템즈의 제임스 고슬링 이라는 사람과 다른 연구원들이 개발한 프로그래밍 언어입니다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년 발표가 되었다고합니다 ! 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 개발했는데 아이러니하게도 현재는 웹 어플리케이션 개발에 가장 많이 사용하는 언어 중에 하나가 되어있죠 ㅎㅎ 소문에 의하면 제임스 고슬링이라는 사람이 가전제품 내에 동작하는 프로그램을 개발하려고 하는데 그 당시에는 유닉스 기반의 배경을 가지고 있었기 때문에 사용하던 프로그래밍 언어 C/C++의 특성상 여러 하드..
[Spring, Spring Boot] @Value가 null일 때의 원인과 해결 방법
[Spring, Spring Boot] @Value가 null일 때의 원인과 해결 방법
Java
2024.06.17 19:44
@Value란 ?먼저 @Value 어노테이션의 경우 DB접속 정보나 비밀번호, secretKey와 같이 민감한 정보를 별도의 파일로 분리해서 환경 정보에 맞는 값을 불러오도록 하는 어노테이션입니다. application.properties 또는 application.yml에 값을 설정하면 필드나 메서드에 값을 주입해줄 수 있습니다 ! null을 반환할 때의 원인@Value 어노테이션이 property의 값을 받아오지 못하는 경우는 크게 네 가지가 있습니다 ! properties 이름을 잘못 입력했을 경우@Valse("${aws.secret-kee}")상단의 코드와 같이 properties에 등록한 이름과 다를 경우 null값을 반환합니다. Bean으로 등록되지 않은 경우클래스를 Bean(@Componen..
[Java, 자바] 추상 클래스(Abstract Class)와 인터페이스(Interface)는 언제 사용해야 될까?
[Java, 자바] 추상 클래스(Abstract Class)와 인터페이스(Interface)는 언제 사용해야 될까?
Java
2024.05.31 17:46
추상 클래스와 인터페이스의 특징추상 클래스(Abstract Class)추상 클래스(Abstract Class)는 인터페이스와 유사합니다. 인터페이스와 마찬가지로 인스턴스화 할 수 없으며, 구현을 포함하거나 포함하지 않은 메서드 모두를 가질 수 있다.하지만 인터페이스와 비교하여 추상클래스가 가질 수 있는 중요한 특징 중 하나는 필드를 가질 수 있따는 점이다. 그리고 해당 필드는 static 또는 final이 아닐 수 있으며, public이나 prorected 또는 private으로 선언할 수도 있습니다. 인터페이스를 사용하면 모든 필드가 public, static, final로 처리되면 모든 메서드는 public입니다. 또한 단일 클래스만 extends 할 수 있는 반면, 인터페이스는 여러개를 구현할 수 ..
[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)
[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)
Java
2024.05.27 21:49
어느날 문득 정리하고 데이터 받는 방법에 대해 정리하고 싶어졌다 !서버에서는 요청한 데이터를 전달 받는 방법은 다양하다 ! MVC 패턴에서 주로 사용하는 어노테이션을 위주로 정리해 보려합니다 ! @RequestBody@RequestBody는 클라이언트가 보내는 HTTP 요청 본문(JSON, XML 등)을 HttpMessageConverter를 통해 타입에 맞는 자바 객체로 변환해줍니다 !@PostMapping("/test")@ResponseBody // return datapublic String test(@ReqeustBody data) { ...} @RequestParam@RequestParam은 클라이언트가 요청할 때 쿼리스트링을 통해 넘어오는 매개변수를 추출할 수 있습니다 !required가 t..
[Java, 자바] static의 의미와 사용법
[Java, 자바] static의 의미와 사용법
Java
2024.04.16 19:00
Static이란 ?static은 정적이라는 뜻으로 '고정된'이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Stitic메서드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다.정적필드와 정적 메서드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나 즉시 바로 사용할 수 있습니다. 정적(Static) 멤버 생성Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든..
[Spring, Spring Boot] @Transactional의 중첩에 대하여
[Spring, Spring Boot] @Transactional의 중첩에 대하여
Java
2024.04.12 19:00
트랜잭션의 개념은 여기를 클릭하여 확인해보세요 ! @Transactional이  중첩이 되었을 때업무 중 @Transactional이 중첩이 되었을 때(아래와 같은 상황) 어떻게 진행될지 궁금해졌다 !@Transactionalpublic Info buy(String item){ payment newPayment = new payment(item); return payment(newPayment)}@Transactionalpublic Info payment(Info info){ buyRepository.save(info); return info;}buy 메서드에서 payment 메서드를 호출하고 있는데, 두 메서드 모두 @Transactional 어노테이션이 적용되어 있는 상태입니다. 트랙잭션의..
[Java, 자바] 싱글톤 패턴(Singleton Pattern)이란 ?
[Java, 자바] 싱글톤 패턴(Singleton Pattern)이란 ?
Java
2024.04.15 19:00
싱글톤 패턴이란 ?싱글톤 패턴은 객체 지향 프로그래밍에서 특정 클래스가 단 하나만의 인스턴스를 생성하여 사용하기 위한 패턴입니다.생성자를 여러번 호출하더라도 인스턴스가 하나만 존재하도록 보장하여 애플리케이션에서 동일한 인스턴스에 접근할 수 있도록 해줍니다 ! 싱글톤 패턴을 사용하는 이유는?커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 프로그램이 예상치 못한 결과를 낳을 수 있습니다. 따라서 객체를 필요할 때마다 생성하는 것이 아닌 단 한 번만 생성하여 전역에서 이를 공유하고 사용할 수 있게 하기 위해 싱글톤 패턴을 사용합니다 ! 싱글톤 패턴의 장단점장점유일한 인스턴스 싱글톤 패턴이 적용된 클래스의 인스턴스는 애플리케이션 전역에..
Linux
[Linux] 쓸모있는 Linux 명령어 모음집
[Linux] 쓸모있는 Linux 명령어 모음집
Linux
2024.05.21 16:01
개발 하면서 종종 사용하는 Linux 명령어 모음집 ! 계속계속 업데이트할 예정입니다~~Linux 명령어포트 죽이기kill -9 PID번호 실행 중인 포트 조회하기// 전체 포트 조회sudo netstat -nlpt// 특정 포트 조회sudo netstat -nlpt | grep 포트번호// 백그라운드에서 실행 중인 포트 조회sudo netstat -tuln DNS 정보 조회하기nslookup 도메인이름 ufw 방화벽 목록 확인하기sudo ufw status verbose ufw 방화벽에 포트 추가하기sudo ufw allow 포트번호 파일 권한 확인하기ls -al파일, 폴더에 권한 부여하기// 777은 모든 권한sudo chmod 777 파일이름 파일 내용 보기// 파일 내용 출력하기cat 파일명// ..
[Linux] nginx에 certbot으로 SSL(https) 보안 인증서 적용하기
[Linux] nginx에 certbot으로 SSL(https) 보안 인증서 적용하기
Linux
2024.05.04 19:19
프로젝트를 배포하고 SSL 설정은 급한게 아니라 천천히 하려고 했지만 배포한 http에서 cookie에 저장이 안되는 이슈가 생겼다....이유는 https 적용할 경우 해결된다고 해서 부랴부랴 cerbot으로 SSL 적용을 했다 ! Let's Encrypt이란 ?Let's Encrypt는 무료 SSL/TLS 인증서를 얻고 설치할 수 있는 인증 기관으로, 웹 서버에서 암호화된 HTTPS를 사용할 수 있도록 해줍니다. 또한 Certbot이라는 자동화 클라이언트를 제공하여 Apache 및 nginx에서 인증서를 획득하고, 설치하는 전체 프로세스가 자동화 되어있습니다.참고로 Let's Encrypt 인증서의 경우 유효기간은 3개월(90일)로 기간이 짧습니다. 가장 큰 이유로는 짧은 주기의 자동 갱신을 권장하여 ..
[Linux] Mac에서 기본 터미널로 외부 SSH 연결하기
[Linux] Mac에서 기본 터미널로 외부 SSH 연결하기
Linux
2024.05.08 13:01
Mac OS X는 UNIX기반의 운영체제로 OpenSSH SSH Client와 SSH Server를 기본적으로 포함하고있습니다 !Mac에서 사용할 수 있는 다양한 SSH 클라이언트 프로그램이 있지만, Mac에 설치되어있는 기본 터미널로도 원격지에 있는 서버에 SSH연결할 수 있습니다 ! 터미널로 SSH 연결하기어렵지 않게 아래의 명령어를 통해 원격지 서버에 SSH 연결을 할 수 있습니다.ssh [원결지서버 ID]@[원격지서버 HostName] -p [포트번호] 예) ssh root@10.10.10.12 -p 2233  서버의 포트번호가 ssh의 기본 포트번호 22번이라면 -p 옵션을 생략해줄 수 있습니다 !ssh [원결지서버 ID]@[원격지서버 HostName] 예) ssh root@10.10.10.12
[Linux] nginx에 certbot으로 SSL(https) 보안 인증서 적용하기
[Linux] nginx에 certbot으로 SSL(https) 보안 인증서 적용하기
Linux
2024.05.04 19:19
프로젝트를 배포하고 SSL 설정은 급한게 아니라 천천히 하려고 했지만 배포한 http에서 cookie에 저장이 안되는 이슈가 생겼다....이유는 https 적용할 경우 해결된다고 해서 부랴부랴 cerbot으로 SSL 적용을 했다 ! Let's Encrypt이란 ?Let's Encrypt는 무료 SSL/TLS 인증서를 얻고 설치할 수 있는 인증 기관으로, 웹 서버에서 암호화된 HTTPS를 사용할 수 있도록 해줍니다. 또한 Certbot이라는 자동화 클라이언트를 제공하여 Apache 및 nginx에서 인증서를 획득하고, 설치하는 전체 프로세스가 자동화 되어있습니다.참고로 Let's Encrypt 인증서의 경우 유효기간은 3개월(90일)로 기간이 짧습니다. 가장 큰 이유로는 짧은 주기의 자동 갱신을 권장하여 ..
[Linux] Eleasticsearch, Logstash 설치하기
[Linux] Eleasticsearch, Logstash 설치하기
Linux
2024.05.20 10:58
설치환경- Linux : Ubuntu 22.04- Eleasticsearch, logstash : 7.17.21Docker를 이용한 설치가 아닌 Ubuntu 자체에 설징하는 방법입니다 ! Java 설치하기OpenJDK를 설치한 후 진행하야됩니다 ! 아래있는 게시글을 통해 어렵지 않게 설치할 수 있습니다 ! [Java, Linux] Linux에 Java 17 설치하기설치환경- Linux : Ubuntu 22.04- JDK : openjdk-amd64 v17 설치하기① Ubuntu로 접속한 뒤 sudo 권한으로 apt를 업데이트한 이후 openjdk를 설치합니다.$ sudo apt update$ sudo apt install openjdk-17-jdk ② 설치한 자바 버전chanhan.tistory.com..
image