- 博客(45)
- 资源 (15)
- 收藏
- 关注
原创 redis RDB 持久化
Redis 提供了RDB 持久化功能,这个功能可以将Redis 在内存中的数据库状态保存到磁盘里面,避免数据意外丢失,RDB 文件是保存在硬盘里面的。1.RDB 文件的创建创建RDB文件:SAVE、BGSAVE 1)SAVE 命令会阻塞Redis 服务器进程,直到RDB 文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求。 2)BGSAVE 命令会派生出一个子进程,然后...
2018-06-20 21:51:23
333
原创 redis源码之数据库
未完待续。。数据库1.服务器中的数据库Redis 服务器将所有数据库都保存在服务器状态 redis.h/redisServer 结构的db数组中, db 数组的每个项都是一个redis.h/redisDb 结构, 每个redisDb 结构代表一个数据库。/**服务器状态*/struct redisServer {...//一个数组,保存着服务器中的所有数据...
2018-05-25 10:44:43
544
原创 redis源码之对象
未完待续…对象简介:对于 Redis 数据库保存的键值对来说, 键总是一个字符串对象, 而值则可以是: 1.字符串对象、 2.列表对象、 3.哈希对象、 4.集合对象、 5.有序集合对象 的其中一种。2.定义typedef struct redisObject { // 类型 unsigned type:4; // 编码 ...
2018-05-21 17:43:12
335
原创 redis源码之字典dict
未完待续…字典dict简介:它支持插入、删除、替换、查找和获取随机元素等操作。 哈希表会自动在表的大小的二次方之间进行调整。 键的冲突通过链表来解决。定义/* * 1.哈希表节点 */typedef struct dictEntry { // 键 void *key; // 值 union { void ...
2018-05-20 11:12:00
592
原创 redis源码之跳跃表skiplist
未完待续…跳跃表skiplist1.简介:离散,有序的数据结构,2.定义:/* * 跳跃表节点 */typedef struct zskiplistNode { robj *obj;// 成员对象 double score;// 分值 struct zskiplistNode *backward;// 后退指针 struct z...
2018-05-19 11:33:54
241
原创 redis源码之链表list
未完待续…链表list1.简介:链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。#
2018-05-17 17:02:51
279
原创 redis源码之压缩列表ziplist
未完待续…压缩列表ziplist1.简介压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构。2.组成 属性 类型 长度 用途 zlbytes uint_32t 4B 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配, 或者计算 zlend的位置...
2018-05-17 16:40:08
6508
2
原创 redis源码之整数集合intset
未完待续…整数集合intset简介:intset应用intset定义intset与1.SDS 遵循 C 字符串以空字符结尾的惯例;因此可以直接重用一部分 C 字符串函数库里面的函数。 C字符串 intset 可以使用所有 < string.h > 库中的函数 可以使用一部分 &
2018-05-17 11:17:23
376
原创 Leetcode笔记之字符串
string s="";//初始化一.字符串简单题型8.字符串转整数 (atoi)1.定义 i=0;while 跳过空格 2.if 跳过+/-,确定符号sign;并且符号之后必须紧跟数字,否则返回0 3.溢出判断:如果当前res> INT_MAX / 10 或者res == INT_MAX / 10 &&
2018-05-09 18:29:09
452
原创 leetcode笔记之数学
未完待续…一.简单计算7. 反转整数反转类的经常出现,链表,数组,字符串、整数、栈等等,while(x){ int tmp = res;//1.保存前一个值用于下面的溢出判断 res=res*10+x%10;//2.累计 x/=10;//3.更新x if(res/10!=tmp)//4.溢出判断 return 0;}retu...
2018-05-07 11:46:56
458
原创 leetcode笔记之数组
数组要注意越界问题一.数组的和一般转化为有序,但是如果是返回位置而不是数的集合,就要用到hashtable1.两数之和(数组无序,返回位置)1.申请一个hash_table unordered_map<int, int> hash; 2.遍历数组,令num = target - nums[i]; 2.1.如果num已经在hash_map中了,那就返回ha...
2018-05-02 23:07:05
254
转载 linux读写锁|死锁|数据库行锁|的实现
未完待续… https://www.cnblogs.com/cynchanpin/p/6794914.html https://blog.youkuaiyun.com/ojshilu/article/details/25244389
2018-04-22 11:48:17
308
原创 session保持与负载均衡
首先介绍一下负载均衡和session,并且以Nginx和session为例:1.负载均衡目的是通过反向代理服务器(Nginx)使得后端的服务器负载保持均衡,尽量避免某一个后端服务器过负载,从而影响服务。 Nginx提供的负载均衡策略: (1)加权轮询(静态加权) (2)当前最小连接数 (3)ip_hash (4)url_hash(第三方模块) 其中:ip_hash也有不好的...
2018-04-22 11:42:27
2182
原创 大端模式和小端模式的判断及其互相转化
一.定义大端模式(Big Endian):数据的高字节,保存在内存的低地址中;数据的低字节,保存在内存的高地址中。小端模式(Little Endian):数据的高字节,保存在内存的高地址中;数据的低字节,保存在内存的低地址中。二.大小端模式的判断使用联合,通过判断首个成员的值,确定是大端还是小端模式:bool IsBigEndian(){ union N...
2018-04-22 10:17:11
1383
1
原创 leetcode笔记之链表
未完待续… 链表的问题不难,就是需要考虑很多边界条件。。 需要注意的是: 1.当连边的结构发生改变时时,可能当前遍历的节点指针p->next指针已经不指向之前的位置了,一般可以设置多个指针来完成遍历。2.当头结点不确定时,或者是为了避免删除头结点的麻烦,在head节点之前再加一个节点是一个很重要的技巧,否则还要判断新的head节点是否为NULL。3.删除节点/改变节点结构:可以...
2018-04-18 15:57:33
407
原创 Leetcode分类解析(二叉树)
持续更新中…1.二叉树中序遍历94.Binary Tree Inorder Traversal 二叉树中序遍历 98.Validate Binary Search Tree 验证二叉搜索树 1.指定一个最小值LONG_MIN; 2.中序遍历过程中如果出现降序,返回false; 3.过程中没有返回false,最后返回true。bool isValidBST(TreeNo...
2018-04-16 15:28:02
347
原创 linux 命令 awk,grep,sed
一.awk1、由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释 $ string=’$PATH’ $ echo $string $PATH2.由双引号括起来的字符,除$(美元符号)、\(反斜杠)、’(单引号)、和”(双引号)这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。 3.反引号括起来的...
2018-04-09 11:13:47
317
原创 常用的Linux命令
常用的Linux命令(1)查看CPU利用率:top (2)查看当前目录:pwd和ls(ls -a可以查看隐藏目录) (3)切换目录:cd (4)查看文件占用磁盘大小:du和df (5)创建文件夹:mkdir \$ mkdir -p letter/important //一连串子目录 \$ mkdir letter //新建目录 \$ mkdir -m=r-- let...
2018-04-09 08:32:48
146
原创 机器学习基本算法总结4
机器学习基本算法总结☞其他工具代码在这,基于python3(原书代码是python2)这里只是一个总结,原书已经讲解很清楚了,不清楚的直接看代码目录1. 使用PCA来简化数据2. 利用SVD来简化数据==========================一、预测数值型数据:回归1. PCA 相关描述————————————————————
2018-01-30 09:09:43
876
原创 机器学习实战-基本算法总结3
机器学习基本算法总结☞无监督学习代码在这,基于python3(原书代码是python2)这里只是一个总结,原书已经讲解很清楚了,不清楚的直接看代码目录1.K-Means算法2.基于apriori算法进行关联分析3.使用FP-growth算法来高效发现频繁项集==========================一、预测数值型数据:回归1.1 K
2018-01-27 23:38:30
812
原创 机器学习实战-基本算法总结2
机器学习基本算法总结☞监督学习——回归代码在这,基于python3(原书代码是python2)这里只是一个总结,原书已经讲解很清楚了,不清楚的直接看代码目录1.预测数值型数据:回归2.树回归==========================一、预测数值型数据:回归1.线性回归最佳拟合——————————————————————————
2018-01-26 11:29:12
632
原创 优快云-markdown 页内跳转目录
试过好多方法,但都是打开新的网页,比如说:(注:方法二不会打开新的网页)方法一锚点跳转:[点击跳转到标题0](#jump)span id="jump">标题0span> //锚点设置点击跳转到标题0 · · · ·标题0· · · · 查看网页源码会发现target 被赋值,所以打开新的网页,方法二因此尝试target=”_self
2018-01-26 11:07:17
3955
4
原创 机器学习实战-基本算法总结1
机器学习基本算法总结☞监督学习——分类代码在这,基于python3(原书代码是python2)这里只是一个总结,原书已经讲解很清楚了,不清楚的直接看代码,或者李航的统计学习方法也有公式推导。目录11.k-近邻算法(kNN)2.决策树(ID3)3.基于概率论的分类方法:朴素贝叶斯4.Logistic回归5.支持向量机(SVM)6.Adaboost元算法提高
2018-01-25 22:27:40
22196
4
转载 同步IO、异步IO、阻塞IO、非阻塞IO
一直对这四个东东的概念很模糊,放一起更模糊,根据别人写的总结一如下: “阻塞”与”非阻塞”与”同步”与“异步”不能简单的从字面理解,往往不同上下文中它们的意思是不一样的。1.同步 / 异步(同步/异步主要针对C端: )描述的是执行IO操作的主体是谁,同步是由用户进程自己去执行最终的IO操作。异步是用户进程自己不关系实际IO操作的过程,只需要由内核在IO完成后通知它既可,由内核进程来执行最终的...
2018-01-17 17:05:10
190
转载 UNP-UNIX网络编程 第二十六章:多线程
fork是昂贵的(把父进程的内存映像复制到子进程),并且需要进程间通信(IPC)机制。 线程的创建速度快(10-100 倍),同一进程中的线程共享相同的全局内存,线程之间容易共享信息,但是,这就带来了同步的问题。同一进程内的所有线程除了共享全局变量,还共享: 进程指令,大多数数据,打开的文件(即文件描述符),信号处理函数和信号处置,当前工作目录,用户ID和组ID,”这些很容易出错误”不...
2018-01-17 16:59:22
266
转载 UNP-UNIX网络编程 第十六章:非阻塞式I/O
(一) 概述套接字默认状态是阻塞的。也就是说当发出一个不能立即完成的套接字调用时,进程将被投入睡眠,等待相应操作的完成 ,一般分为四类: 1. 输入操作:包括read、readv、recv、recvfrom、recvmsg这5个函数。当套接字缓冲区没数据可读时,进程将被投入睡眠状态,直到有数据可达。 2. 输出操作:包括write、writev、send、snedto和sendmsg这5...
2018-01-17 16:59:02
225
转载 UNP-UNIX网络编程 第十五章:域协议
Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通讯的一种方式,单个主机上执行通信,也就是所谓的进程间通信(IPC),所以Unix域套接字协议可以视作IPC方法之一。 Unix域提供两类套接字:字节流套接字(类似TCP)和数据报套接字(类似DUP)。 Unix域中用于标识客户和服务器的协议地址是普通文件系统中的路径名(但需要和Unix域套接字关联起来),否则无法读写这些文...
2018-01-17 16:58:43
228
转载 UNP-UNIX网络编程 第十四章:高级I/O函数
(一)概述首先是在I/.O操作上设置超时,三种方法; read和write这两个函数的三个变体: recv和send运行通过第四个参数从进程到内核传递标志; readvhe和writev允许指定往其中输入数据或从其中输出数据的缓冲区向量; recvmsg和sendmsg结合了其他I/O函数的所有特性,并具备接收和发送辅助数据的新能力。(二)套接字超时1、套接字的I/O操...
2018-01-17 16:58:17
245
转载 UNP-UNIX网络编程 第十一章:名字与地址转换
(一) 域名系统(DNS)DNS主要用于主机名和IP地址之间的映射。主机名可以是简单的名字ljm,也可以是全限定域名ljm.localdomainbaidu.com等。1.资源记录DNS中的条目称为资源记录(RR)。我们感兴趣的RR类型只有几个: A A记录把一个主机名映射为一个32位的IPv4地址。 AAAA 4A记录把一个主机名映射为一个128位的IPv6...
2018-01-17 16:57:48
332
转载 UNP-UNIX网络编程 第八章:基本udp套接字编程
一.使用UDP的场合:DNS(域名系统)、NFS(网络文件系统)、SNMP(简单网络管理协议) UDP没有像TCP那样的连接,客户端直接使用sendto函数向某服务器发送数据报,服务器端一直recvfrom函数阻塞,以接收任何客户端发送的数据,把数据报再发送给客户协议地址。 两个新函数:sendto()和recvfrom();connect()在UDP套接字中的用法;异步错误。in...
2018-01-17 16:57:08
232
转载 UNP-UNIX网络编程 第七章:获取/设置套接字选项的方法
一int getsockopt(int sockfd, int level, int optname, void* optval, socklen_t* optlen); int setsockopt(int sockfd, int level, int optname, const void* optval, socklen_t optlen); //两个函数成功返回0,...
2018-01-17 16:56:46
246
转载 UNP-UNIX网络编程 第六章:I/O复用
一.I/O模型我们看到上面的TCP客户同时处理两个输入:标准输入和TCP套接字。我们遇到的问题就是在客户阻塞于(标准输入上的)fgets调用期间,服务器进程会被杀死。服务器TCP虽然正确地给客户TCP发送一个FIN,但是既然客户进程阻塞于从标准输入读入的过程,它将看不到这个ROF,知道从套接字读时为止(可能已经过了很长时间)。这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个...
2018-01-17 16:55:36
448
转载 UNP-UNIX网络编程 第五章:TCP客户/服务器程序示例
{ int n; if((n = socket(family, type, protocol)) < 0) { printf("socket() error!"); exit(0); } else return n;}服务器{ ssize_t n; char...
2018-01-16 20:10:13
287
转载 UNP-UNIX网络编程 第四章:基本TCP套接字编程
1.#include <sys/socket.h>int socket(int family, int type, int protocol);//返回:若成功则返回非负描述符,出错则为-1,family是协议族,type表明套接字类型family参数指定协议族,也被称为协议域。IPV4:AF_INET、IPV6:AF_INET6。type参数指定套接字类型。字节流:S...
2018-01-16 20:02:32
212
转载 UNP-UNIX网络编程 第三章:套接字编程简介
1.IPV4套接字地址结构:#include <netinet/in.h>struct in_addr { in_addr_t s_addr; //32bit}struct sockaddr_in { uint8_t sin_len; // sa_family_t sin_family; //AF_INET...
2018-01-16 19:57:28
262
转载 UNIX环境高级编程 第十五章:进程间通信:是指在不同进程之间传播或交换信息
IPC的方式通常有管道(包括无名管道和命名管道(FIFO))、消息队列、信号量、、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。1.管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之...
2018-01-16 19:43:02
333
转载 UNIX环境高级编程 第十三章:守护进程
守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止(生存期)。 因为它们没有控制终端,所以说它们时在后头运行的。UNIX系统有很多守护进程,它们执行日常事务活动。 本章将说明守护进程的结构,以及如何编写守护进程程序。因为守护进程没有控制终端,我们需要了解在出现问题时,daemon如何报告出错情况。1. 守护进程的特征先来看看一些常用的系...
2018-01-16 19:33:13
248
C++primer5的code
2017-11-01
2017互联网笔试面试
2017-11-01
时差和频差无源定位方法研究matlab程序
2017-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人