"HTTPS는 어떻게 동작할까?"를 파고들다 보니 생각보다 엮인 개념이 많았어. > 내가 헷갈렸던 순서 그대로 정리해 볼게. > "공개키로 암호화하면 되는 거 아냐?" → "근데 그 공개키를 어떻게 믿지?" → "중간에 해커가 끼어들면?" 1. HTTP는 왜 위험할까
JPA를 처음 배우면서 헷갈렸던 개념들을 정리했습니다.기본 키 생성 전략, Flush, 준영속 상태, JPA Auditing, JpaRepository 동작 원리까지 다룹니다.@Id와 기본 키 생성 전략(2. Flush: 영속성 컨텍스트의 동기화(3. 준영속 상태와 m
엔티티가 생성/수정될 때 시간을 자동으로 기록해주는 JPA Auditing 기능을 이해하자.매번 createdAt = LocalDateTime.now()를 직접 쓰지 않아도 자동으로 처리되는 원리를 익히자.JPA는 엔티티 생명주기마다 전/후로 실행할 수 있는 이벤트 훅
자바의 예외는 크게 Exception과 RuntimeException 두 가지로 나뉜다.Exception: 컴파일러에 의해 엄격하게 감시된다. 따라서 try-catch 문을 사용하거나 throws로 처리해야 한다.RuntimeException: 컴파일러가 확인하지 않
이전 포스팅에서 안전한 로그인 흐름을 구현해 보았다. 그렇다면 성공적으로 로그인한 사용자의 '상태'는 어떻게 유지할 수 있을까? 웹 생태계에서 이를 해결하는 대표적인 두 가지 정답은 세션(Session) 기반 인증과 토큰(Token, JWT) 기반 인증이다.세션 기반
CRUD 구현이 어느 정도 완료되면 회원 기능을 위해서 로그인 기능이 필요하다. 즉 보안 구현이 필요하다. 다음 말을 꼭 기억하자. "보안은 잘하는 것이 아니라 보안사고가 나는 구조로 코드를 짜서는 안되는 것이다."처음 로그인 기능을 구현하다 보면 암호화가 꼭 필요한
지금까지는 파일 입출력(read, write)을 수행할 때 버퍼를 이용하는 방식을 사용해왔다. mmap은 파일을 프로세스의 가상 메모리 주소 공간에 직접 매핑하여, 마치 메모리를 다루듯이 파일을 다룰 수 있게 해주는 기능이다.이제 파일 데이터를 페이지 단위로 관리하며
지금까지 구현한 프로젝트에서 USER_STACK은 단일 페이지로 고정되어 있었다. 이제 프로세스가 실행되면서 스택이 현재 크기를 초과할 경우, 필요에 따라 추가 페이지를 할당하여 스택을 확장해 주는 기능을 구현해야 한다.핵심은 페이지 폴트가 발생했을 때, 이것이 유효한
핵심: 물리 메모리의 크기 한계를 극복하기 위해 디스크(Swap/File) 를 메모리의 연장선으로 사용한다. 원칙: Lazy Loading (게으른 로딩)당장 필요하지 않으면 메모리에 올리지 않고 장부(SPT)에만 적어둔다.실제로 필요해서 접근할 때(Page Faul
Phase 1: 하드웨어 초기화 (Assembly)\_start ()컴퓨터 전원이 켜지면 가장 먼저 실행되는 코드입니다.CPU를 64비트 모드로 설정하고 기본적인 메모리 관리(페이징)를 준비합니다.모든 준비가 끝나면 C언어 세상의 시작점인 main() 함수를 호출합니다
process_exec() 함수가 현재는 프로그램 이름만 받도록 구현되어 있다. 이를 확장하여 명령줄 인자를 처리할 수 있도로 구현하라.
스케줄러 설계 시 두 가지 상충되는 목표가 있습니다.반환 시간 (Turnaround Time) 최적화: 짧은 작업을 먼저 실행 (SJF 방식)응답 시간 (Response Time) 최적화: 대화형 사용자에게 빠른 응답 (RR 방식)SJF는 작업의 총 실행 시간을 미리
Priority Donation 구현 기부(Donation)가 필요한 순간: 우선순위 역전 (Priority Inversion) 다음과 같이 우선순위가 다른 세 스레드가 있다고 가정합니다. H 스레드(50) M 스레드(30) L 스레드(10) 문제 상황
timer_sleep() 함수의 기존 Busy-Waiting(적극적 대기) 방식을 Blocking(수동적 대기) 방식으로 변경하여 CPU 효율성을 향상시킵니다.기존 timer_sleep()은 스레드가 잠들지 않고, while 루프를 계속 돌며 시간이 다 됐는지 검사했습
timer_sleep() 함수의 기존 Busy-Waiting(적극적 대기) 방식을 Blocking(수동적 대기) 방식으로 변경하여 CPU 효율성을 향상시킵니다.기존 timer_sleep()은 스레드가 잠들지 않고, while 루프를 계속 돌며 시간이 다 됐는지 검사했습

삭제 전 RB 트리 속성 만족한 상태삭제 방식은 일반적인 BST와 동일삭제 후 RB 트리 속성 위반 여부 확인RB 트리 속성을 위반했다면 재조정RB 트리 속성을 다시 만족RB 트리에서 노드를 삭제할 때 어떤 색이 삭제되는지가 속성 위반 여부를 확인할 때 매우 중요하다.
레드-블랙 트리는 다음 두 가지 핵심 특징을 가진 자가 균형 이진 탐색 트리(Self-Balancing BST)입니다.이진 탐색 트리의 속성을 모두 가집니다. (왼쪽 서브트리는 부모보다 작고, 오른쪽 서브트리는 부모보다 큼)스스로 균형을 맞추어 트리의 높이를 가능한 낮
DP(Dynamic Programming)는 암기 과목이 아니라 '문제를 쪼개서 생각하는 사고법'에 가깝습니다. 특정 유형을 외우기보다, 어떤 문제든 DP로 풀 수 있게 만드는 '생각의 틀'을 잡는 것이 중요합니다.DP를 효과적으로 공부하기 위한 체계적인 접근법입니다.

이번 절에서는 어셈블리의 여러 함수 간 상호작용과 함수 관리와 관련된 새로운 명령어를 소개한다. 첫 6개 함수 매개변수는 각 레지스터에 로드되며, 그 후 매개변수는 크기에 따라 32비트 데이터는 4바이트 오프셋, 64비트 데이터는 8바이트 오프셋은 콜 스택에 로드된다.

3.7 프로시저3.8 배열과 행렬동적계획법 개념백준 2747 - 피보나치 수(Top-down, Bottom-up)백준 1463 - 1로 만들기(BFS, DP(풀이 신세계!!))