개발(6)
-
[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 -
[BOJ 1414] 사탕
GㅎDP공부를 시작해서 만난문제중 처음으로 푸는데 1~2일정도 시간이 소요된 문제이다. void eratos(int n) { if(n
2019.03.28 -
페도라29 anaconda 관련 이슈 해결
dd현재 싱크패드에 페도라를 설치해서 사용중 프로젝트 진행을 위해 파이썬을 3.7.2에서 3.6.5로 다운그레이드 하였다. sudo conda install python=3.6.5 엄청난 문제가 발생하였다. 페도라의 패키지 관리자 dnf가 제대로 안먹히는 것이였다. Traceback (most recent call last): File "/usr/bin/dnf", line 57, in from dnf.cli import main ImportError: No module named 'dnf' 아무래도 페도라 OS내부의 커널이 이미 파이썬을 이용해 구축되어있는 부분이 있는 것 같았다. 스택오버플로우와 구글 검색으로 5~6시간정도 돌아 다녀봤는데 해결이 안되 최종적으로 나한테 작동하는 방법은 rpm -qa p..
2019.03.28