본문 바로가기

전체 글9

[스크랩] 동시성 문제 예시 및 해결방안 https://devwithpug.github.io/java/java-thread-safe/#site-nav 자바에서 동시성 문제를 해결하는 3가지 키워드 개요 devwithpug.github.io 2022. 4. 14.
[스크랩] CORS란 / 발생할 수 있는 문제 / 해결방법 CORS에 대해 잘 정리해둔 블로그 https://evan-moon.github.io/2020/05/21/about-cors/ 2022. 4. 14.
객체 생성 패턴 - Builder Pattern 객체를 생성할 때 많이 사용되는 방법에는 생성자 패턴, Setter를 이용한 자바빈즈 패턴 등이 있다. 이 방법들과 Builder 패턴을 이용한 객체 생성에는 무슨차이가 있는지 알아보자. Builder 패턴을 이용한 객체 생성의 장점 1. 메소드 체이닝 방식으로 원하는 값만 세팅하기가 편하다. 2. 필드값이 추가되었을 때 최소한의 소스 수정으로 유연하게 대처할 수 있다. 3. 불변성을 확보할 수 있다. 4. 가독성을 높일 수 있다. 1. 메소드 체이닝 방식으로 원하는 값만 세팅하기가 편하다. 가령 아래와 같은 필드를 가지고 있는 Dog 객체를 'note' 필드는 빈값으로 둔 채 생성자 패턴으로 인스턴스화 시키려고 했을 때, 빈 값이라도 넣어주거나 'note'를 파라미터로 가지지 않는 새로운 생성자를 오버.. 2022. 2. 20.
Java Stream 과 for-loop 성능 비교 Java Stream API는 왜 for-loop보다 느릴까? 스트림이 무엇인가? 스트림은 함수형 프로그래밍 언어에서 이야기하는 sequence와 동일한 용어이다. Sequence는 task의 순서를 나열한 것이다. 예를 들어, 여러분이 군부대에서 식기 당번을 맡았다고 하자. 그러면 식기 당번이 해야 할 일을 sequence로 나열하면 다음과 같다고 가정해보자. # 대대 식기 당번이 해야 할 일 1. 밥차에서 밥을 받아온다. deliverMeal(); 2. 사람들이 다 먹은 식기를 설거지한다. washDishes(); 3. 사람들이 먹다 남긴 음식물 쓰레기를 짬통에 버린다. throwTrash(); 밥을 가져오지도 않았는데 (1번), 음식물 쓰레기를 짬통에 버린다거나(3번), 식기를 설거지하는 것은 (2.. 2022. 2. 9.