전체 글 50

07-12 최종 프로젝트 기간별 봉 구현 관련 클래스 설명

-PeriodicCandleApiService한국투자 증권 API를 가지고 와 엔티티에 저장하는 클래스필요한 변수 주입받기 @Value("${hantu-openapi.appkey}")private String appKey;@Value("${hantu-openapi.appsecret}")private String appSecret;@Value("${hantu-openapi.domain}")private String baseUrl; 입력 헤더 (필요한 정보를 헤더로 한투 api 사이트에 전달)HttpHeaders headers = new HttpHeaders();headers.set("authorization", accessToken);headers.set("tr_id", "FHKST03010100");h..

카테고리 없음 2025.07.12

05-21 TIL Redis로 동시성 해결하기

-LettuceLuttuce란?Java 기반의 비동기(non-blocking) Redis 클라이언트특징비동기 / 반응형 API 지원 (Future, Reactive)Thread-safe — 여러 쓰레드에서 동시에 안전하게 사용 가능Netty 기반 고성능 I/O 처리Spring Data Redis의 기본 클라이언트 (Spring Boot 2.x부터 기본)분산락이란?분산 시스템에서 여러 인스턴스가 공유 리소스(예: DB, 캐시 등)에 동시에 접근하지 않도록 잠금(Lock) 을 걸어 동시성 문제를 방지하는 기법 Lettuce 기반 분산 락 구현SET key value NX PX 사용 → 선점 방식락을 가진 쪽만 리소스를 사용시간이 지나면 자동으로 만료 → 데드락 방지락 해제 시에는 락을 설정한 클라이언트만 ..

카테고리 없음 2025.05.22

05-14 TIL

- 쿼리 dsl 이용해서 다중 조인시 곱 문제요구조건새로운 API로 만들어주세요.검색 조건은 다음과 같아요.검색 키워드로 일정의 제목을 검색할 수 있어요.제목은 부분적으로 일치해도 검색이 가능해요.일정의 생성일 범위로 검색할 수 있어요.일정을 생성일 최신순으로 정렬해주세요.담당자의 닉네임으로도 검색이 가능해요.닉네임은 부분적으로 일치해도 검색이 가능해요.다음의 내용을 포함해서 검색 결과를 반환해주세요.일정에 대한 모든 정보가 아닌, 제목만 넣어주세요.해당 일정의 담당자 수를 넣어주세요.해당 일정의 총 댓글 개수를 넣어주세요.검색 결과는 페이징 처리되어 반환되도록 합니다여러개의 테이블을 조인했을 때 count를 사용하면 곱 문제가 발생하여 결과가 제대로 나오지 않을 수 있다.해결방법 : 조인을 쓰지않고 서..

카테고리 없음 2025.05.15

05-07 TIL 비동기 : 코루틴과 쓰레드

대규모 데이터 처리를 할 때 매우 유용한 비동기 프로그래밍에 대해서 알아보자 비동기란?여러 요청을 동시에 수행 가능하게 하는 프로그래밍이다.코루틴이란?비동기 구현 방법 중 하나쓰레드 보다 가볍게 운용 가능 (메모리 방식 차이)각각의 비동기 함수들의 협력 가능코루틴의 스코프 (생명주기 관리)GlobalScope: 앱이 실행된 이후에 계속 수행되어야할때 사용해요CoroutineScope: 필요할때만 생성하고 사용후에 정리가 필요해요코루틴의 Dispatcher : 코루틴이 사용할 쓰레드를 직접 지정Dispatchers.Main: UI와 상호작용하기 위한 메인쓰레드Dispatchers.IO: 네트워크나 디스크 I/O작업에 최적화되어있는 쓰레드Dispatchers.Default: 기본적으로 CPU최적화되어있는 쓰..

카테고리 없음 2025.05.07

04-21 TIL Interceptor, AOP

-다시한번 복습하는 흐름 인터셉터에서는 @Auth 같은 커스텀 어노테이션은 사용하기 힘들다. - Interceptor주로 웹 요청(Request) 처리 과정에서 전처리/후처리할 일이 있을 때 사용.DispatcherServlet → Controller 사이에서 동작함.@Slf4j@Componentpublic class CommentInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handle..

카테고리 없음 2025.04.21

04-16 TIL Entity, Transactional

- Entity 관련 객체 EntityManagerFactoryPersistence.createEntityManagerFactory("entity") 로 생성 할 수 있다. (주로 emf란 이름으로 생성)PA에서 DB 연결 정보를 바탕으로 EntityManager를 생성하는 공장(factory) 객체."entity"는 persistence.xml에 정의한 persistence unit 이름EntityManageremf.createEntityManager() 로 생성. (주로 em이란 이름으로 생성)실제로 DB와 연결되어 SQL을 실행하거나, 엔티티를 관리하는 핵심 객체em을 통해 find, persist, remove 같은 JPA 작업 수행 가능EntityTransactionJPA는 트랜잭션 단위로 작..

카테고리 없음 2025.04.16

04-15 TIL2 Spring Converter

-http컨버터 핵심 요약 스프링은 자동으로 해당 데이터를 다양하게 변화시켜서 필요한 곳에 적용시켜 준다만약 확장이 필요하다면 해당 기능이 어느 곳에 위치해야하는지 구조를 할고 확장 할 수 있도록 하자-일반적인 클라이언트의 입력부터 응답까지의 흐름 요청과 컨트롤러 사이의 데이터 변환 흐름 (Formatter나 Converter를 필요시 적용) 제일 중요!!! 확장하고 싶은 항목에 따른 해당 컴포넌트를 잘 알아두자 컨버터와 포매터의 차이 요약 -예제 커스텀 로그인 유저 어노테이션 만들기!로그인유저를 쓸때마다 계속 세션에서 찾아와서 로그인 정보를 다시 객체로 가져와야 하는게 불편다음과 같이 로그인유저 어노테이션을 쓰면 바도 유저 객체를 파라미터로 받을 수 있게 하고 싶다@GetMapping("/..

카테고리 없음 2025.04.15