- 博客(37)
- 收藏
- 关注
原创 redis hash压缩
开始学习redis,官网资料里讲了些内存优化的一些小技巧。做了做笔记,并将最后一部分 Using hashes to abstract a very memory efficient plain key-value store on top of Redis 做了做实验验证一下,不验证觉着不爽。思想:存储kv时,可以将几个有公共前缀的key分成:公共前缀(key)+不同部分(f
2012-09-28 20:50:38
1306
原创 [unsigned] char转化为int
问题的引出在订阅的某邮件列表里看见这样一个问题:Hi, having coding in C for 3 years but I'm still not clear with this one.Consider this code....char *p;unsigned int i = 0xcccccccc;unsigned int j;p =
2012-09-18 22:03:49
2091
原创 printf与[unsigned] char
在订阅的某邮件列表里看见这样一个问题:Hi, having coding in C for 3 years but I'm still not clear with this one.Consider this code....char *p;unsigned int i = 0xcccccccc;unsigned int j;p = (char *) &i
2012-09-18 20:51:32
1036
原创 redis/ae总结
前言:redis是一个和memcached相似的kv存储。作者自己在里边实现了一个小的事件库。为什么作者要自造轮子呢?作者自己解释如下:https://groups.google.com/group/redis-db/browse_thread/thread/b52814e9ef15b8d0/redis的事件库最大的特点就是实现很简洁。版本:2.
2012-08-24 23:23:26
1286
原创 lease机制
看公司学习视频做的笔记基本概念最初应用于分布式文件cache。一个server,许多client。许多client会从server做cache,cache需要与server保持一致。最初来自论文Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency
2012-08-06 20:50:15
716
原创 libevent部分源代码笔记
libevent的源代码间间断断的看了有一些时间了,重点一直在实现的细节,每段代码都能看得差不多但就是不知道整个流程是怎样的。昨天偶然发现了张亮的源代码分析,花了十几分钟过了一遍,豁然开朗!如果对libevent有个整体认识,很容易看懂。下午重看了几个主要函数,一下就串起来了,随手做了做笔记。libevent虽然没那么精炼,相比于libev的实现,还是非常易读的。这篇与张亮那篇不同,相当于
2012-03-23 22:30:55
1571
原创 使用libevent改进的boa服务器
源代码已经迁移到GitHub上。https://github.com/tricky1997/boa-libeventboaboa服务器是一个比较简单的HTTP服务器。不同于Apache、nginx这种大家伙,boa代码量比较少,功能比较简单,常用于嵌入式设备。对请求的处理方式是select+非阻塞I/O。主要的数据结构有:三个请求队列:request_ready,r
2011-12-06 22:36:07
1319
原创 nginx简单配置及使用
最近感觉nginx各种火,大有取代apache的趋势,于是学一学,虚拟机里搭个服务器练一练。学了一下午,略有心得,记下来大家一起分享。安装过程不做重点:nginx安装最简单,tomcat和jdk安装加环境变量,php(fastcgi)安装最麻烦,后文会给出部分说明。 概要这篇文章将包括以下内容:nginx查找虚拟主机原理的简单介绍;通过不同ip访问同一台服务器到达不同的
2011-11-14 17:51:28
5955
原创 nginx的简单配置
最近感觉nginx各种火,大有取代apache的趋势,于是学一学,虚拟机里搭个服务器练一练。学了一下午,略有心得,记下来大家一起分享。安装过程不做重点:nginx安装最简单,tomcat和jdk安装加环境变量,php(fastcgi)安装最麻烦,后文会给出部分说明。 概要这篇文章将包括以下主要内容:nginx查找虚拟主机原理的简单介绍;通过不同ip访问同一台服务器到达不
2011-11-14 16:01:28
234
原创 BOA代码笔记 6
process_requests()昨天分析到了switch部分。process_requests()还剩下的,也就是处理请求的switch部分和处理retval的swtich部分。先看下剩下这部分的源码: switch (current->status) { case READ_HEADER: case ON
2011-11-09 23:09:11
1190
原创 BOA代码笔记 6
process_requests()昨天分析到了switch部分。process_requests()还剩下的,也就是处理请求的switch部分和处理retval的swtich部分。先看下剩下这部分的源码: switch (current->status) { case READ_HEADER: case ONE_
2011-11-09 19:50:10
361
原创 BOA代码笔记 5
select_loop()继续,到了这里:if (!sigterm_flag && total_connections < (max_connections - 10)) { BOA_FD_SET(server_s, &block_read_fdset); /* server always set */ }如果没有收到SIGTERM信号,连接数没
2011-11-08 22:20:10
1069
原创 BOA代码笔记 4
main.c (完?)从上次继续上次我们看到了这个地方:if (max_connections < 1) { struct rlimit rl; /* has not been set explicitly */ c = getrlimit(RLIMIT_NOFILE, &rl); if (c < 0) {
2011-11-06 21:38:28
1563
原创 对于用Posix信号量解决读者-写者问题的小研究
单缓冲区问题描述: 共享缓冲区为环形,为NBUFF个元素的int数组。若干个生产者,若干个消费者在进行读写操作。一个读者,一个写者:需要三种信号量: mutex二值信号量,保护读和写操作。可以用互斥锁代替。 nempty信号量,初始化数量为空槽数量(NBUFF)。 nstored信号
2011-10-21 11:55:37
533
原创 不同于CPU,在CUDA里实现一个正确的mutex
CUDA by Example里附录A介绍了用cuda提供的API做一个mutex的方法。C++代码:struct Lock { int *mutex; Lock( void ) { int state = 0; HANDLE_ERROR( cudaMalloc( (void**)& mutex,
2011-09-29 18:05:30
2097
转载 Ubuntu 10.04 命令行模式登录系统
/etc/modprobe.d/nvidia-installer-disable-nouveau.conf一句话:sudo gedit /etc/default/grub,GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”修改为:G
2011-09-24 09:43:19
238
原创 BOA代码笔记 3
up主下午没课,暂时也不知道学什么,所以继续继续~boa.c(依然续)main函数接下来该open_logs()了。顾名思义,这个函数负责日志文件的顺利打开。注释是这么说明的:/* * Name: open_logs * * Description: Opens access log, error log, and if specified, cgi log
2011-09-22 16:16:32
1392
4
原创 BOA代码笔记 2
boa.c 续书接上回。main函数的调用到了 fixup_server_root()static void fixup_server_root(){ char *dirbuf; if (!server_root) {#ifdef SERVER_ROOT server_root = strdup(SERVER_ROOT);
2011-09-21 22:01:58
1730
2
原创 BOA代码笔记 1
开头废几句话Boa不多介绍了,wiki上说的比我好。之所以写这么个东西1 因为兴趣,想看看别人源代码。2 看linux0.11版源代码看到字符设备、文件系统的地方比较费劲,又不想跳过……憋了一肚子热情先发泄在boa上吧!3 正在做的某项目弄的博主头昏脑涨,不妨换换思路与Unix网络编程相关的,基于linux c编程,不涉及图形界面的,代码量很小。 ---
2011-09-20 22:08:52
2175
转载 linux下用tar来进行增量备份
另外,推荐压缩时使用选项p,保持文件访问权限。转载自http://blog.tangjianwei.com/2010/08/06/perform-a-incremental-backup-with-tar-in-linux/近来无聊,博客又好久没有更新了,来说说linux下面的文件备份吧。备份无非就是全量备份与增量备份。linux下面的全量备份自然不用说,很
2011-08-05 20:39:11
2703
1
翻译 Filtration approachs
之前的方法需要一个个的字母读取,进行状态转移。这一节将不一个个字母读取。作者说,这种方法不一定所有情况都能用,所以下面把正则表达式改变了。这一节研究的不再是(AT|GA) ((AG|AAA)*) ,而是((GA|AAA)*) (TA|AG),反过来了。给个图Figure 5.19: Glushkov automaton built on the regular expression
2011-07-31 16:29:51
385
翻译 Bit-parallel Glushkov
Another bit-parallel algorithm [NR99a, Nav01b, NR01a] uses Glushkov's NFA, which has exactlym + 1 states. We call itBPGlushkov.The reason to choose Glushkov over Thompson is that we need to build
2011-07-31 10:24:06
348
翻译 Bit-parallel Thompson
这篇看起来很有难度。多次想放弃。慢慢来吧。不逐段翻译了,自己总结一下。 represents the states reachable from state i by characterσ without consideringε-transitions, andrepresents E(i), the ε-closure of state si (Section 5
2011-07-31 09:28:51
265
翻译 Classical approaches to regular expression searching
5.3.1 Thompson's NFA simulation是现在许多相关算法的基础,作者没有仔细介绍,就不研究了。5.3.2Using a deterministic automatonOne of the early achievements in string matching was theO(n) time algorithm to search for a regul
2011-07-30 16:55:41
299
翻译 两种regex构造NFA的方法
The Thompson construction [Tho68] is simple and leads to an NFA that is linear in the number of states (at most 2m) and of transitions (at most 4m). However, this automaton has ε-transitions, that i
2011-07-30 10:43:07
533
转载 BOA安装错误
个人收藏。。。。Linux系统编译boa-0.94-13出错信息问题时间:2010-11-10 16:08 来源:www.stuhack.com 作者: 点击:63次编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex. yacc是一个文法分析器的生成器,bison即是yacc的GNU版本。Lex和YACC是用于构造词法分析机和语法解释器
2011-06-14 10:35:00
562
原创 一个能联机能自奕的gobang游戏
也算是真正自己写的第一个C++图形化程序使用Qt4.7开发参考 《qt4精彩实例分析》 《C++ GUI Qt4编程》以及Qt优秀的帮助文档。 想法来源于对算法的慢慢感兴趣,Unix编程的感兴趣,以及对Qt编程的感兴趣。就想着做个东西试试。 ver1.0 为单机版只能一个人自己跟自己下(我知道很傻, 不过作为自己写的第一个图形化程序还是很值得以后回味的
2011-04-12 22:04:00
544
原创 qt中使用网络功能
QT += network 使用多态或其他指针暂时为空的情况时,应该将信号的连接推迟到确认了指针的指向后。 当new一个Layout时,如果填写了parent,那么会自动设置为parent的Layout?
2011-03-27 10:07:00
244
原创 apue笔记(9)
<br /> <!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans Mono", monospace } PRE.cjk { font-family: "DejaVu Sans", monospace } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.21cm } H
2011-02-13 21:47:00
85
原创 apue笔记(8)
<br /> <!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans Mono", monospace } PRE.cjk { font-family: "DejaVu Sans", monospace } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.21cm } H
2011-02-13 21:45:00
171
原创 apue笔记(7)
<br /> <!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans Mono", monospace } PRE.cjk { font-family: "DejaVu Sans", monospace } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.21cm } H
2011-02-08 20:34:00
117
原创 apue笔记(6)
<br /> <!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans Mono", monospace } PRE.cjk { font-family: "DejaVu Sans", monospace } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.21cm } H
2011-02-07 21:02:00
109
原创 apue笔记(5)
<br /> <!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans Mono", monospace } PRE.cjk { font-family: "DejaVu Sans", monospace } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.21cm } H
2011-02-06 15:22:00
112
原创 apue笔记(4)
<br />4.17.symlink and readlink Functions#include <unistd.h>int symlink(const char *actualpath, const char *sympath);A new directory entry, sympath, is created that points to actualpath. It is not required that actualpath exist when the symbolic link is
2011-02-05 19:51:00
106
原创 apue笔记(3)
4.2. stat, fstat, and lstat Functions #include int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int filedes, struct stat *buf);int lstat(const char *restrict pathname, struct stat *restrict buf);The lstat function
2011-02-01 14:47:00
104
原创 apue笔记(2)
第二章看不太懂 感觉没那么重要 略过 3.1. IntroductionMost file I/O on a UNIX system can be performed using only five functions: open, read, write, lseek, and close. We then examine the effect of various buffer sizes on the read and write functions.The term unbuffered means
2011-01-31 11:34:00
92
原创 apue笔记(1)
apue.h的获取与使用(转载)初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例(download: http://www.apuebook.com/)时就出现问题,提示 "错误:apue.h:没有那个文件或目录". apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了。 先去那个网站downlowd apue 的 tar.gz包,然后解压至电脑中的某个目录,比
2011-01-29 19:52:00
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人