| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- k8s
- 스프링
- 자바
- 스프링 핵심원리
- 카카오
- 클린아키텍처
- Spring
- 알고리즘정렬
- 이차전지관련주
- 엘라스틱서치
- 카카오 면접
- Sort
- 예제로 배우는 스프링 입문
- 오블완
- 자바스크립트
- 알고리즘
- 김영한
- JavaScript
- effectivejava
- Effective Java
- 이펙티브 자바
- 이펙티브자바
- 스프링핵심원리
- java
- kubernetes
- 스프링부트
- 티스토리챌린지
- Effective Java 3
- Kotlin
- ElasticSearch
- Today
- Total
목록컴퓨터 공학 (24)
Kim-Baek 개발자 이야기
📌 MongoDB에서 Time Series 기능을 사용하지 않고 일반 컬렉션을 활용하는 것과의 차이점MongoDB에서 Time Series Collection을 사용하지 않고, 일반 컬렉션에 시간 데이터를 저장하여 쿼리하는 방법도 가능합니다. 하지만 두 방식에는 성능, 저장 공간 효율성, 쿼리 최적화 측면에서 차이가 있습니다.1️⃣ Time Series Collection vs 일반 컬렉션의 차이점 정리비교 항목 Time Series Collection 사용 일반 MongoDB Collection 사용저장 구조시간 기반 자동 최적화된 저장JSON 문서 개별 저장인덱싱timestamp 필드 자동 인덱싱수동으로 timestamp 필드에 인덱스 추가 필요읽기(Read) 성능시간 기반 데이터 검색에 최적화일반..
MongoDB Time Series Collection (몽고DB 시계열 컬렉션)란?MongoDB는 5.0 버전부터 **Time Series Collection(시계열 컬렉션)**을 제공하여 시계열 데이터(시간 기반 데이터)를 효율적으로 저장, 인덱싱, 분석할 수 있도록 지원합니다.💡 MongoDB의 Time Series Collection은 일반 컬렉션과 다르게 데이터를 시간 중심으로 최적화하여 저장하는 기능을 제공하며, 기존 RDBMS 기반의 Time Series DB와 차별화된 유연성을 갖습니다.1️⃣ MongoDB Time Series Collection의 특징✅ 시계열 데이터 최적화데이터를 자동으로 압축 및 그룹핑하여 저장 공간을 절약읽기 및 분석 성능 향상✅ 자동화된 시계열 인덱싱시간(tim..
📌 Time Series DB (시계열 데이터베이스)란?**Time Series Database(시계열 데이터베이스, TSDB)**는 **시간(time)**에 따라 변하는 데이터를 저장하고 관리하는 특화된 데이터베이스입니다.이러한 데이터베이스는 센서 데이터, 주식 시장 데이터, 서버 로그, IoT 기기 데이터, 모니터링 시스템 등의 데이터를 다룰 때 많이 사용됩니다.1️⃣ Time Series DB의 특징✅ 시간(Time)이 가장 중요한 요소 → 데이터는 시간 순서대로 저장됨✅ 읽기(Read)가 많고 쓰기(Write)도 많음 → 데이터가 계속 추가되며 빠른 검색이 필요함✅ 압축(Compression) 및 보관(Retention) 기능 필요 → 데이터가 매우 많아지므로 저장 공간을 효율적으로 관리해야 함..
이 글을 읽으면: Spring Data MongoDB의 Audit 기능으로 '누가, 언제' 데이터를 생성/수정했는지 자동으로 추적하는 방법을 배울 수 있습니다. 실무에서 바로 적용 가능한 코드와 함께 자주 발생하는 문제 해결법까지 다룹니다.📌 목차왜 Audit이 필요한가? - 실무 사례MongoDB Audit 기본 개념실전 코드 구현 - 단계별 가이드트러블슈팅 - 자주 겪는 문제들실무 활용 팁1. 왜 Audit이 필요한가? - 실무 사례😫 실무에서 겪은 문제프로젝트를 운영하다 보면 이런 상황이 자주 발생합니다:상황 1: 데이터 변경 이력 추적 불가PM: "이 사용자 정보, 누가 언제 수정했어요?"개발자: "...로그를 뒤져봐야 알 것 같습니다"PM: "😡"상황 2: 버그 원인 파악 어려움- 어제까지..
이 글을 읽으면: API 문서 작성의 고통에서 벗어날 수 있습니다. OpenAPI(Swagger)를 사용하여 코드만 작성하면 자동으로 문서가 생성되고, 프론트엔드 개발자와의 협업도 10배 쉬워집니다. Spring Boot 실전 예제와 함께 배워보세요.📌 목차왜 API 문서 자동화가 필요한가?OpenAPI란? Swagger와의 차이Spring Boot에 적용하기 - 단계별 가이드Controller와 DTO 문서화Swagger UI 활용법실무 활용 팁트러블슈팅1. 왜 API 문서 자동화가 필요한가?😫 실무에서 겪는 API 문서의 고통상황 1: 끝없는 Postman Collection 관리개발자: "API 스펙이 바뀌었는데, Postman Collection도 수정해야 하나..."프론트엔드: "어? 저는 ..
디자인 패턴 중, 비지터 패턴에 대해서 강의를 듣고 정리해보았다. 위의 다이어그램이 비지터 패턴의 다이어그램이다. 중요한 것은 Element( 자료구조 ) 는 변화하지 않는다는 것과 vistor ( 서비스 로직 ) 가 추가되는 기능을 가진다는 것이다. 비지터 패턴은 일반적으로 프로그래밍을 하는 과정에서 생각하는 것과는 약간 다른데, 아래와 같다고 보면 된다. 일반적 : 방문자는 “구매” 라는 기능을 가지고 가게에 간다. 버거킹에 가면 “햄버거”를 사고, 피자헛에 가면 “피자"를 산다. 비지터패턴 : 가게에 방문자가 들어간다. 가게가 방문자에게 자신의 정보를 주고, 방문자는 정보에 따라 “버거킹의 햄버거 구매”, “피자헛의 피자 구매” 라는 기능을 호출한다. 코드 예시를 통해서 살펴보도록 하자. 비지터 패..
POST post 메서드는 기존에 알고있던대로 등록에 관한 내용이다. http 메세지로 넘어온 엔티티를 새로운 자원으로 등록한다. 새로운 자원으로 등록하지않을 수도있는데 이런 경우엔 200(ok)이나 204(no content) response code로 응답한다. 새로운 자원으로 만들어진 경우에는 201(created) response code로 응답하며 신규 생성된 자원의 위치를 헤더에 포함해야한다. 무슨 말이냐하면 예를들어 게시판에 새로 게시물을 등록하면 이를 따라갈수있는 위치를 응답 헤더에 넣어야한다는 의미다. 201 created Location: /board/2 PUT post와 가장 큰차이는 put 메서드는 자원의 식별자를 이미 알고있는 상태여야한다는 점이다. put 메서드는 식별자의 자원을..
- 웹 서버 (Web Server) 클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터) CASE 정적 컨텐츠를 요청(request)했나? 1. 정적 컨텐츠구나! 내가 제공해줄게 => .html, .png 등 응답(response) 2. 정적 컨텐츠가 아니구나.. 웹서버에서 간단히 처리 못하겠군. WAS에게 처리를 부탁해야겠다! => 결국 WAS가 처리해준 컨텐츠를 받은 웹서버는 응답(response)을 해줌 대표 : Apache, nginx - WAS (Web Application Se..
"브라우저에 도메인을 입력하면 → DNS서버에 IP주소를 요청 → 수신한 IP주소에 해당하는 웹서버에 접속" 1. 로컬PC의 hosts파일 확인 ( 브라우저에 캐싱되어 있는지 먼저 확인하자 ) 로컬PC의 C:\Windows\System32\drivers\etc 경로(윈도우 설치 경로에 따라 조금 차이가 있을 수 있음)에는 hosts라는 파일이 있다. 이 파일을 메모장으로 열어보면, IP주소와 도메인 주소를 설정할 수가 있다. 이 파일은 PC의 자체 DNS역할을 하며, 브라우저는 가장 먼저 이 파일을 확인하여 입력한 도메인의 매핑정보가 존재하는지 확인한다. 2. DHCP&ARP 대부분 가정집에서는 DHCP로 인터넷 접속을 하고 있을 것이다. DHCP는 Dynamic Host Configuration Pro..
제 2정규화를 수행 했을 경우 테이블의 모든 컬럼이 완전 함수적 종속을 만족한다.(부분 함수적 종속을 모두 제거되었다.) 이를 이해하기 위해서는 부분 함수적 종속과 완전 함수적 종속이라는 용어를 알아야 한다. 함수적 종속: X의 값에 따라 Y값이 결정될 때 X -> Y로 표현하는데, 이를 Y는 X에 대해 함수적 종속 이라고 한다. 예를 들어 학번을 알면 이름을 알 수 있는데, 이 경우엔 학번이 X가 되고 이름이 Y가 된다. X를 결정자이라고 하고, Y는 종속자라고 한다. 다른 말로 X가 바뀌었을 경우 Y가 바뀌어야만 한다는 것을 의미한다. 함수적 종속에서 X의 값이 여러 요소일 경우, 즉, {X1, X2} -> Y일 경우, X1와 X2가 Y의 값을 결정할 때 이를 완전 함수적 종속이라고 하고, X1, X..
Heap Sort는 Heap 이라는 자료구조를 이용해 정렬을 하는 알고리즘이다. Heap 이란 완전 이진 트리 형태로 Paren Node 는 Child Node 보다 반드시 큰(작은) 값을 가진다. Heap Sort의 경우 항상 O( N log(N) ) 의 시간복잡도를 가진다. 우선 모든 원소를 최대(최소) Heap에 삽입한다.( O(logN) ) Heap 트리의 최대(최소) 값을 출력한다.( O(1) ) 최대(최소) 값을 제거하고 Heap을 재배열 한다.( O(logN) ) Heap이 빌때가지 반복한다.( O(N) ) Stable 을 만족하지 않는다. #include #include #include using namespace std; int main() { vector v = { 3,1,4,1,5,9..
Quick Sort는 데이터내의 Pivot 값을 정하고 그 기준으로 두 개의 부분집합으로 나눈다. 한쪽은 Pivot보다 작은 값을 다른 한쪽은 Pivot보다 큰 값으로 나눈다. 더 이상 쪼갤 부분집합이 없을 때까지 재귀적으로 진행한다. Quick Sort는 어떤 Pivot 값을 고르는지에 따라 성능이 결정된다. 가장 이상적인 Pivot은 전체 데이터를 절반씩 쪼갤 수 있어야 한다. 이 경우 O(N log(n)) 의 복잡도를 가진다. 최악으 경우는 집합의 최소(최대) 값을 Pivot으로 고른 경우이다. 그러면 한쪽의 부분집합은 비어있고, 다른 한쪽은 n-1개의 원소가 있다(pivot 제외). 이 경우 재귀호출 횟수가 O(N)이며, 최악의 경우 O(N^2) 의 복잡도를 가진다. 하지만 평균적으로 O(N lo..
Merge Sort는 Divide and Conquer 알고리즘 기법이다. Merge Sort의 경우 항상 O( N log(N) ) 의 시간복잡도를 가진다. 성능은 전반적으로 Quick Sort 에 비해 떨어진다. Stable 하다 추가 메모리 공간(Not in-place)이 필요하다. C++의 stable_sort 가 Merger Sort 로 구현되어 있다. #include using namespace std; void merge_sort(int ary[], int left, int right); void merge(int ary[], int left, int mid, int right); int* temp; int main() { int ary[] = { 6,4,2,7,9,7,6,4,4,1,0 }; ..
Insertion Sort는 단순한 정렬 알고리즘 중 하나이다. 한번의 한 원소씩 이미 정렬된 다른 원소들과 비교하여 올바른 위치에 삽입하는 정렬이다. 삽입 정렬은 이미 정렬되어 있을때 O(N) 의 효율이다.(Best Case) Average, Worse Case의 경우 O(N^2) 이다. Bubble Sort에서 발전된 형태이다.(비교 횟수를 줄였다) 소량의 데이터를 처리할때 좋다. Stable 하다 무작위로 정렬된 많은 데이터의 효율이 매우 안좋다. #include using namespace std; void insertion_sort(int data[], int size); int main() { int data[] = {3,7,9,4,5,1,3,4,6,9}; insertion_sort(data,..
