- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 redis源码分析与思考(六)——整数集合
intset,即整数集合。整数集合是Redis集合键的底层实现之一,当集合中只函数整数元素,且整数元素个数不多时,Redis会采用整数集合来实现集合键。
2018-09-29 21:04:31 171
原创 redis源码分析与思考(五)——跳跃表
在计算机科学领域,跳跃链表是一种数据结构,允许快速查询一个有序连续元素的数据链表。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集。一开始时,算法在最稀疏的层次进行搜索,直至需要查找的元素在该层两个相邻的元素中间。这时,算法将跳转到下一个层次,重复刚才的搜索,直到找到需要查找的元素为止。
2018-09-27 17:41:14 183
原创 redis源码分析与思考(四)——字典遍历与reverse binary iteration算法
在进行字典的遍历时,有着许多的问题去解决。最难处理的点就是如何在rehash的途中有效率的、不遗漏的遍历全部的哈希节点,因为在此时每个哈希节点的地址与索引都是不确定的。在Redis中,其作者基于reverse binary iteration算法来实现的,直译过来就是反转二进制迭代算法,而且实现的非常精妙,Redis之父==Salvatore Sanfilippo==对其的评价是” Hard to explain but awesome.”
2018-09-25 21:52:42 615
原创 redis源码分析与思考(三)——字典中键的两种hash算法
在Redis字典中,得到键的hash值显得尤为重要,因为这个不仅关乎到是否字典能做到负载均衡,以及在性能上优势是否突出,一个良好的hash算法在此时就能发挥出巨大的作用。而一个良好的hash算法往往倾向于把不同的实例分配在不同的散列值上。在Redis中,实现键的哈希值有两种算法实现,一种是djb2算法,另一种就是MurmurHash2算法。
2018-09-23 18:14:29 435
原创 redis源码分析与思考(二)——链表与字典
链表 关于链表,我们并不陌生,在数据结构里早已接触过,所以在这只是简单的描述下Redis中链表的一些特征。在Redis中,使用链表作为列表键的底层实现之一,而且在发布与订阅、慢查询等功能上也用到了链表。 链表的定义与实现是在adlist.h与adlist.c两个文件中,先看Redis中链表的节点与链表本身的定义://链表节点typedef struct listNode {...
2018-09-21 11:36:58 207
转载 c中malloc、calloc、recalloc用法
转载自https://www.cnblogs.com/klchang/p/5719470.htmlC标准函数库中,常见的堆上内存管理函数有malloc(), calloc(), recalloc(), free()。之所以使用堆,是因为栈只能用来保存临时变量、局部变量和函数参数。在函数返回时,自动释放所占用的存储空间。而堆上的内存空间不会自动释放,直到调用free()函数,才会释放堆上的存...
2018-09-19 10:22:56 3828
原创 redis源码分析与思考(一)——sds
在阅读黄健宏的书《Redis设计与实现》的时候,深刻的意识到仅仅看别人的作品是远远不够,自己更应该去阅读源码,形成自己的思考,这样才算真正的学进去了。 现如今,Nosql的概念大行其道,redis作为其中的佼佼者被广大的开发者爱好着,而且Redis的源码仅仅只有三万多行,作为一名喜爱开源技术以及新技术的人来说,Redis源码无疑是值得每个开发者阅读的。 在Redis中,即使源码是由...
2018-09-18 18:21:12 298 1
转载 Linux系统远程连接
安装rdesktop 1 sudo apt update2 sudo apt install rdesktop -y使用方法1 #rdesktop ip地址:端口号 -u 远程主机用户名2 rdesktop 127.0.0.0.1:3389 -u guest端口号是对应主机可以访问的端口连接最简单的情况,如果你要连接到的Windows机器的IP地址是a.b.c....
2018-09-11 18:24:24 207
原创 利用回调实现伪监听
在有延迟的加载某项事物时,利用回调往往能起到很好的展现代码清晰度的作用,比如网络的获取:首先定义一个网络请求类: public class CreateRoomRequest extends BaseRequest { private GetService request; public static class CreateRoomParam { p...
2018-09-11 18:11:47 217
原创 Android图片加载库
1.Glide网络图片加载库添加依赖:compile 'com.github.bumptech.glide:glide:3.7.0'compile 'jp.wasabeef:glide-transformations:2.0.1'加载方式:Glide.with(getContext()) .load(url) .into...
2018-09-11 17:56:53 298
原创 Android网络请求库
1.Retrofit2请求库添加依赖:compile 'com.squareup.retrofit2:retrofit:2.0.2'compile 'com.squareup.retrofit2:converter-gson:2.0.2'compile 'com.squareup.okhttp3:okhttp:3.5.0'定义接口,该接口用来定义接受的数据类型与请求的参数:publi...
2018-09-11 17:40:33 530
转载 c++直接初始化与拷贝初始化
我们常见的几种初始化的形式:string str1 = "first"; //拷贝初始化,编译器允许把这句话改写为string str(“first”),但是string类必须有public的拷贝(移动)构造函数string str2(10,'a'); //直接初始化string str3(str2); //直接初始化string str4 = st...
2018-09-11 17:33:28 1197
原创 java Web 编程BUG
bug1:使用struts2框架时,org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 显示该架包不存在解决办法:此架包在struct2 2.5版本前有,但是2.5以后就修改了,架包的位置,应该为org.apache.struts2.dispatcher.filter.StrutsPrepareAndE...
2018-09-11 17:26:31 215
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人