이펙티브 자바 모음
자바 컴파일 과정
JVM
자바 쓰레드 관리의 시작
자바 쓰레드 관리의 발전
자바가 Call By Reference가 아닌 이유
static 변수, 메소드 정리
추상 클래스, 인터페이스
Overriding, Overloading
가비지 컬렉션(feat. Paralle GC, CMS GC, G1 GC)
String, StringBuilder, StringBuffer
Comparable
Collection Framework
equals, hashcode
Lambda
Stream
예외 처리
ThreadLocal
JDBC
Java Reflection이란 무엇인가? (feat. 스프링 DI의 원리, JPA 기본 생성자)
Java의 foreach 문의 내부 동작 방식 (feat. Iterator, Iterable)
Java의 synchronized와 Atomic Type에 대해서
직렬화는 무엇이고 왜 필요한 것일까?
Getter를 무분별하게 사용하면 안되는 이유
Java에서 배열이 객체인 이유와 메모리 할당에 대해서
Java Virtual Thread 에 대해 알아보자
스프링을 사용하는 이유
Spring과 Node.js 비교하기
오브젝트와 의존관계
테스트
템플릿
예외
서비스 추상화
서블릿
MVC 웹 프레임워크 구현하기
MVC 웹 프레임워크
Logging
PRG Post/Redirect/Get
thymeleaf
메세지, 국제화
validation
쿠키, 세션
서블릿 필터
스프링 인터셉터
동적 프록시 기술
프록시 팩토리
빈 후처리기
트랜잭션
바이너리 데이터를 처리하는 방법
Spring에서 멀티 쓰레드 비동기 프로그래밍 해보기
Spring에서 공통 로직을 처리하는 방법 - 로그인 방식으로 알아보기
스프링 빈을 싱글톤으로 유지하는 방법과 이유
HTTP 특징
HTTP 메소드
HTTP Status Code
HTTP Header
물리 계층(L1), 데이터 링크 계층(L2)이 하는 일
네트워크 계층(L3)이 하는 일(feat. IP, 라우터, ARP, NAT...)
트랜스포트 계층(L4)이 하는 일(feat. 포트, TCP, UDP, QUIC)
애플리케이션 계층(L7)이 하는 일
웹 브라우저가 메세지를 만든다(feat. HTTP, DNS, OS 프로토콜 스택, 소켓)
TCP/IP를 이용한 통신 알아보기(feat. 소켓, LAN 어댑터, UDP)
로그인 방식 비교하기 (세션 방식 VS 토큰 방식)
서버가 처리할 수 있는 요청의 수는 어떻게 결정될까?
HTTP의 버전별 특징(0.9, 1.0, 1.1, 2.0)
개발바닥 장학 퀴즈를 정리해 보자
데이터베이스를 사용하는 이유, DBMS
SQL
데이터 타입
정규화
트랜잭션
인덱스
MySQL 엔진 아키텍처
InnoDB 스토리지 엔진 아키텍처
무작정 데이터 타입을 VARCHAR(16683)로 하면 안되는 이유
DB의 동시성 문제는 어떻게 해결해야 하나?
Lock을 사용한 격리와 MVCC가 나온 이유
RDB는 정말 유연한 설계에 대응하는 것이 어려울까?
필터링 검색 기능은 어떻게 구현되는 것일까? (feat. inverted index)
MVCC 만으로 팬텀 리드를 막을 수 있을까?
테스트 코드에서 @Transactional 사용에 대한 끊임 없는 논쟁
저희 팀에서는 이렇게 테스트 코드를 작성해요
제어할 수 없는 영역을 테스트 하는 방법
문제가 많은 Layerd Architecture를 살려보자
도메인과 DB 엔티티를 분리하는 이유
복잡한 비즈니스 로직을 풀어내는 방법
조건문이 많아질 때 List<인터페이스>를 사용해보자
JPA를 사용하는 이유
영속성 관리
엔티티 매핑
연관관계 매핑 기초
다양한 연관관계 매핑
고급매핑
프록시와 연관관계 관리
값 타입
Git 시작하기
버전 관리
Branch
원격 저장소 사용하기