일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 기업분석
- 객체지향
- XLF
- 무디스
- 금리인하
- 미국주식
- javascript
- StringBuffer
- mco
- 주린이
- Java
- S&P500
- 금리인상
- 현금흐름표
- 인플레이션
- FCF
- 그리디 알고리즘
- 오버라이딩
- 자바
- 잉여현금흐름
- 백준
- 알고리즘
- 다형성
- 접근제어자
- 프로그래머스
- 제태크
- etf
- 배당성장
- object
- 주식
- Today
- Total
목록Spring (57)
오늘의하루
Java에서 기본적으로 제공하는 ThreadLocal은 동시성 문제를 해결하는 가장 기본적인 방법 중 하나입니다.ThreadLocal은 내부적으로 Map 자료 구조를 통해 각 Thread 별로 데이터를 저장하고 불러오기 때문에 각 Thread는 자신만의 데이터를 독립적으로 가질 수 있습니다.Thread와 ThreadPoolThread는 하나의 프로세스 내에서 실행 단위를 뜻합니다.Spring을 통해 웹 개발을 할 때 일반적으로 ThreadPool을 통해 Thread를 관리합니다.이러한 상황에서 ThreadLocal을 사용할 경우, 몇 가지 주의해야 할 점이 있습니다.주의사항 1. ThreadPool 재사용 문제ThreadPool에서는 Thread가 응답 후 사라지는 것이 아니고 다시 ThreadPool로..
기존 방식public RoleHierarchy roleHierarchy() { RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl(); roleHierarchyImpl.setHierarchy("ROLE_ADMIN > ROLE_USER"); return roleHierarchyImpl;}변경 방식public RoleHierarchy roleHierarchy() { return RoleHierarchyImpl.fromHierarchy("ROLE_ADMIN > ROLE_USER");}변경 사항기본 생성자 사용 중단기존의 기본 생성자 생성자 RoleHierarchyImpl()은 사용하지 않게 되었습니다.팩토리 메소드인 fromHierarchy()을 통해 객..
GitHub - dukbong/spring-apache-Kafka-practice: Kafka 연습하기Kafka 연습하기. Contribute to dukbong/spring-apache-Kafka-practice development by creating an account on GitHub.github.comKafka란?실시간 대용량 메시지 스트리밍 플랫폼으로써 높은 처리량과 낮은 지연 시간을 특징으로 하며, 이벤트 기반 아키텍처를 구현하는데 주로 사용됩니다.이벤트 기반 아키텍처 : 시스템의 다양한 구성 요소 간의 상호 작용을 이벤트 중심으로 구성하는 패턴입니다.Kafka 구성 요소1. 이벤트(Event)시스템에서 발생하는 중요한 사건을 말하며, 특정 시점에서의 상태 변화를 나타냅니다.Kafka에서 ..
문제 상황부하 테스트를 진행하면서 100명의 사용자가 동시에 같은 아이디로 회원가입을 시도했습니다. 이때 회원가입 로직은 아이디의 중복 여부를 확인하고, 중복된 경우에는 회원가입을 거부해야 합니다. 하지만 신기하게도, 동시에 여러 명의 사용자가 같은 아이디로 회원가입에 성공했습니다.또한, 처음 회원가입에 성공한 사용자는 삽입(insert) 쿼리가 실행되었지만, 그 외의 사용자들은 업데이트(update) 쿼리가 실행되었습니다. 이러한 이상 동작은 예상과는 매우 다르게 나타났습니다.문제 로직Controller -> Service -> DB@Overridepublic synchronized void joinProcess(JoinDTO joinDTO) { Assert.hasText(joinDTO.getUsern..
GitHub - dukbong/Practice-Spring-Security: 세션 기반 인증 - 예시세션 기반 인증 - 예시. Contribute to dukbong/Practice-Spring-Security development by creating an account on GitHub.github.comSession 생성 정책이란?Spring Security에서 Http Session을 어떻게 다룰지를 결정하는 것입니다.이러한 정책은 Spring Security의 설정 파일에서 sessionManagement() 메소드를 사용하여 구성되며 세션 생성 정책은 보안 및 성능 요구 사항에 따라 조정해서 사용할 수 있습니다.생성 정책의 종류SessionCreationPolicy Enum 타입으로 지정되어있..
GitHub - dukbong/Practice-Spring-Security: 세션 기반 인증 - 예시세션 기반 인증 - 예시. Contribute to dukbong/Practice-Spring-Security development by creating an account on GitHub.github.comHttpSessionEventPublisher 등록Spring Security에서 세션 생성 및 파기 이벤트를 처리하기 위해서는 HttpSessionEventPublisher를 사용합니다.사용자가 웹 애플리케이션에 접속하여 세션이 생성, 파기 될 때마다 발생합니다.이를 활용하여 사용자의 로그인 정보나 세션 정보를 로그로 남기는 등의 작업을 수행할 수 있습니다.@Beanpublic HttpSession..
GitHub - dukbong/Practice-Spring-Security: 세션 기반 인증 - 예시세션 기반 인증 - 예시. Contribute to dukbong/Practice-Spring-Security development by creating an account on GitHub.github.comRoleHierarchy 사용목적RoleHierarchy는 Spring Security에서 역할(Role) 간의 계층 구조를 정의하여 권한을 상속받을 수 있게 하는 유용한 기능입니다.이를 통해 권한 간의 관계를 설정하고, 코드의 가독성을 향상시킬 수 있습니다.예를 들어, 계층 구조를 설정하면 상위 역할이 하위 역할을 자동으로 포함하므로, 보안 정책을 간단하고 효율적으로 관리할 수 있습니다.RoleHi..
개선 사항 분석 결과 반환: 기존에는 문서를 소스 코드에 번호를 붙여 작성하여 클라이언트에게 제공했습니다. 그러나 이제는 JSON 형식으로 문서를 만들어 전달하는 방식으로 변경되었습니다. 이 변경으로 인해 시간 복잡도가 O(N^2)에서 O(N)으로 개선되어 응답 속도가 향상되었습니다. 이 과정에서 Gson과 Jackson 중 어떤 라이브러리를 선택할지 고민했고, JMH를 이용하여 밴치마크를 수행한 결과 Jackson이 Gson보다 약 2.6배 정도 더 빠르다는 결론을 얻었습니다. 따라서 Jackson을 선택하였습니다. 이와 같은 과정을 통해 코드의 가독성을 유지하고, 응답 시간을 개선하는 데에 기여하였습니다. Benchmark Mode Cnt Score Error Units JSONBenchmark.gs..
성능 향상을 위한 Load Balancing 전략을 검토하고, AWS의 ELB와 오토 스케일링을 활용하여 효과적인 서비스 배포를 준비합니다. Load Balancing Load Balancing은 Scale-Out 전략의 핵심으로, 서버나 리소스의 수를 증가시켜 시스템 성능을 향상시킵니다. 테스트 결과, 30~40개의 스레드가 최적의 성능을 나타내므로 이를 고려하여 Load Balancing 전략을 수립합니다. Nginx를 통한 Load Balancing 설정 Nginx는 Reverse Proxy와 Load Balancing 설정이 간편하며, 적은 자원으로 많은 연결을 처리할 수 있어 선택했습니다. Load Balancing 알고리즘으로는 Least Connections, Generic Hash를 테스트..
개선 사항 시간 복잡도 개선: O(N^2)의 시간 복잡도를 가진 메소드를 O(N)으로 개선했습니다. 이로써 데이터 처리 과정의 속도가 향상되었습니다. 압축 해제 라이브러리 사용: 기존에는 ZipInputStream을 사용했으나, Apache의 archivers를 사용하여 압축을 해제하는 방식으로 변경했습니다. 이는 성능과 안정성을 향상시켰습니다. 데코레이터 사용: 주석 제거 전 프로세스에서 ArchiveInputStream으로 Stream을 만들어서 주석 제거 메소드에서 Stream을 사용하여 파일 IO작업의 성능을 높였습니다. 이로써 파일 IO 작업의 효율이 개선되었습니다. 반복적인 작업 개선: 반복적으로 접근하여 파일 IO 작업이 이뤄지는 부분을 개선하여 한 번만 접근하도록 수정하였습니다. 이로써 불..