自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 mysql之InnoDB存储引擎(1)——InnoDB存储引擎体系

一、innoDB体系架构InnoDB存储引擎体系结构1、后台线程:        后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下innodb能恢复到正常运行状态。1.1、Master Thread        主要负责将缓冲池的数据异步刷新到磁盘,保证数据的一致性

2017-11-02 21:37:56 458

原创 MySQL基础(3)——查询数据

一、单表查询1、查询所有字段在SELECT语句中使用星号“*”通配符查询所有字段2、查询指定字段查询单个字段SELECT 列名 FROM 表名;查询多个字段SELECT 字段名1,字段名2,...,字段名n FROM 表名;3、查询指定记录SELECT 字段名1,字段名2,...,字段名n FROM 表名 WHERE 查询条件;4、带IN关键字的查询IN

2017-11-02 08:46:18 854

原创 mysql基础(2)——数据表的基本操作

一、创建数据表CREATE TABLE (       字段名1,数据类型[列级别约束条件] [默认值],       字段名2,数据类型[列级别约束条件] [默认值],       ......       [表级别约束条件]);1、主键约束:单字段主键:在定义列的同时指定主键;CREATE TABLE tp_emp1(       idINT

2017-11-02 08:44:02 304

翻译 mysql基础(1)——框架

1、数据定义语言(DDL)用于建立、修改、删除数据库对象CREATE:创建表或者其他对象的结构ALTER:修改表或其他对象的结构DROP:删除表或其他对象的结构2、数据操作语言(DML)用于改变数据表中的数据和事务相关,执行后需要经过事务控制语句提交后才能真正的将改变应用到数据库中INSERT:将数据插入到数据表中UPDATE:更新数据表中已存在的数据DEL

2017-11-02 08:41:26 209

原创 Python(1)——Python基础学习框架

2017-10-23 10:50:55 249

原创 redis(14)——集群的搭建

集群搭建:至少需要三个master第一步:创建以一个文件夹redis-cluster,然后分别在下面创建6个文件夹:  (1)mkdir -p /usr/local/redis-cluster  (2)mkdir 7001、mkdir7002、mkdir 7003、mkdir 7004、mkdir 7005、mkdir 7006第二步:把之前的redis.conf配置文件分别cop

2017-10-20 17:14:22 180

翻译 redis(13)——哨兵原理

Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进人下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。一、启动并初始化Sentinel        当一个Sentinel启动时,它需要执行以下

2017-10-20 16:47:14 332

原创 redis(12)——哨兵的配置

哨兵实现步骤:一、在其中一台从服务器配合sentinel.conf文件sentinel monitor mymaster 192.168.16.1306379 1  #名称,主服务器IP,端口,投票选举次数建议为1。sentinel down-after-milliseconds mymaster5000  #设置5000毫秒检测一次,默认1秒sentinel failover-t

2017-10-20 15:58:41 196

翻译 redis(11)——主从复制的原理

在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器( master ),而对主服务器进行复制的服务器则被称为从服务器( slave )        2.8版本之前与之后版本的主从复制的功能实现方法不同。主要掌握新版本的复制功能一、新版复制功能的实现        从服务器

2017-10-20 15:04:50 222

原创 redis(10)——主从复制的配置

redis主从复制的配置:clone服务器之后修改slave的IP地址:修改配置文件:/usr/local/redis/etc/redis.conf第一步:slaveof 第二步:masterauth //没有可以做设置使用info查看role角色即可知道是主服务器还是从服务器查看主服务器信息查看从服务器的信息如果网络能够ping的通,从服

2017-10-20 14:30:26 170

翻译 redis(9)——服务器端

一、命令请求的执行过程1、发送命令请求2、读取命令请求        1)读取套接字中协议格式的命令请求,并将其保存到客户端状态的输人缓冲区里面。        2)对输人缓冲区中的命令请求进行分析,提取出命令请求中包含的命令参数,以及命令参数的个数,然后分别将参数和参数个数保存到客户端状态的argv属性和argc属性里面。        3)调用命令执行器,执行客户端

2017-10-20 13:27:37 195

翻译 redis(8)——客户端

一、客户端的数据结构        对于每个与服务器进行连接的客户端,服务器都为这些客户端建立了相应的redis.h/redisClient结构(客户端状态),这个结构保存了客户端当前的状态信息,以及执行相关功能时需要用到的数据结构,其中包括:        客户端的套接字描述符。客户端状态的fd属性记录了客户端正在使用的套接字描述符,根据套接字的不同区分客户端为伪客户端还是普通客户端。

2017-10-20 13:14:01 182

翻译 redis(7)——事件

Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。时间事件(time event):Redis服务器中的一些操作(

2017-10-20 13:06:17 200

翻译 redis(6)——AOF持久化

与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。一、AOF持久化的实现        AOF持久化功能的实现可以分为命令追加(append)、文件写入、文件同步(sync)三个步骤。1、命令追加            当AOF持久化功能处于打开状态时,服务器在执行完一个写命令之后,会以协议格式将被执

2017-10-19 22:25:56 210

翻译 redis(4)——redia数据库

一、redis数据库1、redis数据库的数据结构2、切换数据库        默认情况下,redis客户端的目标数据库为0号数据库,但客户端可以通过执行select命令来切换目标数据库        在服务器内部,客户端状态redisClient结构的db属性记录了客户端当前的目标数据库,这个属性是一个指向redisDB结构的指针。3、数据库键空间   

2017-10-19 22:01:44 474

翻译 redis(5)——RDB持久化

一、RDB文件的创建和载入1、save和bgsave        save命令会阻塞redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求。        bgsave命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求。        RDB文件的载入工作是在服务器启动时自动执行的,redis并

2017-10-19 21:50:35 193

翻译 redis(3)——redis的对象

redis没有直接使用数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象。1、字符串对象1.1 字符串对象编码int类型        如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示。那么字符串对象会将整数值保存字符串对象结构的ptr属性里面(将void *

2017-10-19 10:00:24 212

原创 redis(2)——redis的数据结构

根据书籍《redis设计与实现》总结。一、简单动态字符串在redis数据库里面,包含字符串值的键值对在底层都是由SDS实现的。1、SDS数据结构struct sdshdr { //记录buf数组中已使用的数量 //等于SDS所保存字符串的长度 int len; //记录buf数组中未使用字节的数量 int free

2017-10-17 10:29:56 196

原创 redis(1)——Ubuntu下安装redis

redis安装 1、首先需要安装gcc,一般Ubuntu系统都已经提前安装好了sudo apt-get install gcc2、把下载好的redis-3.2.11.tar放到 /usr/local 文件夹下3、进行解压 tar -zxvf redis-3.2.11.tar4、进入到redis-3.2.11目录下,进行编译 make,这个地方需要使用sudo指令,不然会报错

2017-10-13 22:12:11 1383

翻译 Spring Boot实战(1)——Velocity语法

主要是根据需要翻译了部分内容,具体查看官方文档点击打开链接Velocity是一个基于Java的模板引擎。它允许网页设计人员参考Java代码中定义的方法。Web设计人员可以与Java程序员并行工作,根据模型 - 视图 - 控制器(MVC)模型开发网站,这意味着网页设计师可以专注于创建一个精心设计的网站,程序员可以专注于写一流的代码。Velocity将Java代码与Web页面分开,从而使Web站点

2017-10-12 14:37:42 718 1

原创 Java-Collection源码分析(十四)——SortedSet、NavigableSet和TreeSet

一、SortedSet接口此接口主要定义了一些抽象的基本方法public interface SortedSet extends Set { //返回用于对该集合中的元素进行排序的比较器,如果此集合使用其元素的自然排序,则返回null。 Comparator comparator(); //返回此集合的部分的视图,其元素的范围从fromElement(包括)到toE

2017-09-29 20:46:59 261

原创 Java-Collection源码分析(十三)——TreeMap

TreeMap采用了红黑树的数据结构。一、红黑树红黑树是一个二叉搜索树,它在每个节点上增加了一个存储位来表示节点颜色,可以是RED或BLACK。红黑树的本质还是二叉树。由二叉树进化为2-3树或者是2-3-4树,然后再进化为红黑树,接下来将《算法导论》和《算法(第四版)》中的红黑树进行对比。《算法导论》中规则:(1)、每个节点都只能是红色或者黑色;(2)、根节点是黑色;(

2017-09-29 19:36:09 326

原创 Java-Collection源码分析(十二)——Set、AbstractSet、HashSet和LinkedHashSet

一、set的集合框架二、Set接口Set接口除了从Collection接口继承之外,还添加了所有构造函数的约定以及add,equals和hashCode方法的约定。public interface Set extends Collection { //返回此集合中的元素数(其基数)。 int size(); //如果此集合不包含元素,则返回true。

2017-09-28 22:04:28 693

原创 Java-Collection源码分析(十二)——SortedMap和NavigableMap

一、SortedMappublic interface SortedMap extends Map { //返回用于对该地图中的键进行排序的比较器,如果此map使用其键的自然排序,则返回null。 Comparator comparator(); //返回该地图部分的视图,其关键范围从fromKey(包括)到toKey(独占)。 SortedMap subMap(K

2017-09-28 21:09:18 305

原创 Java-Collection源码分析(十一)—— IdentityHashMap

IdentityHashMap继承了AbstractMap类实现了Map 接口。主要有两方面的特点:在数据结构方面:将key与value值相继保存在hash表中,如下图所示在查找数据方面:value值采用的“==”的方式,而不是“equals”的方式。源码分析(数据结构与实现方法):public class IdentityHashMap extends AbstractM

2017-09-28 17:41:35 220

原创 Java-Collection源码分析(十)——hashTable

Hashtable同样是基于哈希表实现的,同样每个元素是一个key-value对,不允许value值为null,采用单向链表的形式。具体操作与单向链表相同。源码分析public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { //hashtable 的数据

2017-09-28 15:04:24 173

原创 Java-Collection源码分析(九)——WeakHashMap

WeakHashMap 继承于AbstractMap,实现了Map接口。和HashMap一样,WeakHashMap也是一个哈希表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。WeakHashMap中的每个关键对象间接存储为弱引用的引用。因此,只有在地图的内部和外部的弱引用之后,密钥才会被垃圾回收器清除。一、WeakHashMap的垃圾回收机制1.1

2017-09-28 11:14:14 166

原创 Java-Collection源码分析(八)——LinkedHashMap

一、LinkedHashMap数据结构LinkedHashMap是建立在HashMap的数组、链表和红黑树的基础上,添加了一个双向循环列表,将HashMap中的元素链接起来。 static class Entry extends HashMap.Node { Entry before, after; Entry(int hash, K key, V

2017-09-27 21:42:55 196

原创 Java-Collection源码分析(七)——HashMap

阅读源码的能力还是太菜,光理解HashMap的数据结构就花了我大半天的时间。JDK1.8中的HashMap的数据结构采用了数组、单向链表和红黑树组合的形式。一、数据结构数组中保存的是链表的首节点,当链表的数量大于8时,就会将链表结构转换为红黑树结构。否则采用单向链表的结构进行操作。通过分析可以得到HashMap的key和value可以为Null,但是key不允许重复,如果k

2017-09-27 17:17:49 186

原创 Java-Collection源码分析(六)——Map接口

Map的集合框架Map接口将键映射到值的对象。map不能包含重复的键;每个键可以映射到最多一个值。该接口取代了Dictionary类,Dictionary是一个完全抽象的类而不是接口。Map接口提供三个集合视图,允许将映射内容视为一组键、值集合或者是键值映射集合。map的顺序被定义为地图集合视图上的迭代器返回其元素的顺序。一些map实现,对其顺序做出特定的保证,如TreeMap类;

2017-09-26 15:31:12 202

原创 Java-Collection源码分析(五)——AbstractSequentiaList和LinkedList

AbstractSequentialList抽象类这个类提供了一个基本的List接口实现,为实现序列访问的数据储存结构的提供了所需要的最小化的接口实现。对于支持随机访问数据的List比如数组,应该优先使用AbstractList。是AbstractList类中与随机访问类相对的另一套系统,采用的是在迭代器的基础上实现的get、set、add和remove方法。public abst

2017-09-26 10:57:58 199

原创 Java-Collection源码分析(四)——ArrayList

ArrayList类ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。部分源码 private static final long serialVersionUID = 86834525811228921

2017-09-25 20:31:07 192

原创 Java-Collection源码分析(三)——List和AbstractList

一、List接口有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。与集合不同,列表通常允许重复的元素(包括空元素)。列表界面除了Collection中指定的附加条款之外,还添加了迭代器,add,remove,equals和hashCode方法。public interface List ext

2017-09-25 14:20:55 249

原创 Java-Collection源码分析(二)——Iterator和ListIterator

一、Iterator接口Iterator接口是集合的迭代器,代替Java集合框架中的枚举,允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。public interface Iterator { boolean hasNext(); E next(); default void remove() { throw new Unsupp

2017-09-25 13:13:08 339

原创 Java-Collection源码分析(一)——Collection接口和AbstractCollection类

一、Collection整体架构二、Collection源码分析Collection提供了高度抽象的处理集合的基本方法: int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[]

2017-09-25 10:26:34 246

空空如也

空空如也

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

TA关注的人

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