본문 바로가기

전체 글252

BST / B tree / B+tree관련정보 Mysql을 공부하던 중, Mysql의 스토리지 엔진인 InnoDB에서는 인덱스를 관리할 때 B+tree 방식을 사용한다고 한다. 그래서 해당 방식을 차용하게 된 과정을 거슬러올라가며 개념을 정리하고자 한다! 그러기 위해서 우선 이진탐색 트리(BST)부터 시작하고자 한다. (자료는 점점 채워나갈 예정이다 ㅎㅎㅎ..) 이진탐색 트리 (BST) 모든 노드의 왼쪽 서브 트리는 해당 노드의 값보다 작은 값만 가지며, 오른쪽 서브트리는 큰 값만 가지는 형태 > 특징 1. 자녀 노드는 최대 2개까지만 가능 > 시간 복잡도 편향 트리일 땐 O(logN), 일반적일 땐 O(logN) BST의 해당 특징 및 시간복잡도로 인해서 선대 개발자님들은 고민을 하게 되었다. 1. 어떻게 하면 자녀 노드를 최대 2개가 아닌, 여러.. 2023. 3. 15.
Sychronization(동기화) / Synchronous(동기) / Asynchronous(비동기) 관련정보 그동안 막연하게 알고만 있었던 것들을 조금 더 자세히 공부해보았다. 위 개념에 대해 다루기 전에 관련 개념들부터 차근차근히 기재하고자 한다! 우선 Race Condition을 미리 알고 있어야 이해하기 편하다 Sychronization(동기화) Race Condition (경쟁 상태) 여러 프로세스 / 쓰레드가 동시에 같은 데이터(공유자원)을 조작할 때, 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 Synchronization (동기화) 여러 프로세스 / 쓰레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 Race Condition 예시코드 (싱글코어 기준, 동기화 실패현상) public class Counter{ private int state = 0; public void inc.. 2023. 3. 14.
★ 스택 트레이스(Stack Trace ) 읽는 법 정리 - 스택 트레이스란? · 프로그램이 시작된 시점부터 현재 위치까지의 메서드 호출 목록 · 이를 통해 예외가 어디서 발생했는지 알 수 있음 - 왜 스택 트레시를 볼 줄 알아야 하나? · 오류 발생 시, 문제의 정확한 원인이 무엇인지 알아야 문제상황을 해결할 수 있기 때문 · 정확한 문제 상황을 인지하지 못하면, 애꿎은 코드 및 환경설정만 손보다가 우연찮게 문제를 해결할 순 있어도, 장기적으로 보면 실력이 발전없이 멈추게된다. - 스택 트레이스 예시 public class StackTraceTest { public static void main(String[] args) {one();} public static void one() {two();} public static void two() {three();.. 2023. 3. 8.
Test 시리즈 1 (사용이유, 테스트 종류) 최근 알아보고 있는데, 양이 꽤 많아서 나눠서 올리는 게 아무래도 좋을 것 같다 ㅎㅎㅎ... Test 코드를 작성하는 이유 > 운영상 장애를 겪지않기 위해 조기에 테스트 진행 > 테스트를 작성하면서 리팩토링 개선 여지 확보 > 결함을 수정하며 일정 수준까지 품질을 높이기 위해서 Test 종류 - 단위 테스트 (Unit Test) · 가장 좁은 범위의 테스트 (테스트 대상은 클래스 혹은 메서드가 일반적) · 테스트 하고자하는 컴포넌트의 기능 자체만 테스트 (통합 테스트 대비 속도가 빠름) · 통합테스트와는 다르게, DB를 작동시켜 테스트하지 않음 => HTTP 혹은 메서드 응답을 확인하기 위한 테스트 (Mock 가짜데이터로도 충분히 가능함) - 통합 테스트 (integration Test) · 애플리케이션.. 2023. 3. 8.
Http 관련 핵심 요약정보 HTTP란? (HyperText Transfer Protocol) · 웹 브라우저와 웹 서버 간에 서로 소통하기 위한 통신규약을 의미함 · 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜 · TCP/IP 기반으로 되어있음 HTTP의 특징 · Connectless (비연결성) > 클라이언트가 서버에 요청을 보내면 서버가 클라이언트에 요청에 맞는 응답을 보내준 뒤, 바로 연결을 끊는다 · Stateless (무상태성) > 각각의 요청+응답 세트는 독립적으로 진행되며, 통신을 끝낸 뒤 별도로 상태 정보를 유지하지 않는다. 그래서 추후 다음 요청+응답을 진행하여도 이전에 보낸 요청+응답을 서로 알지 못한다 (이를 해결하기 위해 쿠키와 세션같은 상태정보 저장을 이용하여 로그인 정보를 저장하기도 함.. 2023. 3. 7.
2023.03.04 TIL (위치기반 정보공유 웹 신규 프로젝트 MVP 소개) 오늘 한 일 > 위치기반 실시간 정보교환 웹 "만남의 광장"(Place Of Meeting) 프로젝트 MVP구현완료 접속링크 : https://leetils.shop (현재 위치해있는 "도시" 기준으로, 동일한 "시"에 속한 사람들끼리만 게시판 및 오픈채팅을 공유할 수 있으니마음껏 이용해보세요ㅎㅎㅎ) 추후 할 일 > 만남의 광장 프로젝트 기능 추가 및 개선 2023. 3. 4.