2013年6月26日

windows下获得当前用户名的小代码,ring3级别

摘要: #include #include #pragma comment(lib, "WtsApi32.lib")#define Message(X) MessageBox(0, X, "DEBUG", MB_ICONINFORMATION)int getUserName(char *username){ LPTSTR pBuffer = NULL; DWORD dwBufferLen; BOOL bRes = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, 阅读全文

posted @ 2013-06-26 16:37 aitilang 阅读(303) 评论(0) 推荐(0) 编辑

2013年6月4日

【原创】NoSQL中memtable机制的改进

摘要: 现有的主流的NoSQL存储系统,如Cassandra、BigTable、HBase等在RAM中直接使用跳表、队列或者树结构等方式来管理Key/Value键值对,整个Key/Value集合被称为MemTable。当MemTable中的数据大小达到阈值的时候会被写入磁盘。因为用户的写操作都是将数据写入MemTable,为了避免MemTable中的数据在转存到磁盘时导致用户写操作失败,在转储之前MemTable会将所有数据转存入一个Immutable MemTable,清空后的MemTable继续响应用户的操作,Immutable MemTable负责将数据转存到磁盘,当数据转存完成以后,Imm.. 阅读全文

posted @ 2013-06-04 15:55 aitilang 阅读(380) 评论(0) 推荐(0) 编辑

2012年7月6日

关于结构体中最后的 char */char []

摘要: 在看redis源码的时候看到一个strcut sdshdr ,如下:struct sdshdr { int len; int free; char buf[];};代码中对于这个结构体的大小的处理挺奇怪的,试验一下,实验环境为VC6.0,求sizeof大小struct sdshdr { int len; int free; char *buf;};大小是12struct sdshdr { int len; int free; char buf[];};大小为8struct sdshdr { int len; int free; ... 阅读全文

posted @ 2012-07-06 15:06 aitilang 阅读(805) 评论(0) 推荐(0) 编辑

2012年5月14日

基于Redis的C客户端Hiredis的一个测试代码

摘要: 安装过程见 :http://blog.csdn.net/a600423444/article/details/7203276自己写的一个测试代码,主要是set ,get和del功能#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <stdlib.h>#include "hiredis.h"static inline double micro_time(){ struct timeval tim; dou 阅读全文

posted @ 2012-05-14 14:37 aitilang 阅读(757) 评论(0) 推荐(0) 编辑

测试Redis过程中的小问题总结

摘要: Redis测试过程中的小问题总结 :1,如果想禁止数据写入磁盘,需要关注配置文件中的以下三项: (1)# after 60 sec if at least 10000 keys changed## Note: you can disable saving at all commenting all the "save" lines.save 900 1save 300 10save 60 10000上面的三个是触发同步到磁盘操作的条件,直接屏蔽即可(2)# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite t 阅读全文

posted @ 2012-05-14 14:30 aitilang 阅读(192) 评论(0) 推荐(0) 编辑

core显示生成,却在当前目录找不到

摘要: 今天调试代码的时候运行后显示 段错误 (core dumped) 但是当前目录没有 ,查了资料发现如果代码中调用了chdir的话就很可能在该目录下,去找了下,果然在下面 :)PS: 说一个调试的小技巧 ,有时候代码有问题,但是不足以让程序崩溃,无法断定产生问题前的调用关系, 这个时候如果想主动的生成core 的话只需在该代码处人为的添加内存错误代码即可,如free(-1)。 阅读全文

posted @ 2012-05-14 09:21 aitilang 阅读(210) 评论(0) 推荐(0) 编辑

2012年5月10日

【原创】LevelDB中的placement new

摘要: 刚才看Leveldb源码的时候,看到leveldb为了避免频繁的new/delete操作, 使用了Arena缓存 ,在缓存上面分配空间以后,使用 placement new 进行初始化详见 SkipList<Key,Comparator>::NewNode(const Key& key, int height)中的 return new (mem) Node(key);placement new 技术使c++中new的 分配空间 和 调用构造函数 这两个功能分开 ,只是在固定的地址调用构造函数。这个技术有利于程序员自己实现一个自己的缓存堆的功能:每次初始化一个对象都可以在一 阅读全文

posted @ 2012-05-10 11:22 aitilang 阅读(313) 评论(1) 推荐(0) 编辑

2012年5月9日

Nginx安装和运行

摘要: 自己安装时参考的资料,均来自网上Nginx安装和运行创建时间:2012年5月6日(星期天) 中午11:40|分类:未分类| 字数:2406|发送到我的Qzone|另存为...|打印|添加到日历Nginx安装和运行http://www.cnblogs.com/cenly/archive/2008/12/12/1353799.html官方网站http://wiki.codemongers.com/Main一、依赖的程序1. gzip module requires zlib library2. rewrite module requires pcre library3. ssl support r 阅读全文

posted @ 2012-05-09 22:26 aitilang 阅读(256) 评论(0) 推荐(0) 编辑

导航