전체 글 50

[Effective Java] item2 - 생성자에 매개변수가 많다면 빌더를 고려하라.

생성자에 매개변수가 많다면 빌더를 고려하라! 지난 item을 통해 정적 팩토리 메소드에 대해서 배웠다. 물론 약간의 단점만 감수하면 매우 훌륭한 도구이다. 다만 매개변수가 많으면 어떨까? 치킨이 먹고 싶으니 치킨 객체를 만든다고 가정해보자. 치킨 객체엔 다양한 인자들이 있다고 하자. 이름, 브랜드, 가격, 열량, 순살여부, (매우 중요하다!) 평점을 저장한다고 하자. 그렇다면 클래스의 기본 형태는 public class Chicken { private final String chickenName; // 필수 private final String brand; // 필수 private final int price; // 선택 private final int calrories; // 선택 private fin..

Programming/Java 2021.01.21

Operating System Concepts 정리 - Ch.05

5.1 Basic Concepts CPU의 코어가 1개라고 하자. 이러면 당연히 한번에 하나의 태스크만 실행될 수 밖에 없다. 만약 순차적으로 모든 일이 진행된다고 해보자. 어... 그림에서 볼 수 있듯이 I/O 대기나 인터럽트가 생기게 된다고 해보자. 그걸 하나 하나 다 기다리려고 하면 뒤 태스크는 손가락만 빨 수 밖에 없고, 결국 효율성이 떨어질 수 밖에 없다. 당연히 효율성을 높이려면 이런 상황에 도래했을 때 태스크를 넘겨줘야 효율성을 높일 수 있을 것이다. CPU-I/O Burst Cycle 프로세스 실행은 CPU 실행과 입출력 대기의 사이클로 구성된다. 즉, 두 state 중 하나에 머물러 있다는 것이다. 프로세스 실행은 CPU Burst로 시작된다. 이어서 I/O Burst가 발생하고, 이어서..

CS/OS 2021.01.21

[Effective Java] item1 - 생성자 대신 정적 팩토리 메서드를 고려하라.

생성자 대신 정적 팩토리 메서드를 고려하라! 일반적인 public 생성자를 통한 인스턴스 생성을 고려해보자. public class ContactBook { public static void main(String[] args) { Contact contact1 = new Contact(); Contact contact2 = new Contact("Kim"); Contact contact3 = new Contact("Lee", 01000001111); } } public class Contact { // 인자가 없을 경우에 default 값은 공백/0이라고 가정하자. public Contact() {} public Contact(String name) {} public Contact(String name,..

Programming/Java 2021.01.20

쓰레드에 레지스터가 있다?

쓰레드를 공부하다가 이런 의문이 들었다. 레지스터는 프로세스가 아닌, 프로세서에 있는것이 아닌가? 그런데 어떻게 쓰레드가 자신만의 레지스터를 갖고 있다고 하는 거지? (출처: Operating System Concepts 10e. Abraham Silberschatz 외) 당연히 레지스터는 프로세서가 갖고 있기 때문에, (아키텍쳐에 따라 레지스터의 수나 명칭이 달라지는건 필연적이겠죠?) 이 그림이 말이 안 된다고 생각해서 텍스트를 뚫어져라 쳐다봤다. A thread is a basic unit of CPU utilization; it comprises a thread ID, a program counter (PC), a register set, and a stack. It shares with other..

CS 2021.01.15

Operating System Concepts 정리 - Ch.04

4.1 Introduction Thread: CPU 이용의 기본 단위이다. 스레드 ID, Program Counter, Register 집합, 그리고 스택으로 구성된다. 당연히 스레드는 프로세스 내부에 존재하는 것이기 때문에, 같은 프로세스에 속한 다른 스레드와 Code Segment, Data Segment와 열린 파일, Signal과 같은 운영체제 자원들을 공유한다. 단일 스레드라면 당연히 왼쪽처럼 모든 자원을 홀로 소유하는 것 처럼 그려지겠지만, 멀티 스레드는 공유하는 자원과 본인이 보유하는 자원이 구분되기 떄문에 오른쪽으로 봐야 할 것 같다. 현대의 프로그램은 대부분 다중 스레드를 이용한다. (ex. 워드: 그래픽 표시 스레드, 입력 받는 스레드, 맞춤법 검사 스레드 등등...) 서버의 경우를 보..

CS/OS 2021.01.15

Operating System Concepts 정리 - Ch.03

3.1 Process Concept CPU의 활동은 무엇인가? → 시스템 마다 부르는 명칭이 다름. (일괄처리 시스템: job/시분할 시스템: task...) → 하지만 이런 것들은 꽤나 유사함 → 프로세스라고 부르자! 간단하게 보자면, 프로세스는 실행 중인 프로그램이라고 보면 된다. 그래서 프로그램 == 프로세스일까? 아니다. 프로그램은 디스크에 저장된 실행 파일 같은 것들이고, 이 파일이 메모리에 적재되어 실행이 되어야 프로세스라고 할 수 있다. 프로세스는 Program Counter와 Register를 갖고 있고, 메모리 상에서 다음과 같은 형태를 띄고 있다. (물론 일반적으로...) Text Section: 코드 Data Section: 전역 변수 Stack Section: 복귀 주소나 지역 변수..

CS/OS 2021.01.10

Operating System Concepts 정리 - Ch.02

최근에 OS 스터디를 하게 되었는데, 좋은 기회라고 생각하고 학습한 내용을 정리해 보았다. 노션에서 티스토리로 바로 업로드 해주는 기능이 있을 줄은 몰랐는데 써보니까 좋네... 2.1 Operating System Servies OS는 프로그램 실행 환경을 제공한다. 즉, 프로그램과 사용자에게 특정 서비스를 제공함으로써 프로그램이 정상적으로 실행될 수 있는 환경을 제공한다고 볼 수 있다. OS의 종류와 프로그램의 종류에 따라 제공하는 서비스는 달라질 수 있지만, 크게 다음과 같이 볼 수 있다. User Interface: 크게 CLI/GUI 구분. Program Execution: 프로그램을 메모리에 적재해 실행할 수 있도록 함. I/O Operation: 보안 문제 때문에 사용자나 프로그램은 직접 입출..

CS/OS 2021.01.02

2021 카카오 블라인드 채용 지원 후기

사실 블로그 운영하려고 했는데 바빠서 (신분이 군인이기도 하니까...) 블로그를 완전히 놓고 있었는데, 뜻깊은 기회를 이렇게라도 글로 남기고 싶어서 다시 블로그를 꺼냈다. 이제 말년휴가 시작이기도 하니까 이걸 계기로 블로그를 다시 시작해보고 싶다. 검색으로 들어오신 분들을 위해 결과만 말하자면, 1차 인터뷰에서 떨어졌다. 그래도 아쉽거나 하지 않은건, 제대로 공부를 시작한지 (속사정 길게 이야기하면 너무 TMI 일 것 같음 ㅎㅎ;;) 반년도 안되었던 입장이었고, 그냥 1차 코딩테스트 문제 맛보기 하고 싶어서 지원한게 여기까지 왔다는걸로 정말 만족스러웠기 때문일까? 개인적인 이야기는 글 중간중간에 이야기 하는걸로 하고, 글의 본 목적인 후기를 풀어보겠다. 1차 온라인 코딩 테스트 (9/12) 군대 입대하기..

기타/아무말 2020.11.07

<백준 17071> 숨바꼭질 5

문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 500,000)에 있고, 동생은 점 K(0 ≤ K ≤ 500,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 동생은 항상 걷기만 한다. 동생은 항상 매 초마다 이동을 하며, 이동은 가속이 붙는다. 동생이 이동하는 거리는 이전에 이동한 거리보다 1을 더한 만큼 이동한다. 즉, 동생의 처음 위치는 K, 1초가 지난 후 위치는 K+1, 2초가 지난 후 위치는 K+1+2, 3초가 지난 후의 위치는 K+1+2+3이다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생..