ArrayList가 add를 수행하는 방법
Java 2022. 4. 11. 00:06

들어가며 ArrayList는 어떤 과정으로 add를 수행할까? 교수님께서 X만큼씩 커진다고 하셨던 게 기억나는데, 자세히 기억나지는 않아서 정리해보려고 한다. add에 대해 살펴보려고 하는 만큼, ArrayList에 대해서는 이미 알고 있다고 가정하고 정의나 메서드의 의미 등 기초 내용에 대해서는 설명하지 않는다. 예시 자, 여기 한 ArrayList numbers가 있다. List numbers = new ArrayList(); 질문! numbers에는 몇 개의 값을 넣을 수 있을까? - 용량을 지정하지 않았으므로 기본값인 10이 capacity가 된다. 그럼 값을 추가해보자. for(int i = 0; i 0 || elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA..

FNF 제 1회 발표 - 회고편
Presentation 2022. 4. 4. 22:59

들어가며 첫 발표를 마쳤다! 나를 제외하고도 세 분의 발표자가 더 계셨는데, 모두 유익한 발표였다. (NoSQL, CORS, 암호화까지 모두 정말 좋은 주제!) 발표에 대한 피드백 받기까지 일주일이 좀 더 걸렸지만, 받고나니 정말정말정말정말 뿌듯했다. 피드백 내용을 공유하고, 짧은 발표였지만 회고를 적어보려고 한다. 발표준비 준비는 여러 날에 걸쳐 진행했다. 대략 4-5일 정도 소요되었던 듯하다. 프레젠테이션 자료를 작성한 것은 3-4시간 남짓이었지만, 그 전에 책을 읽고 블로그에 정리하며 이해하는 시간까지 모두 발표를 위한 또 내 공부를 위한 과정이었다. 주제는 준비편에서도 적었듯 MySQL의 B-Tree Index! (시간 관계상 블로그에 적은 것만큼 많은 내용을 다루지는 못해서 아쉬움이 남지만 다음..

Spring REST Docs + ɑ 도입기
Spring 2022. 4. 4. 22:36

- 부제 : 테스트를 통과하면 문서가 생성되는 서비스가 있다?! - 들어가며 이 글에서는 Spring REST Docs, openapi3, swaggerUI를 다룰 것이다. 각각에 대해 자세히 다루지는 않겠지만, 세 가지의 서비스를 한번에 적용하는 글이 많지 않아 직접 정리해볼 생각이다. 왜 Spring REST Docs일까? swagger Documentation, 하면 swagger를 떠올리는 사람들이 많을 것 같다. 첫 프로젝트를 할 때에는 그것조차 몰라서 google spread sheet로 API 명세서를 정리하곤 했다. 그러다 API 테스트까지 해볼 수 있는 툴(이게 swagger였다.)이 있다는 걸 알게 됐지만, 사용하고 싶지는 않았다. annotations 컨트롤러에 많은 annotatio..

FNF 제 1회 발표 - 준비편
Presentation 2022. 3. 27. 16:04

FNF FNF는 Fail Not Found의 약자로, 한 달동안 공부한 내용을 공유하는 발표 모임이다. 비대면 온라인으로 진행되며 2022.03.27.일요일 첫 번째 모임이 진행된다. 제 1회 발표자로서 그동안 열심히 준비해 발표하게 됐다. 발표자로 참여하겠다고 했을 때에는 운영체제 내용을 발표하고 싶었지만, 데이터베이스 설계를 새로 할 일이 생겨 겸사겸사 Index에 대해 공부해야 했기 때문에 주제도 B-Tree Index로 정했다. 준비하며 정리한 글 - Index 개요 : https://heather-dev.tistory.com/22?category=1014946 - Index 구조 및 추가/수정/삭제 : https://heather-dev.tistory.com/23?category=1014946 ..

2. Meaningful Name
Clean Code 2022. 3. 25. 02:26

들어가며 읽기 쉬운 코드, 이해하기 쉬운 코드를 위해 네이밍에 시간을 들이지만 쉽지 않았다. 이 변수/메서드/클래스의 존재이유나 역할을 생각해 단어를 찾아보지만 생소한 단어가 나오거나 이름이 길어질 뿐이었다. 클린 코드를 읽기 시작한지 얼마 되지 않았지만, 지금 가장 필요한 방법에 대해 알려주는 글이라 생각되어 내용을 정리한다. 의미 있는 이름 짓기 의도를 분명히 밝혀라 변수/메서드/클래스의 이름은 다음과 같은 세 가지 질문에 모두 답할 수 있도록 지어야 한다. (1) 존재 이유 (2) 수행 기능 (3) 사용 방법 예시 상담원에게 담당자가 없는 문의 건들을 배분하는 메서드의 이름을 지으려고 한다. (기능 상세) - 매니저가 사용할 기능이다. - 매니저는 자신이 담당하는 카테고리의 문의 건과 상담원을 관리..

B-Tree Index (4)
MySQL 2022. 3. 25. 00:14

들어가며 지난 글인 B-Tree Index(3)에서는 인덱스를 통해 Data를 읽는 방법을 살펴봤다. 그 방법에는 네 가지가 있는데, 아래에 정리했다. (1) Index Range Scan (2) Index Full Scan (3) Loose Index Scan (4) Index Skip Scan 이 글에서는 그 두 번째, Index Full Scan에 대해 정리해보겠다. Index Full Scan 언제 사용될까? 대표적으로, 조건절에 사용된 컬럼이 인덱스를 구성하는 첫번째 컬럼이 아닌 경우에 인덱스 풀 스캔이 적용된다. 다만 쿼리가 인덱스에 명시된 컬럼만으로 조건을 처리할 수 있는 경우 주로 이 방식이 사용되고, 인덱스 뿐 아니라 데이터 레코드까지 모두 읽어야 한다면 절대 이 방식으로 처리되지 않는다..

B-Tree Index (3)
MySQL 2022. 3. 24. 00:17

들어가며 지난 글 B-Tree Index(2)에서는 인덱스 사용에 영향을 주는 요소들을 살펴보았다. 네 가지 요소가 영향을 줄 수 있음을 알게 되었고, 요소들은 아래에 정리되어 있다. (1) 키 값의 크기 (2) B-Tree 의 깊이 (3) 기수성과 선택도 (4) 읽어야 하는 레코드 건수 이 요소들이 인덱스 사용에 미치는 영향을 알았으니, 이번 글에서는 B-Tree Index를 통해 데이터를 읽는 방법에 대해 살펴보자. 그 전에 데이터를 읽는 방법에 대해 알아보기 전에 먼저 스캔에 대해 알아보자. 스캔 스캔은 인덱스를 차례대로 읽는 것을 말한다. 위에서부터 아래, 즉 정방향으로 읽거나 아래에서부터 위, 즉 역방향으로 읽는 것 모두 스캔이라고 한다. 방법 MySQL B-Tree Index를 사용해 데이터를..

B-Tree Index (2)
MySQL 2022. 3. 23. 01:28

들어가며 지난 글인 B-Tree Index(1) 에서는 네 부분에 대해 알아보았다. (1) B-Tree의 구조 (2) B-Tree Index를 사용해 레코드를 읽는 방법 (3) B-Tree Index의 추가, 삭제, 변경 (4) B-Tree Index를 사용한 검색 이 글에서는 B-Tree Index 사용에 영향을 미치는 요소에 대해 알아보겠다. B-Tree Index 사용에 영향을 미치는 요소 Page InnoDB 엔진에서 데이터를 저장하는 기본 단위이다. Block이라고도 한다. 디스크 모든 I/O 작업의 최소 작업 단위다. 버퍼 풀에서 데이터를 버퍼링하는 기본 단위이기도 하다. Page의 기본값은 16KB이다. Index도 페이지 단위로 관리되며 루트노드, 브랜치노드, 리프노드를 구분하는 기준 또한..