自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

翻译 理解Redis单线程快的原因

看过相关Redis基础的同学可以知道Redis是单线程的,很多面试题也很可能会问到“为什么Redis是单线程的还那么快”。单线程的内部的原理。本力求简单讲清每个知识点,希望大家看完能有所收获。这里就简单回顾一下吧:I/O多路复用的特点是通过一种机制一个进程能同时等待多个文件描述符,而这些文件描述符其中的任意一个进入读就绪状态、等等,select/epoll函数就可以返回。select/...

2018-12-29 23:22:56 1679

原创 epoll原理图解

流 I\O操作 阻塞流可以进行I\O操作的内核对象文件、管道、套接字……流的入口:文件描述符(fd)所有对流的读写操作,我们都可以称之为IO操作。那么当一个流中再没有数据,read的时候,或者说 在流中已经写满了数据,再write,我们的IO操作就 会出现一种现象,就是阻塞现象阻塞非堵塞阻塞等待: 空出大脑可以安心睡觉。(不占用CPU宝贵的时间片)非阻塞,忙轮询: ...

2018-12-29 22:32:03 28573 10

翻译 VS动态库和静态库的制作

引言什么是库:库是写好的现有的,成熟的,可以复用的代码。所谓静态、动态是指链接。将一个程序编译成可执行程序的步骤:静态库在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。为什么还需要动态库?空间浪费是静态库的一个问题。1、另一个问题是静态库对程序的更新、部署带来麻烦。如果静态库liba.lib更新了,所以使用它的应用程序...

2018-12-26 00:15:44 385

翻译 C++对象的生命周期

1. 对于全局对象,程序一开始,其构造函数就先被执行(比程序进入点更早);程序即将结束前其析构函数将被执行。2. 对于局部对象,当对象诞生时,其构造函数被执行;当程序流程将离开该对象的声明周期时,其析构函数被执行。3. 对于静态(static)对象,当对象诞生时其构造函数被执行;当程序将结束时其析构函数才被执行,但比全局对象的析构函数早一步执行。4. 对于以new方式产生出来的局部对象,当...

2018-12-24 07:29:59 4789

翻译 Redis底层实现2

今天继续来学习Redis,上一篇从Redis底层实现已经将Redis常用的数据结构过了一遍了。如果还没看的同学可以先去看一遍再回来~Redis服务器的数据库Redis对过期键的处理Redis持久化策略(RDB和AOF)如果不指定具体的数量,默认会有16个数据库。1.1Redis服务器的数据库通过SELECT命令可以切换到0~15的数据库上面的命令我们也可以发现:当切换到15号数...

2018-12-20 18:12:17 422

翻译 Redis底层入门

一、redis入门介绍1、 redis名词:一大堆没见过的技术:lua(Lua脚本)、replication(复制)、Redis Sentinel(哨兵)、Redis Cluster(Redis 集群),当然我们也会有看得懂的技术:transactions(事务)、different levels of on-disk persistence(数据持久化)、LRU eviction(LRU淘汰...

2018-12-20 09:01:23 329

原创 进制转换

题目:输入一个十进制数N,将它转换成R进制数输出。输入输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。输出为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。Sample Input 7 2 23 12 -4 3 Sample...

2018-12-19 18:43:18 116

翻译 二叉查找树

1. 二叉查找树的定义二叉查找树(binary search tree)是一棵二叉树,或称为二叉搜索树,可能为空;一棵非空的二叉查找树满足一下特征:1、每个元素有一个关键字,并且任意两个元素的关键字都不同;因此,所有的关键字都是唯一的。2、在根节点的左子树中,元素的关键字(如果存在)都是小于根节点的关键字。3、根节点的右子树中,元素的关键字(如果存在)都是大于根节点的关键字。4、根节点...

2018-12-19 17:08:47 146

翻译 堆和栈的区别

主要的区别由以下几点: 1、管理方式不同; 2、空间大小不同; 3、能否产生碎片不同; 4、生长方向不同; 5、分配方式不同; 6、分配效率不同;1.管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak(内存泄漏)。2.空间大小:一般来讲在32位系统下,堆内存可以达...

2018-12-19 16:22:58 100

原创 快速排序优化

优化点:优化选取中轴元素以上代码target 选取的位置是认定了数组元素的首位,但是若这个数值的大小不在整个数组的中间位置,会大大降低快排的性能。target =array[low] 这句就成了一个潜在的性能瓶颈。因此快速排序的速度还取决于这个target关键元素在数组中的位置。 【改进方法】三数取中法:去三个元素先进行排序,将中间数作为中轴元素,下面的代码选取数组的左、中、右三个数;...

2018-12-19 16:15:08 208

翻译 去除空格面试题

时间复杂度降为O(n)#include <iostream>#include <string>using namespace std;char* delSpace(char * str){ char *p = str; // p和t在指向同一地方 char *t = p; char *temp = p;//保存首地址 while(*p!='\0') ...

2018-12-16 01:31:13 157

翻译 C++面试100道(1~25)

1、什么是”引用”?申明和使用”引用”要注意哪些问题?引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用...

2018-12-09 20:14:16 367

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除