본문 바로가기
728x90

전체 글390

DB ) N+1 문제는 왜 나쁜 걸까? N+1 이 왜 나쁜 걸까?OOM 과 CPU 대기 상태를 일으킬 수 있습니다~!OOM 이란시스템이 메모리를 다 사용해 더 이상 추가 메모리를 할당할 수 없는 상태.프로세스가 너무 많은 메모리를 요청하거나, 동시에 많은 프로세스가 실행되어 물리 메모리(RAM), 가상 메모리가 모두 고갈됐을 경우 발생.운영체제는 OOM Killer 를 작동시켜 가장 많은 메모리를 사용하거나, 우선순위가 낮은 프로세스를 종료하여 메모리를 확보하려고 함.시스템 성능 저하, 프로세스 강제 종료, 프로그램 비정상적인 종료.CPU 대기 상태프로세스가 실행을 기다리면서 CPU 자원을 할당받지 못해 대기하는 상황.I/O 작업 등 때문에 프로세스가 일시적으로 실행되지 못하고 대기하는 것을 포함하기도 함.CPU 사용이 높은 작업이 많거나, .. 2024. 12. 9.
자연재해는 어쩔 수 없다. 23. 12. 04 입사24. 12. 13 퇴사  세상에 의미 없는 일은 없고 또 내가 했던 것들이 절대 의미 없는 일들은 아니었지만,좀 더 의미 있는, 가슴이 뛰는 일을 하고 싶어 퇴사했다. 아쉬운 점도 많지만좋은 사람들을 만났으니 만족한다.이제부터는 다시 힘내야 할 때.  이번에 공룡 책을 샀다.운영체제 공부를 안 하면 공룡이 잡아 먹음 ㄷㄷ 그래서 해야 됨;;  영어 공부 할 겸 해서원서.pdf 파일을 받아 번역이 애매하게 된 부분들을 단어 하나하나 찾아가며 다시 해석해보고 있음...ㅋㅋ;;참고 : 난 영어 못 함. 이 사람은 그냥 고졸임.  그래도 공부가 재미있다는 것은 참 다행.여건이 되면 좀 오래 공부하고 싶은데 여건이 안 되어서 또 새로 이력서를 넣고 해야할 듯 ㅎㅎ;요즘 취업 시장 어렵다.. 2024. 12. 9.
OS ) 컴퓨터, 운영체제란 무엇인가. 컴퓨터 시스템의 4 요소하드웨어운영체제응용 프로그램사용자하드웨어구성중앙 처리 장치 (CPU)메모리 및 입출력 장치→ 계산용 자원 제공응용 프로그램종류워드 프로세서웹 브라우저컴파일러 등등…→ 사용자의 계산 문제를 해결하기 위해 **시스템 자원**이 어떻게 사용되어야 하는가를 정의💡 운영체제는 다른 프로그램이 유용한 작업을 할 수 있는 환경을 제공한다.사용자 관점에서의 컴퓨터(운영체제 → 사용자 모드)랩탑, 키보드, 모니터 마우스 등, 사용되는 인터페이스에 따라 달라진다. 즉, 사용하려는 **시스템**에 따라 달라진다.시스템은 한 사용자가 자원을 독점하도록 설계 되었다.사용자 관점에서의 운영체제의 목표사용자가 수행하는 작업에 “최대한의 효율” 을 내는 것.사용의 용이성을 위해 설계되며, 성능에도 약간 신경.. 2024. 12. 9.
Docker ) Mac M2(ARM) 에서 도커 컨테이너에 접근할 수 없는 현상 개발하던 앱을 Mac(M2) 에서 도커 컨테이너로 접근하려고 했는데 요청이 가지 않는 문제가 발생했다. docker run -p 8000:8000 -d --name auth_server auth:v1.0.0 해당 명령어로 컨테이너를 올려, 8000 포트로 정상적으로   컨테이너도 잘 올라갔으며   8000 포트로 매핑이 성공적으로 됐음에도    localhost:8000 으로는 컨테이너 접속이 되지 않았다.    참고로 M2 칩은 (지금은 아닌 거 같긴 한데) 도커를 바로 설치할 수 없어,리눅스 위에 도커를 올려 실행되고 있다.colima start --arch x86_64 --cpu 4 --memory 8 그래서 docker 를 실행하려면 위와 같은 명령어를 입력해야 리눅스가 올려지며 정상적으로 doc.. 2024. 12. 6.
Spring Boot 3.x ) 로그를 멋지게 처리하는 법 요즘 혼자 인증용 서버를 하나 만들고 있는데로그를 좀 더 멋지게 처리할 수 있는 방법이 있을까 해서 찾아보았다. AOP 와 핸들러를 이용하면실패/성공 로그 모두 멋지게 처리할 수 있다는 사실 !   일단 중요한 "실패 로그" 부터 어떻게 처리하는지 살펴보자!  실패 로그예외 상황 발생 시, throws 이전에 로그를 찍는 것보다 더 좋은 방법이 있다.그건 `@ControllerAdvice` 에서 실행하면 되는데, 일단 예외 수정부터 필요하다. DefaultExceptionimport lombok.Getter;import org.springframework.http.HttpStatus;import java.util.Map;@Getterpublic class DefaultException extends R.. 2024. 12. 6.
DB ) 모두 성공하지 않으면 모두 실패한다. 트랜잭션입니다. 트랜잭션이 종료될 때까지 “한 커넥션”을 계속 사용한다.그리고 일반적으로 “한 커넥션”은 “하나의 스레드”가 점유하여 처리한다.트랜잭션과 스레드의 관계동작트랜잭션은 일관성과 원자성을 보장하기 위해 시작(BEGIN) 부터 종료(COMMIT or ROLLBACK)를 하나의 작업 단위로 묶음.트랜잭션이 종료되기 전까지는 다른 작업이 해당 커넥션을 사용할 수 없음.커넥션은 트랜잭션 동안 고정트랜잭션이 시작되면, 애플리케이션은 “한 커넥션”을 고정하여 쿼리를 시작함.트랜잭션이 끝날 때까지 해당 커넥션은 다른 스레드나 작업에 할당되지 않음.하나의 스레드는 하나의 커넥션을..하나의 스레드는 하나의 커넥션을 점유한다.커넥션 풀을 사용한다면?트랜잭션이 종료된 후, 해당 커넥션은 풀로 반환 → 다른 스레드가 다시 커넥션을.. 2024. 11. 24.
728x90