# Contents

* 정리해서 남주기

## Schedule

* 월요일

| 주제           | Tags | 참여인원    | Github                                                                          | 남은기간                     | 요약                                                                                                                                                                                                                                    |
| ------------ | ---- | ------- | ------------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 스프링 부트 웹 기본  | 완료   | SR 외 7인 | [Link](https://github.com/spring-org/springboot_board)                          | 2020/06/08 \~ 2020/08/20 | <p>- SpringBoot 기반 웹 프로젝트 개발 시 필요한 내용이 무엇인지 파악하게 된 스터디 <br> - SpringBoot, JPA, Swagger를 이용한 backend API Server 개발 <br> - Spring JPA, Security, Batch</p>                                                                              |
| 스프링 부트 시큐리티  | 완료   | SR 외 7인 | [Link](https://github.com/spring-org/spring-security)                           | 2020/09/18 \~ 2020/12/16 | <p>- Spring Security 학습 스터디 <br> - 현업에서 커스텀되어 개발된 프로젝트에서 시큐리티 부분이 어떤 부분인지 알게된 스터디 <br> - 스프링 시큐리티 기본 API & Filter <br> - Security 주요 아키텍처 이해 <br> - Authentication 프로세스 구현 (Form인증, Ajax 인증) <br> - Authorization 프로세스 구현 (DB 연동)</p> |
| 알고리즘         | 완료   | SR 외 7인 | [Link](https://github.com/SeokRae/java_sample/tree/master/programmers)          | 2020/10/13 \~ 2021/01/13 | <p>- 프로그래머스 코딩테스트 고득점 Kit <br> - 알고리즘 학습하는 방법을 배우는 스터디 <br> - 해시, 스택/큐, 힙, 정렬, 완전탐색, 탐욕법 까지 진행하고 마무리</p>                                                                                                                              |
| 코딩 인터뷰 완전 분석 | 완료   | SR 외 7인 | [Link](https://github.com/SeokRae/java-in-action/tree/master/java-in-interview) | 2021/01/19 \~ 2021/04/12 | <p>- 자료구조 학습 <br> - 알고리즘에서 사용할 수 있는, 자바에서 제공하는 자료구조를 구현하기 <br>  - leetCode를 참조</p>                                                                                                                                                    |
| 디자인 패턴       | 완료   | SR 외 7인 | [Link](https://seokrae.gitbook.io/sr/design)                                    | 2021/04/19 \~ 2021/06/21 | <p>- 디자인 패턴 <br> - 창조 패턴 <br> - 구조 패턴 <br> - 행동 패턴</p>                                                                                                                                                                                |
| 데이터베이스       | 진행중  | SR 외 4인 | [Link](https://seokrae.gitbook.io/sr/database/database/sql_levelup)             | 2021/07/05 \~            | <p>- SQL 레벨업 <br></p>                                                                                                                                                                                                                 |

* 화요일

| 주제        | Tags | 참여인원           | Github                                                 | 남은기간               | 요약                                |
| --------- | ---- | -------------- | ------------------------------------------------------ | ------------------ | --------------------------------- |
| 이펙티브 자바   | 완료   | Meet-Coder     | [Link](https://seokrae.gitbook.io/sr/java-1/effective) | 2021/05 \~ 2020/07 | - Effective Java 3/E 발표 및 정리 스터디  |
| RealWorld | 진행중  | RealWorld-Club | [Link](https://github.com/realworld-club)              | 2021/09/08 \~      | - Realword 프로젝트 SpringBoot 기반 다지기 |

* 토요일

| 주제         | Tags | 참여인원       | Github                                                       | 남은기간                     | 요약                                                                                                                                                                |
| ---------- | ---- | ---------- | ------------------------------------------------------------ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 스프링 배치     | 완료   | SR 외 4인    | [Link](https://github.com/spring-org/springbatch_summary)    | 2020/08/20 \~ 2020/12/12 | <p>- Spring Batch 기본 개념 학습 <br> - 기본 프로세스 학습할 수 있는 구조 설계(File, DB) <br> - 메타 스키마 분석, 스케쥴링 방식 <br> - 기본 프로세스에서 최적화 방식 학습</p>                                       |
| 엘라스틱 서치    | 완료   | SR 외 4인    | -                                                            | 2020/12/10 \~ 2021/02/02 | <p>- ElasticSearch 기본 개념과 사용하는 방식을 공부하기 위한 스터디 <br> - Single Cluster 구축, 인덱스 구축 방식, client 기반 crud 코드 작성 <br> - 6.x, 7.x 버전 RestHighLevelClient 기반 API 코드 테스트</p> |
| 기술 스택 정리   | 완료   | SR 외 1인    | -                                                            | 2021/02/25 \~ 2021/03/31 | <p>- ORM(JPA) - RDB(MySQL) <br> - 오브젝트 <br> - Spring MVC1 \~ 2</p>                                                                                                |
| 블로그 포스팅 5기 | 완료   | Meet-Coder | [Github](https://github.com/Meet-Coder-Study/posting-review) | 2021/07/10 \~ 2021/09/25 | <p>- 블로그 포스팅 <br> - 주제: 데이터베이스 SQL</p>                                                                                                                            |

## Table Of Contents

### Book

* [도메인 주도 설계](https://seokrae.gitbook.io/sr/book/domain_driven_design)
  * [1. 동작하는 도메인 모델 만들기](https://seokrae.gitbook.io/sr/book/domain_driven_design/_1_-_-_-_)
* [오브젝트](https://seokrae.gitbook.io/sr/book/object)
  * [데이터 중심 설계](https://seokrae.gitbook.io/sr/book/object/_1)
  * [책임 중심 설계](https://seokrae.gitbook.io/sr/book/object/_2)
  * [책임 할당을 위한 GRASP 패턴](https://seokrae.gitbook.io/sr/book/object/_3)
  * [메시지와 인터페이스](https://seokrae.gitbook.io/sr/book/object/_4)
  * [객체 분해](https://seokrae.gitbook.io/sr/book/object/_5)
* [Effective Java](https://seokrae.gitbook.io/sr/book/effective)
  * [Item 7 - 다 쓴 객체 참조를 해제하라](https://seokrae.gitbook.io/sr/book/effective/item_7)
  * [Item 7 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_7_ppt)
  * [Item 13 - clone 재정의는 주의해서 진행하라](https://seokrae.gitbook.io/sr/book/effective/item_13)
  * [Item 13 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_13_mystyle)
  * [Item 16 - public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_16)
  * [Item 16 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_16_ppt)
  * [Item 26 - 로 타입은 사용하지 말라](https://seokrae.gitbook.io/sr/book/effective/item_26)
  * [Item 28 - 배열보다는 리스트를 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_28)
  * [Item 28 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_28_ppt)
  * [Item 29 - 이왕이면 제네릭 타입으로 만들라](https://seokrae.gitbook.io/sr/book/effective/item_29)
  * [Item 30 - 이왕이면 제네릭 메서드로 만들라](https://seokrae.gitbook.io/sr/book/effective/item_30)
  * [Item 31 - 한정적 와일드 카드를 사용해 API 유연성을 높이라](https://seokrae.gitbook.io/sr/book/effective/item_31)
  * [Item 35 - ordinal 메서드 대신 인스턴스 필드를 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_35)
  * [Item 37 - ordinal 인덱싱 대신 EnumMap을 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_37)
  * [Item 37 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_37_ppt)
  * [Item 43 - 람다보다는 메서드 참조를 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_43)
  * [Item 43 발표 정리](https://seokrae.gitbook.io/sr/book/effective/item43_ppt)
  * [Item 56 - 공개된 API 요소에는 항상 문서화 주석을 작성하라](https://seokrae.gitbook.io/sr/book/effective/item_56)
  * [Item 56 발표 정리](https://seokrae.gitbook.io/sr/book/effective/item_56_ppt)
  * [Item 62 - 다른 타입이 적절하다면 문자열 사용을 피하라](https://seokrae.gitbook.io/sr/book/effective/item_62)
  * [Item 62 발표 정리](https://seokrae.gitbook.io/sr/book/effective/item_62_ppt)
  * [Item 73 - 추상화 수준에 맞는 예외를 던지라](https://seokrae.gitbook.io/sr/book/effective/item_73)
  * [Item 83 - 지연 초기화는 신중히 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_83)
  * [Item 83 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_83_ppt)
  * [Item 89 - 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라](https://seokrae.gitbook.io/sr/book/effective/item_89)
  * [Item 89 발표 내용](https://seokrae.gitbook.io/sr/book/effective/item_89_ppt)
* [개발자를 위한 SQL 튜닝](https://seokrae.gitbook.io/sr/book/tune)
  * [SQL 쿼리 실습을 위한 DB 서버 구축](https://seokrae.gitbook.io/sr/book/tune/_1)
  * [**인덱스 튜닝**](https://seokrae.gitbook.io/sr/book/tune/_1_1)
  * [인덱스 스캔 튜닝](https://seokrae.gitbook.io/sr/book/tune/_2)
  * [인덱스 스캔 튜닝 실습](https://seokrae.gitbook.io/sr/book/tune/_3)
  * [인덱스 패스트 풀 스캔](https://seokrae.gitbook.io/sr/book/tune/_4)
  * [테이블 풀 스캔 튜닝](https://seokrae.gitbook.io/sr/book/tune/_5)
  * [**조인 튜닝**](https://seokrae.gitbook.io/sr/book/tune/_6)
  * [중첩 루프 조인 튜닝](https://seokrae.gitbook.io/sr/book/tune/_7)
  * [중첩 루프 조인 튜닝 실습](https://seokrae.gitbook.io/sr/book/tune/_8)
  * [**해시 조인 튜닝**](https://seokrae.gitbook.io/sr/book/tune/_9)
  * [해시 조인 튜닝 실습](https://seokrae.gitbook.io/sr/book/tune/_9_1)
  * [**세미 조인 튜닝**](https://seokrae.gitbook.io/sr/book/tune/_10)
  * [세미 조인 튜닝 실습](https://seokrae.gitbook.io/sr/book/tune/_10_1)
  * [아우터 조인](https://seokrae.gitbook.io/sr/book/tune/_11)
  * [함수 튜닝](https://seokrae.gitbook.io/sr/book/tune/_12)
  * [**부분 범위 처리 튜닝**](https://seokrae.gitbook.io/sr/book/tune/_13)
  * [파티셔닝 튜닝](https://seokrae.gitbook.io/sr/book/tune/_16)
  * [파티셔닝 프루닝](https://seokrae.gitbook.io/sr/broken-reference)
  * [파티션 인덱스 튜닝](https://seokrae.gitbook.io/sr/broken-reference)
  * [병렬 처리 튜닝](https://seokrae.gitbook.io/sr/book/tune/_17)

### Concept

* [Network](https://github.com/SeokRae/TIL/tree/7753b0875a5f63ba37b976bc8eb011e24d314d3a/network.md)
* [Design Pattern](https://seokrae.gitbook.io/sr/java-1/design)
  * [Intro](https://seokrae.gitbook.io/sr/java-1/design/_intro)
  * [Types of Design Patterns](https://seokrae.gitbook.io/sr/java-1/design/_types_of_design_patterns)
  * **Creational**
    * [Builder Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_builder)
    * [Singleton Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_singleton)
    * [Prototype Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_prototype)
    * [Factory Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_factory)
    * [Abstract Factory Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_abstract_factory)
  * **Structural**
    * [Adapter Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_adapter)
    * [Bridge Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_bridge)
    * [Composite Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_composite)
    * [**Decorator Pattern**](https://seokrae.gitbook.io/sr/java-1/design/structural/_decorator)
    * [Facade Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_facade)
    * [Flyweight Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_flyweight)
    * [Proxy Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_proxy)
  * **Behavioural**
    * [Chain of Responsibility Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_chain_of_responsibility)
    * [Command Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_command)
    * [Interpreter Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_interpreter)
    * [Iterator Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_iterator)
    * [Mediator Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_memento)
    * [Memento Pattern](https://seokrae.gitbook.io/sr/broken-reference)
    * [Observer Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_observer)
    * [State Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_state)
    * [Strategy Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_strategy)
    * [Template Method Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_template_method)
    * [**Visitor Pattern**](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_visitor)
* [Network](https://seokrae.gitbook.io/sr/readme)
  * [Web Security](https://seokrae.gitbook.io/sr/broken-reference)
* [Web Software Architecture](https://seokrae.gitbook.io/sr/readme)
  * [소프트웨어 아키텍처의 다양한 계층](https://seokrae.gitbook.io/sr/broken-reference)
  * [데이터 캐싱](https://seokrae.gitbook.io/sr/broken-reference)
  * [메시지 대기열](https://github.com/SeokRae/TIL/tree/7753b0875a5f63ba37b976bc8eb011e24d314d3a/architecture/10_social_alarm_service.md)
* [AWS](https://seokrae.gitbook.io/sr/readme)
  * [AWS 자격증 시험 공부하기](https://seokrae.gitbook.io/sr/broken-reference)
    * [Design Resilient Architectures](https://seokrae.gitbook.io/sr/1_design_resilient_architectures)
    * [Design High Performing Architectures](https://seokrae.gitbook.io/sr/2_design_high_performing_architectures)
    * [Design Secure Applications And Architectures](https://seokrae.gitbook.io/sr/3_design_secure_applications_and_architectures)
    * [Design Cost-Optimized Architectures](https://seokrae.gitbook.io/sr/4_design_cost_optimized_architectures)
  * [IAM](https://seokrae.gitbook.io/sr/broken-reference)
* [궁금증](https://seokrae.gitbook.io/sr/readme)
  * [자바 8 버전의 인터페이스와 추상클래스](https://seokrae.gitbook.io/sr/java-1/undefined/interface_vs_abstract)
  * [자바의 제네릭은 어떻게 이전 버전과 호환되는 걸까?](https://seokrae.gitbook.io/sr/java-1/undefined/generics)
  * [스프링 MVC 기본 구조](https://seokrae.gitbook.io/sr/java-1/undefined/dispatcher_servlet)
  * [마샬링과 직렬화](https://seokrae.gitbook.io/sr/java-1/undefined/marshalling_n_serialization)
  * [인터뷰 질문 모음](https://seokrae.gitbook.io/sr/java-1/undefined/java_interview_summary)
  * [Code Coverage](https://seokrae.gitbook.io/sr/java-1/undefined/code_coverage)

### Database

* [Database](https://seokrae.gitbook.io/sr/database/database)
  * [SQL 레벨업](https://seokrae.gitbook.io/sr/database/database/sql_levelup)
  * [DB 스터디](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc)
    * [DBMS](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-07-17-db-dbms)
      * [MySQL](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-07-17-db-dbms/2021-07-24-db-mysql-architecture)
    * [INDEX](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-07-23-db-index)
    * [Join(Nested Loop, Hash)](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-08-07-db-join)
    * [Join(Semi, Outer)](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-08-07-db-join2)
    * [Partial Range Processing](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-08-21-db-partial)
    * [Function](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-09-04-db-function)
    * [Partitioning](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-09-04-db-partitioning)
    * [Parallel Processing](https://seokrae.gitbook.io/sr/database/database/2021-07-17-db-toc/2021-09-04-db-parallel)

### Practice

* [Java](https://seokrae.gitbook.io/sr/java-1/java)
  * [Cracking the Coding Interview](https://seokrae.gitbook.io/sr/java-1/java/cracking_the_coding_interview)
  * [TDD, Clean Code with Java 11기](https://seokrae.gitbook.io/sr/java-1/java/tdd)
    * [자동차 레이싱](https://seokrae.gitbook.io/sr/java-1/java/tdd/racing)
    * [로또](https://seokrae.gitbook.io/sr/java-1/java/tdd/lotto)
    * [사다리 타기](https://seokrae.gitbook.io/sr/java-1/java/tdd/ladder)
    * [볼링 게임 점수판](https://seokrae.gitbook.io/sr/java-1/java/tdd/bowling)
* [Docker](https://seokrae.gitbook.io/sr/readme)
  * [Oracle with Docker](https://seokrae.gitbook.io/sr/broken-reference)
  * [MySQL with Docker](https://seokrae.gitbook.io/sr/broken-reference)
* [Spring Jpa](https://seokrae.gitbook.io/sr/spring/spring-jpa)
  * [1. 데이터 모델링 및 연관관계 설정](https://seokrae.gitbook.io/sr/spring/spring-jpa/springboot-jpa-shop)
  * [2. 최적화 내용](https://seokrae.gitbook.io/sr/spring/spring-jpa/springboot-jpa-shop-optimize)
  * [3. Spring-Data-Jpa](https://seokrae.gitbook.io/sr/spring/spring-jpa/springboot-jpa-data)
  * [4. Query DSL](https://seokrae.gitbook.io/sr/spring/spring-jpa/springboot-jpa-querydsl)
* [Spring Security](https://seokrae.gitbook.io/sr/spring/spring-security)
  * [Intro](https://seokrae.gitbook.io/sr/spring/spring-security/_1)
* [Spring Batch](https://seokrae.gitbook.io/sr/spring/batch-study)
  * [배치용 디비 설치](https://seokrae.gitbook.io/sr/spring/batch-study/_1)
  * [배치 데이터 분석하기](https://seokrae.gitbook.io/sr/spring/batch-study/_2)
  * [배치 프로세스 구상하기 및 성능 차이 확인하기](https://seokrae.gitbook.io/sr/spring/batch-study/_3)
* [Issue](https://seokrae.gitbook.io/sr/readme)
  * [Git Push Error](https://seokrae.gitbook.io/sr/architecture/issue/issue-git-push)
  * [SonarLint Warning - assertThatExceptionOfType()](https://seokrae.gitbook.io/sr/architecture/issue/junit_assert_exception)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://seokrae.gitbook.io/sr/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
