전체 글

전체 글

    [이것이 자바다] 16.11 스트림과 병렬처리 - 수집(collect())

    [이것이 자바다] 16.11 스트림과 병렬처리 - 수집(collect())

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 16.11 수집: collect() 요소들을 필터링 또는 매핑한 후 수집하는 최종 처리 메소드. 필요한 요소만 컬렉션으로 담을 수 있다. 요소들을 그룹핑한 후 집계(리덕션)할 수 있다. 16.11.1 필터링한 요소 수집 collect(Collector collector) 메소드는 필터링 또는 매핑된 요소들을 새로운 컬렉션에 수집하여 리턴한다. 위의 매개값인 Collector(수집기)는 어떤 요소를 어떤 컬렉션에 수집할 것인지를 결정한다. Collector의 타입 파라미터 T는 요소, A는 누적기, R은 요소가 저장될 컬렉션이다. 풀어서 해석하면, T 요소를 A 누적기가 R에 저장한다 는 의미이다. 다음과 같이 다양한 정적 메소드를 이용하여 ..

    [이것이 자바다] 12.6 멀티스레드 - 스레드 상태 제어

    [이것이 자바다] 12.6 멀티스레드 - 스레드 상태 제어

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 12.6.1 주어진 시간동안 일시 정지: sleep() 실행중인 스레드를 일정 시간 멈추게 하고 싶다면 Thread 클래스의 정적 메소드인 sleep()을 사용하면 된다. 다음과 같이 Thread.sleep() 메소드를 호출한 스레드는 주어진 시간 동안 일시 정지 상태가 되고, 다시 실행 대기 상태로 돌아간다. try { Thread.sleep(1000); } catch(InterruptedException e) { // interrupt() 메소드가 호출되면 실행 } 매개값으로는 얼마 동안 일시 정지 상태로 있을 것인지, ms 단위로 시간을 주면 된다. 주어진 시간이 되기 전에 interrupt() 메소드가 호출되면 InterruptedE..

    [이것이 자바다] 12.5 멀티스레드 - 스레드 상태

    [이것이 자바다] 12.5 멀티스레드 - 스레드 상태

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 스레드 객체를 생성하고 start() 메소드를 실행하면, 실행 대기 상태가 된다. (실행 대기 상태란, 아직 스케줄링이 되지 않아 실행을 기다리고 있는 상태를 말한다.) 실행 대기 상태에 있는 스레드 중에서 스레드 스케줄링으로 선택된 스레드가 CPU를 점유하고 run() 메소드를 실행한다. 이 때를 실행(Running) 상태라고 한다. 실행 상태의 스레드는 run() 메소드를 전부 실행하기 전에 스레드 스케줄링에 의해 다시 실행 대기 상태로 돌아갈 수 있다. 그리고 다른 드레스가 선택되어 실행 상태가 된다. 이러한 과정을 반복하며 스레드는 자신의 run() 메소드를 조금씩 실행하고, 실행된 상태에서 run() 메소드가 종료되면 더 이상 실행..

    [이것이 자바다] 12.4 멀티스레드 - 동기화 메소드와 동기화 블록

    [이것이 자바다] 12.4 멀티스레드 - 동기화 메소드와 동기화 블록

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 12.4.1 공유 객체를 사용할 때의 주의할 점 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있음. ex) 스레드 A가 사용하던 객체가 스레드 B에 의해 변경될 수 있기 때문에 A가 의도한 것과 다른 결과 산출. 12.4.2 동기화 메소드 및 동기화 블록 따라서 스레드가 사용 중인 객체를 다른 스레드가 변경할 수 없도록 하려면, 객체에 잠금을 걸어서 다른 스레드를 사용하지 못하게 해야 한다. 객체에 잠금을 걸기 위해 자바는 동기화(synchronized) 메소드와 동기화 블록을 제공한다. 스레드가 객체 내부의 동기화 메소드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 *임계 영역 코드를 실행하지..

    첫 블로그 개편 완료!

    처음 블로그를 만든 지 약 한 달이 넘었다. 스터디 자료를 정리하기 위해 만들었지만, 그 외에는 잘 사용하지 않게 되는... 하지만 나는 블로그를 적극적으로 활용할 목적이 있었기 때문에..! 조금 귀찮지만 시간을 내서 기본 디자인도 바꾸고 임시였던 블로그 이름도 바꿨다. 아직 개발자라기엔 많이 부족해서 개발지망생으로 정했다. 블로그 이름을 당당히 개발자로 바꿀 수 있는 날이 올때까지 노력하자!! 쓸데 없는 글이라도 자주 써야 티스토리와 친해질 것 같아서 잡담 탭도 만들었다. 앞으로 여기에 주제 없는 주저리 잡소리 업로드 예정.. 열심히 한번 운영해보자잇~~~!

    [이것이 자바다] 11. 기본 API 클래스(Math~Formatting)

    [이것이 자바다] 11. 기본 API 클래스(Math~Formatting)

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 1. Math 클래스 수학 계산에 사용할 수 있는 메소드를 제공 제공하는 메소드는 모두 static하므로 Math 클래스로 바로 사용 가능하다. abs - 절대값 Math.abs(int a) Math.abs(double a) max - 최댓값 Math.max(int a, int b) Math.max(double a, double b) min - 최솟값 Math.min(int a, int b) Math.min(double a, double b) ceil - 올림값 Math.ceil(double a) floor - 버림값 Math.floor(double a) round - 반올림값 Math.round(double a) long 타입 정수 반환 ..

    [이것이 자바다] 10. 예외 처리

    [이것이 자바다] 10. 예외 처리

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 1. 예외와 예외클래스 에러(Error): 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것 예외(Exception): 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 일반 예외(Exception): 컴파일하는 과정에서 예외 처리 코드가 필요한 지 검사함 (빨간줄) 실행 예외(Runtime Exception): 컴파일하는 과정에서 예외 처리 코드를 검사하지 않음 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태를 유지할 수 있다. → JVM은 예외가 Rumtime Exception을 상속했는지 여부를 보고 실행 예외를 판단한다! 2...

    맥북에어 M1 구매 결정

    맥북에어 M1 구매 결정

    맥북을 사야겠다고 결심했다. 1. 기존 노트북 스펙 현재는 ASUS 비보북 X560U을 사용하고 있다. 저전력 i5 cpu에 GTX-1050 gpu라는 난해한 목적성을 가진 모델이다. 예상외로(?) 나는 제품의 설계 의도대로 잘 써왔다. 저전력 cpu+적당한 무게로 최소한의 휴대성은 챙기고, 집에서는 고성능 gpu로 게이밍 성능을 챙기고.. 그렇게 4년 8개월동안 매일 평균 10시간 이상을 사용해오고 있다..! 그동안 AS는 커녕 단 한번의 팬 청소조차 없었다!! 이 노트북의 수명은 그저 경이롭다. ASUS는 정말 대단한 회사구나.. 노트북 기타 스펙: i5-8250u, 8GB RAM, 256GB SSD, 4GB VRAM, 36Wh Battery 사용했던 프로그램: Visual Studio, Androi..