전체 글15 MVCC와 트랜잭션 격리수준 - MVCC (with. Real MySQL) 이번 글에서는 MVCC(Multi Version Concurrency Control) 와 트랜잭션 격리 수준을 이해하기 위해, 먼저 꼭 알아야 할 MySQL의 기본 개념을 소개하겠다. 내용은 Real MySQL 책을 참고하였으며, 개인적인 학습을 위해 요약·재구성한 글입니다.MySQL 엔진은위와 같이 구조로 되어 있다. 크게 MySQL 엔진스토리지 엔진으로 나뉘어 진다. 1) MySQL 엔진더보기MySQL 엔진은 클라이언트로부터의 접속, 쿼리 요청을 처리하는 커넥션 핸들러와SQL 파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저로 이루어져 있다. -> 한마디로 말하자면 SQL 실행을 설계, 결정하는 두뇌 역할을한다. 2) 스토리지 엔진더보기스토리지엔진은 데이터를 실제로 저장, 조회 등의 연산을.. 2025. 8. 22. Java HashMap 충돌 처리 : 체이닝, LinkedList ↔ Tree 전환, 설계 원리와 내부 동작 분석 Java 컬렉션 중 하나인 HashMap은 매우 자주 쓰고 일반적으로 O(1)의 조회 성능을 기대할 수 있다.그 이유는 내부적으로 HashTable 구조를 기반으로 key의 해시값에 따라 배열의 인덱스를 계산하여 데이터를 저장하고 조회하기 때문이다. 그런데 여기서 생기는 “해시 충돌” 문제는 어떻게 해결되고 있을까?이 글에서는 그 과정을 개념 → 코드 → 의문점 → 추론 흐름으로 정리했다. 1. 해시 충돌(Hash Collision)이란?서로 다른 두 객체가 같은 hashCode() 값을 갖는 경우이다.결국 동일한 배열 인덱스에 저장되어 있음충돌이 발생함이렇게 동일한 버킷에 여러 객체가 들어가는 상황이 발생한다. 충돌 해결 방법 1. 체이닝(Chaining)같은 인덱스에 여러 엔트리를 연결 리스트나 트.. 2025. 8. 7. [자료구조] ArrayList는 배열이 꽉찼을때 어떻게 하는가 Java의 ArrayList는 내부적으로 배열을 사용한다. 그런데 배열은 고정 크기를 가지고 있어서ArrayList가 꽉 찼을 때는 어떻게 새로운 데이터를 추가할수 있을까? 이번 글에서는 ArrayList의 내부 구현을 통해서 배열이 꽉 찼을 때 어떤 일이 벌어지는지 알아보겠다.1. 요소 추가 메서드 : add(E e)먼저 리스트에 요소를 추가하는 메서드인 add()를 알아볼것이다. 코드로 알아보자public boolean add(E e) { modCount++; add(e, elementData, size); return true;} 1-1. modCount++; modCount는 ArrayList의 부모 클래스인 AbstractList에 정의된 필드 이다. ✔️ modCount란?m.. 2025. 7. 31. [Heap] 직접 구현하자 이 글은 Heap 자료구조에 대한 개념을 이해하고 있는 상태에서직접 구현해보며 내부 동작 원리를 학습하기 위한 목적으로 작성되었습니다. https://hyeonni.tistory.com/42Heap 의 기본 개념 포스터이다. 요구사항배열(Array)로 구현하기크기 동적으로 조절하기reference type 도 사용할 수 있도록 제네릭 적용사용자 정의 비교 기준 지원 (Comparator 활용) 기능생성자초기 공간 할당 X초기 공간 설정 메서드getParentIndex(int index) : 부모 노드 인덱스 반환getLeftChildIndex(int index) : 왼쪽 자식 인덱스 반환getRightChildIndex(int index) : 오른쪽 자식 인덱스 반환resize() : 내부 배열 크기.. 2025. 7. 20. 개발자로서의 가치관 - 함께, 그리고 긍정적인 영향 이 글은 fiat_lux의 개발자로서의 가치관,그리고 그 바탕이 되는 삶의 가치관을 기록하기 위해 작성한 글이다. 이 글을 쓰는 이유는 단순하다.시간이 지나면 사람도 바뀌고, 가치관도 변한다.그래서 지금의 생각을 기록해 두고,앞으로의 나에게 되돌아볼 기준점이 되었으면 한다. "나는 코드를 짜는 사람이 아니라,사람에게 영향을 주는 개발자가 되고 싶다"1. 삶의 가치관 – ‘함께’ “나는 어떤 것을 가치 있게 여기는가?”라고 묻는다면가장 먼저 떠오르는 단어는 ‘함께’이다. 세상은 혼자 살아가는 것이 아니라,사람들과 함께 살아가는 과정 속에서 의미가 생긴다고 믿는다.그래서 나는 자연스럽게 팀워크를 기반으로 한 활동을 좋아하게 되었다. 예를 들어 나는 평소에 게임을 할 때도 혼자 하는 것보다 팀 게임을 더 선호.. 2025. 6. 9. 개발자로의 전향 (2) - 개발은 삶과 닮아 있다 정답을 찾지 않아도 괜찮다.개발도, 삶도 결국은 ‘더 나은 선택’을 향한 여정일 뿐이니까.개발은 삶과 닮아 있다 프리코스를 마친 후, 우연히 한 책에서 인상 깊은 문장을 읽었다. “우리가 삶에서 불안함을 느끼는 이유는 정답만을 찾으려 하기 때문이다.하지만 그 정답은 누군가에겐 오답일 수도 있고, 애초에 정답이란 게 없을 수도 있다.” 이 문장을 읽으며 문득 깨달았다.개발도 마찬가지다.정답이 없는 개발, 정답이 없는 삶개발에는 하나의 정답이 없다.같은 문제도 사람마다 다른 방식으로 풀 수 있고,누군가에겐 깔끔한 코드가 다른 이에겐 낯설게 느껴질 수도 있다. 결국 개발은문제를 정의하고, 시행착오 속에서 나만의 방식으로 풀어나가는 과정이다.이 점에서 개발은 삶과 참 많이 닮아 있다. 내가 생각하는 삶 나는 .. 2025. 6. 2. 이전 1 2 3 다음