Root Dir68 [모던 자바 인 액션] Ch.16 - 비동기 프로그래밍 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. Future의 단순 활용 Future를 사용하면 계산이 진행될 동안 우리는 다른 작업을 수행할 수 있다. Future를 이용하려면 Callable 객체를 이용해 ExecutorService에 제출해야 한다. get()을 통해 계산 결과를 요청할 경우, 완료가 되었다면 즉시 반환하지만 아니라면 작업이 완료될 때까지 우리 스레드를 블록 시킨다. 따라서, 영원히 블록되는 것을 방지하기 위해 get 메서드를 오버로드해서 우리 스.. Language/Java 2022. 7. 15. [모던 자바 인 액션] Ch.15 - 동시성 기초 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 자바의 동시성 진화 자바 5부터 지원한 ExecutorService(스레드 풀)은 멀티코어 CPU에서 쉽게 병렬 프로그래밍을 구현하는데 도움이되었다. 이후 자바 7에서 포크/조인 프레임워크와 자바 8에서 스트림 API를 통해 병렬 프로세싱이 강화되었다. 하지만 스레드풀은 지정된 스레드 이상으로는 실행할 수 없기 때문에 몇 개의 태스크가 I/O나 네트워크 연결을 기다린다면 아무런 작업을 하지 않게 되므로 주의해야 한다. 포.. Language/Java 2022. 7. 13. [모던 자바 인 액션] Ch.14 - 자바 모듈 시스템 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 소프트웨어 유추 지금까지는 이해하고 유지보수하기 쉬운 코드를 구현하는데 사용할 수 있는 기능에 대해 중점적으로 살펴봤다. 하지만 이러한 저수준 영역이 아니라 고수준에서 기반 코드를 바꿀 때 유추하기 쉬워 생산성을 높일 수 있는 방법이 필요하다. 추론하기 쉬운 소프트웨어를 만드는데 도움을 주는 관심사 분리(SoC, Seperation of Concerns)와 정보 은닉(Information Hiding)을 살펴본다. 1.1.. Language/Java 2022. 7. 12. [모던 자바 인 액션] Ch.13 - 디폴트 메서드 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. API 변화 인터페이스를 변화시키면 구현 클래스들은 이에 영향을 받는다. 만약 인터페이스가 이미 릴리즈되어 공개되었다면 사용자가 어떻게 구현해서 사용하고 있는지 알 방법이 없다. 그 상태에서 인터페이스를 변화시킨다면, 기존 빌드한 코드들의 바이너리 호환성은 유지되기 때문에 실행은 되겠지만 변경된 메서드를 호출할 경우 AbstractMethodError가 발생한다. 만약 전체 어플리케이션을 재빌드해서 다시 실행시킨다면 이때.. Language/Java 2022. 7. 11. [Spring Security] @AuthenticationPrincipal https://spring.io/guides/topicals/spring-security-architecture/ Spring Security Architecture this topical is designed to be read and comprehended in under an hour, it provides broad coverage of a topic that is possibly nuanced or requires deeper understanding than you would get from a getting started guide spring.io 공식문서를 참고하여 작성했습니다. @AuthenticationPrincipal @RequestMapping("/foo") public Strin.. Framework/Spring 2022. 7. 11. [모던 자바 인 액션] Ch.12 - 새로운 날짜와 시간 API 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 각종 날짜 및 시간 클래스 1.1 LocalDate와 LocalTime LocalDate date = LocalDate.of(2022, 7, 9); int year = date.getYear(); //2022 Month month = date.getMonth(); //JULY int monthValue = date.getMonthValue(); //7 int day = date.getDayOfMonth(); //9 Day.. Language/Java 2022. 7. 9. [모던 자바 인 액션] Ch.11 - Optional 클래스 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. NPE 핸들링 NullPointerException(NPE)는 null 값이 존재하는 언어를 사용하는 개발자라면 모두 겪는 예외이다. 널참조를 피하기 위해 처음에는 조건문을 활용해 if (object != null) 식으로 처리했다. 하지만, 이러한 null 확인 코드로 인해 들여쓰기 수준이 증가하고, 그에 따른 조건문 분기도 증가했다. 이러한 반복 패턴 코드를 '깊은 의심(Deep Doubt)'라고 부른다. 그루비(Gr.. Language/Java 2022. 7. 8. [모던 자바 인 액션] Ch.10 - 람다를 이용한 DSL 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 도메인 전용 언어(DSL) DSL은 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어이다. I/O, 디스크 접근 등 외부적인 요소를 신경쓰지 않고 비즈니스 문제를 해결하는 코드를 작성하기 때문에 이해관계자들이 코드를 이해할 수 있다는 것이 큰 장점이다. DSL은 내부 DSL, 외부 DSL, 다중 DSL로 나눌 수 있다. 1.1 내부 DSL 내부 DSL(Embedded DSL)은 순수 자바 코드같은 기존 호스팅 언어를 기.. Language/Java 2022. 7. 7. [모던 자바 인 액션] Ch.9 - 리팩터링, 테스팅, 디버깅 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 리팩터링 람다, 메서드 참조, 스트림 등의 기능을 이용해서 기존 코드를 더 가독성이 좋고 유연한 코드로 리팩터링한다. 가독성이 좋다는 것은 다른 사람들이 봐도 쉽게 이해할 수 있어 유지보수가 용이하다는 것이다. 익명 클래스는 람다식으로 바꾸고, 람다식은 메서드 참조로 더욱 명확하게 할 수 있다. 또한, 기존 명령형 데이터 처리를 스트림 API를 활용해 문제 해결 방법을 더 직접적으로 기술할 수 있을 뿐만 아니라 쉽게 병렬.. Language/Java 2022. 7. 4. [모던 자바 인 액션] Ch.8 컬렉션 API 개선 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 컬렉션 팩토리 //기존 List alphabet = Arrays.asList("A", "B", "C"); 일반적으로 작은 컬렉션을 만든다는 것은 고정값으로 사용하기 위함이다. 따라서 우리는 크기도 고정, 추가/삭제/갱신도 불가능한 작은 컬렉션 객체를 원한다. Arrays.asList 메서드를 이용하면 배열을 리스트로 만들기에 List라도 고정 크기를 갖는다. 따라서, 요소를 갱신하는 것은 괜찮지만 추가한다면 Unsuppo.. Language/Java 2022. 6. 30. [모던 자바 인 액션] Ch.7 병렬 데이터 처리와 성능 해당 서적을 참고하여 개인 공부용으로 정리한 글입니다. 기본적인 Java 지식이 있으시다면 이해하기 수월한 정도입니다 :) 또한, 해당 책은 2018년 Java 11 기준으로 작성되어 있습니다. 따라서 이후 버전에서 변경된 내용은 수정하여 작성했습니다. (아는 부분만 말입니다..) 1. 병렬 스트림 병렬 스트림이란 스트림 요소를 묶음(청크, Chunk) 단위로 분할한 스트림이다. parallel()을 통해 병렬 flag를 설정할 수 있고, 반대로 sequential()로 순차 스트림으로 바꿀 수 있다. 이 두 가지를 통해 어떤 연산을 병렬로 실행할지 순차로 실행할지 제어할 수 있다. 하지만, 병렬처리가 반드시 더 나은 속도를 보여주는 것은 아니다. 예컨데, 1부터 N까지 합계를 구하는 메서드를 작성할 때.. Language/Java 2022. 6. 28. [빅데이터 분석기사] 실기 요약본 (5) - 작업형 함수 정리(with. R) 데이터 전처리 default packages : base, stats, ... is.na(x) : 데이터의 각 행과 열이 결측값인지 보여줌 na.omit(x) : 결측값이 하나라도 있는 행 제거, 완전 분석법 scale(x, center, scale) : 기본은 z-score 정규화(표준화), 최대-최소는 center = min(), scale = max() - min() IQR(x, na.rm, ...) : 사분위수 범위 quantile(x, na.rm, ...), fivenum(x, na.rm, ...) : 분위수 sample(x, size, replace) : 무작위추출 // 예측 문제에서 주로 사용 row_number(x) : 순위 지정(중복 x) / min_rank(x) : 공동 순위 xtabs.. Computer Science/etc 2022. 6. 24. 이전 1 2 3 4 5 6 다음