이 사이트의 실습은 자바스크립트를 켜야 움직입니다. 아래는 같은 내용을 글로 적은 것입니다.
기초개념
개념의 세부 동작을 보기 전에, 그 개념이 코드에서 어떻게 생긴 것인지와 없으면 어떻게 되는지를 봅니다.
Java
- 변수와 타입 — 변수는 무엇이고, 타입은 무엇을 정하는가
- 메서드 — 메서드는 무엇이고, 선언하는 것과 부르는 것은 어떻게 다른가
- 클래스와 객체 — 클래스와 객체는 어떻게 다른가
- 참조 — 변수에 객체를 담는다는 것은 무슨 뜻인가
- null — null은 무엇이고, 왜 NullPointerException이 나는가
- 생성자 — 생성자는 무엇이고, 언제 실행되는가
- static — static은 무엇이고, 붙이면 무엇이 달라지는가
- 상속 — extends는 무엇을 물려주는가
- 인터페이스 — 인터페이스는 코드에서 어떻게 생겼고 무엇을 정하는가
- 예외 — 예외는 무엇이고, try-catch는 무엇을 해 주는가
- 제네릭 — List<String>의 <String>은 무엇을 해 주는가
- List와 Map — List와 Map은 무엇을 담고, 어떻게 꺼내는가
- 람다 — 람다는 무엇을 줄여 쓴 것인가
- 스트림 — 스트림은 무엇이고, for 문과 무엇이 다른가
- 애너테이션 — 애너테이션은 무엇이고, 붙이면 무슨 일이 생기는가
- 스레드 — 스레드는 무엇이고, start()는 무엇을 하는가
- 락(synchronized) — 락은 무엇이고, 없으면 무슨 일이 생기는가
- 스레드 풀 — 스레드 풀은 무엇이고, 스레드를 매번 만드는 것과 무엇이 다른가
- 컴파일과 JVM — 자바 코드는 어떻게 실행되는가
- 파일 입출력 — 파일에 쓰고 읽는다는 것은 무엇을 주고받는 것인가
- 라이브러리와 의존성 — 라이브러리는 무엇이고, 없으면 어떻게 되는가
Spring
- 빈 — 빈은 무엇이고, 그냥 만든 객체와 무엇이 다른가
- 의존성 주입 — 의존성 주입은 무엇을 대신해 주는가
- AOP와 프록시 — 프록시는 무엇이고, 스프링은 어떻게 내 메서드 앞뒤에 끼어드는가
- 서블릿 — 어떤 클래스를 서블릿이라고 부르는가
- 컨트롤러 — 어떤 클래스를 컨트롤러라고 부르는가
- 설정 파일 — 설정 파일은 무엇이고, 코드에 적는 것과 무엇이 다른가
- JDBC — 자바 코드는 어떻게 DB에 SQL을 보내는가
- @Transactional — @Transactional은 무엇을 묶어 주는가
- 스프링 부트 — 스프링 부트는 무엇을 대신해 주는가
- 테스트 코드 — 테스트 코드는 무엇이고, 통과와 실패는 누가 정하는가
JPA
- 엔티티 — 엔티티는 무엇이고, 일반 클래스와 무엇이 다른가
- 영속성 컨텍스트 — 영속성 컨텍스트는 무엇이고, 무엇을 해 주는가
- 리포지토리 — 리포지토리는 무엇이고, 구현은 누가 만드는가
- 연관관계 — 연관관계는 무엇이고, @ManyToOne은 무엇을 해 주는가
- 지연 로딩 — 연관된 객체는 언제 DB에서 읽어 오는가
- JPQL — JPQL은 무엇이고, SQL과 무엇이 다른가
DB
- 테이블, 행, 열 — 테이블은 어떻게 생겼고, 행과 열은 무엇인가
- 기본 키 — 기본 키는 무엇이고, 없으면 무엇이 달라지는가
- 외래 키 — 외래 키는 무엇이고, 없으면 무엇이 달라지는가
- WHERE — WHERE는 무엇을 정하고, 없으면 어떻게 되는가
- 조인 — 조인은 무엇을 이어 붙이고, ON은 무엇을 정하는가
- GROUP BY와 집계 — GROUP BY는 무엇을 묶고, COUNT와 SUM은 무엇을 세는가
- 인덱스 — 인덱스는 무엇이고, 없으면 무엇이 달라지는가
- 트랜잭션 — 트랜잭션은 무엇을 묶고, COMMIT과 ROLLBACK은 무엇을 하는가
- 행 잠금 — 두 트랜잭션이 같은 행을 고치려 하면 무슨 일이 생기는가
- 저장과 지속성 — 커밋한 데이터는 서버가 꺼져도 남는가
네트워크
- IP 주소와 포트 — IP 주소와 포트는 각각 무엇을 가리키는가
- TCP 연결 — 연결을 맺는다는 것은 무엇이고, 연결 없이 보내면 어떻게 되는가
- URL — URL은 어떤 부분들로 이루어져 있는가
- DNS — DNS는 무엇을 무엇으로 바꿔 주는가
- HTTP 요청 — HTTP 요청은 어떻게 생긴 글인가
- HTTP 메서드 — GET과 POST는 무엇이 다른가
- HTTP 응답 — HTTP 응답은 어떻게 생긴 글인가
- 쿠키 — 쿠키는 무엇이고, 누가 저장하고 누가 보내는가
- JSON — JSON은 어떻게 생긴 글이고, 무엇이 틀리면 읽히지 않는가
- HTTPS — HTTPS는 HTTP와 무엇이 다른가
- 프록시 서버 — 프록시 서버는 무엇이고, 사이에 끼면 무엇이 달라지는가
보안
- 인증과 인가 — 인증과 인가는 어떻게 다른가
- 세션 — 세션은 무엇이고, 로그인한 상태는 어디에 기억되는가
- 토큰 — 토큰은 무엇이고, 서버는 무엇을 보고 믿는가
- 해시 — 해시는 무엇이고, 비밀번호를 왜 해시로 저장하는가
- 암호화 — 암호화는 무엇이고, 열쇠가 없으면 어떻게 되는가
- 출처(origin) — 출처는 무엇이고, 브라우저는 왜 다른 출처를 가르는가
- 입력과 인젝션 — 사용자가 입력한 글이 코드로 읽히면 무슨 일이 생기는가
구조와 운영
- 프로세스 — 프로세스는 무엇이고, 프로그램을 두 번 실행하면 무엇이 따로인가
- 다른 서버 부르기 — 서버가 다른 서버를 부르는 것은 메서드를 부르는 것과 무엇이 다른가
- 로드 밸런서 — 서버를 여러 대 두면 요청은 어느 서버로 가는가
- 캐시 — 캐시는 무엇이고, 쓰면 무엇을 얻고 무엇을 잃는가
- 메시지 큐 — 메시지 큐는 무엇이고, 직접 부르는 것과 무엇이 다른가
- 배포 — 코드를 고치면 실행 중인 서버는 언제 바뀌는가
- Git 커밋과 브랜치 — 커밋은 무엇이고, 브랜치는 무엇을 가리키는가