본문 바로가기

dev80

Spring - Modulith 개요Spring Modulith를 사용하면 잘 구주화된 Spring boot 애플리케이션을 구축할 수 있고, 도메인 기반의 애플리케이션 모듈을 찾고 작업할 수 있도록 가이드 해준다.DDD를 위한 구조적인 코드 검증 및 문서화.모듈식 모놀리스 아키텍처는 단순성과 유지관리 용이성의 장점. Spring Boot Structuring CodeSpring Boot does not require any specific code layout to work. However, there ar some best practices that help.If you wich to enforce a structure based on domains, take a look at Spring Modulith. Locating the M.. 2024. 6. 3.
Elasticsearch - fuzzy query 개요자연어 검색은 본질적으로 부정확하다. 컴퓨터는 잔연어를 이해할 수 없기 때문에 검색에 대한 다양한 접근 방식이 있으며 각각의 장단점을 가지고 있다. 하지만 Fuzzy 쿼리는 사용자 이름 검색, 철자 오류  및 기타 문제에 대햐여 fuzzy 쿼리를 사용하여 해결할 수 있다. Fuzzy QueryLevenshtein edit distance를 사용하여 검색어와 유사한 용어가 포함된 문서를 조회할 수 있다.(Levenshtein 거리는 하나의 문자열이 다른 문자열과 일치하도록 만드는데 필요한 삽입, 삭제, 대체 및 전치수)text, keyword filed 대상으로 사용할 수 있다. edit distance는 한 용어를 다른 용어로 바꾸는데 필요한 문자 변경의 수다. (edit deistance가 클수록 .. 2024. 6. 3.
Elasticsearch - Dense vector field type 개요유사도 검색은(similarity search) 사용자가 입렵한 데이터에(문서, 이미지, ...) 대하여 가장 유사한 순서로 문서를 조회하여 정렬하는 검색 방식이다.kNN검색은 Elasticsearch 8.x 부터 제공한다.https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html k-nearest neighbor (kNN) search | Elasticsearch Guide [8.13] | ElasticThe filter is applied during the approximate kNN search to ensure that k matching documents are returned. This contrasts .. 2024. 6. 3.
Spring Framework - Runtime efficiency with String (today and tomorrow) 개요Spring Framework 6.1 and Spring Boot 3.2에서 애플리케이션 런타임을 최적화(optimize the runtime effieciency) 할 수 있도록 Spring 에서 제공하는것.Spring MVC as a lean Virtual Threads web stack on JDK 21 (JDK 가상 스레드)Optimized container deployment with Spring and GraalVM Native Image (GraalVM Native Image를 사용한 컨테이너 배포)JVM Checkpoint Restore: Scale to zero with Spring and Project CRaC (JVM 체크 포인트 복원)A glimpse into OpenJDK’s .. 2024. 6. 2.
Rust - Understading Ownership What Is Ownership?Ownership is a set of rules that govern how a Rust program manages memory. 소유권은 Rust에 유니크한 특징이며, GC(Garbage Collector)없이 메모리 안정성을 보장하게 해준다. The Stack and the Heap일반적인 프로그래밍 언어에서는 스택과 힙에 대해서 고민할 필요가 별로 없지만 Rust와 같은 시스템 프로그래밍 언어에서는 값이 스택에 있는지 힙에 있는 여부가 동작 방식에 큰 영향을 준다. 스택과 힙 둘다 코드상에서 런타임에 사용할 수 있는 메모리지만, 스택은 데이터에 접근하는 방식 때문에 힙보다 빠르다. (단 컴파일 탕미에 데이터 사에즈를 알 수 없는 데이터는 스택에 저장 될 수 없다... 2024. 6. 2.
Virtual Threads Summary높은 처치량의 동시성 애플리케이션을 개발하는데 사용하는 lighweight threads. HistoryJDK 19 미리보기 기능으로 제안되었고, 아래 변경사항을 포함하여 JDK 21에 추가될 예정thread-local variables 지원Thread API를 통해 직접 생성 가능Goalsthread-per-reqeust style로 하드웨어를 최대한 활용한 코드를 쉽게 작성 할 수 있게 해준다.java.lang.Thread API를 사용하여 최소한의 변경으로 가상 스레드를 적용할 수 있게 한다.기존 JDK 툴로 트러블 슈팅, 디버깅, 프로파일링을 가능하게 한다.Non-Goals전통적인 스레드 구현을 제거하거나, 가상 스레드 사용으 위해서 기존 애플리케이션을 마이그레이션하는 것이 목표가 아.. 2024. 6. 2.