전체 글 37

[카카오테크 부트캠프] 부하테스트 회고

백엔드 병목과 개선 사항1) N+1 문제 제거 (Room 참가자 조회)개선 전에는 방 참가자 정보를 만들 때, 참가자마다 findById()를 호출해 참가자 수만큼 DB 왕복(N+1)이 발생했다. 개선 후에는 참가자 ID를 모아 findAllById()로 한 번에 조회하도록 변경했다.// 개선: participantIds를 모아 findAllById 한 번으로 조회 후 변환.List participantIds = room.getParticipantIds() == null ? List.of() : room.getParticipantIds().stream().toList();List participants = participantIds.isEmpty() ? List.of..

회고 2025.12.29

[공모전 회고] 공개 SW 개발자 대회(오픈소스 개발자 대회) 회고

2025년 12월 5일 코엑스에서 진행한 시상식을 끝으로, 거진 1년간 이어진 긴 프로젝트가 마무리되었다.우리는 캡스톤 디자인으로 만든 프로젝트를 발전시켜 오픈소스 개발자 대회에 출전했다. 캡스톤 디자인 간략 회고 우리 팀은 졸업 작품(캡스톤 디자인)으로 완성도 높은 프로젝트를 만들기 위해 2024년 12월 26일부터 매일 아이디어 회의를 진행했다.아이디어 회의 이후 2개의 주제에 대해 구체화와 기획을 진행했지만, 구현 복잡성, 보안적인 문제 등 여러 문제들로 인해 엎고 주제를 다시 선정했다. (대충 "자영업자 대상 기프티콘 생성 서비스", "로그인 관리 및 일회용 로그인 지원 서비스"였다.)이런 과정을 통해 2025년 2월 25일, ‘온디바이스 기반 Graph-RAG 지식관리 시스템’이라는 주제를 확..

회고 2025.12.16

[DB]B-Tree vs B+Tree(관계형 데이터베이스가 B+Tree를 선택하는 이유)

B-Tree위 사진은 3차 B-Tree(즉 차수가 3인 B-Tree -> 자식을 최대 3개 가질 수 있다.)여기서 차수는 각 노드가 가질 수 있는 최대 자녀 수를 의미 : M (기준 파라미터)각 노드의 최대 키 갯수: M-1각 노드의 최소 자녀 노드 수 : ⌈M/2⌉ (각 노드의 키 값이 M개가 되면 split을 해야하기 때문)각 노드의 최소 키 갯수 : ⌈M/2⌉-1 (root, leaf 노드 제외)모든 leaf노드는 동일한 level에 있다. → balanced tree → 검색시 avg/worst case 시간 복잡도가 O(log N)노드 안에 key와 data가 있다. (여러개 가능) # 삽입무조건 leaf노드에 추가된다.노드가 넘치면 가운데 key를 기준으로 좌 우 key들을 분할한다. → 이때..

CS 2025.10.24

[멀티스레드와 동시성] - 스레드(Thread)

스레드란?스레드란 하나의 프로세스에서 동시에 실행될 수 있는 독립적인 실행 흐름 단위이다.자바 어플리케이션은 기본적으로 하나의 메인 스레드로 실행되지만 여러개의 스레드를 생성하면 동시실행이 가능하다.사용법Thread 클래스를 상속하거나, Runnable 인터페이스를 구현한 후, start()매소드를 호출해서 실행할 수 있다.Tread 클래스 상속Thread 클래스를 상속받고, run() 매소드를 오버라이드 하는 방식class GetMessage extends Thread{ @Override public void run(){ System.out.println("메시지 수신 스레드 실행 중: "+ Thread.currentThread().getName()); }}public cl..

JAVA,Spring 2025.09.18