- 博客(16)
- 资源 (6)
- 收藏
- 关注
原创 redis源码分析 --- 字典dict
字典dictredis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希节点,而每个哈希表节点就保存了字典中的一个键值对。 dict结构定义 typedef struct dictEntry { void *key; /*! 键*/ union { void *val; uint64_t u6...
2019-03-10 18:00:22
288
原创 redis源码分析 --- 简单动态字符串sds
简单动态字符串sdsredis没有直接使用c语言标准库中传统的字符串表示,而是自己构建了简单字符串(sds)的抽象类型,它的特点是:可在常数时间复杂度获取字符串长度,因为sds结构中保存了数据的长度、杜绝缓冲区溢出,可动态扩展内存,减少重复修改字符串带来的内存重新分配次数、惰性释放内存空间、二进制安全和兼容部分c语言字符串函数。 sds定义 typedef char *sds;...
2019-03-08 23:40:04
311
转载 epoll机制:epoll_create、epoll_ctl、epoll_wait、close
在Linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define__FD_S
2016-12-14 11:00:22
798
原创 C语言双指针的常见用法
鉴于工作经验有限,目前遇到的双指针的用法有如下几种情况,后续工作中如发现有其他的用法,会更新上去。1、用作函数的返回值,比较常见的是返回分配的堆内存地址。2、用于申请动态一维数组,只是这个一维数组中存储的是指针类型。3、表示指针的地址。
2015-10-30 10:19:31
16486
原创 Thread-Specific Data(线程私有数据)
#include #include #include #include #include pthread_key_t key_handle;typedef struct tag_tsd_data{ int iData; //TODO}STD_DATA;void destructor(){ printf("pthread_key destructor.\n");}
2015-10-22 09:06:05
970
原创 do {...} while (0) 在宏定义中的作用
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:#define __set_task_state(tsk, state_value) \ do { (tsk)->state
2015-09-14 14:33:47
610
原创 memcpy与memmove的区别及源码
memcpy函数 void *memcpy(void *dest, const void *src, size_t n);DESCRIPTIONDESCRIPTION The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas
2015-09-11 16:58:49
1035
2
转载 回调函数理解
为了弄明白回调函数的奥妙,首先提出三个问题:1. 回调函数是什么东西?2. 回调函数怎么开发,怎么使用?3. 回调函数的作用,应该在什么情况下使用?第一个问题:*******************************************************************************其实回调就是
2015-09-06 10:23:34
718
原创 IP路由查找的“最长匹配原则”
最长匹配原则是CISCO IOS路由器默认的路由查找方式。当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的表项进行bit by bit的逐位查找,直到找到匹配度最长的条目,这叫最长匹配原则。这里有几个概念要先搞清楚: 看上面的图,灰色的空间172.16.0.0/16,这个网络号,我们称为主类网络号,所谓主类网络号,意思是该网络号,按照
2015-07-31 09:10:48
35519
1
转载 OSPF中的最短路径算法
Dijkstra算法介绍在数学上,以某个节点为起点,计算到其他节点的最短路径的算法,称为“单源最短路径” 算法。求“单源最短路径”的问题在数学上可以精确描述如下:“单源最短路径” 问题:已知一个由n个节点(V0..n)构成的有向连通图G=(V,E),以及图中边的权函数C (E),其中V代表节点集合,E表示所有边的集合,并假设所有权非负,求由G中指定节点V0到其他各个节点的最短路径。Di
2015-07-21 18:58:35
10653
原创 掩码、反掩码和通配符
掩码、反掩码和通配符[b]【掩码、反掩码和通配符】[/b]Mask 用来区分一个IP地址的网络部分和主机部分由左至右连续的“1”来表示网络位的部分,不能被0断开!!连续的“0”用来表示主机位的部分IP地址与掩码做“与”运算,得出的结果就是“网络ID”172.16.0.0255.255.0.0这个组合说明这是一个网络ID,掩码为 /16掩码只能取下
2015-07-16 14:33:31
5312
原创 IP首部校验和算法
一、校验和概念 报头校验和(Header Checksum)是针对IP报头的纠错字段。校验和不计算被封装的数据,UDP、TCP和ICMP都有各自的校验和。报头校验和字段包含一个16位二进制补码和,这是由数据包发送者计算得到的。接受者将连同原始校验和重新进行16位二进制补码和的计算。如果数据包传输中没有发生错误,那么结果应该16位全部为1。
2015-07-13 10:03:28
5910
原创 Win7关闭休眠方法
一、以管理员身份运行cmd.exe路径为C:\Windows\System32。二、在控制台中执行powercfg -h off命令
2015-07-08 10:20:23
875
原创 VMware虚拟机上网络连接类型(Bridged、Host-only、NAT)的三种模式
VMware虚拟机上网络连接类型(Bridged、Host-only、NAT)的三种模式
2015-07-07 17:45:19
675
转载 C++ Const关键字修饰变量、成员函数!
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书
2013-01-26 21:51:57
789
转载 C语言中的static用法详解
1.static变量静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。2. 静态局部变量静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义 它的生存期为整
2013-01-12 20:22:09
596
跨平台网络通信与服务器开发框架
2020-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人