- 博客(17)
- 资源 (3)
- 收藏
- 关注
原创 memcached_get
一、memcached_get内部只是调用memcached_get_by_key(ptr, NULL, 0, key, key_length, value_length, flags, error)。memcached_get_by_key()内部主要调用memcached_mget_by_key_real()和memcached_fetch()。之后,它还会调用一次针对dummy的me
2013-11-30 22:13:40 2892
原创 细说memcached_set
一、memcached_set在设置好memcached_st之后,就调用memcached_set(memcached_st *ptr, const char *key, size_t key_length, const char *value, size_t value_length, time_t expiration, uint32_t flags),它内部只是调用memcached_
2013-11-29 10:22:58 4682 1
原创 libmemcached的执行流程
一、测试程序// libmemcached_test.c #include #include #include #include int main(void) { memcached_st *memc; memcached_server_st *servers = NULL; memcached_return rc; const char* server_lis
2013-11-28 00:23:24 1408
原创 关联式容器-基于hash
5.7 hashtable1、碰撞问题的解决线性探测:负载系数在0-1之间(元素个数除以表格大小)。二次探测:如果位置已被占用,则依序尝试H+1^2, H+2^2, ... , H+i^2,而不是像线性探测那样尝试H+1, H+2 ... , H+i。开链法:负载系数大于1。2、哈希表的bucket和nodetemplate struct __hashtable_
2013-11-27 11:31:10 619
原创 libmemcached的头文件
一、第一部分这一部分的头文件可以提供给外部client使用。1、#include 该文件被client包含,该文件中只是进一步#include 。libmemcached-1.0/memcached.h:包含了libmemcached-1.0下的所有头文件,并包含libhashkit-1.0/hashkit.h。#pragma once //与#ifndef方式作用相同,但是
2013-11-26 21:13:56 1453
原创 libmemcached的调试
1、libmemcached的调试libmemcached的版本:1.0.3./configure之后将Makefile中的CFLAGS、CPPFLAGS、CXXFLAGS都加上-g -O0之后就可以使用gdb进行调试了。2、测试主程序这个程序是从别处拷贝来的。#include #include #include using namespace std;
2013-11-26 15:25:12 662
原创 Memcached的item和slab
Memcached的数据结构1、先上源码item是存储数据的最小单位。typedef struct _stritem { //Structure for storing items within memcached. struct _stritem *next; struct _stritem *prev; struct _stritem *h
2013-11-25 23:50:37 1113
原创 5 关联式容器-set map multiset multimap
5.3 setset、multiset、map、maltimap都是以RB-tree为基础。为了效率,尽量使用成员函数find等,而不是STL算法。不能通过set的迭代器改变set的元素值,以防破坏排序规则。// 如果编译器不能根据前面模板参数推导出后面使用的默认参数类型,// 那么就需要手工指定, 本实作set内部元素默认使用less进行比较// 内部维护的数据结构是红黑树, 具有非
2013-11-24 18:25:18 663
原创 5 关联式容器——预备知识
5.1 树1、二叉搜索树任何节点的键值一定大于其左子树的每一个节点的键值,并小于其右子树的每一个节点的键值。插入:插入新元素时,从根节点开始,遇键值较大就向左,遇到键值较小者就向右,一直到尾端,即为插入点。删除:分两种情况。如果A只有一个子节点,就直接将A的子节点连至A的父节点,并将A删除。如果A有两个子节点,就以右子树内的最小节点取代A(右子树的最小节点为:从右子节点开始,一直向
2013-11-24 00:02:53 751
原创 memcached的连接处理
一、相关结构enum conn_states { conn_listening, /**< the socket which listens for connections */ conn_new_cmd, /**< Prepare connection for next command */ conn_waiting, /**< waiting for
2013-11-21 22:21:49 2089
原创 memcached的执行流程
memcached的执行流程1、libevent的使用方法初始化 main_base = event_init(); //多孔插座事件设置 event_set(&ev, listen_fd, EV_READ | EV_PERSIST, cb, *arg) //设置灯泡 event_base_set(main_base, &ev);//设置灯泡
2013-11-20 00:18:49 974
原创 4 序列式容器(续)——container adapter
4.5 stacktemplate >class stack { // 以㆘的__STL_NULL_TMPL_ARGS 會開展為<>,見1.9.1 節 friend bool operator==__STL_NULL_TMPL_ARGS (const stack&, const stack&); friend bool operator<__STL_NULL_TMPL_ARG
2013-11-19 09:55:43 941
原创 4 序列式容器
4 序列式容器4.2 vectortemplate class vector{ ... protected: iterator start; // 表示目前使用空間的頭 iterator finish; // 表示目前使用空間的尾 iterator end_of_storage;// 表示目前可用空間的尾 ...};成员函数举例:注意其中的内存管理
2013-11-13 15:00:39 503
转载 Linux epoll模型
Linux epoll模型转载自:http://www.cnblogs.com/venow/archive/2012/11/30/2790031.html定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合
2013-11-06 20:53:59 616
原创 3 迭代器与概念和traits编程技法
3 迭代器与概念和traits编程技法每一种STL容器都有其专属迭代器。 3.4 Traits编程技法——STL源代码门钥template struct iterator_traits{ typedef typename I::iterator_category iterator_category; typedef typename I::value_type val
2013-11-06 10:14:59 537
原创 2 空间配置器
2 空间配置器2.2 具备次配置力的SGI空间配置器SGI STL缺省使用alloc为配置器,而不是采用标准写法allocator,前者效率更高。1、构造和析构基本工具:constuct()和destroy()——(内部包含头文件,用于placement new)constuct()接受一个指针p和一个初值value,将初值设定到指针所指的空间上。destroy()有两个版
2013-11-03 16:44:04 547
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人