일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- KNN
- API
- redis
- dbeaver
- vavr
- api cache
- Selenium
- aqqle
- java
- Analyzer
- Aggregation
- Docker
- java crawler
- Query
- IONQ
- TSLA
- ann
- Cache
- NORI
- 아이온큐
- 양자컴퓨터
- 테슬라
- mysql
- Elastic
- file download
- aggs
- Elasticsearch
- request cache
- elasticsearch cache
- Today
- Total
목록Java (27)
아빠는 개발자
스레드 최적화 테스트를 해보자일단 내 mac 은 8core 16GB data 는 38,774 건 데이터 전체 카운트를 구해서 paging 으로 나눠서 병렬 처리 할껀데.. order by 가 들어가서 테스트에서만 사용하고 실전에선.. 비추 runner 에서 실행하는 메소드package com.doo.aqqle.service;import com.doo.aqqle.annotation.Timer;import com.doo.aqqle.repository.StockDataRepository;import com.doo.aqqle.repository.StockRepository;import lombok.extern.slf4j.Slf4j;import org.apache.tomcat.util.http.fileupload..
멀쩡하던 배치가 느려졌다. 것도.. 한 5-6배? ㅋㅋㅋㅋ 어처구니가 없는 .. 색인 쿼리중 참조 하는 테이블의 데이터가 변해서 맛이 간거 같은게.. 예상이지만..쿼리를 이것저것 돌려봐도 그렇게 느리진 않았는데.. 뭐 암튼.. 성능개선의 하나의 방법으로 병렬처리 성능을 올려보자.. 현재 우리회사의 배치는 8core 에서 2개의 스레드로 실행되고 전체,증분 색인 두개가 동시에 돈다면 2개의 스레드를 사용하는 어플리케이션이 2개가 실행된다.그럼 max 를 4까지 올려봐도... 1. 시스템 자원 파악먼저, 서버나 시스템의 전체 CPU 코어 수, 메모리와 같은 자원을 파악해야 합니다. 각 애플리케이션이 실행되는 환경에서 사용 가능한 자원의 양을 기준으로 적절한 스레드 수를 할당해야 합니다.int availab..
Java에서 함수형 프로그래밍(Functional Programming)은 함수가 일급 시민(First-Class Citizen)으로 취급되고, 불변성(immutability)을 강조하며, 부작용(Side Effect)을 최소화하는 프로그래밍 패러다임입니다. Java 8에서 람다(Lambda)와 스트림(Stream) API가 도입되면서 함수형 프로그래밍을 더 쉽게 활용할 수 있게 되었습니다.Java에서 이를 활용하는 방법1. 람다 표현식 (Lambda Expression)람다는 익명 함수(Anonymous Function)로, 메서드를 간결하게 표현할 수 있습니다. 주로 함수형 인터페이스(Functional Interface)를 구현할 때 사용됩니다.// 기존 방식 Runnable runn..
Vavr는 Java에서 함수형 프로그래밍(FP)을 지원하는 라이브러리입니다.이 라이브러리는 Java의 전통적인 객체 지향 프로그래밍 스타일을 보완하며, 함수형 프로그래밍 패러다임을 더 쉽게 구현할 수 있도록 도와줍니다. Vavr은 Java에서 부족한 함수형 프로그래밍 관련 기능을 제공하고, 불변성, 함수형 데이터 구조, 고차 함수, 패턴 매칭 등의 개념을 지원합니다.주요 기능함수형 데이터 구조: Vavr은 불변 컬렉션과 데이터 구조를 제공합니다. 예를 들어, List, Map, Set 등 Java 표준 라이브러리의 컬렉션들과 유사한 자료구조를 제공하지만, 이들은 모두 불변입니다. 불변성은 멀티스레드 환경에서 안전하게 사용할 수 있다는 장점이 있습니다.옵셔널 타입: Java의 Optional 클래스와 유사..
네이밍에 정답이 어딧겠소만Java 프로젝트에서 common과 base 패키지의 의미는 관례적으로 다음과 같음 1. common 패키지common 패키지는 프로젝트 내에서 여러 모듈이나 클래스들이 공통으로 사용하는 기능이나 유틸리티 클래스를 포함합니다. 이 패키지에는 다음과 같은 요소들이 포함될 수 있습니다:유틸리티 클래스 (Utility Classes): 문자열 처리, 날짜 처리, 파일 입출력 등과 같은 일반적인 기능을 제공하는 클래스들.상수 정의 (Constants): 여러 곳에서 공통으로 사용하는 상수 값들.공통 인터페이스 (Common Interfaces): 여러 클래스들이 구현해야 하는 공통 인터페이스들.헬퍼 클래스 (Helper Classes): 특정 작업을 돕는 보조 클래스들.예시: pack..
URL 을 호출해서 파일 다운로드를 해보잣간단하게는 아래와 같이InputStream을 사용하여 URL에서 데이터를 읽고, Files.copy 메서드를 사용하여 파일로 저장하는 방법으로 만들 수도 있으나..import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;public class FileDownload { public static void main(String[] args) { String fileURL = "https://example.com/path/to/file...
Unix 타임스탬프는 시간대와 무관하며, 항상 UTC 시간을 기준으로 . 따라서 시스템 시간이 어떤 시간대에 설정되어 있든지 간에 동일한 결과를 제공 테스트 코드 import java.time.Instant;public class CurrentUnixTimestamp { public static void main(String[] args) { // 현재 시간을 Unix 타임스탬프로 가져오기 long unixTimestamp = Instant.now().getEpochSecond(); // 결과 출력 System.out.println("현재 시간 (Unix 타임스탬프): " + unixTimestamp); }} import java.tim..
각설하고 퀵하게 가보자 우선 디펜던시 (DB, JPA) implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'mysql:mysql-connector-java' 테이블은 이렇게 생겼고 테이블 명은 keywords 그리곤 엔티티 package com.doo.aqqle.domain; import lombok.*; import javax.persistence.*; @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Setter @Ent..
EventListener 란? Java의 @EventListener은 Spring Framework에서 사용되는 애노테이션입니다. Spring Framework은 이벤트 기반 아키텍처를 지원하며, @EventListener은 이벤트를 처리하는 메서드를 표시하는 데 사용됩니다. @EventListener 애노테이션을 사용하면 이벤트를 수신하고 처리하는 메서드를 정의할 수 있습니다. 이 메서드는 특정 이벤트가 발생할 때 호출됩니다. 예를 들어, Spring 애플리케이션에서 이벤트가 발생하고 해당 이벤트를 처리하려는 경우 다음과 같이 @EventListener을 사용할 수 있습니다 라고 한다. PotalEventHandler를 @Component 설정해주고 process 에 EventListener 어노테이션..
신조어.. 물고기 아님 먹는거 아님 우리회사에서 불사의 프로젝트로 영생을 누리고 있는 프로젝트 상품명에서 키워드를 조회해서 신조어로 등록될 만한 단어들을 선별해야 하는데 ngram 으로 Mysql DB 조회를 하려고 했으나 DBA 이방지의 반대가 심해서 다른방법을 찾는 중.. 배치시간 12시간에서 1시간 내 실행으로 변경해야지만 운영환경에 올라갈 수 있다. 어뷰징 키워드 제거, 중복제거를 했으나.. 3시간 이상 소요되는 배치 데이터를 살펴보니 고구마맛 200ml, 고구마맛 300ml, 고구마맛 500ml 이런식으로 옵션상품들이 많이 있는데 이것들을 모두 조회하는 것은 리소스 낭비이고 배치시간이 길어지는 이유이다. 그래서 이것들은 한번만 조회 하는 방법으로 변경하려고 한다. 근데 이것을 어떻게 구분한담....