목록전체 글 (41)
희디비
13기 싸피 면접 지난주 서울에 올라가 면접을 보았습니다. ( 서울 너무 멀어요.. ) 질문에 솔직하게 답변 하였고 눈 떠 보니 면접이 끝났습니다.기차를 타고 집에 가면서 면접에 대해서 복기 하였는데 좀 더 답변을 잘 할수 있었을것 같은데...하는 아쉬움이 남긴 했지만 돌아간다 해도 크게 답변이 다를것 같진 않았습니다.떨어질 것 같은 느낌이 들었는데 떨어졌습니다 ㅠ 떨어진 이유 ( 추측 )싸피에 지원한 이유는 공부할 환경과 지원금 때문이였습니다.영한님 강의를 80% 배웠으나 말할 정도의 실력은 안되기 때문에 싸피에 들어가 개념을 정리하며같이 공부하면 성장에 도움이 되겠다고 생각 하였습니다.면접에서 모든 답변에 솔직하게 말했는데 왜 싸피가 필요한지에 대한 어필이 부족 했다고 생각합니다.또한 질문은 의도가 ..
Enum 이란? Enumeration 의 약자로 열거라는 뜻을 가지고 있으며 관련있는 상수들의 집합을 의미 합니다.enum은 왜 만들어졌을까요? 간단한 예시를 통해 알아보겠습니다. 과일 할인 정책파라미터로 과일을 입력 하면 과일의 할인 퍼센트를 알려 주는 함수가 있습니다.public static int fruitDiscountPercent(String fruit){ if(fruit.equals("banana")){ return 10; } if(fruit.equals("apple")){ return 20; } if(fruit.equals("grape")){ return 25; } return 0;} 만약에 개발자가 비교하는 과일의 스펠링을 잘못쓰면 어떻..
생산자 소비자 문제 생산 하는 스레드 / 소비 하는 스레드를 나누어 생각해 보겠습니다.생산 스레드는 파일에 데이터를 읽는 역할을 하고소비 스레드는 읽은 데이터를 처리 하는 역할을 합니다.이렇게 처리 하려면 어딘가 데이터를 보관하는 자료 구조가 필요 합니다.자료 구조를 Queue 로 만들고 이름을 버퍼 라고 하고 버퍼의 크기를 2개로 설정 하겠습니다. Bounded Queue는 여러 스레드에서 접근 할수 있기 때문에 synchronized가 걸려 있습니다.생산자 스레드만 먼저 실행 해보겠습니다. 생산자 1번 스레드가 락을 획득해 버퍼에 데이터를 넣고 락을 반납 하였습니다.2,3 번 스레드는 락을 획득 하지 못해 락 대기 집합에서 blocked 상태로 있습니다. 2번 스레드가 락을 획득해 버퍼에 데이터..
LockSupprot 자바 1.5 부터 synchronized 단점을 해결 하기 위해 java.util.concurrent 패키지가 추가 되었습니다.ReentrantLock를 알기 위해선 LockSupport에 대한 정보가 필요한데LockSupport는 자신을 Waiting 상태로 바꾸거나 인터럽트 없이 다른 스레드를 깨울 수 있는 기능을 제공 합니다.간단한 예제를 통해서 알아 보겠습니다.main 스레드 작업 : unpark를 통해 thread -1 번을 깨웁니다.thread -1 작업 : park를 통해 자신 스레드를 waiting 상태로 바꿉니다.public static void main(String[] args) { Thread thread1 = new Thread(new ParkTe..
메모리 가시성 메모리 가시성을 알아 보기 위해 예제를 만들었습니다.스레드A의 작업 : while( flag )만약 메인 스레드에서 스레드A의 flag 값을 바꾼다면 작업이 중단 될까요?public static void main(String[] args) { RoofTask task = new RoofTask(); Thread thread = new Thread(task, "Thread-A"); log("스레드-A 시작" + task.flag); thread.start(); sleep(1000); log("스레드-A 루프 종료 요청"); task.flag = false; log("task.flag = " +..
조인 ( Join )조인은 왜 필요 할까요?간단한 작업을 통해 이해 해보도록 하겠습니다.스레드A는 1~10의 합을 구하는 작업을 하고 메인 스레드는 그 결과를 출력 합니다.public static void main(String[] args) throws InterruptedException { AddOneToTen task = new AddOneToTen(); Thread threadA = new Thread(task, "Thread-A"); threadA.start(); System.out.println("결과 값 : " + task.result); System.out.println("Thread-A 상태 : " + threadA.getSt..
스레드 생성스레드 생성 방법은 두 가지 입니다.Thread 상속 받기public class HelloThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName() + ": run()"); }} 스레드를 직접 상속 받으면 문제가 있습니다.자바는 다중 상속을 지원 하지 않습니다. 스레드를 상속 받을 경우 다른 상속을 받을 수 없습니다.스레드의 불필요한 부분을 상속 받는 문제가 있습니다. 스레드의 작업만 재정의 하기 때문에 상속을 받을 필요가 없습니다.스레드 상속 보다는 Runnable 인터페이스를 이용한 스레드 생성을 주로 합니다. Runnable 인터..
멀티테스킹 멀티태스킹이란 뭘까요?페이커 선수가 여러 게임을 플레이 하는 것 처럼 보이지만 실제 CPU는 한번에 한 작업 밖에 하지 못합니다.실행이 너무 빠르기 때문에 눈으로 봤을땐 마치 동시에 실행 되는 것 처럼 보이는데요이렇게 컴퓨터 시스템이 동시에 여러 작업을 수행 하는 능력을 멀티태스킹 이라고 합니다. 프로세스프로그램이 실행 되기전 까진 단순한 파일에 불과 합니다.운영체제 안에서 실행중인 프로그램을 프로세스라고 합니다.프로세스는 실행 중인 프로그램의 인스턴스 입니다.프로세스는 독립적인 메모리 공간을 가지고 있습니다.따라서 프로세스는 자신의 메모리 공간만을 참조 하며 다른 프로세스는 간섭 하지 않습니다.즉. 프로세스가 작동이 중단 되어도 다른 프로세스에 영향을 주지 않습니다. 스레드 스레드는 프로..
💡 문제https://www.acmicpc.net/problem/2146 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다는 생각을 하게 되었다. 그래서 그는, 생색내는 식으로 한 섬과 다른 섬을 잇는 다리 하나만을 만들기로 하였고, 그 또한 다리를 가장 짧게 하여 돈을 아끼려 하였다.이 나라는 N×N크기의 이차원 평면상에 존재한다. 이 나라는 여러 섬으로 이루어져 있으며, 섬이란 동서남북으로 육지가 붙어있는 덩어리를 말한다. 다음은 세 개의 섬으로 이루어진 나라의 지도이다. 위의 그림에서 색이 있는 부분이 육지이고, 색이 없는 부분이 바다이다. 이 바다에 가장 짧..
🎉@ExceptionHandler 예외 상황이 발생 했을 때 예외를 처리 하고 Json 오류 안내를 해주거나 오류페이지로 이동 할수 있게 해주는ExceptionResolver의 한 종류 입니다. 📝 간단한 API컨트롤러는 Json 타입으로 상품 이름과 가격을 입력 받습니다.@RequestBody는 받은 Json을 한번에 orderDto에 매핑을 시도 합니다.이때 int 값인 price에 String 값을 받게 되면 어떻게 될까요? 정상 값정상적인 경우 받은 이름과 가격을 그대로 Json으로 반환 합니다. 실패 값실패한 경우 Json으로 결과 값을 받게 됩니다. 오류 처리 흐름1. 컨트롤러에서 예외가 발생 합니다.2. ExceptionResolver 우선순위에 따라 처리 할수 있는 resolver를 ..