본문 바로가기

학습 기록 (Learning Logs)/Today I Learned

(32)
비관적락, 낙관적락 같이 스터디하는 사람이 예약시스템을 만든다.좌석 예약 시스템(가게id, 년월일, 시작시간~종료시간, 좌석번호)1. 동시에 같은 자리에 예약 경쟁하는 경우2. 동시간에 같은 좌석인데 시작시간이랑 종료시간이 묘하게 다른데 예약이 겹치는 경우 동시성 문제가 발생할 것 같으니 고려해야한다고 했다.❌ 좌석 예약은 충돌 가능성 높아서 대부분 비관적 락이 적합다고 말했는데    스터디원은 동시성 문제에 대한 해결책으로redis로 앞에서 예약을 확인하고DB에서는 where절로 update, insert를 하기떄문에 비관적락이 필요없다고 말하는 것이었다.그래서 비관적 락이 필요없다고 하는 것에 대해서 설명 해주기 위해, 정리하는 글이다.   ✅ 전제: 좌석 예약 시스템 (멀티 서버 + 멀티 스레드 환경)주요 키: 가게I..
레디스 pub/sub 1. 도커 컨테이로 redis-test 를 만든다docker run -d --name redis-test -p 6379:6379 redis d819dab48c79ac486cba7351ece464566e2f2e42c47867b37db1d023031930b3  devwonny@devwonnyui-MacBookAir Documents % docker logs d819dab48c79 -> 결과1:C 24 Mar 2025 08:20:16.830 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1:C 24 Mar 2025 08:20:16.830 * Redis version=7.4.2, bits=64, commit=00000000, modified=0, pid=1, just sta..
✨ Operating Systems: Three Easy Pieces ✨ - 개요 운영체제 개요1. CPU 가상화2. 메모리 가상화3. 병행성4. 영속성프로그램이 실행될 때 어떤 일이 일어날까? 프로세서는 다음 명령어로, 또 그 다음 명령어로 프로그램이 완전히 종료될 때까지 실행을 계속한다명령어를 실행(execute)한다. 프로세서는 명령어를 초당 수백만 번 (요즘은 수십억 번) 반입(fetch)명령어를 해석(decode)하고 (즉, 무슨 명령어인지 파악하고), 명령어를 실행(execute)한다(즉, 두 수를 더하고, 메모리에 접근하고, 조건을 검사하고, 함수로 분기하는 등의 정해진 일을 한다).  운영체제(operating system, OS)시스템을 사용하기 편리하면서 정확하고 올바르게 동작시킬 책임 CPU, 메모리, 디스크와 같은 물리 자원을 가상화(virtualize)한다. 운..
머신러닝 보호되어 있는 글입니다.
✨ Operating Systems: Three Easy Pieces ✨ - 프로세스 5장 프로세스APIUnix 시스템은 프로세스를 생성하기 위하여 fork()와 exec() 시스템 콜을 사용한다. wait()는 프로세스가, 자신이 생성한 프로세스가 종료되기를 기다리기 원할 때 사용된다 Unix 시스템의 프로세스 생성프로세스를 생성하고 제어하려면 운영체제가 어떤 인터페이스를 제공해야 하는가? 유용하고 편하게 사용하기 위해서 이 인터페이스는 어떻게 설계되어야 하는가? 1. fork() 시스템 콜프로세스 생성에 fork() 시스템 콜이 사용된다  실행이 시작될 때 프로세스는 “hello world ...” 메시지를 출력한다.이 메시지에는 PID로도 알려진 프로세스 식별자(process identiier)가 포함된다. 부모: 6... rc== 29147자식: 7.....rc==0 Unix 시스..
✨ Operating Systems: Three Easy Pieces ✨ - 가상화 복숭아. 자 이제 그 복숭아를 진짜 복숭아라 하자. 이 복숭아를 먹고 싶은 사람은 많아. 우리는 그들 각각에게 복숭아를 주고 싶은 거야. 그래야 모두 행복해 할테니까. 먹고 싶은 사람들에게 주는 복숭아를 가상 복숭아라고 부르자. 어떻게든 우리는 하나의 진짜 복숭아로부터 많은 가상 복숭아를 만들어야 해. 그리고 중요한 사실 : 이 환상에서, 먹고 싶은 사람들은 진짜 복숭아를 가지고 있는 것처럼 보이지만 실제로는 그렇지 않다는 것이다 그래서 모르는 사이에 복숭아를 공유한다는 말이죠? 그게, 만일 제가 다른 사람과 복숭아를 공유한다면, 알아차릴 수 있을 것 같은데요 그러나 먹고 싶은 사람들은 눈치채지 못한다는 거지.대부분의 시간 동안 그들은 낮잠을 자거나 다른 일을 하고 있지. 따라서 이 시간 동안 자네는 복..
빅데이터 보호되어 있는 글입니다.
Spring Boot + STOMP로 카카오톡 스타일 채팅방 만들기 📌 Spring Boot + STOMP로 카카오톡 스타일 채팅방 만들기🚀 STOMP + WebSocket을 활용하여 "카카오톡 같은 채팅방 시스템"을 구현해보겠습니다.📌 STOMP를 사용하면 여러 사용자가 "채팅방을 생성하고 구독하여 메시지를 주고받을 수 있음!"  구조src/main/java/com/example/chat/├── config/│ ├── WebSocketConfig.java # WebSocket + STOMP 설정├── controller/│ ├── ChatController.java # REST API (채팅방 생성/조회)│ ├── StompChatController.java # STOMP 메시지 처리├── model/│ ├── ChatRo..