분류 전체보기(8)
-
[Java] 자바 8 Streams와 ConcurrentModificationException
dataMap.forEach((k, v) -> { func(v); dataMap.remove(k); }); Spring Application을 만드는데 동시성 보장이 필요해 ConcurrentHashMap을 사용하였는데, Streams를 사용한 다음 로직에서 ConcurrentModificationException이 발생했다. 발생 원인을 확인해보니 Collection.forEach(Stream도 collection)의 로직 동안은 데이터가 immutable 해야한다. 따라서 수정을 감지한 즉시 ConcurrentModificationException을 던지며 프로그램을 멈춘다. 즉 ConcurrentHashMap과 상관없이, forEach와 연관되어있는 문제였다. for(Map.Entry e : dat..
2022.01.03 -
[백준] 3190 - 뱀 (python)
문제 자체는 단순 구현문제이고, 기존에 C++로도 풀었기에 생각보다 어렵지 않았다. 다음 부분을 그대로 구현하는게 핵심적인 문제라고 생각하면 된다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 결국 머리 위치만 잘 이동해주면 되고 (list.insert로 제일 앞에 삽입해줌) 중간 몸은 그대로 두고, 꼬리만 사과를 먹지 못하면 삭제를 하면 되었다. 또 놓치기 쉬운 부분이 하나 있는데.. 게임 시작 시간으로부터 X초가 끝난 뒤에 왼쪽(C가 '..
2022.01.01 -
[Spring, Kafka] Spring Kafka Consumer 사용시 오프셋 관리
Spring Kafka를 이용하여 대용량 데이터를 consuming 하고있는 어플리케이션을 제작하고 있었는데 어플리케이션 오류 등 여러 이유로 consumer가 죽거나 할때 재시작을 해줘야 하는 경우가 있었다. 재시작시 consumer offset이 유지될 경우 엄청나게 밀린 LAG을 처리하기에 기능이 LAG이 해소되는동안 정상동작 못하는 이슈가 있어서 해결이 필요했다. Spring Kafka 에 ConsumerSeekAware 인터페이스가 존재하는데, 다음과 같은 기능들이 정의되어있다. https://docs.spring.io/spring-kafka/api/org/springframework/kafka/listener/ConsumerSeekAware.html ConsumerSeekAware (Sprin..
2021.12.30 -
[프로그래머스] 기둥과 보설치 (Python)
https://programmers.co.kr/learn/courses/30/lessons/60061 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1]] [[ programmers.co.kr 건물을 건설할때는 심플하게 해당 조건을 만족하는지 검사를 한다. 기둥은 바닥 위에 ..
2021.12.30 -
블로그 시작
글쓰기가 귀찮지만 써보자
2021.12.30 -
[1992] Various Artists - Artificial Intelligence
Warp Records의 전성기와 그 역량이 드러난 앨범이다. 핑크 플로이드와 크라프트베르크의 앨범을 바닥에 두고 앉아있는 안드로이드의 모습을 그려낸 앨범 커버도 인상적이다. 그저 귀가 즐거워지는 음악 4.0 / 5.0
2019.03.28