# 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)
