목록Java (152)
Lewis's Tech Keep

처리율 제한 장치(rate limiter)란?클아이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치 특징특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한요청 횟수가 임계치를 넘어가면 추가로 도달한 모든 호출은 처리가 중단(block) 이점DoS 자원 고갈 방지비용 절감추가 요청을 block 하기 때문에 더 많은 서버 자원이 필요하지 않게 됨서버 과부하 방지bot에서 오는 트래픽이나 사용자의 잘못된 이용패턴으로 유발된 트래픽을 걸러내는데 활용 요구되는 사항들낮은 응답시간가능한 적은 메모리분산형 처리율 제한여러 서버나 프로세스에서 공유예외 처리 - 발생한 경우에 사용자에게 분명히 보여주기높은 fault tolerance : 제한 장치에 장애가 생기더라도 전체 시스템에 영향을 주..
문제https://school.programmers.co.kr/learn/courses/30/lessons/258711?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정리어떻게 풀어야 할 지 감도 잡히지 않아서 다른 분들 풀이를 많이 참고했다. 정식 풀이 링크갯수를 구해야 하는 그래프 모양은 3개다.막대 / 8자 / 도넛 모양이다. 막대나가는 간선은 2개 이상 존재하고 들어오는 간선은 존재하지 않는다. (도넛 모양 그래프, 막대 모양 그래프, 8자 모양 그래프의 수의 합은 2이상 이라는 조건이 있음) 8자나가는 간선이 2개 이상 존재..
링크https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정리 실패 코드 dfs 로 하려고 시도했으나 실패하였다.각 열 기준으로 하나씩 검사하면서 있는 것은 visited 체크를 해주면서 합계를 구한다.하나의 열을 다 돌면 합계를 구한다. 정확성은 성공했으나 효율성에서 실패. 중간부터 실패할 것이라 감은 왔으나 다른 방법이 딱히 생각나지 않았기에 진행하였음. 성공 코드 bfs로 처리한 다음 어떻게 효율적으로 처리할 것인지가 중요했다. 각 칸 기준으로..
java 21 로 버전업하면서 Spring kafka consumer도 virtual threads 로 사용하고 싶었기에 ListenerContainerFactory 빈을 등록할 때 링크 를 참고해서 AsyncTaskExecutor와 virtualThread 옵션을 활성화 시켜봤다.그러나 운영 배포 후 rebalancing 이 계속 발생하면서 파드가 떨어지기 시작했다.왜 그런가 했더니 설정 시 asyncTaskExecutor.setConcurrencyLimit(SimpleAsyncTaskExecutor.UNBOUNDED_CONCURRENCY);아래와 같이 TaskExecutor ConcurrenyLimit 정책을 UNBOUNDED_CONCURRENCY로 가져갔더니 쓰레드를 무한히 생성하였고 이로 인하여..
Spring Hibernate Envers 사용 시 아무것도 설정하지 않고 사용 시 revisionId와 revision timestamp를 저장하는 revinfo라는 테이블이 있는데, 해당 테이블의 revisionId 값은 integer로 저장된다.Dev 환경이라면 괜찮지만 Production 환경에서 Envers를 사용하고 있고 자주 기록하는 서버라면 Integer MAX값인 21억을 넘는 것은 현실이 될 수도 있다.이런 경우 테이블이 이미 생성되어 있는 경우 마이그레이션과 함께아래와 같이 CustomRevisionEntity를 준비해서 변경해주는 것이 좋다.-- table seq type 변경ALTER TABLE revinfo ALTER COLUMN rev TYPE BIGINT USING rev::..
서론 객체 지향적 및 테스트 코드 기반 개발을 시도 해 보자! 라는 목적으로 현재 진행하고 있는 사이드 프로젝트가 있다. 이를 적용하며 겪은, 아직 모자란 지식으로 겪는 이슈에 대해 적어보고 해결됐을 때의 방법 또한 양식이 되지 않을까 하여 기록한다. 본론 1. JPA를 사용하였을 때 불변성을 유지하기 힘든 점에 대한 고민 https://lewisseo91.tistory.com/156 [JPA] 엔티티가 final이 될 수 없는 것에 대하여 JPA를 하면서 좀 불만아닌 불만이랄까... 불변성 보장을 하고 싶은데 final을 쓸 수 없는 모순에 자꾸 부딪히게 된다.. (참고 링크) 일단 왜 final을 이용해 불변 객체로 만들고 싶은가 하면 특히 진행 lewisseo91.tistory.com 나는 대체적으..

계기 Spring으로 user 관련 서비스를 만들다 DataJpaTest를 통한 테스트 코드 운용 중에 에러를 발생! 에러 메시지 o.h.e.internal.DefaultLoadEventListener : HHH000327: Error performing load command org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) ~[hibernate-core-5.6.10.Final.jar:5.6.10.Final] at org.hibernate.e..
JPA를 하면서 좀 불만아닌 불만이랄까... 불변성 보장을 하고 싶은데 final을 쓸 수 없는 모순에 자꾸 부딪히게 된다.. (참고 링크) 일단 왜 final을 이용해 불변 객체로 만들고 싶은가 하면 특히 진행 중인 사이드 프로젝트에 web-flux 를 사용하려고 생각하고 있었는데, web-flux는 리액티브 웹 프레임워크이며 논블로킹 리액티브 스트림을 이용하게 될 것이기 때문에 불변임을 보장하여 좀 더 안정적인 프로그램을 만들고 싶었다. 불변 객체 일 때 장점 - https://mangkyu.tistory.com/131 [Java] 불변 객체(Immutable Object) 및 final을 사용해야 하는 이유 클린코드를 읽어도, 이펙티브 자바를 읽어도, 개발을 잘하는 팀의 얘기를 들어도 항상 좋은 코..