전체 글68 [Kotlin] 코틀린 기본 과거에 안드로이드 프로그래밍을 하며 정리해둔 코틀린 문서를 업로드합니다. 틀린 부분이 있을 수 있습니다.언어 특성세미콜론 없어도 됨강타입(정적 타입)언어로 형변환 필수Java의 라이브러리를 사용할 수 있으나 코틀린 라이브러리 쓰는게 좀 더 낫다함Java와 차이점고차 함수 지원(Java는 직접적으로 지원하지 않는다)함수형 프로그래밍에 더 능함Java는 SAM 변환 지원, Kotlin은 지원하지 않음(람다, 고차함수 적극 사용)SAM(Simple Abstract Method) 변환 : 매개변수로 전달하거나 반환하는 인터페이스 객체가 하나의 추상 메서드만을 가지고 있을 때 이를 해당 메서드(익명함수) 객체로 자동 변환main 함수Java와 달리 빌드 시 클래스 필수적이지 않다mian 함수는 필수적이다fun m.. 2026. 10. 3. [Spring boot] Flyway를 활용한 DB 스키마 마이그레이션 Schema Migration스키마 마이그레이션(Schema Migration)이란일반적 관점에서의 마이그레이션은 데이터 이관(Data Migration)을 뜻하며, 주로 데이터 펌프나 ETL 툴을 이용해 물리적인 DB 서버 간에 레코드를 옮기는 작업을 의미합니다. 반면, Flyway나 Liquibase 같은 DB 마이그레이션 툴에서 말하는 마이그레이션은 데이터의 이동이 아닌, 스키마의 변경을 뜻합니다. 버전으로 DB의 스키마를 관리하기 때문에 ‘형상 관리’ 라는 표현과 혼용되는 것으로 보여집니다. 다만 본질적으로 보았을 때 ‘스키마의 현재 상태 관리’를 의미하는 형상관리 보다는, '스키마를 다음 상태로 변경하는 과정'을 의미하는 마이그레이션이 더 적절한 표현이라고 볼 수 있습니다. 즉, 마이그레이션 툴.. 2026. 10. 3. [Trouble Shooting] 해시태그-카테고리 유사도 판단 파이프라인 아키텍처 다이어그램개요해시태그가 새로 생성되면(HashtagCreatedEvent), 기존 카테고리들과의 유사도를 계산해 즉시 병합 / 관리자 승인 대기 / 신규 카테고리 생성 중 하나로 연결하는 파이프라인.진입점: HashtagCreatedEventConsumer → CategoryHashtagLinkFacade.tryLink(hashtagId)실제 DB 반영(연결/신규 카테고리 승격)은 CategoryHashtagLinkWriter가 담당 - Facade는 조회+파이프라인 호출까지만유사도 계산 방식(Levenshtein/임베딩/LLM)은 언제든 교체·추가·삭제 가능하도록 설계됨진입 이벤트 발행 (Outbox 패턴)HashtagCreatedEvent/CategoryCreatedEvent는 생성 즉시 K.. 2026. 9. 23. [AI] 유사도 판정 파이프라인 임베딩 모델 선정 (jhgan/ko-sroberta-multitask) 임베딩 모델을 통한 유사도 판별임베딩 모델 선정카테고리-해시태그 유사도 판단 파이프라인(Levenshtein → Embedding → LLM)에서, 두 번째 스테이지인 Embedding 스테이지에 쓸 모델을 정해야 한다.Levenshtein(문자열 거리) 스테이지만으로는 문자열이 완전히 다른데 의미는 같은 신조어 쌍(예: "말랑이" ↔ "스퀴시")을 잡지 못한다. 이걸 잡으려면 의미 기반 유사도, 즉 임베딩이 필요하다.단, 신조어는 학습 데이터에 해당 단어가 실제로 등장한 적이 있어야 임베딩이 의미를 제대로 담는다는 한계가 있다. 따라서 처음 만들어진 신조어는 임베딩이 못 잡고, 이건 이후 LLM 스테이지의 몫으로 남겨둔다.후보 목록 방식 장점 단점 호스티드 API (OpenAI, Upstage 등).. 2026. 9. 23. [Spring boot] 트랜잭션 격리 수준과 Spring boot 트랜잭션 전파 속성 트랜잭션 격리 수준격리 수준격리 수준(Isolation Level) 이란트랜잭션 격리 수준(Transaction Isolation Level)은 데이터베이스 시스템에서 병행 수행되는 여러 트랜잭션 간의 데이터 가시성과 상호 간섭을 통제하는 기준이다.이는 데이터베이스 트랜잭션의 ACID 속성 중 격리성(Isolation)을 구현하는 메커니즘으로, 데이터의 정합성과 동시 처리량 간의 Trade-off를 조율하기 위해 존재한다.읽기 트랜잭션 격리성 문제동시 트랜잭션 작업 수행 시 발생하는 격리성 문제에 대해 먼저 알아보고, 이후 문제를 해결할 수 있는 격리 수준을 알아보자.읽기 동작에 대한 격리성 문제는 대표적으로 아래 3가지가 존재한다.Dirty Read : 다른 트랜잭션의 커밋되지 않은 데이터가 조회되는 .. 2026. 9. 19. [AI] Embedding Model, Vector DB 개념 현재 진행하고 있는 프로젝트에 기존 데이터와 신규 데이터 간 의미적 유사도를 검사하기 위해 Vector DB와 임베딩 모델을 적용하려 한다.RAG에도 활용이 가능한 임베딩 모델과 Vector DB에 대해 알아보자.Embedding Model (임베딩 모델)임베딩(Embedding)이란 텍스트, 이미지, 음성과 같은 비정형 데이터를 컴퓨터가 계산할 수 있는 고차원 벡터로 변환하는 작업을 말한다.Dense Vector (고차원 벡터)ex) [ 0.149, -0.512, 0.785, … ] (300개 이상의 차원)데이터 간 유사도 판별을 위해 임베딩 모델은 텍스트, 이미지, 음성 등의 데이터를 고차원 벡터로 변환하여 N차원 공간 상의 방향으로 나타낸다.고차원 벡터란, 연속적인 실수로 이뤄진 고차원의 벡터를 의.. 2026. 9. 16. 이전 1 2 3 4 ··· 12 다음