| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- Generic method
- demand paging
- SPOF
- CORS
- optimistic lock
- API
- 단어변환
- Java
- TDZ
- ExceptionResolver
- COPYOFRANGE
- RequestMappingHandlerMapping
- cross-cutting concerns
- propagation
- IllegalStateException
- HandlerMethod
- 프로그래머스
- NestJS 요청흐름
- pessimistic lock
- CQS
- 벌크연산
- hoisting
- 역정규화
- generic type
- tracking-modes
- assertJ
- #@Transacional
- type eraser
- Transaction
- wrapper class
- Today
- Total
목록전체 글 (527)
jingyulog
Stack 클래스는 사용하지 말자자바의 Stack 클래스는 내부에서 Vector라는 자료 구조를 사용한다. 이 자료 구조는 자바 1.0에 개발되었는데, 지금은 사용되지 않고 하위 호환을 위해 존재한다. 지금은 더 빠른 좋은 자료 구조가 많다. 따라서 Vector를 사용하는 Stack도 사용하지 않는 것을 권장하며, 대신에 Deque를 사용하는 것이 좋다. Queue 자료 구조Queue 인터페이스는 List, Set과 같이 Collection의 자식이다. 이러한 Queue의 대표적인 구현체는 ArrayDeque, LinkedList가 있다. 참고로 LinkedList는 Deque와 List 인터페이스를 모두 구현한다.public class LinkedList extends AbstractSequential..
개요먼저 엔티티 매니저에 대해 알기 위해서는 영속성 컨텍스트에 대해 알아야 한다. 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로 1차 캐싱, 쓰기 지연, 변경 감지(dirty checking)를 통해 영속 로직을 효율적으로 할 수 있게 해준다. 이러한 효율적인 영속 로직 수행을 위해서 엔티티는 영속성 컨텍스트에 관리되어야 한다. 이런 작업을 도와주는 것이 엔티티 매니저이다.엔티티 매니저는 엔티티의 상태를 변경하고, 영속성 컨텍스트와 상호작용함으로써 영속 로직을 수행하는 역할을 가지고 있다.엔티티 매니저의 역할엔티티는 영속성 컨텍스트와 관련하여 4가지 상태(비영속, 영속, 준영속, 삭제)를 가질 수 있다.이때, 엔티티 매니저는 persist, merge, remove, close 메서드를 이용해 엔티티..
인증의 관점에서 쿠키의 어떤 설정이 어떤 공격을 막을까?먼저 쿠키의 각 설정의 역할은 다음과 같다.HttpOnly자바스크립트에서 document.cookie로 쿠키를 읽거나 수정할 수 없도록 설정하는 옵션이다.XSS 공격으로부터 쿠키 탈취를 방지해준다.access token, refresh token은 반드시 HttpOnly true옵션을 설정하여 XSS 공격을 방지해야 한다.CSRF 토큰은 클라이언트가 읽어야 하므로 HttpOnly 옵션을 false로 설정한다.즉, HttpOnly 쿠키는 JS에서 읽을 수 없으므로, axios나 fetch 등에서 헤더로 직접 전송할 수 없다.SecureHTTPS 연결에서만 쿠키가 브라우저에 전송되도록 하는 설정이다.MITM 공격으로부터 쿠키를 보호하는 역할을 한다.ac..
개요자바의 Map 인터페이스는 key-value 쌍을 저장하는 자료 구조이다. 즉, 인터페이스이기 때문에 직접 인스턴스를 생성할 수는 없고, 구현한 HashMap, TreeMap, LinkedHashMap 등을 통해 사용할 수 있다. Map vs Set사실 Map의 key는 Set과 같은 구조이다. Map은 모든 것이 key를 중심으로 동작하며 중복을 허용하지 않고 순서를 보장하지 않는다. 여기에 value는 단순히 key 옆에 붙어 Map이 되는 것이다.즉, Map과 Set은 거의 같고, value를 가지고 있는가 없는가의 차이만 있는 것이다. 이런 이유로 Set, Map의 구현체는 거의 같으며, 실제로 자바 HashSet의 구현은 대부분 HashMap의 구현을 가져다 사용하여, Map에서 value만..
Collection InterfaceCollection interface는 java.util package의 Collection Framework의 핵심 인터페이스 중 하나이다. 이 인터페이스는 자바에서 다양한 컬렉션. 즉, 데이터 그룹을 다루기 위한 메서드를 정의한다. 이 인터페이스는 List, Set, Queue와 같은 다양한 하위 인터페이스로 구현되며, 이를 통해 데이터를 List, Set, Queue 등의 형태로 관리할 수 있다.여기서 Set 인터페이스는 HashSet, LinkedHashSet, TreeSet 등의 여러 구현 클래스를 가지고 있으며, 각 클래스는 Set Interface를 구현하며 각각의 특성을 가지고 있다.1. HashSet해시 자료 구조를 사용해서 요소를 저장하며, 요소들은 ..
개요Set은 중복을 허용하지 않고, 순서를 보장하지 않는 자료 구조이다.따라서 이를 구현하는 방법은 단순하다. 인덱스가 없기 때문에 단순히 데이터를 저장하고, 데이터가 있는지 확인하고, 데이터를 삭제하는 정도면 된다. 그리고 중복을 허용하지 않기 때문에 데이터를 추가할 때 중복 여부를 체크하면 된다.add(value): set에 값을 추가한다. 중복 데이터는 저장하지 않는다.contains(value): set에 값이 있는지 확인한다.remove(value): set에 있는 값을 제거한다.MyHashSetV0의 문제점Set을 구현한 다음 MyHashSetV0 버전의 코드의 문제는 데이터를 추가할 때 중복 데이터가 있는지 체크하는 부분에서 성능이 O(n)으로 좋지 않다는 점이다. 왜냐하면 이때 중복 데이터..
