HYUN
close
프로필 사진

HYUN

github: @denev6

  • 분류 전체보기 (62)
    • Java (31)
    • Spring (6)
    • Database (1)
    • Jpa (0)
    • 코테 (11)
    • Infra (5)
      • Http (1)
      • Aws (3)
    • 토이 (4)
    • 트러블슈팅 (2)
    • 일상 (0)
  • 홈
  • 태그
  • 방명록

MongoDB

MongoDB를 처음 접하며 이해한 핵심 정리신규 프로젝트를 보면서 처음으로 MongoDB를 접하게 되었다.처음에는 “JSON 데이터를 그대로 저장하는 데이터베이스인가?”라는 느낌이 강했고, 구조가 자주 바뀌는 가변 데이터를 저장할 때 사용하는 DB처럼 보였다.실제로 공부해보니 이 방향은 꽤 맞았고, 조금 더 정확히는 MongoDB는 문서(Document) 지향 NoSQL 데이터베이스라고 이해하면 된다.1. MongoDB란 무엇인가MongoDB는 관계형 데이터베이스처럼 테이블, 행(row), 열(column) 중심으로 데이터를 저장하는 방식이 아니라, 컬렉션(Collection)과 문서(Document) 중심으로 데이터를 저장한다.문서 구조는 JSON과 매우 비슷하며, 실제 내부적으로는 BSON(Bina..

  • format_list_bulleted Database
  • · 2026. 3. 23.

[CI/CD] Maven 플러그인 보안 이슈, sed 명령어 한 줄로 해결

1. 배경: 자동 배포의 꿈현재 진행 중인 프로젝트는 Java + Spring Boot 기반이며, GitHub Actions를 통해 CI/CD를 구축하고 있다. 목표는 간단했다. Git Tag(v1.0.0)가 푸시되면, 프로젝트의 버전을 자동으로 태그명에 맞춰 변경(1.0.0)하고 Nexus(사내 저장소)에 배포하는 것이다.보통 Maven 프로젝트에서 버전을 일괄 변경할 때는 국룰처럼 쓰이는 플러그인이 있다. 바로 versions-maven-plugin이다.# 일반적으로 많이 쓰는 방식mvn versions:set -DnewVersion=$TAG_VERSION -DprocessAllModules=true나도 처음엔 이 방식을 사용했다. 하지만 곧 두 가지 큰 벽에 부딪혔다.2. 문제 상황(1) 사내 보안..

  • format_list_bulleted 트러블슈팅
  • · 2026. 2. 2.

[프로그래머스] 뉴스 클러스터링

1. 문제 개여두 문자열을 입력받아 **'자카드 유사도'**를 계산하는 문제다. 문자열을 2글자씩 끊어서 다중 집합(Multiset)을 만들고, 교집합 크기 / 합집합 크기를 구하면 된다. 단, 영문자가 아닌 특수문자가 포함된 쌍은 버려야 하며, 대소문자는 무시한다.2. 나의 첫 접근 (실수했던 부분)처음에는 문자열을 깔끔하게 만들고 싶어서 replaceAll 정규식을 사용해 특수문자를 미리 다 제거하고 시작했다. 그리고 이중 for문을 돌면서 단순히 equals로 카운팅을 했다.❌ 문제점 1: 과도한 전처리의 함정Java // 이렇게 특수문자를 미리 지워버리면 안 된다!str = str.replaceAll("[^a-zA-Z]", ""); 예를 들어 aa1+aa2라는 문자열이 있을 때:올바른 로직: aa..

  • format_list_bulleted 코테
  • · 2026. 1. 20.

[프로그래머스] 전화번호 목록

1. 문제 설명문제: 프로그래머스 Lv.2 - 전화번호 목록전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인해야 한다. 접두어가 있으면 false, 없으면 true를 반환한다.예시: ["119", "97674223", "1195524421"]설명: 119는 1195524421의 접두사이므로 false 리턴.2. 문제 접근 및 시행착오처음에는 이중 for문을 돌며 startsWith()를 사용해야 하나 고민했다. 하지만 phone_book의 길이는 최대 1,000,000개다. 단순 이중 반복문을 사용하면 **O(N^2)**이 되어 무조건 시간 초과가 발생한다.따라서 검색 속도를 획기적으로 줄일 수 있는 해시(HashMap) 자료구조를 선택했다.핵심 아이디어:모든 전화번호를..

  • format_list_bulleted 코테
  • · 2026. 1. 19.

프로그래머스[귤 고르기]

1. 문제 설명문제: 프로그래머스 Lv.2 - 귤 고르기경화는 수확한 귤 중 k개를 골라 상자에 담아 판매하려고 한다. 그런데 귤의 크기가 들쑥날쑥해서, 귤의 크기별로 분류했을 때 서로 다른 종류의 수가 최소가 되도록 담고 싶다.예를 들어, 귤 8개 [1, 3, 2, 5, 4, 5, 2, 3] 중 k=6개를 고를 때, 개수가 많은 2, 3, 5번 귤을 우선해서 담으면 종류를 3가지로 최소화할 수 있다.목표: k개를 고를 때 나오는 귤의 종류의 최솟값 return2. 문제 접근 (Greedy Algorithm)이 문제는 전형적인 그리디(Greedy) 문제다. 귤의 종류를 최소화하려면, "개수가 많은 귤부터" 우선적으로 상자에 담으면 된다.카운팅(Counting): 어떤 크기의 귤이 몇 개 있는지 센다.정렬..

  • format_list_bulleted 코테
  • · 2026. 1. 19.

[Redis,kafka 활용_동시성_3] Kafka 사용

성능 최적화: Kafka 비동기 처리 도입주문 체결 후 알림 발송, 데이터 분석 로그 저장 같은 작업까지 하나의 트랜잭션으로 묶으니 응답 속도가 느려지는 문제가 있었습니다.이를 해결하기 위해 Kafka를 도입하여 시스템을 분리했습니다. 3-1. Redis vs Kafka 역할 분담 기술역할이유Redis동시성 제어 (Sync)재고 감소는 즉시 결과가 나와야 하므로 속도가 빠른 In-Memory-Lock사용Kafka후속 작업 처리 (Async)알림/로깅은 사용자가 기다릴 필요가 없으므로 큐에 넣고 비동기로 처 3-2. 구현 내용Producer: 주문 성공 시 stock_order 토픽으로 메시지 전송.Consumer: 메시지를 받아 비동기로 로그 출력 (추후 알림 발송 등으로 확장 가능).Producer@C..

  • format_list_bulleted 토이
  • · 2026. 1. 14.
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 11
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (62)
    • Java (31)
    • Spring (6)
    • Database (1)
    • Jpa (0)
    • 코테 (11)
    • Infra (5)
      • Http (1)
      • Aws (3)
    • 토이 (4)
    • 트러블슈팅 (2)
    • 일상 (0)
인기 글
전체 방문자
오늘
어제
Copyright © gyeonghyun 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바