- 博客(21)
- 资源 (12)
- 收藏
- 关注
原创 剑指offer笔试题
重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 class Solution {public: /* 1、前序遍历第一个节点是根节点,中序遍历中间节点是根节点并将分为左右子...
2018-06-30 10:39:29 1093
原创 leetcode部分题目合集
1、题目描述 Given a binary tree,find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node。 解析: 通过BFS层序遍历树,找到第一个叶子节点,即为最短的深度...
2018-06-25 17:04:29 494
原创 Bitmap和BloomFilter
题目5TB的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是一些32bit大小的数据该如何解决?如果是64bit的呢?1、BitmapBitmap又叫做位图,判断数组中的某位索引值下的位是否为1,来表示这个数是否存在。假如53存在,那么就将数组中的第53位置1。这样Bitmap极大地压缩了所需要的内存空间,并且还额外地完成了对原始大型数据的排序工作。使用位图可以大大节省...
2018-06-20 20:03:23 1586
转载 结合源码分析Memcached与Redis实现
Memcached 与 Redis 实现的对比。 Redis和Memcached的区别 选redis还是memcache,源码怎么说?综述memcache和redis是互联网分层架构中,最常用的kv键值缓存。将常用数据缓存在内存中,加快查询速度,检索数据库服务器的压力非常重要。在选型的时候到底是选择memcache还是redis必须根据实际的应用场景选择。事件网络模型Memca...
2018-06-19 22:02:44 799
原创 模板模式
介绍对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法) 的框架(或通用的应用算法)是相同的。Template提供了这种情况的一个实现框架。Template模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并 定义好细节的接口,子类中继承实现其细节。实际上就是利用语言的多态特性,简化逻辑框架的实现。例如最近有个招聘会,有一家公司不接受简历,而是给应聘...
2018-06-14 17:09:13 158
原创 原型模式
浅拷贝和深拷贝拷贝构造函数调用的条件有以下几个用类的一个对象初始化该类的另一个对象时如果函数的形参是类的对象,调用函数时,进行形参和实参结合时. 如果函数的返回值是类的对象,函数执行完成返回调用者时.需要产生一个临时类对象时。深和浅定义了拷贝构造函数的行为。 当为浅拷贝时候,则拷贝构造函数拷贝类中静态(区别与动态分配,不是指的static)或动态(指针,指向区域动态分配)变...
2018-06-13 21:59:11 302
原创 建造者模式
介绍例如建造小人,一共需建造6个部分,头部、身体、左右手、左右脚。与工厂模式不同,建造者模式是在导向者的控制下(传入参数)一步一步构造出不同的产品(但是内部建造顺序都是稳定的)。当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要复杂对象的创建过程和这个对象的表示(展示)分离开来,这样做的好处就是通过一步步的进行复杂对象的构建, 由于在每一步的构造过程中 可以引入参数,使...
2018-06-13 20:34:40 501
原创 单例模式
参考什么是单例模式应该怎样去创建一个唯一的变量或对象?在基于对象的设计中我们可以通过创建一个全局变量或对象来实现,在面向对象和面向过程结合的设计范式(如C++中) 中,我们也还是可以通过一个全局变量实现这一点。 但是当我们遇到了纯粹的面向对象范式(Java)中,这一点可能就只能是通过Singleton模式来实现了。实现通过维护一个static的成员变量来记录这个唯一的对象实...
2018-06-12 22:14:44 225
原创 Redis之事件模型
介绍Redis将epoll自己简单的封装了,而并没有使用Libevent这种开源的高性能事件驱动库,而Redis为什么不使用这个呢,因为Redis的规则是轻量,而libevent支持平台多,里面实现了事件的优先级,一个事件可注册多个回调函数,evbuffer和其他对应Redis没用用的功能,所以Redis选择重新造就一个轮子,重新封装了epoll。这里看看作者如何简单封装epoll供他自己使用...
2018-06-07 10:06:25 2290 1
原创 Redis之数据库结构体
介绍Redis支持数据类型有5种,这是指的键值对中的值的类型有5种。那么这个应该用什么存储呢。当然是hash表了。也就是通过使hashtable内部的value类型(指针指向对应的数据结构)是前面讲解的一些数据结构。那么就可以实现5中类型。这就是比memcached想的深远的一步。Redis将key一样的数据再重新包装了以下,这就大大简化了客户端代码的设计。这就是和memcached在数据内存...
2018-06-07 10:02:53 1380
原创 Redis之字典(hashtable)
1、介绍字典采用hashtable实现,碰撞采用拉链法,也就是通过链表联结key的hash值相同的节点。看过STL内部hash实现,这个就很容易,重新造了个轮子。套路,指针数组+多条链表。2、实现以下4个结构体是Redis的Hashtable实现的基础。typedef struct dictEntry {//hash节点 void *key;//键 union ...
2018-06-07 09:54:10 8832 4
原创 Redis之压缩表-ziplist
介绍作者嵌入式出生,所以对内存很敏感,嵌入式设备RAM通常是有限的,所以作者在牺牲效率的情况下,尽量压缩存储字符串或者整数列表的空间(先前使用链表,现在作者使用一个连续的空间+编码实现),于是压缩表就诞生的。 压缩列表是列表键和哈希键的底层实现。当一个列表键中仅仅包含少量列表项并且每个列表项要么是小整数,要么是短字符串时候。...
2018-06-06 10:37:52 705
原创 Redis之动态字符串 链表 跳跃表 整数集
Redis是键值,内存缓冲系统。Memcached内部仅仅支持字符串,直接用一个hash表管理。但是Redis支持数据类型更多,因此内部肯定使用了更过的数据结构。内部数据结构是Redis高效的基础,这里主要详解内部最基本的数据结构以及操作其最基本的API。例如跳跃表,详解其创建、插入、删除、查找API,其他功能封装这些API不做详细解答。柔性数组说明柔性数据的好处在于,结构体里面既可以...
2018-06-05 12:02:15 583
原创 缓存穿透、缓存雪崩、缓存失效概念及其解决方法
https://blog.csdn.net/fei33423/article/details/79027790 https://blog.csdn.net/zxp_cpinfo/article/details/70103114?locationNum=3&fps=1 https://blog.csdn.net/zeb_perfect/article/details/54135506
2018-06-02 17:55:36 777
CCSv6 License
2017-09-20
TCP/IP进行网际互联 卷1 原理、协议与结构和TCP-IP详解卷一:协议
2017-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人