일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- 안드로이드
- Spring
- 디자인 패턴
- 웹 개발
- rabbitmq
- mysql
- python3
- ORM
- Spring Boot
- bytecode
- Python
- 보안
- BCI
- 데이터베이스
- 파이썬3
- 스프링부트
- java
- 자바
- django
- 스프링 부트
- node.js
- 자료구조
- 파이썬
- 웹
- 스프링
- db
- 개발
- 장고
- HTTP
- Today
- Total
목록개발/알고리즘 (8)
semtax의 개발 일지
도형 내부에 포함된 점을 찾는 알고리즘에 대한 내용입니다.
Redis Bitfield로 좋아요 기능을 최적화 한 내용입니다. 참고 바랍니다.
개인 프로젝트를 수행하면서, 위치정보(위도, 경도) 가 포함된 데이터를 빠르게 검색해야 할 일이 있어서 정리한 내용을 올려봅니다. 참고바랍니다.
예전에 회사 솔루션 성능개선 위해 리서치 했던 내용을 발표했던 PPT입니다. 도움이 될것 같아서 공유합니다.
개요 이번 포스팅에서는, P95값이나 평균 값과 같은 통계 지표들을 효율적으로 저장할 수 있는 방법 중에 하나인 HdrHistogram에 대해 알아보도록 하겠다. P95와 평균을 저장하는 단순한 방법 우선 다음과 같은 상황을 가정해보자 만약 당신이, 모니터링 시스템을 만든다고 가정을 해보자. 이때, 수천~수억건의 응답시간 로그 데이터로 부터, 하위 5% 응답속도와 평균응답 속도를 계산해야 한다. 당신이라면 어떻게 하겠는가? 먼저, P95나 평균을 저장하는 단순한 방법은, 데이터를 계속 가지고 있다가 P95값이나 평균 값이 필요할때 마다, 또는 일정 주기마다 데이터들을 정렬해서 P95(하위 5% 값) 이나 평균값을 계산하는 방법이 있다. 하지만, 이러한 방법은 매번 데이터를 전..
개요 이번 포스팅에서는, 자료 구조에서 그래프를 모델링 하는 방법들에 대해서 알아보도록 하겠습니다. 그래프? 그래프는 정점(Vertex) 와 간선(Edge)로 이루어진 자료 구조 입니다. 보통 수학적으로는 아래와 같이 표기하게 됩니다. G = (V, E) V = {A, B, C} E = {(A,B),(B,C),(A,C)} 즉, 위의 설명을 그림으로 나타내면 아래와 같습니다. graph TD A[A] --- B[B] B[B] --- C[C] A[A] --- C[C] 보통 위와 같은 형태의 자료구조를 그래프 라고 부릅니다. 또한 그래프의 종류에는 방향 그래프와, 무방향 그래프 2종류가 존재합니다. 방향 그래프는 A -> C, C -> A 와 같이 서로 방향이 존재하는 그래프를 가리킵니다. 무방향 그래프는 반..
개요 이번 시간에는 백 트래킹 알고리즘에 대해서 알아보도록 하겠습니다. 또한, 백 트래킹 알고리즘을 이용해서 스도쿠 퍼즐을 만드는 프로그램을 작성 해보도록 하겠습니다. 백 트래킹(Back Tracking)? 백 트래킹(Back Tracking)은 단어 뜻 그대로, 되 추적이라는 다시 되돌아가서 되돌아간 자리에서 시작한다는 말입니다. 어릴 적에 "경우의 수" 문제나, "확률과 통계" 문제를 풀 때를 떠올려 봅시다. 문제를 맨 처음 풀 때, 우리는 종이에 수형도 라고 부르는 나뭇가지를 처음부터 하나씩 그려서 갯수를 전부 세었습니다. 아니면, 길 찾기 문제를 풀 때 에도, 종이에 거의 모든 경우의 수를 그려서 직접 세서 풀었던 것을 기억 하실겁니다. 사실은 모든 경우의 수를 전부 세서 그렸다고 생각을 하고는 ..
개요 이번 포스팅에서는 온라인 알고리즘을 이용해서 평균값을 구하는 법에 대해서 다루어 보도록 하겠다. 온라인 알고리즘 보통 알고리즘을 이용해서 어떠한 문제를 풀때에는, 보통 문제를 풀때 필요한 데이터를 전부 들고 있어야 한다. 예를 들어서, 100만 개의 데이터를 퀵소트를 이용해서 정렬한다고 가정하면, 메모리에 100만개의 데이터를 미리 가지고 있어야 정렬이 가능하다. 위에서 언급한 이러한 알고리즘을 보통 오프라인 알고리즘(off-line algorithm) 이라고 한다. 하지만, 실제 서비스를 만드는 경우 데이터가 언제/얼마나 들어올지도 모르는 데다가 설사 예측을 한다고 하더라도 데이터의 크기가 너무 커서 메모리에 한번에 다 못올리는 경우가 생긴다. 이러한 경우, 모든 데이터를 들고 있지 않아도 알고리..