일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기업분석
- 배당성장
- S&P500
- 백준
- 그리디 알고리즘
- 프로그래머스
- 미국주식
- etf
- 오버라이딩
- 알고리즘
- 다형성
- 인플레이션
- 잉여현금흐름
- 주식
- javascript
- 주린이
- 접근제어자
- 자바
- Java
- FCF
- 무디스
- mco
- 객체지향
- 제태크
- object
- XLF
- 현금흐름표
- 금리인상
- StringBuffer
- 금리인하
- Today
- Total
목록분류 전체보기 (209)
오늘의하루
이 글에서는 Mockito를 활용하여 Java 애플리케이션에서 랜덤 값을 포함하는 함수를 어떻게 효과적으로 테스트할 수 있는지에 대해 알아보겠습니다.MockitoMockito는 자바에서 Mock 객체를 생성하고 관리할 수 있는 강력한 도구이며, 특히 랜덤 값과 같이 예측하기 어려운 요소가 포함된 함수를 테스트할 때 사용할 수 있습니다.Mock 객체란 실제 객체를 대신하는 가짜 객체를 말합니다.Mock 객체는 외부 의존성이 많은 코드나 복잡한 비즈니스 로직을 가진 코드를 테스트하는 데 매우 유용합니다.간단한 예제:import java.util.Random;import lombok.AllArgsConstructor;@AllArgsConstructorpublic class Game { private Rando..
Stream의 특징스트림(Stream)은 Java에서 일련의 데이터를 함수형 연산을 통해 효율적으로 처리할 수 있는 메커니즘입니다.기본적으로 스트림은 지연 평가를 사용하여 연산을 효율적으로 처리합니다.이를 통해 필요할 때만 연산을 실행하고 중간 연산 결과를 최적화할 수 있습니다.병렬 처리를 원할 경우, parallel() or parallelStream()를 사용하여 스트림을 병렬 처리 모드로 전환할 수 있습니다.병렬 Stream이 모든 상황에서 성능 향상을 보장하지 않습니다.이렇게 하면 멀티 코어 CPU를 활용하여 대량의 데이터를 빠르게 처리할 수 있고, 병렬 처리된 각 부분의 결과를 최종적으로 합치는 과정을 거칩니다.스트림의 이러한 특성 덕분에 Java에서는 복잡한 데이터 처리 작업을 보다 간편하게 ..
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..
DB(데이터베이스)를 Master와 Slave로 나누는 것은 주로 데이터베이스의 성능, 확장성, 가용성, 및 안정성을 향상시키기 위해 사용되는 아키텍처 설계 패턴입니다. Master는 데이터에 대한 쓰기 작업을 담당하고, Slave는 주로 읽기 작업을 처리합니다. 이렇게 부하를 분리함으로써 읽기 요청이 많은 환경에서 성능을 향상시킬 수 있습니다. NETWORK docker network master-slave docker network connect master-slave [master container_name_or_id] docker network connect master-slave [slave container_name_or_id] docker network inspect master-slave ..
개선 사항 분석 결과 반환: 기존에는 문서를 소스 코드에 번호를 붙여 작성하여 클라이언트에게 제공했습니다. 그러나 이제는 JSON 형식으로 문서를 만들어 전달하는 방식으로 변경되었습니다. 이 변경으로 인해 시간 복잡도가 O(N^2)에서 O(N)으로 개선되어 응답 속도가 향상되었습니다. 이 과정에서 Gson과 Jackson 중 어떤 라이브러리를 선택할지 고민했고, JMH를 이용하여 밴치마크를 수행한 결과 Jackson이 Gson보다 약 2.6배 정도 더 빠르다는 결론을 얻었습니다. 따라서 Jackson을 선택하였습니다. 이와 같은 과정을 통해 코드의 가독성을 유지하고, 응답 시간을 개선하는 데에 기여하였습니다. Benchmark Mode Cnt Score Error Units JSONBenchmark.gs..
OpenPDF란? OpenPDF란 Java로 작성된 PDF를 처리하는 라이브러리 입니다. PDF 문서를 생성, 편집, 읽기 및 조작할 수 있는 기능을 제공하여 자바 애플리케이션에서 PDF 관련 작업을 수행하는 데 도움을 줍니다. 활동을 하게 된 계기 PDF 처리를 위해 기존에는 PDFBox를 사용하고 있었습니다. 그러던 중 PDFBox의 내부 코드를 더 자세히 살펴보고 싶어졌고, 이를 통해 코드를 보며 학습하는 기회를 얻었습니다. 그러던 중 OpenPDF 라이브러리를 발견했고, PDFBox에는 없는 기능들이 있을지 궁금해졌습니다. 또한, 최근에는 유지보수성과 코드의 가독성을 높이는 것에 관심이 많았는데, 이를 이론적인 수준에서만이 아니라 실제 프로젝트에 적용하여 검증받고 싶어졌습니다. 그래서 OpenPD..