02 2019 档案

摘要:在Redis的源码中,到处可见robj类型的变量,在介绍其他模块时,只是将它看成Redis的数据类型,并没有深入探究。而事实上,它是对象系统,提供了对多种类型的封装,Redis可以根据数据的具体形式,采用不同的类型进行存储,一方面提高了灵活性,一方面也为节省内存提供了便利,因为Redis所有的数据都 阅读全文
posted @ 2019-02-28 14:48 車輪の唄 阅读(11) 评论(0) 推荐(0) 编辑
摘要:Redis提供一种叫整数集合的数据结构,当数据中只包含整数,并且数据数量不多时,Redis便会采用整数集合存储 Redis保证整数集合有以下几个特性 所含元素全是整数,且不重复 内部元素有序,通常是会从小到大排序 内部编码统一,尽可能采用合适的编码保存数据 当编码不合适时,执行升级操作 接下来会针对 阅读全文
posted @ 2019-02-26 14:54 車輪の唄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:同数组相比,链表的插入删除效率是O(1),但是如果想要在链表中查找某个元素,就糟糕了,复杂度会是O(N),为了提高查找效率,就有了跳表的概念。所谓跳表,就是可以跳跃的链表,回想二分查找算法,每次的查找都是跳跃性的,这才使得二分法效率这么高,跳表的设计同样也借鉴了二分法的策略,实现跳跃查找,当然,需要 阅读全文
posted @ 2019-02-26 14:41 車輪の唄 阅读(14) 评论(0) 推荐(0) 编辑
摘要:另可参考: https://blog.csdn.net/fishmai/article/details/78515355 https://blog.csdn.net/men_wen/article/details/71514524 https://blog.csdn.net/u012658346/a 阅读全文
posted @ 2019-02-25 14:49 車輪の唄 阅读(15) 评论(0) 推荐(0) 编辑
摘要:参见: https://my.oschina.net/editorial-story/blog/3052308 1. epoll模型简介 epoll是Linux多路服用IO接口select/poll的加强版,e对应的英文单词就是enhancement,中文翻译为增强,加强,提高,充实的意思。所以ep 阅读全文
posted @ 2019-02-25 12:03 車輪の唄 阅读(18) 评论(0) 推荐(0) 编辑
摘要:一, Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命 阅读全文
posted @ 2019-02-25 11:50 車輪の唄 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一, 图解 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。 接下来分别介绍Redis的哈希表、哈希表节点以及字典的实现。 哈希表 Redis字典所使用的哈希表由dict.h/dictht结构定义: /* * 哈希表 阅读全文
posted @ 2019-02-24 20:30 車輪の唄 阅读(8) 评论(0) 推荐(0) 编辑
摘要:浅拷贝 首先看下面这段代码: # include<assert.h> # include<string.h> #include <stdlib.h> typedef struct Node//定义了一个结构体 { int size; char *data; }S_Node; int main() { 阅读全文
posted @ 2019-02-23 22:38 車輪の唄 阅读(20) 评论(0) 推荐(0) 编辑
摘要:struct test{ int i; char *p; }; struct test *str; int a = 1; char *b = "ioiodddddddddddd"; str = (struct test *)malloc(sizeof(struct test));//结构体指针不为n 阅读全文
posted @ 2019-02-23 21:50 車輪の唄 阅读(18) 评论(0) 推荐(0) 编辑
摘要:一、有时候需要需要看一下一个结构体内成员地址的偏移量,下面介绍两种实现方法。 二、实现方法。 1、方法一,包含头文件#include <stddef.h>,调用函数offsetof(struct s, i)来实现。 2、方法二,使用&(((s1*)0)->i)的形式。 三、实例测试。 1、c代码 # 阅读全文
posted @ 2019-02-23 21:10 車輪の唄 阅读(57) 评论(0) 推荐(0) 编辑
摘要:sds要点总结: 1.sds定义为sdshdr中的 buff[]指针, 并向外暴露, 而sdsdhr不对外 2.buff[]还是为以'\0'结尾, 以此兼容c 3.buff[]是个柔性数组, 其主要意义在于: a), 便于内存管理, 可以和sdshdr同时申请内存和释放 b), 便于扩容, 如果使用 阅读全文
posted @ 2019-02-21 14:47 車輪の唄 阅读(13) 评论(0) 推荐(0) 编辑
摘要:常规文件系统操作(调用read/fread等类函数)中,函数的调用过程: 1、进程发起读文件请求。 2、内核通过查找进程文件符表,定位到内核已打开文件集上的文件信息,从而找到此文件的inode。 3、inode在address_space上查找要请求的文件页是否已经缓存在页缓存中。如果存在,则直接返 阅读全文
posted @ 2019-02-19 17:10 車輪の唄 阅读(54) 评论(0) 推荐(0) 编辑
摘要:说明: 1、父进程和子进程可以共享打开的文件描述符。 2、父子进程共享文件描述符的条件:在fork之前打开文件。 3、对于两个完全不相关的进程,文件描述符不能共享。 4、父子进程文件描述符是共享的,但是关闭的时候可以分别关闭,也可以同时在公有代码中关闭 进程20029对文件的读取后的当前位置应该为d 阅读全文
posted @ 2019-02-18 15:20 車輪の唄 阅读(87) 评论(0) 推荐(0) 编辑
摘要:综述 “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文 阅读全文
posted @ 2019-02-17 22:24 車輪の唄 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一、ARP在同个网段下的工作原理 首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就 阅读全文
posted @ 2019-02-17 20:57 車輪の唄 阅读(13) 评论(0) 推荐(0) 编辑
摘要:1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表: 如果目的IP和自己在同一个网段: 当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口sen 阅读全文
posted @ 2019-02-17 20:56 車輪の唄 阅读(10) 评论(0) 推荐(0) 编辑
摘要:1. linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态 2.系统调用可以理解为内核提供给我们在用户态用的接口函数,可以认为是某种内核的库函数 3.很多 阅读全文
posted @ 2019-02-16 10:31 車輪の唄 阅读(10) 评论(0) 推荐(0) 编辑
摘要:int getopt(int argc,char * const argv[ ],const char * optstring); 前两个参数大家不会陌生,没错,就是老大main函数的两个参数!老大传进来的参数自然要有人接着! 第三个参数是个字符串,看名字,我们可以叫他选项字符串(后面会说明) 返回 阅读全文
posted @ 2019-02-15 16:52 車輪の唄 阅读(16) 评论(0) 推荐(0) 编辑
摘要:首先大概介绍一下,编译分为3步,首先对源文件进行预处理,这个过程主要是处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;然后进行编译,这个过程主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;最后进行汇编,这个过程比较简单,就是将对应的汇 阅读全文
posted @ 2019-02-14 14:00 車輪の唄 阅读(27) 评论(0) 推荐(0) 编辑
摘要:我们平时都会用service xxx start来启动某个进程,那么它背后究竟执行了什么? 其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/service,我们会发现其实它就是一个很普通的shell脚本: [root@zejin240 ~]# cat /s 阅读全文
posted @ 2019-02-12 13:21 車輪の唄 阅读(20) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示