일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- BFS
- spring event
- 이분탐색
- 베타적락
- gRPC
- ai agent
- piplining
- 디버깅
- 몽고 인덱스
- langgraph
- 백준
- next-stock
- docker
- 프로그래머스
- 추천 검색 기능
- 누적합
- 완전탐색
- 결제서비스
- 셀러리
- 쿠키
- dau 3만명
- ipo 매매자동화
- 아키텍쳐 개선
- AWS
- 크롤링
- 알람시스템
- JPA
- 카카오
- 구현
- 관측가능성
- Today
- Total
목록2024/07 (16)
코딩관계론

싱글톤 패턴을 사용하는 이유웹 애플리케이션은 일반적으로 여러 고객이 동시에 request 요청을 보낸다. 만약 우리가 각 요청마다 새로운 Service 객체와 Controller 객체를 생성하고, 이러한 객체들이 Garbage Collector에 의해 소멸된다면 이는 자원의 낭비를 초래할 수 있다. 따라서 객체를 미리 생성하고, 이 객체를 공유하는 방식으로 사용하게 된다면 사용자의 요청과 상관없이 하나의 객체만 사용자의 요청을 처리하게 될 것이다. 이러한 비효율성을 해결하기 위해 싱글톤 패턴이 등장하게 되었다.싱글톤 패턴 구현 방법1. 객체 생성자를 private로 선언하자싱글톤은 객체를 하나만 생성하기 때문에 다른 곳에서 싱글톤 객체를 생성하지 못하게 해야 한다. 이를 위해 생성자를 private로 ..

클러스터링클러스터링이랑 군집화를 의미한다. 즉 물리적인 디스트크에 어떤 기준으로 데이터들이 군집되어 있다는 것을 말하는데 PK를 기준으로 클러스터링 인덱스를 자동으로 생성됩니다. 이 클러스터링은 테이블당 하나만 생성됩니다. 이는 당연한 것으로 물리적으로 정렬되기 때문입니다. 또한 항상 디스크에 정렬된 상태로 존재하기 때문에 데이터의 추가, 삭제, 업데이트 시 물리적으로 정렬하는 과정을 커쳐야 하기 때문에 성능 저하의 이슈가 될 수 있습니다. 클러스터링의 동작 방식은 배열의 삽입 연산과 동작이 같습니다. 따라서 최악의 경우에는 O(n) 성능으로 동작하게 됩니다.만약 UserTable에 데이터가 아래의 그림과 같이 존제하고, "aaaa@naver.com, testuser1"을 넣어야 한다면 어떻게 동작하게..

DB Connection PoolDB Connection Pool은 웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가 필요한 시점에 연결이 아닌 이 풀에서 객체를 전달하는 방식을 의미한다. 이를 통해 애플리케이션의 성능을 향상시키고, 자원 관리를 효율적으로 할 수 있다.DB Connection Pool이 필요한 이유는?네트워크 연결 비용 감소: 네트워크를 통해 DB에 접속하게 된다. 이 네트워크는 TCP/IP 기반으로 동작하기 때문에 네트워크가 연결을 수립하기 전에 3-way handshake를 맺어야 한다. 이 과정은 추가적인 비용이 발생하며, 사용자 입장에서는 지연 시간이 생기기 때문에 애플리케이션의 사용 경험에 부정적인 영향을 미친다..

JDBC(Java Database Connectivity)는 자바를 통해 데이터베이스에 접근할 수 있도록 해주는 API입니다. 이 API는 자바 응용 프로그램과 데이터베이스 사이의 연결을 관리하고 쿼리를 실행하며 결과를 처리할 수 있도록 표준 인터페이스를 제공합니다왜 JDBC 표준 API가 필요했을까?JDBC 표준 API가 필요했던 이유는 벤더사마다 기능 구현이 달라질 경우, 데이터베이스를 변경할 때마다 코드 수정을 해야 하는 번거로움을 방지하기 위해서입니다. JDBC는 다양한 데이터베이스 벤더의 드라이버를 추상화하여 일관된 방식으로 데이터베이스에 접근할 수 있게 해줍니다. 이를 위해 자바 진영에서는 Driver 인터페이스를 제공하고, 각 벤더사에서 해당 Driver를 구현하여 라이브러리로 배포하게 됩니..