
들어가며..약 4개월간의 네이버 채용 일정이 모두 마무리되었습니다. 그동안 정말 많은 생각이 들었습니다. "내가 해낼 수 있을까?"라는 불안과 긴장, 그리고 조급함 속에서 하루하루를 보냈던 것 같습니다.2024년 상반기부터 본격적으로 취업 준비를 시작하면서 저 자신이 많이 성장했다고 느낍니다. 소중한 인연들을 만나 같이 프로젝트와 협업을 하며 성장하였고, 결국 운이 좋게도 네이버에 합격할 수 있었습니다. 🧑💻 Who Am I?간단히 제 소개를 하자면, 다음과 같습니다.학력서울과학기술대학교 컴퓨터공학과 18학번학점: 3.84 / 4.5활동서울과학기술대학교 컴퓨터공학과 동아리 TCP(Team Crazy Performance)GDSC Seoultech 3기LG U+ Ureca Backend 1기인턴 경험..

문제이전 글에서 JSON 역직렬화 문제를 해결하면서, 필드가 1개뿐인 DTO의 경우 기본 생성자가 없으면 역직렬화가 제대로 동작하지 않는다는 문제를 발견했습니다. JSON 역직렬화 문제 해결하기 (JSON Parse error)문제치매 환자 돌봄 서비스를 개발하던 중, 프론트엔드 개발자로부터 디바이스 토큰 저장 API 호출 시 500 Internal Server Error가 발생한다는 이슈를 전달받았습니다. 해당 API는 단순히 클라이언트로kyko.tistory.com 예를 들어, 아래와 같이 DTO에 필드가 하나만 있을 경우는 역직렬화 에러가 발생하지만, 필드가 두 개 이상이면 Jackson이 문제없이 역직렬화를 수행합니다.public class NotificationRequestDto { @Ge..

문제치매 환자 돌봄 서비스를 개발하던 중, 프론트엔드 개발자로부터 디바이스 토큰 저장 API 호출 시 500 Internal Server Error가 발생한다는 이슈를 전달받았습니다. 해당 API는 단순히 클라이언트로부터 전달받은 디바이스 토큰을 Redis에 저장하는 기능으로, 로직 자체는 복잡하지 않았습니다.에러 메시지를 확인한 결과 JSON 데이터를 NotificationRequestDto.DeviceToken 객체로 역직렬화하는 과정에서 에러가 발생하고 있었습니다.JSON parse error: Cannot construct instance of `kr.co.onehunnit.onhunnit.dto.notification.NotificationRequestDto$DeviceToken` (althou..

개요컴퓨터의 보조기억장치(HDD, SSD 등)에 정보를 무질서하게 저장하면 원하는 정보를 찾는 데 시간이 오래 걸릴 수 있습니다. 운영체제는 보조기억장치를 효율적으로 관리하기 위해 파일 시스템을 사용합니다.파일 시스템은 보조기억장치 내 정보를 파일 및 디렉터리 단위로 접근하고 관리하는 운영체제 내부 프로그램입니다. 파일과 파일 디스크립터파일은 크게 파일 이름, 실행을 위한 정보, 그리고 메타데이터(metadata)로 구성됩니다.메타데이터는 파일의 크기, 생성 및 수정 날짜, 접근 권한 등의 부가 정보로 구성되어 있으며, 이를 속성(attribute)라고도 합니다.운영체제는 프로세스가 파일을 열거나 생성할 때 해당 파일을 식별할 수 있도록 파일 디스크립터(file descriptor)를 할당합니다. 파일..

개요운영체제는 프로그램을 실행하기 위해 메모리에 적재하고, 종료된 프로그램을 메모리에서 삭제합니다. 단순히 적재하고 삭제하는 것을 넘어 낭비되는 메모리 용량이 없도록 효율적으로 메모리 관리를 수행합니다. 이를 위해 대부분의 현대 운영체제는 가상 메모리(Virtual Memory) 기술을 활용합니다. 논리 주소와 물리 주소CPU와 프로세스는 직접 물리 주소(Physical Address)를 다루지 않습니다. 대신, 논리 주소(Logical Address) 라는 개념을 사용합니다.논리 주소: 각 프로세스마다 0번지부터 시작하는 주소 체계로, 프로세스마다 같은 주소를 사용할 수 있습니다.물리 주소: 실제 메모리(RAM)의 주소로, 논리 주소와 달리 중복되지 않고 고유합니다.즉, 여러 프로세스가 각자의 논리 주..

CPU 스케줄러CPU는 메모리에 적재된 모든 프로그램을 동시에 실행할 수 없습니다. 한정된 자원인 CPU를 효율적으로 활용하기 위해, 운영체제는 실행 중인 프로그램들이 공정하고 합리적으로 CPU를 할당받도록 CPU의 할당 순서와 사용 시간을 결정합니다. CPU 스케줄링 알고리즘은 CPU 스케줄링의 절차를 말하며, 이 CPU 스케줄링 알고리즘을 결정하고 수행하는 운영체제의 일부분을 CPU 스케줄러라고 합니다.프로세스와 스레드는 모두 CPU 스케줄링의 대상이 된다. 운영체제는 프로세스별 우선순위를 판단하여 PCB(Process Control Block)에 기록하고, 우선순위가 높은 프로세스에 CPU 자원을 더 빠르고 많이 할당합니다. 운영 체제는 어떤 기준으로 프로세스의 우선순위를 결정하는가?대표적인 고려 ..

레이스 컨디션(Race Condition)프로세스 혹은 스레드가 공유하는 자원을 공유 자원(shared resource)이라고 합니다.공유 자원은 메모리, 파일, 전역 변수, 입출력 장치 등이 될 수 있습니다.공유 자원에 접근하는 코드 중 동시에 실행했을 때 문제가 발생할 수 있는 코드는 임계 구역(critical section)라고 합니다.프로세스나 스레드가 동시에 임계 구역을 실행하면 데이터가 예상치 못한 방식으로 변경될 수 있습니다.위 예시에서는 원래 결과값이 25만원이어야 하지만, 프로세스 P1과 P2가 동시에 접근하여 타이밍이 꼬여 20만원으로 잘못된 결과가 발생했습니다. 이러한 상황에서 프로세스나 스레드가 동시에 임계 구역의 코드를 실행할 때 발생하는 문제를 레이스 컨디션(race condit..

개요실행 중인 프로그램을 프로세스(Process)라고 하며, 프로세스를 구성하는 실행 단위를 스레드(Thread)라고 합니다.메모리에는 여러 프로세스가 적재될 수 있으며, 운영체제는 각 프로세스에 필요한 자원을 할당합니다.스레드는 프로세스가 할당받은 자원을 활용하여 작업을 수행하며, 하나의 프로세스가 여러 개의 스레드를 포함할 수 있습니다. 프로세스를 이루는 스레드가 둘 이상인 경우에는 동일한 작업을 동시에 실행할 수도 있습니다.운영체제는 여러 프로세스와 스레드가 동시에 실행될 때, 실행 순서를 적절히 제어하고 필요한 자원을 효율적으로 배분함으로써 시스템이 원활하게 동작하도록 관리합니다. 프로세스프로세스의 유형으로는 포그라운드 프로세스, 백그라운드 프로세스, 데몬 등이 있습니다.포그라운드 프로세스(For..