关闭

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...
阅读(57) 评论(0)

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...
阅读(154) 评论(0)

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

数据结构——节点typedef struct listNode{ struct listNode *prev; struct listNode *next; void *value; }listNode; prev:链表节点的前驱 next:链表节点的后继 value:节点中的值 数据结构——链表typedef struct list{ listNode *head; listN...
阅读(158) 评论(0)

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

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

服务器性能优化基础知识

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

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

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

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

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

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

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

我的Java学习之路

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

我的阿里秋招之路——阿里实习offer+校招offer

我的2017是忙碌的一年,从年初备战实习春招,年三十都在死磕JDK源码,三月份经历了阿里五次面试,四月顺利收到实习offer。然后五月怀着忐忑的心情开始了蚂蚁金服的实习。八月,又经历了两轮面试,总算拿到转正offer。到此为止,我总算可以尽情地享受最后的校园时光了。 希望我的经历与感悟能帮助到大家。我的读研经历阿里是我读研阶段的一个重要目标,刚上研一的时候我便立下Flag,计划了读研三年要做的事情...
阅读(1157) 评论(5)

Git命令速记

生成SSH Keyssh-keygen -t rsa -C "youremail@example.com" 在用户主目录里找到.ssh目录 将id_rsa.pub中的数据放到服务器的.ssh目录下 克隆远程仓库git clone https/git查看所有的版本提交记录git log (--pretty=oneline)$ git log commit affd8ca1bc90c0865fbdc42...
阅读(1731) 评论(0)

Spring速查手册(三)——Spring+JDBC

Spring的数据访问异常体系JDBC提供了SQLException异常,它是一个检查异常,必须要捕获。 但该异常过于笼统,只要是数据访问发生问题都抛出这个异常。因此很难在抛出该异常后进行恢复,因此该异常就没有抛出的必要。 Spring对JDBC的异常进行了转换,并进行了扩充,使得异常更加具体化,能够根据异常来进行恢复。 此外,Spring的数据访问异常均继承自DataAccessExcept...
阅读(591) 评论(0)

Spring速查手册(二)——Bean的作用域

Bean的四种作用域 单例(Singleton):整个应用中,只创建一个bean。 原型(Prototype):每次注入或请求要给bean的时候都创建一个新的bean。 会话(Session):每个session创建要给bean。 请求(Request):每个WEB请求创建一个bean。 PS:Spring默认的bean是单例的!使用会话/请求作用域的注意点// 创建一个session的bean @...
阅读(552) 评论(0)

Spring速查手册——Bean装配

Spring提供三种Bean的装配方式,分别是: 1. 自动装配Bean 2. 在Java中装配Bean 3. 在XML中装配Bean1. 自动装配Bean(注解)Spring从两个角度完成Bean的自动化装配: - 组件扫描:扫描上下文中所有的Bean(由@Component、@Named注解完成) - 自动装配:将指定的Bean注入到指定的Bean中(由@Autowired、@Inje...
阅读(396) 评论(0)

回溯法(一)——n皇后问题

问题描述 在一个n*n的棋盘上放置皇后,要求:一个皇后的同一行、同一列、同一条对角线上不允许出现其他皇后。请给出所有的放置方案。 算法思路思路很简单,由于每行每列不能出现两个皇后,因此每行只能放一个皇后,那么第i行中皇后究竟应该放哪儿呢?我们可以从第i行第一列开始依次向后逐格判断,看看若放在当前位置是否会冲突,若不冲突,则继续考虑下一行,若冲突,则继续向后移动一格,再判断。 若i行所有的位置都...
阅读(938) 评论(1)
203条 共14页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:259933次
    • 积分:4782
    • 等级:
    • 排名:第6286名
    • 原创:195篇
    • 转载:8篇
    • 译文:0篇
    • 评论:141条
    博客专栏
    最新评论