- 좋은 개발자가 되기 위해 하루동안 학습한 내용이나 개발관련 경험들을 간단한 기록으로 남긴다.
- Today I Learned인데 날짜를 표시하지 않는 이유는 조급해지지 않고 꾸준하기 위함이다.
- 출처 : namjunemy님의 github
- 폴더와 파일명은 영문으로 작성한다.
- 해당 문서를 다시 봤을 때, 추가적인 검색의 비용이 들지 않도록 자세히 기록한다.
- 더 많은 공유를 원하는 기록은 블로그에 포스팅한다.
- 쉴 땐 확실히 쉬고, contributions를 초록색으로 채우는 것에 집착하지 않는다.
- reference를 명시하고, 원작자가 참고를 허용하는 자료만 사용한다.
- 01. String과 char 배열, integer 사이의 변환
- 02. 여러 정렬 방식
- 03. 요세푸스 문제
- 04. DFS
- 05. BFS
- 06. 조합 with DFS / C++ STL
- 07. Union-Find Algorithm with disjoint-set
- 08. 최소 신장 트리 알고리즘
- 09. 다익스트라 알고리즘
- 10. 벨만-포드 알고리즘
- 11. 동적 프로그래밍
- 11-1. 최대 부분 증가 수열
- 12. 냅색 알고리즘
- 13. 플로이드-와샬 알고리즘
- 14. 위상 정렬
- 01. string in C++ STL
- 02. vector in C++ STL
- 03. stack with C++ STL
- 04. queue with C++ STL
- 05. priority queue in C++ STL
- 06. 그래프를 표현하는 인접 행렬과 인접 리스트
- 07. map in C++ STL
- 08. 세그먼트 트리
- 02. 느슨한 결합력과 인터페이스
- 03. DI
- 04. IoC Container
- 05. 의존성을 직접 주입하기
- 06. XML 기반의 DI 지시서 작성하기
- 07. 어노테이션 기반의 DI
- 08. XML 지시서를 어노테이션 기반으로 바꾸기
- 09. AOP
- 01. 스프링 부트의 의존성 관리
- 02. 자동 설정
- 03. 내장 웹 서버
- 04. SpringApplication
- 05. 외부 설정
- 06. 프로파일
- 07. spring-boot-starter-test
- 08. 스프링 부트가 제공하는 기능 in 스프링 웹 MVC
- 09. 스프링 부트가 제공하는 기능 in 스프링 데이터
- 10. 스프링 부트가 제공하는 기능 in 스프링 시큐리티
- 11. 스프링 부트 Actuator
- 01. JPA 시작 및 세팅하기, 기본 어노테이션
- 02. JPA Value Type Mapping
- 03. JPA 관계 매핑
- 04. JPA Entity 상태
- 05. JPA Cascade
- 06. JPA Fetch
- 07. JPA Query
- 08. 스프링 데이터 Commn JpaRepository
- 한 곳에 요약하였음
- DispatcherServlet
- DispatcherServlet의 작동 순서
- DispathcerServlet의 구성 요소
- MultipartResolver, LocaleResolver, ThemeResolver, HandlerMapping, HandlerAdapter, HandlerExceptionResolver, RequestToViewNameTranslator, ViewResolver, FlashMapManager
- 스프링 부트에서 제공하는 MVC customizing
- 스프링 MVC 구성 요소
- Formatter
- HandlerInterceptor
- ResourceHandler
- HTTP Message Converter
- 스프링 MVC 활용 : 요청 맵핑하기
- HTTP Method
- GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- 스프링 웹 MVC에서 HTTP Method 맵핑하기
- 배열로 여러 URI 패턴 한 번에 처리하기
- 요청 식별자로 맵핑하기
- 클래스에 선언한
@RequestMapping
과 조합 - 정규식 표현으로 맵핑
- 패턴이 중복되는 경우 가장 구체적인 핸들러로 처리한다.
- 미디어 타입
- 특정 타입의 데이터를 담고 있는 요청만 처리하는 컨트롤러
- 특정 타입의 응답을 만드는 컨트롤러
- Header Mapping
- 특정 헤더가 있는 요청을 처리하고 싶은 경우
- 특정 헤더가 없는 요청을 처리하고 싶은 경우
- 특정 헤더 key/value가 있는 요청을 처리하고 싶은 경우
- Parameter Mapping
- 특정 파라미터 키를 가지고 있는 요청을 처리하고 싶은 경우
- 특정 파라미터가 없는 요청을 처리하고 싶은 경우
- 특정 파라미터 key/value를 가지고 있는 요청을 처리하고 싶은 경우
- HTTP Method
- 스프링 MVC 활용 : 핸들러 메서드
- URI 패턴으로부터 값 가져오기
@PathVariable
@MatrixVariable
- 요청 매개변수 받아오기
@RequestParam
@ModelAttribute
@SessionAttributes
- 멀티 폼 서브밋
@SessionAttribute
RedirectAttributes
FlashAttributes
@RequestBody
@ModelAttribute
의 다른 사용법- 데이터 바인더
@InitBinder
- URI 패턴으로부터 값 가져오기
- 01. Spring vs Spring Boot
- 02. Web Server vs WAS
- 03. API vs Library vs Framework
- 04. DTO vs VO
- 05. JPA와 JDBC
- 06. Servlet & Spring
- 07. AOP
- 08. Web Polling vs Web Push
- 09. Cache와 실제 사용 사례
- 10. JVM의 Garbage Collector
- 한 곳에 정리하였음
- Git
- Git의 세가지 목적
- version, backup, collaborate
- Git의 종류
- Git의 세가지 목적
- 버전 관리
- Windows에서 Git 설치
- init : 새 저장소(repository) 만들기
- commit : 버전(version) 만들기
- diff : 버전 간의 차이점 비교
- checkout : 특정 버전으로 working tree를 변경시키기
- reset : 버전을 삭제하기
- revert : 버전을 삭제하지 않으면서 되돌리는 방법
- Branch & Conflict
- 브랜치의 사용법
- 브랜치의 병합
- 서로 다른 파일을 병합하려고 할 때
- 같은 파일, 다른 부분을 병합하려고 할 때
- 같은 파일, 같은 부분을 병합하려고 할 때
- conflict를 처리하는 방법
- 외부 도구를 이용하여 병합하는 방법
- Backup
- remote : 지역 저장소와 원격 저장소와 연결하기
- push : 지역 저장소의 버전을 원격 저장소로 업로드하기
- clone : 원격 저장소를 복제해서 지역 저장소로 만들기
- pull : 원격 저장소의 버전을 지역 저장소로 가져오기
- 협업
- 혼자 작업하기
- 같이 작업하기 (github의 collaborator 기능)
- 다른 사용자끼리 push, pull
- pull vs fetch
- patch
- Compare & Pull requests
- Cherry-pick & rebase
- cherry-pick의 개념과 기본 사용법
- Rebase의 개념과 기본 사용법
- cherry-pick vs rebase
- rebase vs merge