분류 전체보기
-
Set개발하면서/코드보면서 2012. 6. 17. 22:38
Set은 intset과 hashtable을 사용합니다. hashtable은 hashes에서 설명한것처럼 dict을 사용합니다. intset에 대해 알아보겠습니다. contents에 value값이 들어가고 encoding에는 현재 어떤 int형인지 (INTSET_ENC_INT16/32/64) length에는 현재 저장한 value의 갯수가 저장됩니다. insert할때는 binary search로 해당값이 있는지 확인하고 없으면 min 위치에 값을 저장합니다. 처음에 encoding은 int16_t로 하는데 그 범위에 벗어나는 값이 들어오면 전체 데이타를 다 수정합니다.;;; intsetUpgradeAndAdd 아~~ 같은값이 있으면 뭐 상관없는데, 아니라면 아래 작업을 수행합니다. resize후에 memm..
-
Maxmemory policy개발하면서/코드보면서 2012. 6. 17. 22:37
http://antirez.com/post/redis-as-LRU-cache.html http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/ 위 두개의 글을 참고한다음에 소스를 보면 더 이해가 쉽습니다. (저는 영어가 짧아 굵은글씨만 읽고 바로 소스로;;; 으헝헝~~) Redis는 메모리 기반 key-value시스템입니다. 메모리는 한정되어있기때문에 무한정 데이타를 저장할수가 없죠. 그래서 Redis에서 나름대로 몇가지 방법을 만들었습니다. /* Redis maxmemory strategies */ #define REDIS_MAXMEMORY_VOLATILE_LRU 0 #define REDIS_MAXMEMORY_VOLA..
-
6년전 지금살아가면서/생각하면서 2012. 6. 15. 03:36
나는 04년도에 군에 입대해서 06년도에 제대를 했다. 컴퓨터에 대해 하나도 모르고 그저 스타크래프트가 좋아 전산과를 갔고, print("hello world")만 하다가 입대를 했다.제대후, '알고리즘 트레이닝북'이라는 책으로 개발에 대한 경험, 개발자의 꿈을 꾸기 시작한걸로 기억된다. 한창, 포인터, 트리구조 구현하는 그때 그래픽 수업이 있었다. 팀프로젝트가 있었는데,OpenGL로 개발해서 간단한 게임을 만드는것이었다. 그때 한창 개발에 맛을 들여서 뭐든 할줄 알았는데 (사실 지금 생각해보면, 배열 index나, 포인터가지고 이놈저놈 찔러보는 수준...) OpenGL은 넘사벽이었다. 팀을짜는데 제대후 아저씨들과 놀아줄 사람은 없어서 나랑 동기 형이랑 그리고 어느 얼굴이 하얀 남학생과 같은 팀을 하게 ..
-
[Algorithm]Boyer-Moore작성할것 2012. 4. 12. 07:41
대상 문자열 : text 찾을 패턴 문자열 : pattern brute force 알고리즘은 http://ir.bagesoft.com/37 굉장히 비효율적이다. (하지만 구현이 빠르고 추가 연산이 필요 없다.) 그래서 사람들이 생각한 게, '어떻게 하면 적게 비교해서 pattern을 찾을까... 였다. Boyer-Moore알고리즘을 알아보려고 한다. (http://xenostudy.tistory.com/72 다른 자료도 많겠지만 여기보고 이 알고리즘을 이해했습니다. 제가 이해한걸 적어보려고 합니다. ) 먼저 접미사, 접두사에 대해 알아야 한다. 앞에 붙어있는 게 접두사, 뒤에 붙어있는 게 접미사 (조사하면서 영어공부도 같이했네요 ㅋㅋ http://jujubong.tistory.com/70) Boyer-M..
-
배운것과 내가 아는것은 다르구나......살아가면서/생각하면서 2012. 3. 23. 00:17
요새 회사에서 진행하는것 때문에 틈나는대로 Ruby를 보고 있다. 또 배우는김에 이번에 알고스팟에서 Ruby로도 문제를 풀수있게 되서 한번 해봤다. 문제 url : http://algospot.com/judge/problem/read/DRAWRECT 문제를 봤을때 더하고 빼고 해면 될것 같았는데 잘 안됐고, sort 남발, 경우의수 다 집어 넣어서 억지로 정답! 을 얻었다. 그 코드는.....후덜덜 Integer(gets).times{ x = [] y = [] 3.times { inputs = gets.chomp if inputs.respond_to?("split") input = inputs.split x.push(input[0].to_i) y.push(input[1].to_i) end } x = x...