💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. 이번 포스팅에서는, 예외 발생 시 트랜잭션은 commit될까, rollback될지에 대해 알아보도록 하겠습니다. 💋 트랜잭션과 관련된 로그를 볼 수 있도록 설정 별다른 설정이 없는 경우에, 아래와 같은 로그가 찍힙니다. 2023-11-06 23:48:04.980 INFO 10902 --- [Test worker] s.springtx.exception.RollbackTest: Starting RollbackTest using Java 17.0.7 on starlight.local with PID 10902 (started by gitchan in /Users/gitchan/Projects/gitchan-study/spring-db-2/sprin..
💋 CPU Burst VS IO Burst ✔️ Burst 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일 계속되는 작업 ✔️ CPU Burst 프로세스가 CPU에서 한 번에 연속적으로 실행되는 시간 메모리에 올라가 있는 프로세스가, 자신의 차례가 되어 CPU에서 실행되었을 때, 자신의 명령어가 CPU에서 연속적으로 실행되는 시간 ✔️ IO Burst 프로세스가 IO 작업을 요청하고 결과를 기다리는 시간 프로세스를 실행하면, CPU Burst, IO Burst가 번갈아가며 나타난다. (마지막은 CPU Burst겠죠?) 💋 CPU Bound VS IO Bound ✔️ CPU Burst 시간의 분포 위 그래프를 보면, 대부분의 프로세스는 CPU Burst가 8ms 이내에 끝나는 것을 볼 수 있다. 프로세..
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. 💋 컨텍스트 스위칭 ✔️ 개념 CPU/코어에서 실행중이던 스레드가 다른 스레드로 교체되는 것 이 때 두 스레드는 같은 프로세스에 속할수도, 다른 프로세스에 속할 수도 있다. 여러 프로세스/스레드를 동시에 실행시키기 위해 필요하다. ✔️ 발생 원인 크게 3가지! Time Quato Expiry: 주어진 quantum(time slice)의 시간이 다됨. 쉽게 말해 Time Over! Interrupt: 커널 함수를 통해서 프로그램 실행 도중에 멈춰버림. (SIGKILL interrupt signal) Preemption: 더 우선순위가 높은 일을 해야 할 때 선점해버려서 ✔️ 컨텍스트(context)란? 프로세스/스레드의 상태 CPU, 메모리의..
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. 서버로부터 인증을 완료해 토큰을 발급받았다면 어디에 저장하는 것이 좋을까요? 각각의 특징에 대해 알아봅시다! 💋 저장소 종류 ✔️ Web Storage (Local Storage / Session Storage) 클라이언트에서 자바스크립트로 꺼내서 요청에 담아 보내기 때문에 XSS(Cross Site Scripting) 공격에 취약합니다. XSS 공격을 통해서는 토큰 값 자체를 가져올 수 있습니다. 개발자는 절대절대절대절대 JWT를 HTTP로 보내서는 안됨! 반드시 HTTPS 둘의 차이점은, 브라우저 창을 닫았을 때, 데이터가 보존되는가에 있음! Local Storage: 데이터 유지 Session Storage: 데이터 삭제 ✔️ Cooki..
💋 인트로 안녕하세요, 우아한테크코스 5기 백엔드 깃짱이라고 합니다. 이번 포스팅부터는 유튜브 쉬운코드의 운영체제 영상을 보면서, 운영 체제의 기초에 대해 정리해 나가려고 합니다. 대부분의 내용과 사진은 쉬운코드 개발자님의 영상을 보고 작성한 내용입니다. 텍스트로 이해가 잘 되지 않는다면 참고자료에 있는 영상을 직접 보면서 공부하시면 많은 도움 될 거에요! 💋 용어 정리 먼저 기본적인 용어부터 정리하고 시작해야 한다. ✔️ 프로세스 컴퓨터에서 실행중인 프로그램으로, 각각의 프로세스는 독립된 메모리 공간을 할당 받는다. 또 각 메모리 공간은 독립적인 명령어와 데이터를 가진다. ✔️ CPU(Central Processing Unit) 명령어를 실행하는 연산 장치 ✔️ 메인 메모리 프로세스가 CPU에서 실행되..
💋 인트로 어제, 포비와의 면담을 했습니다. 면담을 신청하던 당시에는 별다른 고민이 없었습니다. 단지 나의 소중한 10개월을 보낸 이 프로그램의 교장 선생님과도 같은 포비와 언제 내가 또 이야기를 해보겠어 하는 마음이었어요. 그치만, 면담 신청에 성공하고 두 달이라는 시간이 흐르면서 짧은 시간이지만 우테코도, 나도 굉장히 많이 변해서 오늘의 고민이 있었고 정말 면담 신청하기를 잘 했다는 생각이 드네요. 💋 사전 면담포비와의 면담 전에, 좀 더 의미있는 대화를 하기 위해서 사전 면담을 작성해야 합니다. 최대한 솔직하고 깊은 대화를 나누기 위해서 포비와 만나기 전에 현재 내가 처한 상황을 적극적으로 공유하려고 노력했습니다. 아래는 공유드린 사전 면담지의 대략적인 내용입니다. 현재 연세대학교 공과대학 다니고 ..
안녕! 우아한테크코스 5기 [스탬프크러쉬]팀 깃짱이라고 합니다. 스탬프크러쉬 서비스의 소스 코드 바로가기 사장모드: stampcrush.site/admin 고객모드: stampcrush.site 💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱입니다. 이번 포스팅에서는 이전에 JWT 방식에서 로그아웃, Refresh Token 만들기(1)에 이어서, Refresh Token과 로그아웃의 구현에 대해서 포스팅하려고 합니다. 💋 현재 상황 현재 상황은 아래와 같습니다. ✔️ 서버의 Token 발급 응답 인증을 완료하면, 서버에서 아래와 같은 응답을 보내줍니다. Header HTTP/1.1 200 Content-Type: application/json Transfer-Encoding: chunked Date: ..
💋 문제 상황 아래와 같이 서비스 객체가 있다. external() 메서드는 트랜잭셔널 어노테이션이 적용되어 있지 않고, internal() 메서드는 트랜잭셔널 어노테이션이 적용되어 있다. @Slf4j @Service static class CallService { public void external() { log.info("call external"); printInfo(); internal(); } @Transactional public void internal() { log.info("call internal"); printInfo(); } private void printInfo() { final boolean txActive = TransactionSynchronizationManager.is..
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. AWS에서 프리 티어로 EC2를 사용하기 시작했는데, 메모리가 모자라기 시작했습니다. 메모리를 늘리고 싶지만, 돈은 쓰기 싫다면 그 대안으로 Swap 메모리를 설정할 수 있습니다. 💋 Swap 메모리란? 리눅스에서 스왑 메모리는 주 메모리의 한계를 극복하기 위해 사용되는 보조 메모리입니다. 주 메모리(RAM)의 용량이 부족한 경우, 리눅스 운영체제는 현재 실행되지 않는 프로세스를 임시로 디스크 공간으로 쫓아내고, 빈 공간에 다른 프로세스를 적재해 실행하는 '스와핑' 방식을 사용합니다. 이렇게 해서 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행할 수 있습니다. 프로세스들이 쫓겨나는 디..
✔️ MySQL 설치 sudo apt-get update sudo apt-get install mysql-server ✔️ 외부접속 설정 (3306 port 열기) sudo ufw allow mysql ✔️ MySQL 실행 sudo systemctl start mysql ✔️ MySQL 접속 sudo mysql -uroot 도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟 비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!