본문 바로가기

분류 전체보기61

[Java] Collections.emptyList( ) vs List.of( ) 개요 Socket 사이드 프로젝트를 하는 중에 List 타입의 해시태그 값들을 받는데, 테스트 코드를 작성하면서 빈 리스트를 반환해야 할 일이 생겨서 두 방법의 차이점은 무엇인지 쓴다면 어떤것을 써야하는지 헷갈려서 정리하게 된 글이다. - Collections.emptyList( ) EmptyList라는 클래스가 별도로 존재했고, 이를 List타입으로 캐스팅해 반환해 주고 있었다. EmptyList의 경우 get() 호출 시, IndexOutOfBoundsException을 터트리고, size( )는 0을 반환하고, isEmpty( ) 메소드 또한 true인것을 확인할 수 있다. 즉 완전히 빈 리스트를 정의하는 특징들을 갖고 있다. 위의 초록 글씨에서 볼 수 있듯이, Returns an empty lis.. 2024. 1. 25.
Stack / Queue Stack ⭐️Stack의 특징 1. 먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 구조 2. 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 함 3. 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임 4. 그래프의 깊이 우선 탐색(DFS)에서 사용 5. 재귀적(Recursion) 함수를 호출 할 때 사용 ⭐️ Stack의 사용법 import java.util.Stack; //import Stack stack = new Stack(); //int형 스택 선언 Stack stack = new Stack(); //char형 스택 선언 ⭐️ Stack값 추가 Stack stack = new Stack(); //int형 스택 선언 .. 2024. 1. 22.
DFS / BFS DFS( 깊이 우선 탐색 , Depth-First Search) 루트 노드( 혹은 다른 임의의 노드)에서 다음 분기(branch)로 넘어가기 전에, 해당 분기(branch)를 모두 탐색하는 방법. 탐색 후에는 다시 원점으로 돌아가 다른 분기를 탐색합니다. 특징 자기 자신을 호출하는 순환 알고리즘의 형태를 지닙니다. (재귀 or 스택) 이 알고리즘을 구현할 때 가장 큰 차이점은 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사 해야 한다는 것입니다. (이를 검사하지 않을 경우 무한 루프에 빠질 수 있다. ) ex) visit[index] = true; 미로를 탐색할 때, 해당 분기에서 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로(새로운 분기)로 돌아와.. 2024. 1. 22.
Spring Security + JWT를 이용한 로그인/회원가입 구현 JWT (Json Web Token) 이란? JWT는 웹 애플리케이션에서 사용자 인증 및 정보 교환을 위한 토큰 기반 인증 방식입니다. JWT는 토큰 자체에 사용자의 클레임(claim)정보를 포함하고 있으며, 이를 통해 서버간의 신뢰성 있는 정보 교환을 가능하게 합니다. 서버의 상태를 유지하지 않고도(Stateless) 토큰을 사용하여 인증을 처리할 수 있습니다. 토큰을 사용하여 클라이언트와 서버간 인증을 할 수 있습니다. Claim 이란? 클레임이란 사용자 정보나 데이터속성등을 의미한다. 클레임 기반 토큰은 토큰안에 정보를 담을 수 있는 특징이 있다. 클레임 기반 토큰은 아래예시와 같이 정보를 담고 있다. jwt는 클레임토큰중 가장 대표적인 것이다. payload에서는 claim이라는 property를.. 2024. 1. 19.
기본형(Primitive) vs 참조형(Reference) vs 래퍼 클래스(Wrapper Class) 참조형 (Reference Type) VS 기본형 (Primitive Type) • 자료형은 크게 '기본형'과 '참조형'으로 나뉜다. • 기본형(Primitive Type) : 계산을 위한 실제값을 저장한다. → 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) • 참조형(reference type) : 객체의 주소를 저장한다. → 8개의 기본형을 제외한 나머지 타입들 래퍼 클래스(Wrapper Class)란? • 기본형 데이터 타입(primitive type)을 객체로 변환한 클래스 • wrapper 클래스를 시용하면 기본형(primitive) 값을 객체로 다룰 수 있다. 래퍼 클래스(Wrapper Class) 사용 이유?.. 2024. 1. 19.
RequstBody / ResponseBody @RequestBody와 @ModelAttribute는 클라이언트 측에서 보낸 값을 오브젝트 형태로 매핑해줘서 사용할 수 있도록 제공하는 공통점이 있다. 하지만, 두 에노테이션은 큰 차이가 있기 때문에 특징 및 차이점에 대해서 살펴보자. 1. RequstBody @RequestBody 어노테이션은 HttpRequest의 본문 requestBody의 내용을 자바 객체로 매핑하는 역할을 합니다. 해당하는 어노테이션이 붙어있는 메서드로 클라이언트의 요청이 들어왔을 때, DispatcherServlet에서는 먼저 해당 HttpRequest의 미디어 타입을 확인하고, 타입에 맞는 MessageConverter를 통해 요청 본문인 requestBody를 통째로 변환해서 메서드로 전달해주게 됩니다. 이때 주의할 점으.. 2024. 1. 16.