自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大闲人柴毛毛

博观而约取,厚积而薄发

  • 博客(9)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Redis源码分析(四)——Redis数据结构-整数集合

1. 整数集合特点有序:集合中所有值按照从小到大顺序排列。不重复可以存储int16_t、int32_t、int64_t三种类型的整数1. 数据结构typedef struct intset{ unit32_t encoding; unit32_t length; int8_t contents[];} intset;encoding:content数组中存储的整数类型(int

2017-10-14 18:49:56 1142

原创 Redis源码分析(三)——Redis数据结构-字典

1. 数据结构1.1 哈希表typedef struct dictht{ dictEntry **table; unsigned long size; unsigned long sizemask; unsigned long used;} dictht;table:存储节点的数组size:table数组的长度sizemask:size-1,用于在添加节点时计算节点在tabl

2017-10-14 17:15:33 2812

原创 Redis源码分析(二)——Redis数据结构-链表

数据结构——节点typedef struct listNode{ struct listNode *prev; struct listNode *next; void *value;}listNode;prev:链表节点的前驱next:链表节点的后继value:节点中的值数据结构——链表typedef struct list{ listNode *head; listN

2017-10-14 15:20:11 2829 1

原创 Redis源码分析(一)——Redis数据结构-字符串SDS

1. SDS简介Redis中使用的字符串均为『简单动态字符串』(Simple Dynamic String),简称SDS。SDS是在C字符串的基础上进行了一些包装,使得它更符合Redis的使用场景。在Redis中,C字符串只用在一些无需修改的地方,如日志打印;其他需要使用字符串的地方基本上使用的都是SDS。2. 数据结构struct sdshdr{ int len; int free

2017-10-14 15:01:32 4054 2

原创 服务器性能优化基础知识

性能调优整体思路空间换时间 对热点数据缓存,减少数据查询时间。分而治之 将大任务切片,分开执行。HDFS、MapReduce就是这个原理。异步处理 若业务链中有某一环节耗时严重,则该环节将拉长业务链的整体耗时。可以将耗时业务采用消息队列异步化,从而缩短业务链耗时。并行处理 采用多进程、多线程同时处理,提升处理速度。离用户更近一点 如CDN技术,将静态资源放到离用户更近的地方,从而

2017-10-13 14:03:50 1141 1

原创 了解你服务器的心情——top命令详解

top是Linux较为常用的命令,可以监控服务器的CPU、内存、进程的运行情况,话不多说,直接操作。输入top即可启动:下面我们就来逐一介绍top向我们展示的内容。第一行:系统概况top - 19:39:14 up 20 days, 7:48, 1 user, load average: 0.00, 0.01, 0.0519:39:14 up 20 days:系统运行时间1 user:用户

2017-10-12 20:26:34 2967 2

原创 MyBatis源码解析(二)——动态代理实现函数调用

如果我们要使用MyBatis进行数据库操作的话,大致要做两件事情: 1. 定义DAO接口 在DAO接口中定义需要进行的数据库操作。 2. 创建映射文件 当有了DAO接口后,还需要为该接口创建映射文件。映射文件中定义了一系列SQL语句,这些SQL语句和DAO接口一一对应。MyBatis在初始化的时候会将映射文件与DAO接口一一对应,并根据映射文件的内容为每个函数创建相应的数据库操作能力。而我们

2017-10-12 15:54:02 1086 2

原创 MyBatis源码解析(一)——MyBatis初始化过程解析

建议移步至简书浏览,排版较为整齐:http://www.jianshu.com/p/7bc6d3b7fb451. 准备工作为了看清楚MyBatis的整个初始化过程,先创建一个简单的Java项目,目录结构如下图所示: 1.1 Product 产品实体类public class Product { private long id; private String productName;

2017-10-11 20:20:45 1619

原创 我的Java学习之路

我认为,作为一名合格的程序员,精通一门语言只是最最基本的要求,除此之外,具备扎实的基础知识、了解主流的技术框架、具备快速学习的能力也都非常重要。语言是帮助你实现想法的工具,而作为程序员来说最为重要的东西是语言背后的你的想法,而这些想法需要通过长期的基础积累、经验积累而获得。我从大二的时候开始接触编程,到现在也有五个年头了。这五年我走了不少弯路、踩了不少坑。至此收到阿里offer,也算是达到了我人生第

2017-10-11 20:11:40 7565 7

剑指offer算法实现java版——面试题19二叉树的镜像

分析:所谓“镜像”就是从镜子里看到的样子。我们可以画一棵二叉树,然后画出该二叉树的镜像。画完图之后我们会发现,所谓“二叉树的镜像”就是把二叉树中所有子树的左孩子和右孩子进行交换。因此需要遍历二叉树所有的结点,在遍历的同时交换非叶子结点的左右子树。遍历我们可以使用先序遍历,首先判断当前根结点是否为叶子结点,若非叶子结点,则交换左右孩子,然后再分别对左右孩子进行相同的操作。

2016-03-14

剑指offer算法实现java版——面试题21包含min函数的栈

实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。

2016-03-14

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

TA关注的人

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