| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- java
- 논클러스터인덱스
- BOJ
- 회전하는큐
- 카카오 코딩테스트
- 백준알고리즘
- 1189
- functioinalinterface
- 자바
- 데이터베이서
- 코틀린
- 프로그래머스
- 코딩테스트
- 전쟁-전투
- 알고리즘
- Redis
- 카카오 코테
- JPA
- 무중단배포
- kotlin
- 백준 #백준알고리즘 #BOJ #자바 #JAVA #알고리즘 #1475 #방번호
- 도메인주도설계
- DB
- DP
- 카카오
- 백준 #백준알고리즘 #BOJ #자바 #JAVA #알고리즘 #4344 #평균은넘겠지
- 스프링
- SQL
- 백준 #백준알고리즘 #BOJ #자바 #JAVA #알고리즘 #1076 #저항
- 백준
- Today
- Total
목록전체 글 (55)
달나라
https://github.com/mjhstar/ticketing GitHub - mjhstar/ticketingContribute to mjhstar/ticketing development by creating an account on GitHub.github.com 콘서트 예매, 한정판 판매와 같은 이벤트에서는 짧은 시간에 수많은 요청이 몰려 서버가 마비되거나, 순서 보장이 되지 않거나, 중복 요청이 발생하는 문제가 생긴다.이런 문제를 해결하는 것이 플랫폼을 개발하는 개발자의 숙명이라고 생각한다.이 글은 그런 문제를 해결한 과정을 기록한 글이다.실제로 대규모 트래픽을 테스트하는 것은 어렵지만, 핵심 구조를 검증하기 위한 POC 수준이다. Kotlin, Spring Boot, Redis, Lua Scr..
1. Redis 개요Redis란?Redis는 Remote Dictionary Server의 약자로, 메모리 기반의 Key-Value 구조의 NoSQL 데이터 저장소이다.단순히 데이터를 빠르게 저장하고 조회하는 것이 목적이 아니라, 다양한 자료구조를 메모리 내에서 고성능으로 처리할 수 있는 멀티 역할의 인프라 컴포넌트이다.현재 Redis는 아래와 같이 사용되고 있다.- 고속 캐시 (Cache)- 분산 세션 저장소 (Session Store)- 메시지 큐 (Pub/Sub 또는 Stream)- 비정형 데이터 저장소 (NoSQL DB)- 분산 락 (Distributred Lock)이렇게 다양한 역할을 하는 Redis는 단순하게 '빠른 저장소나 캐시'가 아니라 경량 데이터 처리 플랫폼에 가깝다고 할 수 있다.Re..
시스템은 사용자 수와 트래픽이 늘어날수록 장애 가능성도 커진다. 최근 시스템들은 복잡도가 증가하고 있고, 그에 따라 장애에 대한 대응도 어려워졌다. 특히 대규모 시스템에서는 다양한 컴포넌트가 유기적으로 상호작용을 하며, 컴포넌트 중 하나라도 장애가 발생하거나 성능 저하가 생기면 서비스 전체에 영향을 줄 수 있다. 이러한 시스템을 정상적인 상태로 유지하기 위해서는 모니터링이 필수라고 생각한다. 1. 모니터링이 왜 필요할까?1. 시스템의 가시성 확보- 단순 로그나 예외를 추적하는 것만으로는 전체 시스템의 상태를 알기는 매우 어렵다.- CPU, 메모리, 네트워크 사용률과 같은 시스템 자원 정보와 요청 처리시간, 에러율 등과 같은 애플리케이션 레벨의 지표까지 다차원적인 정보를 수집하고 관찰할 수 있어야 한다.2..
정의Functional Interface는 Java8에서 도입된 개념이며 하나의 추상 메서드만 가지고 있는 인터페이스이다.하지만 default 메서드나, static 메서드는 여러개 가질 수 있다. 사용Java8에서 @FunctionalInterface 어노테이션을 사용하여 Functional Interface를 명시적으로 나타낼 수 있다.어노테이션을 사용하는 것은 선택적이지만, 어노테이션을 사용했을 때, 컴파일러가 추상 메서드를 1개만 가지고 있는지 확인해주기 때문에 안정성을 높일 수 있다. Functional Interface는 람다 표현식과 함께 사용되며, 코드를 간결하게 만들 수 있다.@FunctionalInterfacepublic interface Calculator{ int add(int a,..
https://www.acmicpc.net/problem/5052 이 문제는 트라이 자료구조를 사용하여 해결하는 문제이다. 트라이는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다.트리형태로 각 문자열을 저장하고 관리하기 때문에 시간 복잡도 측면에서는 효율적이다.하지만, 모든 문자열을 포인터 형태로 저장하고 있기 때문에 저장공간의 크기가 크다. ABCD 라는 문자열이 있다면,A의 자식 노드 BB의 자식 노드 CC의 자식 노드 D와 같은 방식으로 데이터를 저장한다 이 문제의 핵심은 짧은 문자열이 자신보다 긴 문자열에 포함되어있는지 확인하는 문제이다. 그리고 조건이 1개 더 필요하다. 앞에서부터 포함되어있는가 이다.그럼 문자열의 앞에서부터 확인하며 포함여부를 확인해야한다. 트라이 자료구..
https://www.acmicpc.net/problem/9251 LCS는 최장 공통 부분수열으로, 2개의 문자열에서 공통으로 나타나는 가장 긴 부분의 수열을 의미한다.부분수열은 문자열의 순서를 유지하면서 일부 분자를 선택한 결과로 얻어진 문자열이다.예를 들어, ABC의 부분 수열은 "", "A", "B", "C", "AB", "AC", "BC", "ABC" 이다. 이 문제에서 요구하는 것은 임의로 주어진 2개의 문자열에서 공통된 가장 긴 부분수열을 찾는 것이다.LCS를 구하기 위해서는 어떤 방식으로 구하면 좋을지 표를 그리면서 알아보자. CBAEDEA 와 BCEDFAE 2개의 문자열이 주어졌다고 가정해보자그럼 아래의 표와 같이 표를 그릴 수 있다. CBAEDEA 00000000B00111111C01..
https://www.acmicpc.net/problem/4949 이 문제는 문자열에서 소괄호와 대괄호를 찾아 짝이 맞는지를 확인하는 문제이다.앞에서부터 순차적으로 확인하며, 오른쪽 괄호가 나왔을 때는 바로 이전 괄호가 왼쪽 괄호여야 하기 때문에 스택을 이용하여 해결하기로 했다.스택을 사용하여, 왼쪽 괄호면 스택에 넣고, 오른쪽 괄호면 마지막에 넣은 값을 꺼낸다.꺼낸 값이 오른쪽 괄호와 짝이면 균형을 이룬다고 볼 수 있다. fun main() { val input = mutableListOf() while (true) { val line = readLine() ?: break if (line == ".") break input.add(line) } ..
https://github.com/mjhstar/annotation GitHub - mjhstar/annotationContribute to mjhstar/annotation development by creating an account on GitHub.github.comSpring boot에서 jpa를 사용할 때, DB에서 Entity를 가지고 오고, Dto로 변환해서 사용하는 것이 일반적이다.- 불필요한 데이터 노출을 최소화- API 응답 형식 변경에 따른 수정 용이- 데이터 변환 오류 방지(변경감지)위와 같은 이유로 데이터를 꺼내와서 Dto로 변환하여 비즈니스 로직에서 사용한다.이 때, 컴파일 단계에서 Entity와 Dto의 필드명과 타입을 검증하고, Dto를 생성하거나, Entity를 업데이트 ..