| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- devops
- JPA
- java
- AbstractAggregateRoot
- 웹개발
- 캐시
- 인증
- db
- Spring Boot
- CS
- 프론트엔드
- SnowFalke
- redis
- 백엔드개발
- 백엔드
- interceptor
- 웹성능최적화
- 세션
- 백엔드개발자
- 데이터베이스
- 성능최적화
- 클린코드
- Spring
- DEVIEW2023
- 네트워크
- 인프라
- 보안
- spring event
- 백엔드기초
- http
- Today
- Total
목록java (5)
이것저것 개발기록
"백엔드 개발자의 최대 숙적, 널 포인트 예외!" 런타임에 갑자기 터지는 NPE를 막기 위해 우리는 어떤 노력을 해야 할까요? 코드를 더 견고하게 만드는 습관들을 소개합니다. 1. 왜 NPE가 무서운가? NPE는 컴파일 시점이 아닌 실행 시점(Runtime)에 발생합니다. 즉, 개발 환경에서는 멀쩡하다가 운영 서버에서 사용자가 서비스를 이용할 때 갑자기 에러가 터진다는 뜻입니다. 2. NPE를 피하는 3가지 필살기 🔒 Optional 활용하기: 값이 "없을 수도 있음"을 객체로 감싸서 명시합니다. 🔒 문자열 비교 시 리터럴을 앞에: if("ADMIN".equals(role)) 처럼 사용하면 role이 null이..
"C언어처럼 메모리를 직접 해제하지 않아도 되는 이유!" 자바의 자동 메모리 관리 시스템인 가비지 컬렉션(Garbage Collection)의 내부를 들여다봅니다. 1. 힙(Heap) 메모리 영역의 분할 GC는 효율적인 관리를 위해 힙 영역을 Young Generation과 Old Generation으로 나눕니다. 대부분의 객체는 금방 생성되었다가 사라진다는 가설(Weak Generational Hypothesis) 때문이죠. 2. GC 동작의 핵심: Mark and Sweep 1. Mark: 사용 중인 객체(Reachable)를 찾아 표시합니다. 2. Sweep: 표시되지 않은 객체들을 메모리에서 제거합니다. ..
지난 글(SnowFlake 적용기 - 구현)에서 실제로 SnowFlake를 적용해서 채번을 진행해보았다. 채번되어 나온 값은 크다면 크다고 할 수 있는 값이 나오게 되는데, 이렇게 해서 나온 값은 JavaScript에서 문제가 된다. 클라이언트에 값을 내려주고 로직을 처리하기 위한 데이터가 온전한 형태를 유지하지 못하는 모습을 확인할 수 있었다. 이것은 JavaScript의 자료형이 감당(?) 할 수 있는 크기를 넘어서 나온것이고, 실제 문서에도 지원하는 범위가 64비트보다는 작은 모습을 볼 수 있다. JavaScript의 타입과 자료구조 - JavaScript | MDN 모든 프로그래밍 언어에는 내장된 자료구조가 존재하지만 보통 그 내용은 언어마다 다릅니다. 이 글에서는 JavaScript에서 사용할 ..
해보자 지난 글(SnowFlake 적용기 - Unique한 값)에서는 SnowFlake를 조사하게 된 계기(?)를 이야기 했다. 이번에는 실제로 적용해보자. Twitter의 GitHub에 실제 채번을 위한 코드가 있지만, 이는 Scala로 작성되어 있었다. GitHub - callicoder/java-snowflake: Distributed Unique ID Generator in Java inspired by Twitter Snowflake Distributed Unique ID Generator in Java inspired by Twitter Snowflake - GitHub - callicoder/java-snowflake: Distributed Unique ID Generator in Java ..