vip hash lookup시 조회 안되는 문제 해결 key 계산시 잘못된 key length 문제였음.attribute packed가 없어서 2바이트가 추가 됨.stack에 해시 테이블을 두면 이 2 바이트가 0이지만 heap 에 두면 키의 끝 2바이트에 쓰레기 값.vip struct가 8바이트가 아닌 6바이트로 처리되도록 attribute packed 붙임. /* packed가 안되어 있으면 끝에 0이 아닌 바이트가 더 붙어서 cmp 가 비정상 동작함. 4바이트로 안떨어지는 ipv4_vip의 경우 packed 필요. (sizeof(ipv4_vip)가 8이 아닌 6임을 보장 받으려면 packed 필요) */ typedef struct ipv4_vip{ uint32_t ip; uint16_t port; ..
consistent hash는 bucket이 추가되더라도, 추가된 버킷으로 이동한 엘리먼트를 뺀 나머지 엘리먼트는 버킷의 변화가 없는 해시를 말한다. 가장 대표적인 게 링에 버킷 구역을 끼워 넣는 karger hash... 근데 대부분의 해시는 버킷 밸런스가 매우 안 좋은 편이다. jump consistent hashgoogle에서 jump consistent hash를 만들었다.버킷이 n개일 때 1개가 추가되면 1(n+1)의 확률로 새로 추가 된 버킷으로 옮겨간다. 이 아이디어를 그대로 옮기면 다음이 된다. ---------------------------------------------------------------------- int ch(int key, int num_buckets) { rand..
c coding convention Table of Contents 1. Name 1.1. functon name 1.2. unit name 1.3. structure name 1.4. variable names on the stack 1.5. poineter name 1.6. global variables 1.7. global constants 1.8. macro name 1.9. enum names 1.10. header file guards 2. formatting 2.1. brace placement 2.2. add comment to end bracelet 2.3. characters in one line 2.4. if then else format 2.5. condition formatting..