썸네일 JSCODE 모의 면접 스터디 후기 모의 면접 스터디 신청 계기면접 스터디에 참여하고 싶어 인프런 스터디 페이지에서 모집글을 찾던 중, JSCODE 모의 면접 스터디를 발견했습니다. 이전에 참여했던 스터디들은 대부분 개인이 운영하여 관리가 부족했어서, 이번에는 좀 더 체계적으로 운영되는 스터디에 참여해 보고 싶었습니다.JSCODE 모의 면접 스터디의 노션 홈페이지를 보니, 이전 기수들도 많고 운영진과 참가자들의 후기도 신뢰가 가서 신청하게 되었습니다.이번 스터디에 참여하려고 했던 이유는 단순히 면접 준비뿐만 아니라, 다른 사람들이 면접에서 어떻게 답변하는지 보고 싶었고, 가능한 많은 사람들과의 모의 면접을 통해 자기 객관화를 해보고 싶었습니다. 물론 면접 준비 이유 외에도 혼자서 CS 공부를 시간 내서 하기가 힘들기도 해서 이번 기회에 좀..
썸네일 OS 면접 스터디 5주차 - 가상메모리, 메모리분할 절대주소 vs 상대주소절대 주소 지정(Absolute Addressing): 메모리의 물리적인 실제 주소를 직접 참조하는 방식으로, 고정된 주소로 메모리에 접근합니다.상대 주소 지정 (Relative Addressing): 기준 주소(base address) 를 기준으로 상대적인 오프셋(offset) 을 사용하여 메모리 주소를 지정하는 방식으로, 실행 중에 기준 주소와 상대 오프셋을 더하는 계산 과정이 필요합니다.메모리 배치 기법메모리 분할CPU에서 공유 자원인 메모리를 여러 개의 영역으로 나누어 각각의 프로세스에게 할당해주는 기법입니다. 이를 통해 각 프로세스는 할당된 메모리 범위 내에서만 동작하도록 제한되며, 다른 프로세스의 메모리 영역을 침범하지 않도록 보장됩니다.이러한 방식은 메모리 보호를 강화하..
OS 면접 스터디 4주차 - 프로세스 동기화 동시성과 병렬성동시성 (병행성): 여러 작업을 동시에 실행하는 것이 아니라, CPU가 작업마다 시간을 분할해 적절하게 Context Switching 함으로써 동시에 실행되는 것처럼 보이게 하는 것병렬성: 여러 작업이 실제로 동시에 실행되는 것으로, 멀티 코어 시스템에서 여러 프로세서가 각각의 작업을 동시에 수행하여 성능을 높이는 방식프로세스 동기화여러 프로세스가 공유 자원에 접근할 때, 데이터의 일관성과 정확성을 보장하기 위한 기법여러 프로세스가 서로 협력해 공유자원을 사용하는 상황에서 race condition이 발생 시 데이터 불일치를 방지하기 위해 사용됨Race Condition여러 프로세스가 공유 자원에 동시에 접근할 때 발생할 수 있는 문제로, 각 프로세스나 스레드가 실행되는 순서에 따라 결괏..
OS 면접 스터디 3주차 - CPU 스케줄링 CPU 스케줄링운영체제에서 프로세스들이 CPU를 사용할 수 있도록 하는 순서를 결정하는 과정입니다. 즉, 언제 어떤 프로세스에 CPU를 할당할 지 결정하는 작업응답 시간, 대기 시간, 소요 시간은 짧게, 이용률, 처리량은 높게, 모든 프로세스가 CPU를 사용할 수 있도록 하는 것이 목표성능 척도CPU utilization (이용률)Throughput (처리량): 단위 시간당 완료한 프로세스 양Turnaround time (소요시간, 반환시간): 대기 큐에 들어와서 프로세스가 모두 완료될 때까지 걸린 총 시간 (프로세스 종료 시간 - 프로세스 도착 시간)Waiting time (대기시간): 대기 큐에서 CPU를 할당받기 위해 기다린 시간 총합Response time (응답시간): CPU를 얻으러 와서 최초..
썸네일 OS 면접 스터디 1주차 - 운영체제 기본 개념 운영체제 (Operating System)운영체제(OS, Operating System)는 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층입니다. 운영체제는 컴퓨터 시스템의 가장 기본적인 소프트웨어로서, 다양한 응용 프로그램들이 실행될 수 있도록 환경을 제공하고, 컴퓨터 시스템 자원(CPU, 메모리, 디스크, SW 자원) 을 효율적으로 관리하는 역할을 수행합니다.대표적인 운영체제로는 데스크탑과 노트북에서 사용되는 Windows, macOS, Linux 등이 있으며, 스마트폰에서는 Android와 iOS가 많이 사용됩니다.처리 방식에 따른 운영 체제의 분류일괄 처리 시스템 (Batch Processing System)작업 요청의 일정량 모아서 순차적..
[JAVA] 전략 패턴을 이용해 런타임 중 알고리즘 선택 요구 사항 기능 구현 요구 사항 중에 사용자가 선택한 메신저에 메시지를 전송해야 하는 것이 있었습니다. 각 메신저마다 자체 Format이 있어 해당 Format으로 메시지를 변환시켜야 하고, 연동할 메신저는 더 늘어날 수가 있습니다. 따라서 확장에 용이하게 하기 위해 조건문이 아닌 자바의 다형성을 이용해야 했고, 들어오는 사용자의 요청에 따라 런타임에서 동적으로 각 메신저에 맞는 알고리즘을 선택하여 메시지를 변환해야 했습니다. 이해를 돕기 위해 비즈니스 로직이 담기지 않은 단순한 형식의 전략(알고리즘)으로 구현하겠습니다. Strategy 인터페이스에 convertMessage() 메서드를 정의 전략으로는 RepeatStrategy, ReverseStrategy 두 개를 클래스로 구현하고 모두 Strate..
썸네일 [IntelliJ] 단축키 - Windows 최근 인스타 돋보기에서 "퍼포먼스를 올리는 가장 쉬운 방법"이라는 제목을 보고 저도 모르게 클릭하게 된 게시물이 있었습니다. (인스타 주소: @dev_coaching9__ ) 결론은 단축키를 활용하라는 것입니다. 마우스 대신 키보드 단축키를 사용한다면 한 번에 1초 정도 절약한다고 해도 업무를 보며 하루에 최소 100번은 클릭을 할 텐데 이런 시간이 쌓이면 결코 적지 않습니다. 이는 개발자뿐만 아니라 컴퓨터로 업무를 보는 모든 사람들에게 해당하고, 자신이 자주 사용하는 툴의 단축키를 익히는 것은 일잘러의 기본 중의 기본인 것 같습니다. 아무리 다른 사람들이 정리한 단축키 리스트를 보고 외워도 충분히 익숙해질 만큼 연습하지 않은 단축키들은 시간이 지나면서 사용하지 않게 되는 것 같습니다. 그래서 앞으로 당..
썸네일 오픈소스의 가치와 사용 시 주의할 점 오픈소스 모델의 가치 개발자들에게는 커뮤니티를 기반으로 개발 작업물과 정보를 공유하는 것이 익숙하고 오픈소스라는 모델 또한 당연하게 받아들이고 사용합니다. 하지만 엄연히 말해서 오픈소스 개발은 자원봉사입니다. 소프트웨어를 개발하고 코드를 공개하는 것은 단순히 커뮤니티에 작업물 일부와 정보를 공유하는 것과는 다른 차원의 문제입니다. 아무리 개발자들이 개발을 좋아해도 왜 돈 안 되는 일인 오픈소스 개발을 끊임없이 하고 기업들은 왜 이것을 지원하는 걸까요? 당연하게도 오픈소스도 돈이 되기 때문입니다. 일단 개발자 개인에게는 포트폴리오가 되고 커리어에도 중요한 역할을 할 수 있습니다. 오픈소스에 기여를 하면 Contributor가 되고 작성한 코드도 기록이 남습니다. 더 유명한 프로젝트일수록, 더 많이 기여할수..
블로그 다시 합니다 취업 후에 블로그를 계속 쓰고 싶었으나 주제를 잡기가 어려웠습니다. 공개되는 글인 만큼 단순히 제가 기억하려고 쓰자니 내용이 빈약하고 내용을 채우자니 시간을 그만큼 할애하고 싶지는 않았습니다. 그러던 중 요즘IT 라는 사이트를 보고 자주 쓰진 못하더라도 정말 관심 있어서 더 알아보고 싶은 주제로 내 생각이 담긴 글을 쓰고 싶다는 생각이 들었습니다. 그래서 1~2주에 한 번 글을 올리는 것을 목표로 하고 일단은 오픈소스 관련 주제로 조만간 글을 써볼까 합니다. 이렇게 글을 올려놓지 않으면 안 쓰게 될 것 같아 올립니다. 이웃님들 많이 봐주세요:)
썸네일 Spring Boot에서 Docker로 MySQL 사용하기 백엔드 프로젝트를 할 때 로컬 환경에서 개발하고 테스트할 때 주로 로컬 MySQL DB를 사용했다. 하지만 프로젝트가 많아지거나 테스트할 DB, 테이블이 많아지면 관리하기가 불편하다는 것을 알았고 로컬 환경을 깨끗하게 유지할 필요성을 느꼈다. 먼저 몇 가지 꿀팁을 설명하겠다. 1. PowerShell Ctrl+C / Ctrl+V 단축키 사용하는 법 Windows PowerShell 우클릭 -> 파일 위치 열기 -> Windows PowerShell 우클릭 -> 속성 -> 옵션 -> Ctril+Shift+C/V를 복사(C)/붙여넣기로 사용 체크 2. 이미 존재 하는 컨테이너 이름이라고 뜰 때 docker rm -f 명령어 사용 rm : 컨테이너 삭제 명령어 f: 강제 실행 중지 옵션 사용 중인 포트 확인 ..
썸네일 [BOJ] 소수의 곱 - 백준 2014 (자바 JAVA) - PriorityQueue 🔒 소수의 곱 - 백준 2014 https://www.acmicpc.net/problem/2014 문제 K개의 소수가 있다. 이때, 이 소수들 중에서 몇 개를 곱해서 얻게 되는 수들이 있을 것이다. 소수들을 선택할 때에는 같은 수를 선택해도 되며, 주어지는 소수 자체도 포함시키자. 예를 들어 세 소수가 2, 5, 7이었다면, 이러한 곱들을 오름차순으로 나타내 보면, 2, 4, 5, 7, 8, 10, 14, 16, 20, 25, 28, 32, 35, 등이 된다. K개의 소수가 주어졌을 때, 이러한 소수의 곱들 중에서 N번째 수를 구해 보자. 단 정답은 231보다 작은 자연수이다. 입력 첫째 줄에 K(1 ≤ K ≤ 100), N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 K개의 소수가 오름차순으..
썸네일 [BOJ] 카드 게임 - 백준 11062 (자바 JAVA) - DP 🔒 카드 게임 - 백준 11062 https://www.acmicpc.net/problem/11062 문제 근우와 명우는 재미있는 카드 게임을 하고 있다. N개의 카드가 일렬로 놓여 있다. 각 카드에는 점수가 적혀있다. 근우부터 시작하여 번갈아가면서 턴이 진행되는데 한 턴에는 가장 왼쪽에 있는 카드나 가장 오른쪽에 있는 카드를 가져갈 수 있다. 카드가 더 이상 남아있지 않을 때까지 턴은 반복된다. 게임의 점수는 자신이 가져간 카드에 적힌 수의 합이다. 근우와 명우는 서로 자신의 점수를 가장 높이기 위해 최선의 전략으로 게임에 임한다. 놓여있는 카드의 개수 N과 카드가 놓여있는 상태가 주어졌을 때 근우가 얻는 점수를 구하는 프로그램을 작성하시오. 예를 들어 카드가 [4, 3, 1, 2]로 놓여있다고 하자...