c
文章平均质量分 68
iteye_3185
这个作者很懒,什么都没留下…
展开
-
C语言类型转换的原则
c语言类型转换的根本原则是必须保证数据不能丢失!在这个基础上,总结两个基本原则.1) 若两种类型的比特数不同,转换成比特数高的类型如:-1 > (unsigned char)1会把(unsigned char)1转换成int型,变成1,表达式的值为false2) 若两种类型的比特数相同,且一种有符号,一种无符号,则转换成无符号类型。如:-1 > (unsigned i...2008-10-30 09:48:00 · 133 阅读 · 0 评论 -
fgets函数的理解
fget函数的原型如下:char *fgets(char *buf, int n, FILE *fp)功能:从文件流读取一行,送到缓冲区,使用时注意以下几点:1.当遇到换行符或者缓冲区已满,fgets就会停止,返回读到的数据,注意的是不能用fgets读二进制文件,因为fgets会把二进制文件当成文本文件来处理,这势必会产生乱码。 2.每次调用,fgets都会把缓冲区的最...2008-11-12 19:45:00 · 204 阅读 · 0 评论 -
nginx源码阅读笔记
最近做一个收集客户端数据的项目, 后台使用nginx, 通过实现nginx的模块来处理业务. nginx的模块编写不难,但写完后对nginx的内部机制还是云里雾里, 趁周末好好阅读一下nginx的源代码. 下面记录一些阅读过程中遇到的数据结构. 关于nginx的内部实现, 等看懂了源码再写.模块四要素:1 模块实例, 2 模块上下文, 3 模块指令, 4 指令...2011-09-10 00:16:43 · 128 阅读 · 0 评论 -
strlcpy实现
#include <stdio.h>/* * Copy src to string dst of size siz. At most siz-1 characters * will be copied. Always NUL terminates (unless siz == 0). * Returns strlen(src); if retval >= ...2011-09-13 22:41:37 · 572 阅读 · 0 评论 -
memcopy 和 memmove 的实现
一 memcopy 的实现 memcopy 不考虑源内存和目标内存之间的重叠, 逐字节地拷贝, 代码比较简单 void my_memcopy(void *src, void *dst, int size){ char *psrc, *pdst; psrc = (char *)src; pdst = (char *)dst; while (size-...原创 2012-02-18 14:25:55 · 250 阅读 · 0 评论 -
多线程与volatile变量
volatile 修饰的变量表示改变量的值是易变的,编译器不对其进行优化,访问该变量的时候不会从寄存器读取, 而是直接从内存读取变量。在多线程环境下,每个线程都有一个独立的寄存器,用于保存当前执行的指令。假设我们定义了一个全局变量,每个线程都会访问这个全局变量,这时候线程的寄存器可能会存储全量变量的当前值用于后续的访问。当某个线程修改了全局变量的值时,系统会立即更新该...原创 2012-02-25 17:07:41 · 368 阅读 · 0 评论 -
Memcached源码分析之内存管理篇
使用命令 set(key, value) 向 memcached 插入一条数据, memcached 内部是如何组织数据呢 一 把数据组装成 itemmemcached 接受到客户端的数据后, 把数据组装成 item, item 的格式如下: 图1 struct item 的结构 源码中这样定义 struct item: /** * Structure ...2012-02-26 15:04:18 · 222 阅读 · 0 评论 -
Memcached源码分析之网络模型篇
memcached 采用多线程的工作方式, 主线程接收连接, 然后把连接平摊给工作线程, 工作线程处理业务逻辑, memcached 使用 libevent 处理网络事件, 主线程和工作线程都有一个 event base, 这是 libevent 的核心数据结构, event base 能够监听多个 socket 的网络事件, 概括起来, memcached 大体框架如 图1 所示...2012-03-02 01:46:48 · 186 阅读 · 0 评论