TIL 📃
강의, 책 등을 통해 배운 이론들을 정리한 공간입니다. 목록은 다음과 같습니다.
Java
Interview ✨
운영체제
운영 체제의 주요 목적
운영 체제의 기능
Threading,ProcessingThrashing
교착상태가 발생하기 위한 조건
교창상태 해결법
CPU 스케줄링 방법들
멀티 프로세스란?
멀티 프로세스 대신 멀티 쓰레드를 사용하는 이유
멀티 프로세싱과 멀티 프로그래밍의 차이
멀티 태스킹이란?
멀티 태스킹과 멀티 쓰레딩 비교
데이터베이스
인덱스를 효과적으로 사용하려면
인덱스 알고리즘
내부 조인과 외부 조인의 차이
RDB와 차이점
NoSQL이 더 빠른 이유
RDB와 NoSQL을 사용해야 할 때
트랜잭션 4가지 원칙(ACID)
트랜잭션 격리 수준
자바
자바는 call by value? call by reference?
call by value와call by reference차이 코드 예시
쓰레드 안전을 위한 4가지 방법
자바에서 쓰레드 안전하게 설계하는 방법
java.util.concurrent패키지란?
JVM 구조
GC 등장 배경
Heap 메모리 구조
GC 동작 방식
GC 여러가지 알고리즘
변성 & 와일드카드
병렬 스트림
Spring
스프링 핵심 원리
기본
순수 자바 설계(1) - 스프링 기술 없이 자바만으로 설계할 때 문제점
순수 자바 설계(2) - 자바만으로 설계했을 때 문제점을 해결해보고 스프링 기술 접목해보기
스프링 컨테이너(1) - 스프링 컨테이너 생성 과정과 컨테이너에 등록된 빈 조회하는 법
스프링 컨테이너(2) - 스프링 빈을 생성하는 여러가지 방법(
BeanFactory와ApplicationContext)싱글톤 컨테이너(1) - 싱글톤 패턴과 싱글톤 방식의 주의점(공유필드)
싱글톤 컨테이너(2) -
@Configuration에 대해컴포넌트 스캔 - 자동 빈 등록
의존관계 자동 주입(1) - 다양한 의존관계 주입 방법
의존관계 자동 주입(2) - 조회한 빈이 2개 이상일 때 구분하는 방법
빈 생명주기 - 스프링 빈의 생명주기 관리
빈 스코프(1) - 스프링의 다양한 빈 스코프, 프로토타입 스코프
빈 스코프(2) - 스프링이 다양한 빈 스코프, 웹 스코프
고급
동시성 문제 - 동시성 문제에 대해
쓰레드 로컬 - 동시성 문제를 해결하는 쓰레드 로컬에 대해
템플릿 메서드 패턴 - 템플릿 메서드 패턴에 대해
전략 패턴 - 전략 패턴에 대해
JDK 동적 프록시 - JDK 동적 프록시에 대해
CGLIB -
CGLIB과 프록시 팩토리에 대해포인트컷, 어드바이스, 어드바이저 - 포인트컷, 어드바이스, 어드바이저에 대해
빈 후처리기 - 프록시 팩토리를 적용했을 때 문제점을 해결하는 빈 후처리기에 대해
스프링이 제공하는 빈 후처리기 - 스프링 AOP 기술 접목
@Aspect AOP -
@Aspect에 대해스프링 AOP
개념 - 스프링 AOP에 대해 개념적으로 이해하기(적용 방식, 용어 등)
포인트컷 - 여러 포인트컷 지시자에 대해
execution -
execution문법within -
within문법args -
args문법@target, @within -
@target,@within에 대해@annotation -
@annotation에 대해bean -
bean에 대해매개변수 전달 - 포인트컷 표현식을 사용하여 어드바이스에 매개변수 전달
this, target -
this와target에 대해
예제 - 스프링 AOP를 활용하여 로그 출력과 재시도를 하는 AOP 구현해보기
주의사항 - 스프링 AOP 주의사항
프록시 내부 호출 - 프록시 내부 호출 문제와 여러가지 대안
프록시 기술과 한계 - 프록시 기술의 한계(타입 캐스팅, 의존관계 주입, CGLIB)와 스프링의 해결책
스프링 MVC
1편
웹 애플리케이션 - 웹 애플리케이션에 대한 전반적인 이해
서블릿 - 서블릿 컨테이너 동작 방식과
HttpServletRequest,HttpServletResponse에 대해JSP, MVC 패턴 - 서블릿과 JSP, MVC 패턴에 대해
MVC 프레임워크 만들기 - 프론트 컨트롤러 패턴으로 직접 MVC 프레임워크를 만들어보면서 컨트롤러에 대해 이해하기
스프링 MVC 구조 - MVC 프레임워크를 직접 만들어 본 것을 기반으로 스프링 MVC 구조 이해하기
스프링 MVC 기본 기능 - 스프링 MVC가 지원하는 요청과 응답의 여러가지 기능
2편
타임리프 기본 기능 - 타임리프와 타임리프 기본 문법
타임리프와 스프링 - 타임리프와 스프링 통합
메시지, 국제화 - 설정 파일(
.properties)을 활용한 메시지 관리와 국제화 서비스검증 Validation - 요청에 대한 검증을 순수 코드부터 애노테이션 적용까지 점진적으로 알아보기
로그인 처리(1) - 쿠키와 세션으로 로그인 처리를 구현하면서 쿠키와 세션 알아보기
로그인 처리(2) - 서블릿 필터와 스프링 인터셉터로 공통 관심사 해결
예외 처리와 오류 페이지 - 애플리케이션에서 예외가 발생했을 때 과정과 오류 페이지 관리
API 예외 처리 - API 예외 처리를 순수 코드부터 애노테이션 적용까지 점진적으로 알아보기
스프링 타입 컨터버 - 컨터버와 포맷터에 대해
파일 업로드 - 서블릿과 스프링으로 파일 업로드 해보기
스프링 DB
1편
JDBC - JDBC에 대해
커넥션 풀과 데이터 소스 - 커넥션 풀과 데이터 소스(
DataSource)에 대해트랜잭션 - 트랜잭션 개념과 트랜잭션 적용 해보기
스프링 트랜잭션 - 트랜잭션을 적용했을 때 문제점을 스프링으로 해결해보기
자바 예외 - 자바의 예외에 대해(체크, 언체크 예외)
스프링 예외 처리 - 스프링에서 예외 추상화를 하는 방법
2편
JdbcTemplate -
JdbcTemplate구현하면서 알아보기MyBatis -
MyBatis구현하면서 알아보기JPA -
JPA구현하면서 알아보기스프링 데이터 JPA -
스프링 데이터 JPA구현하면서 알아보기Querydsl -
Querydsl구현하면서 알아보기테스트 - 테스트 코드에서 DB 접근에 대해
활용 방안 -
스프링 데이터 JPA와Querydsl을 같이 사용할 때 트레이드 오프스프링 트랜잭션 - 스프링의 트랜잭션에 대해 더 알아보기
트랜잭션 전파(1) - 트랜잭션 전파에 대해
트랜잭션 전파(2) - 트랜잭션 전파 활용
스프링 부트
웹 서버와 서블릿 컨테이너 - 스프링 부트가 없는 과거 버전으로 개발해보기
내장 톰캣 - 내장 톰캣을 사용하여 여러 문제점들을 해결하고 스프링 부트 접목해보기
스프링 부트 스타터 - 스프링 부트가 라이브러리 버전 관리를 하는 방법
스프링 부트의 자동 구성 - 스프링 부트의 자동 구성에 대해
JPA
스프링 데이터 JPA
공통 인터페이스 - 스프링 데이터 JPA의 구조
쿼리 메서드 기능(1) - 메서드 이름으로 쿼리 생성,
@Query등에 대해쿼리 메서드 기능(2) - 페이징,
@EntityGraph등에 대해확장 기능 - 스프링 데이터 JPA를 확장하여 사용할 수 있는 기술들(
Auditing,Web확장 등)분석 - 스프링 데이터 JPA가 사용하는 구현체와 새로운 엔티티를 구별하는 방법에 대해
그 외 기능들 - 프로젝션과 Native Query
CS 💻
OS
PCB -
PCB와컨텍스트 스위칭에 대해CPU Scheduling -
CPU 스케줄링에 대해(FCFS,SJF등)Memory -
Memory영역에 대해OS - 운영체제(
OS)에 대해Process -
Process,Thread,멀티 태스킹에 대해
자료구조 📊
GIT
Branch
기본적인 브랜치 다루는 방법 - 생성, 확인, 이동, 삭제 등
브랜치 합치기 -
merge와rebaseGit의 merge 전략 -
fast-forward,3-way merge, 다양한merge옵션들에 대해다른 브랜치 - 다른 브랜치에서 원하는 커밋 가져오기(
cherry-pick), 파생된 브랜치 옮겨붙이기(rebase --onto), 커밋들 하나로 묶어 가져오기(--squash)Gitflow - 협업을 위한 브랜칭 전략
Git 더 알아보기
Git의 3가지 공간 -
Git이 파일을 관리하는 방법에 대해(+reset의 3가지 옵션)HEAD -
HEAD라는 개념을 활용하는 방법fetch vs pull -
fetch와pull의 차이점Help -
Git help에 대해Config - 설정값 보기, 단축키 설정 등
Git config관련 명령어
원격 저장소
원격 저장소 -
GitHub에 대해로컬과 원격 연결
원격 저장소에서 프로젝트 가져오기
pull을 하는 두 가지 방법
분석과 디버깅
log -
git log의 다양한 옵션들차이 살펴보기 - 파일, 커밋, 브랜치의 차이를 CLI로 알아보는 방법
오류 발생지점 찾기 -
git으로 오류가 발생하는 커밋 지점을 찾는 방법
Algorithm 🧠
시간 복잡도 - 시간 복잡도 표기법과 활용에 대해
Last updated