[CS 면접 질문 / OS]프로세스와 스레드
·
면접 준비/OS
프로세스와 스레드프로세스에는 사용자가 보는 공간에서 사용자와 상호작용하며 실행되는 포그라운드 프로세스 가 있고, 사용자가 눈에는 보이지 않지만 뒤에서 조용히 수행되는 백그라운드 프로세스가 있다.백그라운드 프로세스 중에는 데몬이라는 프로세스가 존재하는데 우리가 흔히 아는 서비스를 말한다.이 두가지 프로세스 유형은 동일한 구조를 갖고 있다.이 부분은 자바와 JVM을 공부하면서 들어봤을 만한 내용일 것이다. 코드 영역실행 가능한 명령어가 저장되는 공간텍스트 영역이라고도 부른다.CPU가 읽고 실행할 명령어가 담겨 있기 때문에 쓰기가 금지되어 있는 읽기 전용 공간데이터 영역프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간데이터 영역에 저장되는 데이터는 정적 변수 또는 전역 변수가 대표적이다.BSS 영역BSS..
[Spring Batch 5.x] 배치를 사용하기 위한 환경 설정
·
Spring/Batch
배치란?배치는 일정 시간 동안 대량의 데이터를 한 번에 처리하는 방식이다. 대량 데이터를 복잡한 쿼리를 통해 이동시키는 도중 프로그램이 멈추면 처음부터 다시 시작해야 하는 문제가 생길 수 있다. 이를 방지하기 위해 작업 중간 지점을 기록하는 메커니즘을 활용한다. 이렇게 함으로써 중단된 지점에서 다시 작업을 이어갈 수 있다.배치는 일반적으로 반복적이고 스케줄 기반으로 실행된다. 예를 들어, 매일 새벽 특정 데이터를 처리하거나 정기적으로 보고서를 생성하는 작업이 이에 해당한다.현재 Batch는 5.x 버전이 나오면서 이전에 사용했던 방식과 많은 변화가 있어 문서를 학습하고 실제로 사용해보지 않으면 쓰기 힘들다고 느꼈다. 계속 박치기?를 하면서 성공한 나의 환경 설정을 공유해보려 한다.Spring Batch의..
[CS지식/ OS] 커널과 시스템 콜
·
면접 준비/OS
시스템도 일종의 프로그램이다.운영체제도 하나의 프로그램이기 때문에 프로그램이 실행되기 위해서는 반드시 메모리에 적재되어야 한다.운영체제는 매우 특별한 프로그램이므로 메모리 내의 커널 영역이라는 공간에 따로 적재되어 실행된다.반대로 사용자 응용 프로그램은 사용자 영역이라는 공간에 적재된다.운영체제의 기능을 사용하기 위해서는 커널 영역에 적제된 운영체제 코드를 실행해야 한다.시스템 콜운영체제의 서비스를 제공받기 위한 수단(인터페이스)호출 가능한 함수의 형태웹 브라우저, 게임과 같은 응용 프로그램들은 CPU, 메모리에 직접 접근할 수 없다.특정 자원에 접근하거나 조작하는 운영체제 코드를 실행해야 한다.운영체제가 자신의 코드를 실행한 응용 프로그램의 자원 접근 및 조작을 대신한다.말로는 어려우니 이미지를 통해 ..
[개념 정리]Spring Boot에서 JPA의 Soft Delete와 Cascade 연관관계
·
Spring/JPA
JPA를 사용하다 보면 데이터 삭제 시 완전 삭제(Hard Delete)가 아닌 Soft Delete를 고려해야 하는 경우가 있습니다. Soft Delete는 데이터를 물리적으로 삭제하지 않고 특정 컬럼 값을 변경하여 삭제 상태를 표시하는 방식으로, 데이터를 보존하면서 삭제 여부를 관리할 수 있습니다. 이 글에서는 Soft Delete를 구현하는 방법과 Soft Delete 적용 시 Cascade 연관관계에서 발생할 수 있는 문제 및 해결 방법을 살펴보겠습니다.Soft Delete란?Soft Delete는 데이터베이스에서 데이터를 물리적으로 삭제하지 않고, "삭제됨" 상태를 표시하기 위해 추가적인 컬럼(e.g., deleted 또는 deletedAt)을 활용하는 방법입니다. 이를 통해 다음과 같은 장점을..
[회고록] Spring Boot에서 JPA의 Soft Delete와 Cascade 연관관계
·
Spring/프로젝트 리팩토링 회고록
내가 사용한 SQL Delete방식에서 Cascade속성을 함께 사용하려 했을 때 발생했던 아래의 문제에 대해 다시는 발생하지 않도록 개념을 다잡기 위해 정리한다! 이전에는 Cascade를 왜 사용하는지 잘 몰랐으나 SoftDelete와 함께 무턱대고 사용하려고 하니 충돌이 나서 각각의 방식과 전략을 확실히하고 어떤 방법으로 SoftDelete를 사용하며 Cascade는 왜 피해야 하는지 알아보자.[발생한 예외]org.hibernate.ObjectDeletedException: deleted instance passed to merge[Soft Delete의 적합성]Soft Delete는 데이터베이스에서 데이터를 물리적으로 삭제하지 않고, "삭제됨" 상태를 표시하기 위해 추가적인 컬럼(e.g., dele..
Redis Pub/Sub을 활용한 채팅 구현의 여정 - Chat Domain(Entity ~ Controller)
·
Redis/Redis 채팅
[이전글]이전 글에는 Redis와 채팅을 사용하기 위한 Config파일들을 알아보았다.https://sunro1994.tistory.com/254 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 환경설정https://sunro1994.tistory.com/253 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 개념편수많은 우여곡절 끝에 배포된 서버에 채팅 기능을 적용하게 되었다!간단히 말하자면 원래 담당했던 백엔드 팀원이 던져sunro1994.tistory.com [소개]이전 글에서는 Config파일을 사용해서 어떻게 Redis의 Pub/Sub 그리고 Websocket설정을 하는지 알아보았다.이번에는 Chat 도메인을 어떻게 설계했는지 Entity부터 Service까지 하나한 알아보려고 한..