| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 읽기쉬운코드
- ES
- 자바
- JPA
- 그리디
- kotlin
- API
- 그리디알고리즘
- 애자일기법
- 클린코드
- 백준
- 개발자
- framework
- cleancode
- 엘라스틱서치
- database
- 코딩
- Baekjoon
- 스프링
- Spring
- 애자일프로그래밍
- 코딩테스트
- 데이터베이스
- Elasticsearch
- 프레임워크
- 알고리즘
- spring boot
- 코드
- Today
- Total
목록분류 전체보기 (195)
튼튼발자 개발 성장기🏋️
일반적으로 Swagger는 실질적인 로직에 침투적으로써 코드가 지저분해지며 문서의 신뢰성이 저하되는 등 단점이 너무나도 많다. 하지만 Spring Restdocs는 테스트 코드로부터 문서화 하기 때문에 swagger의 단점을 보완하며 정적 문서 형태로 풍부하게 작성할 수 있는 등 swagger보다 더 널리 사용된다.kopring에서 Spring restdocs의 장점만을 이끌어내면서 swagger까지 함께 사용할 수 있는 방법을 알아본다.Hint: Spring restdocs와 swagger는 모두 Springdoc OpenAPI를 통해 사용된다. 1. build.gradle.kts 작성가장 먼저 OpenAPI를 사용하기 위한 기틀을 마련해보자. 플러그인과 종속성 및 Task 설정부터 시작한다.impor..
사이드 프로젝트를 진행하던 중 ssl 인증서 갱신 자동화를 고민하고 정리해두기 때문에모든 내용은 사이드 프로젝트에 초점을 맞춘다. 1. letsencrypt 인증서 발급sudo certbot certonly --manual --preferred-challenges dns -d "{도메인}" 가장 먼저 os에 알맞게 certbot 설치가 선행되어야한다.인증서를 발급받는 여러가지 방법 중 위 방법으로 발급했다. letsencrypt 인증서는 /etc/letsencrypt 디렉토리에서 관리된다. ll /etc/letsencrypt/live/{도메인} 위 command로부터 cert.pem, chain.pem, fullchain.pem, privkey.pem 4가지의 pem파일이 생성된다. 하지만 궁극적인 ..
자바에서 코틀린으로 포팅하면서 고려해야할 리팰토링 중 [Optional]부문에 대해서 설명한다.백문이 불여일견이라고 직접 실습을 통해 차근차근 설명하겠다. public class Legs { public static Optional findLongestLegOver( List legs, Duration duration ) { Leg result = null; for (Leg leg : legs) { if (isLongerThan(leg, duration)) if (result == null || isLongerThan(leg, result.getPlannedDura..
자바에서 코틀린으로 포팅하면서 고려해야할 리팰토링 중 [클래스]부문에 대해서 설명한다.백문이 불여일견이라고 직접 실습을 통해 차근차근 설명하겠다. 아래 Java class [EmailAddress] 클래스를 Kotlin class로 포팅해보자.public class EmailAddress { private final String localPart; private final String domain; public static EmailAddress parse(String value) { var atIndex = value.lastIndexOf('@'); if (atIndex 코틀린 클래스는 주 생성자 안에서 프로퍼티를 선언하기 때문에 자바보다 간결하다. 파라미..
JVM 메모리 구조의 기본 이해 static 변수와 GC 대상의 차이 톰캣 환경에서 static 변수 누수가 생기는 이유 오토박싱과 리터럴의 메모리 저장 위치 static 변수 사용 시 메모리 누수 방지 전략1. JVM 메모리 구조의 기본 이해1-1. 메서드 영역, 힙, 스택은 어떻게 다를까?자바 애플리케이션이 실행되면 JVM은 메모리를 여러 영역으로 나누어 데이터를 저장합니다. 가장 대표적인 세 가지는 메서드 영역(Metaspace), 힙 영역(Heap), 그리고 스택(Stack)입니다. 메서드 영역: 클래스 정보, static 변수, 런타임 상수 풀 힙: new로 생성된 객체 및 인스턴스 변수 저장. GC 대상 스택: 지역 변수 저장, 메서드 종료 시 자동 소멸1-2. static 변수와..
영속성은 데이터베이스에 커밋된 쓰기 작업이 영구적으로 유지되도록 보장하는 데이터베이스 시스템의 속성이다. MongoDB에서는 클러스터 또는 복제 셋 수준에서 영속성을 고려해야한다. 저널링을 통한 멤버 수준의 영속성MongoDB는 데이터의 일관성과 복구 기능을 향상시키기 위해 Write-Ahead Logging(WAL) 방식의 저널링을 사용한다. 이는 데이터 손실을 방지하고 장애 발생 시 복구할 수 있도록 설계된 기능이다. 특히 WiredTiger 스토리지 엔진을 사용하는 경우 저널링을 통해 데이터 무결성을 유지할 수 있다.MongoDB 6.1 버전부터는 저널링이 기본적으로 활성화되며, 별도의 설정 없이 자동으로 적용된다. 이를 통해 데이터 충돌 방지 및 장애 복구 시간 단축과 같은 이점을 얻을 수 있다...
트랜잭션(Transaction)이란?트랜잭션은 읽기나 쓰기 작업이 가능한 데이터베이스 작업을 하나 이상 포함하는 데이터베이스의 논리적 처리 단위이며 각 그룹과 트랜잭션은 여러 도큐먼트에 대한 읽기, 쓰기와 같은 작업을 하나 이상 포함할 수 있다. MongoDB의 경우에는 여러 작업, 컬렉션, 데이터베이스, 도큐먼트 및 샤드에서 ACID 호환 트랜잭션을 지원한다.트랜잭션의 주요 특징원자성 (Atomicity): 트랜잭션 내 모든 작업이 성공해야만 최종적으로 커밋된다.일관성 (Consistency): 데이터가 트랜잭션 시작 전후로 일관성을 유지한다.고립성 (Isolation): 트랜잭션이 완료되기 전까지 다른 작업에서 변경된 데이터를 볼 수 없다.영속성 (Durability): 트랜잭션이 완료되면 데이터가 ..
MongoDB에서 제한 컬렉션은 고정된 크기를 가지며, 저장 공간이 초과되면 가장 오래된 데이터가 자동으로 삭제되는 특성을 가진 컬렉션이다. 제한 컬렉션은 주로 로그 데이터, 센서 데이터, 실시간 데이터 스트림과 같이 일정량의 최신 데이터만 유지해야 하는 경우에 사용된다.제한 컬렉션 특징고정된 크기: 설정된 크기를 초과하면 가장 오래된 문서가 자동으로 삭제됨쓰기 성능 최적화: 미리 할당된 공간을 사용하여 성능이 우수함자동 삭제: 별도의 삭제 연산 없이 오래된 데이터가 자동으로 사라짐정렬 보장: _id 필드 기준으로 입력 순서가 보장됨// 제한 컬렉션 생성db.createCollection("capped_logs",{ "capped":true, "size":1048576, "max":1000})..