[개발 일기] 2025.01.22 - static
·
개발 일기
개요 자바를 사용할 때 정말 밥 먹듯이 사용하던 static 키워드..  오늘은 static 키워드에 대해 정리해 보자.   static static의 사전적 의미는 ‘고정된’이다.  자바에선 이 static 키워드를 사용해 고정된 필드, 고정된 메서드를 만들 수 있다.  이렇게 고정된 필드, 고정된 메서드를 합쳐서 정적 멤버라고 표현한다.  만약 정적 멤버는 클래스가 클래스 로더에 의해 메모리에 저장될 때 함께 저장되는데, 이러한 정적 멤버는 한번 생성되면 자바 애플리케이션이 종료될 때까지 메모리에 남아있는다.  다음은 static이 적용된 클래스 예시이다. class Member { static int age; // 정적 멤버 (클래스에 속함) String name; // 인스턴스 필드 (..
[개발 일기] 2025.01.21 - TCP/IP
·
개발 일기
개요 TCP도 알고, IP도 안다.  그럼 TCP/IP는 뭘까?   TCP (Transmission Control Protocol) TCP란 전송 제어 프로토콜의 약자로 클라이언트와 서버 간의 신뢰성 있는 통신을 위해 만들어진 프로토콜이다.  신뢰성 있는 통신이 가능한 이유는 요청 이전에 송신자와 수신자 사이에 커넥션이 이루어지기 때문이다.  이 과정을 TCP 3 Way Handshake라고 한다.  TCP 3 Way Handshake란 상대 컴퓨터가 통신하기에 적절한 상태인지 체크하는 과정이다. SYN (Synchronize Sequence Numbers)클라이언트가 서버와의 연결을 요청하며, SYN 패킷(Sequence Number 포함)을 보낸다.클라이언트는 SYN_SENT 상태가 된다.SYN-AC..
[개발 일기] 2025.01.20 - 함수형 인터페이스
·
개발 일기
개요 이름부터 아찔하다. 함수형 인터페이스라니..  최근에 '이펙티브 자바'라는 개발 서적을 읽고 있는데, 그 안에 람다식에 대한 내용이 포함되어 있었다.  그래서 람다식에 대해 공부좀 해볼까 싶어서 살펴보니, 결국 함수형 인터페이스를 기반으로 한다는 것을 알게 되었다.  그래서 오늘 한번 간단히 함수형 인터페이스에 대해 일기를 써보게 되었다.   함수형 인터페이스 함수형 인터페이스란, 단 하나의 추상 메서드만을 가지는 인터페이스를 말한다.  … 생각보다 너무 단순한다.  아래의 코드도 함수형 인터페이스다.@FunctionalInterfacepublic interface MyFunction { // 하나의 추상 메서드 int add(int a, int b);}  (참고) 추상 메서드 추상 메서..
[개발 일기] 2025.01.19 - JWT(JWS, JWE)
·
개발 일기
개요 난 프로젝트에서 사용자의 인증・인가 기능에 대부분 JWT를 사용했다.  그 이유는 JWT의 간편함에 있다. 서버 입장에선 사용자의 정보를 따로 보관할 필요 없고(Refresh Token 예외), 토큰 내부엔 만료 일자와 사용자의 정보가 모두 포함되어 있기 때문이다.  하지만 JWT의 보안적인 단점도 존재하는데, 이 단점을 극복할 수 있는 기술이 JWE이다. (실제 현업에서 JWE가 사용되는 경우는 드뭄)  이처럼 인증・인가에 사용할 수 있는 토큰이 다양하다. 오늘은 그러한 토큰들에 대해 정리해 보자.   JWT 단점 JWE는 JWT의 암호화 기능을 추가한 기술이다. 이와 같이 따로 암호화된 토큰 기술이 있는 이유는 JWT에 암호화 기능은 없기 때문이다.  보통 JWT 토큰은 아래와 같은 문자열처럼 ..
[개발 일기] 2025.01.18 - Collectors
·
개발 일기
개요 요즘 자바 Stream 문법을 공부하고 있다.  그런데 Stream을 사용해 List 나 List , List 를 리턴할 때, 꼭 마지막에. collect(Collectors.toList()); 을 붙인다. 아래는 예시 코드이다. List streamList = list.stream() ... .collect(Collectors.toList()); 여기서 궁금한 점은 저 Collectors는 무엇인가이다.  그래서 오늘 Collectors 에 대해 정리해 봤다.   Collectors  위의 이미지는 Collectors 클래스에 달린 주석이다.  저 문장을 해석하면 다음과 같다. Collectors의 구현체들은 Collection에 요소를 축..
[개발 일기] 2025.01.17 - SSL
·
개발 일기
개요 위의 이미지를 처음으로 마주한 순간은 SSAFY에서 서버를 배포했을 때였다.  ‘이 사이트에 대한 연결은 안전하지 않습니다.’와 같은 경고창이 뜨는 이유는 위의 연결이 http 연결이기 때문이다.  웹 브라우저 입장에선 현재 클라이언트와 서버의 통신에 보안 계층이 추가되지 않았기 때문에 탈취의 위험이 있다고 판단한 것이다.  그렇다면 왜 기본 http 연결은 안전하지 않은지, 이 문제 해결 방법은 무엇인지 한번 정리해 보자.  참고로 현업에서 사용되는 대부분의 SSL은 TLS을 의미한다. 하지만 많은 분들이 TLS를 SSL이라고 표현해 나도 자연스럽게 SSL이라는 표현을 많이 사용하게 되었다.. 이 일기에서 나오는 SSL은 다 TSL이라고 생각하고 봐도 무방하다.   SSL (Secure Socke..