自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

honst211的博客

一个小白的学习之旅

  • 博客(28)
  • 收藏
  • 关注

原创 Redis的设计与原理(十一)

单机数据库实现——客户端Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理服务端发送的命令请求,并向客户端返回命令回复。客户端属性分两种,一种通用属性,一种特定功能的相关属性,本章讲解通用属性这一部分一,套接字描述符根据客户端类型的不同,记录套接字描述符的fd属性的值可以是-1或者是大于-1的整数二...

2019-07-29 23:03:22 174

原创 Redis的设计与原理(十)

单机数据库实现——AOF持久化除了RDB持久化之外,Redis还提供了AOF持久化的功能,与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化十通过保存Redis服务器所执行的写命令来记录数据库的状态的。AOF持久化的实现AOF持久化功能的实现可以分为命令追加(append),文件写入,文件同步三个步骤。一,命令追加当AOF持久化功能处于打开状态时,服务器在执行完一个...

2019-07-28 22:34:46 143

原创 Redis的设计与原理(九)

单机数据库实现——RDB持久化因为Redis是内存数据库,它将自己的数据库中的键值对存储在了内存里面,所以入股不想办法将存储在内存中的键值对保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。RDB文件的创建与载入创建:有两个命令可以用于生...

2019-07-18 22:39:22 176

原创 Redis的设计与原理(八)

单机数据库实现——数据库(二)一,过期键删除策略定时删除惰性删除定期删除定时删除设置一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除惰性删除放任键不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键定期删除每隔一段时间,程序就会对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数...

2019-07-17 23:15:23 128

原创 Redis的设计与原理(七)

第二章:单机数据库实现本章将会写单独一个Redis数据的实现,比如服务器保存数据库的方法,客户端切换数据的方法,数据库保存键值对的方法,以及针对数据库的添加,删除,查看,更新操作的实现方法等。单机数据库实现——数据库(一)一,服务器中的数据库在初始化服务器时,程序会根据服务器状态的dbnum属性来决定应该决定应该创建多少个数据库;默认情况下,该选项的值为16,所以Redis服务器默认会创建...

2019-07-16 23:22:07 106

原创 Redis的设计与原理(六)

数据结构与对象——对象Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个对象系统包含字符串对象,列表对象,哈希对象,集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使用对象的另一个好处是,我们可以...

2019-07-15 23:55:16 106

原创 Redis的设计与原理(五)

数据结构与对象——压缩列表压缩列表是列表键和哈希键的底层实现之一。当一个列表键只含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。一.压缩列表的构成压缩列表是Reids为了节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多个节点,每个节点都可以保存一个字节组或者一个整数值...

2019-07-14 22:48:47 119

原创 Redis的设计与原理(四)

数据结构与对象——整数集合整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。整数集合的代码:typedef struct intset{ //编码方式 uint32_t encoding; //集合包含的元素数量 uint32_t length; //保存元素的数组 int8_t conten...

2019-07-13 23:11:04 92

原创 Redis的设计与原理(三)

数据结构与对象——跳跃表跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现。跳跃表是什么就不再详细介绍,需要的可以去看看数据结构中的跳跃表概念。跳跃表节点的代码...

2019-07-13 21:49:30 296

原创 Redis的设计与原理(二)

接上一章数据结构与对象的大章节数据结构与对象——链表:链表的数据结构是怎样的不需要仔细讲解,在Redis中当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis会使用链表作为底层实现。Redis中采用的双端,无环的链表结构,内部提供了实现与API,详情可以自己查阅资料。数据结构与对象——字典:直接说字典可能有一些后来学习的同学不是很清楚,其实就是关联数组...

2019-07-12 23:22:05 127

原创 Redis的设计与原理(一)

Redis的模型架构Redis的内部数据结构Redis的数据存储

2019-07-11 22:52:38 150

原创 读完《码农翻身》一书后的总结

本书作者刘欣先生一共用了六章来写,那我总结也通过这六章来进行总结吧,本书大部分内容和Java这门语言有关,如果是做Java的朋友而又苦于基础不是很好的,可以看看这本书,本文只是介绍一下我自己的感想,并没有什么实质性的东西,如果看原书有什么不懂的可以私信我,或者直接去请教刘欣先生。第一章:计算机的世界你不懂作者通过对计算机的发展历史一样循序渐进的介绍计算机中的组成,并且从原理的角度解析了为什么我...

2019-07-10 15:16:11 837

转载 为什么越来越多的开发者选择使用Spring Boot

文章转载来源:https://blog.csdn.net/xlgen157387/article/details/52830071 ...

2019-06-22 19:02:28 462

原创 mybatis的解析和运行原理(四)

前言:之前的SqlSession的运行过程还未讲完,还差一个SqlSession下的最重要的四大对象,这一篇文章将会讲解四大对象之间的关系.SqlSession下的四大对象之前讲解了映射器其实就是一个动态代理的对象,进入到MapperMethod的execute方法,那么进入到execute的方法又是如何执行的呢?肯定是通过我们所写的Sql语句,但是我们关心的不是这些细节,而是框架的设计这些...

2019-06-21 23:03:48 139

原创 mybatis的解析和运行原理(三)

前言:之前讲了SqlSessionFactory的构建过程,现在来继续分析一下SqlSession的运行过程,SqlSession是Mybatis最难理解的一个部分,SqlSession是一个接口,我们构建出了SqlSessionFactory就可以轻易地拿到SqlSession了.SqlSession运行过程:一.Mapper映射的动态代理我们先来看看这一段代码:public clas...

2019-06-18 22:01:23 134

原创 mybatis的解析和运行原理(二)

前言:上一篇章讲解了需要的技术简介,现在我们来分析一下

2019-06-16 20:57:29 160

原创 mybatis的解析和运行原理(一)

PS:读者可以直接观看标题,如果明白该技术可以直接跳过.如果该文章并没有你所需要的mybatis原理可以直接跳过去阅读后面的文章,本章节讲解的知识mybatis所需要用到的一些技术,对于长期使用的人来说可以直接跳过.前言:本文章不会着重介绍mybatis的配置,映射和动态sql这些,所谈的原理只涉及基本的框架和核心代码,不会面面俱到,文中的都是集中在mybatis框架的设计和核心代码的实现上...

2019-06-14 00:09:33 439

原创 设计模式简单总结(四)----行为型设计模式

开篇:小结:

2019-06-10 21:23:33 235

原创 设计模式总结(三)----结构型模式

2019-06-04 23:10:32 78

转载 比较spring cloud和dubbo,各自的优缺点是什么

dubbo由于是二进制的传输,占用带宽会更少springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级dubbo的注册中心可以选择zk,re...

2019-06-03 20:05:34 11338 2

原创 设计模式简单总结(二)----创建型模式

二.设计模式中的创建型模式1.抽象工厂模式2.建造者模式3.工厂方法模式4.原型模式5.单列模式

2019-06-01 23:27:13 152

原创 设计模式简单总结(一)-----设计模式的六大基本原则

一.使用设计模式的基本原则二.程序编写时设计模式选择三.程序调用时设计模式选择四.程序复用的设计模式选择五.代码重构时设计模式选择

2019-05-30 21:38:09 207

原创 关于希尔排序的一点简单看法

其实只是有一点问题的是关于Knuth间隔序列的问题,之前希尔建议初期间距为n/2,简单的把排序分成两半,对于部分数据的分析可能会使复杂度降低到O(N^2) ,这并不比插入排序的效率高,所以我们在使用希尔排序的时候选择间隔数字互质的情况更好,虽然Knuth间隔序列算是一个可以通用的间隔序列,但是在不同的数据中我们依然可以找到更好的间隔序列,希尔排序的时间级从O(N^3/2)到 O(N^7/6)...

2019-05-04 11:50:20 199

转载 为什么Map桶中个数超过8才转为红黑树

因为,大部分的文章都是分析链表是怎么转换成红黑树的,但是并没有说明为什么当链表长度为8的时候才做转换动作。本人第一反应也是一样,只能初略的猜测是因为时间和空间的权衡。要弄明白这个问题,我们首先要明白为什么要转换,这个问题比较简单,因为Map中桶的元素初始化是链表保存的...

2019-05-04 10:24:23 205

原创 关于JAVA面向对象问题的一点自我认识

起因今天听到有人说什么是面向对象,另外一个人直接回答一切皆对象,虽然对于这样的回答我觉得并没有什么问题,但是我个人还是觉得这样的回答有点不太符合我们对于面向对象这个思想的作用和结果.想到了以前上课时候老师说的面向对象就是面向对象的思想就是将复杂问题进行封装,让它更符合我们现在的思维,让我们从执行者变成指挥者,随着自己更加深入的学习我认为这样来解释面向对象的思想还是有点不太完美.这样解释出来的结果...

2019-05-03 13:10:42 105

原创 天才与人类的赞歌

读曹天元的《量子物理史话》有感前言天才们的诞生四百年的物理,天才们的归途总结文笔有限前言寒假时读完的这本书,现在我还清楚的记得首页的那一段对话:爱因斯坦:波尔,亲爱的上帝不掷骰子!波尔:爱因斯坦,别去指挥上帝应该做什么!霍金:上帝不但掷骰子,他还把骰子掷到我们看不见的地方去!图片出自1927年第五次索尔维会议天才们的诞生每一个天才其实和我们都有着一样共同的身世,或离奇,或曲折,或...

2019-05-01 13:41:18 168

原创 Java语言开发环境搭建Windows10环境下

java学习者第一件事情应该是开发环境的搭建就是我们常说的安装JDK.正好用文章来记录一下如何安装JDK和环境的搭建的.1.下载JDK安装包https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html根据自己电脑版本的系统来进行JDK版本的选择和安装,虽然现在有很多比如JDK9和...

2019-04-28 16:51:08 370

原创 算是自己第一篇博客吧

第一次使用博客,写下自己的第一篇文章吧.对于博客中的操作还是不太熟悉.现在还是一名学生的我,虽然自己的技术和能力都尚不成熟,但是我依然会努力去学习,去解决自己所遇到的问题.我认为只有傻瓜才会觉得知识够用就行,人应该认为的是知识越多越好.本博客主要记录自己学习中的一些小情况,和自己遇到的一些小问题,分享一些解决bug的心得,如果有什么错误和不对的地方希望各位大牛可以私信我,让我改正自己的错误.因...

2019-04-28 16:00:22 96

空空如也

空空如也

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

TA关注的人

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