본문 바로가기
반응형

분류 전체보기65

[Java] String, StringBuilder, StringBuffer 차이, 사용하기. 알고쓰자! 시간적 여유가 있어. 정리를 다시 해볼까한다. 대부분의 개발자들은 String, StringBuffer, StringBuilder의 알고리즘적인 특징을 알아야 한다고 생각하며, 왜 쓰이는지에 대해서 써볼까한다. 연산속도는 String이 StringBuffer, StringBuilder 보다 느리고 메모리 관점으로 바라봐도 비효율적인 측면을 가지고있다. 즉, 단일 스레드 환경에서는 StringBuilder를 사용하고 멀티 스레드 환경에서는 StringBuffer가 적합하다. (Thread-safe) 하지만, 속도적인 측면에서는 비동기에 적합한 StringBuilder 가 적합하고 볼 수 있다. String이 StringBuffer, StringBuilder 보다 연산속도가 느린이유는 String 클래스는 .. 2021. 6. 25.
[Spring] 트랜잭션 설정 propagation (전파속성) @Transactional 종류 / propagation 전파속성 Spring framework 환경하에서 개발하다보면 필요한 Transaction에 대한 기본적인 설정들이다. 간혹 설정을 제대로 안해놔서 rollback이 되버리는 case도 존재하기도 했었다. REQUIRED와 REQUIRES_NEW를 보통 사용했는데, 다른 격리수준도 확인차 정리한다. REQUIRED(기본값) 부모 트랜잭션이 없다면 새로운 트랜잭션 생성.해당 메써드가 호출한 곳와 별도의 쓰레드라면 어떤 동작이 일어날까? 답은 전파 레벨과 상관 없이 무조건 별도의 트랜잭션을 생성하여 해당 메써드를 실행한다. Spirng은 내부적으로 트랜잭션 정보를 ThreadLocal 변수에 저장하기 때문에 다른 쓰레드로 트랜잭션이 전파되지 않는다 중.. 2021. 3. 19.
캐시(Cache) Local Cache & Global Cache Cache (캐시) 란? Cache는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래걸리는 경우나 값을 다시 계싼하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간이 없어 더 빠른 속도로 데이터에 접근 가능하다. DBMS의 부하를 줄여주고 성능을 높혀주나, Disk가 DB에 비해 작아 비용이 비싸다. 캐시는 시스템의 효율성을 위해 여러 분야에서 두루 쓰이고 있다. 보통 Spring framework 에서 개발을 진행하면서 Cache는 ehCache와 Redis를 주로 사용한다. Local Cache (ehCache [Heap]) Local 장비 내에서만 사용 되는 캐.. 2021. 3. 11.
Redis의 자료형, 특징과 시간복잡도 그리고 클러스터 Redis 레디스(Redis)는 Remote Dictionary Sever의 약자로 Key-Value 구조로 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다. 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS이다. BSD라이선스를 따른다. Redis는 가장 인기 있는 key-value 저장소이다. 외부층에서 Redis의 데이터 모델은 Key를 Value에 매핑하는 자료구조의 디렉토리 이다. Redis 그리고 기타 구조화된 스토리지 시스템 사이의 주요 차이점 중 하나는 Redis는 스트링뿐만 아니라 자료구조의 추상적 자료형(abstract Data)도 지원을 한다는 점이다. 문자열의 리스트 문자열의 집합 (반복되지 않고 정렬되지 않은 요.. 2021. 3. 10.
퇴사한 선배들, 남은 나의 고충을 담은 오랜만의 일지(2021.03.02) 오랜만의 블로그 작성이다. 회사에서는 사수의 퇴사로 보조로 업무를 했던 업무들 모두 떠안게되었고, Netflix OSS로 구성되어있던 모든 것들을 담당하게 되었다, 사실 구축을 같이 진행했고 지켜봤기에 큰문제는 없었다. 재밌기도 했는데, 내가 나가면 누가 담당할지는 모르겠다. 또한, 진행 했던 프로젝트들의 고도화 작업과 운영 개발자들에게 인수인계를 하기 위한 작업들을 진행했다. 내 일들을 넘기는 행동들은 심적, 육체적으로 쉽지 않다, 내 소스가 내 프로젝트가 내 개발론적인 생각이 잘 전달되고 더 디밸롭하길 바랬기 때문이다. 그리고 레거시가 되지 않길 바라는 엄마의 마음.. 개인적으로는 혼자가 아니라 한 가정을 꾸리게 되었다. 기쁜소식이다 ㅎㅎ 신혼 여행도 다녀왔고, 여행중 많은 생각을 했다. 회사에 속해.. 2021. 3. 2.
[Kafka] 같은메시지를 반복적으로 소비했던 리밸런싱 이슈 해결 (MAX POLL RECORDS CONFIG = "max.poll.record 초기 Kafka 운영 중 이상한 이슈에 직면했다. - 현상 kafka의 소비되어 처리된 메시지가 한 번이계속 반복적으로 수행하고 적게는 몇번 많게는 수십번까지 다시 소비하는 현상 이였다. 내 이론상 kafka 메시지는 리스너에서 처리된 후 kafka에 커밋을 치고 offset값을 올려주면서 다음 메시지를 처리한다고 생각했는데... 즉, 다시 말해서 정말 생각지도 못했던 이슈였던 것이다. 원인을 찾고 해당 증상을 면밀히 조사하여, kafka 리스너 셋팅 몇개를 수정하면서 문제를 해결하긴 했지만 초기에 알지 못했으면 큰 이슈로 연결 될뻔 했다. - 원인 Consumer가 메시지를 처리하는 도중 Timeout이 발생했고 그로 인해 파티션 리밸런싱 과정이 일어났다. Consumer는 (MAX_POLL_RECOR.. 2020. 11. 30.
반응형