본문 바로가기

All74

[우아한테크코스 5기] 우아한테크코스 한 달 생활기 #1. 고등학교는 전쟁터였다. 위태로이 달려있는 명문이란 간판을 사수하기 위해, 우리는 차라리 콜로세움의 검투사였다. 자습실의 좌석 배치는 모의고사 성적대로 달마다 바뀌었다. 다섯 명에게만 주어지는 듀오백 의자를 차지하려면, 모두가 적이었다. 모르는 것이 없어야 했고 조금의 틈도 내비치면 안 됐다. 그러므로, 필마단기의 조자룡은 언제나 귀에 이어폰을 쑤셔 박고 속으로만 노래를 불렀다. 고독이라는 피가 묻은 트로피를 들어 올렸다. 주위를 돌아보니 온통 뱁새눈깔이었다. 고름이 맺히도록 앉아있었을 뿐인데, 난 걸어 다니는 그들의 나태이자 동물원의 천재 원숭이가 되었다. 그렇게, 트로피는 마를 겨를이 없었다. #2. 우연히 집어 든 책에서 만난 구절이 오랜 모토로 남아있다. “사랑하라, 그리고 하고 싶은 것을 .. 2023. 3. 19.
[Effective Java] Item 46. 스트림에서는 Side Effect 없는 함수를 사용하라 아래는 우아한테크코스 5기 Level 1의 블랙잭 미션을 진행하며 작성한 코드이다. public static Participants from(List names) { List participants = new ArrayList(); participants.add(new Dealer()); names.forEach(name -> participants.add(new Player(name))); 위 코드에는 잘못된 점이 있다. 무엇이 잘못되었을까? 정답은, 이 글을 쭉 읽다보면 알 수 있다. 위의 코드에 대해 리뷰어가 커멘트를 남겨주었다. 이유가 궁금하여 관련 내용을 찾아봤고, Effective Java의 Item 46에서 해답을 찾았다. 스트림(Stream)은 왜 만들어졌을까? 스트림은 그저 또 하나의 A.. 2023. 3. 7.
ConcurrentHashMap이란? ConcurrentHashMap ConcurrentHashMap은 Java의 Map 인터페이스를 구현한 클래스 중 하나로, 멀티스레드 환경에서 안전하게 사용할 수 있는 스레드 안전(thread-safe)한 맵이다. ConcurrentHashMap은 JDK 1.5부터 제공되며, 동시성 처리를 위한 세그먼트(segment)라는 내부 데이터 구조를 사용하여 구현된다. ConcurrentHashMap의 특징 1. 동시성 환경에서 안전하게 동작한다. 2. 세그먼트라는 내부 데이터 구조를 사용한다. 3. 각 세그먼트는 서로 독립적인 해시 테이블을 가지고 있다. 4. 세그먼트를 동시에 접근할 수 있으며, 서로 영향을 주지 않는다. 5. 모든 연산은 세그먼트 레벨에서 수행되므로 세그먼트 락(segment lock)만 .. 2023. 3. 7.
다운스트림(Down Stream)이란? Java Stream API에서의 다운 스트림은 groupingBy나 partitioningBy 등의 상위 수준 수집기(collector)를 사용한 후에, 그 결과로 반환된 맵에서 더 작은 단위로 데이터를 수집하는 데 사용되는 수집기를 의미한다. 다운스트림 수집기는 map, list, set, count, sum, averaging, max, min, reducing 등 다양하며, 람다식을 사용하여 직접 사용자가 정의하여 사용할 수도 있다. 예를 들어서, groupingBy로 Map을 반환한 다음에 그 결과로 반환된 맵에서 다운스트림 수집기로 list를 사용하여 값을 수집할 수 있다. 2023. 3. 7.