自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序算法

 Java实现常用排序1.插入排序public class Sort { public void insertSort(int[] array ){//插入排序 for(int i=1;i<array.length;i++){ //第一次比较前两个元素大小,并且排好序。 int j; //往后每一...

2018-03-16 22:19:50 240

原创 Java反射

                                            Java反射 反射的功能:能够在程序运行时动态获取一个类的完整信息。在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判段任意一个类所具有的成员变量和方法 在运行时调用任一个对象的方法 在运行时创建新类对象 在使用Java的反射功能时,基本首先都要获取类的Cl...

2018-09-07 16:02:16 236

原创 设计模式之单例模式

                                               单例模式饿汉式public class HungrySingleTon { private static HungrySingleTon instance = new HungrySingleTon(); public static HungrySingleTon getIns...

2018-09-05 20:09:40 234

原创 设计模式之工厂模式

                                               工厂模式三种工厂:简单工厂模式、工厂方法模式、抽象工厂模式。 简单工厂模式:简单工厂模式:用户可以通过工厂得到自己需要的产品,比如说通过工厂得到一双鞋,鞋子有耐克,adidas等。public class Customer { public static void main(...

2018-09-05 16:42:40 290

原创 阿里考试链接

https://edu.aliyun.com/clouder/exam/intro/33?spm=5176.165441.858709.3.fbHe5F&accounttraceid=1396ee2c-67c4-41f9-9fc3-92825aabce39

2018-05-24 20:18:40 1023

原创 可达性分析

可达性分析        可达性分析算法的基本思路就是通过一系列的成为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可以用的。在Java语言中,可作为GC Roots的对象包括以下几种:虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方...

2018-05-13 15:19:18 3933 1

原创 公有私有密钥数字证书

公有私有密钥数字证书        HTTP通信使用明文(不加密),内容可能会被窃听,不验证通信方的身份,因此可能遭遇伪装。TCP/IP是可能被窃听的网络,按TCP/IP协议族的工作机制,通信内容在所有通信线路上都可能被窥视。通信的加密        HTTP协议中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Sec...

2018-05-06 11:10:46 1209

原创 HTTP状态码

HTTP状态码        HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。借助状态码,用户可以知道服务器是正常处理了请求还是出现了错误。        状态码由三位数字和原因短语组成:数字中的第一位指定了响应类别,后两位无分类。状态码类型        状态码虽然种类繁多,但是常用的就10几种,我们来看一下具有代表性...

2018-05-05 10:18:04 440

原创 Redis中的排序sort

Redis中的排序sort        Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。        SORT命令对number列表元素排序        使用ALPHA选项对一个包含字符串值的集合键进行排序SORT<key>命令的实现        SORT命令的最简单执行形式为:        SORT<key>        这个命令可以对...

2018-05-01 17:01:27 1030

原创 Redis事务支持

Redis事务支持        Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕才去处理其他客户端的命令请求。        下面是一个事务执行的过程:        MULTI...

2018-05-01 15:57:35 2264

原创 Redis集群

Redis集群        Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。节点        一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,他们都处于一个只包含自己的集群当中,要组建一个真正可以工作的集群,必须将各个独立的节点连接起来。        通过CLUSTER ME...

2018-05-01 11:38:52 241

原创 Redis中的Sentinel哨兵

Redis中的Sentinel哨兵        Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。  ...

2018-05-01 00:11:29 212

原创 Redis主从复制详解

Redis主从复制详解        在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。        比如我们有两个Redis服务器,一个为127.0.0.1:6379和127.0.0.1:12345。如果我...

2018-04-30 20:54:14 212

原创 AOF持久化

AOF持久化        Redis提供了两种持久化功能,RDB和AOF,RDB持久化通过保存数据库中的键值对来记录数据库,AOF持久化时通过保存Redis服务器所执行的写命令来记录数据库状态的,上篇文章已经介绍过RDB持久化,这篇文章就来介绍以下AOF持久化。举个例子,如果我们对空白数据库执行以下写命令,那么数据库将包含三个键值对:        RDB是将msg,fruits,nembers...

2018-04-30 10:39:37 346

原创 RDB持久化

RDB持久化        Redis是一个键值对数据库服务器。由于Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果想要将Redis数据库中的数据存储下来,则必须要将内存中的数据持久化到硬盘中。        Redis提供了RDB和AOF两种持久化功能,我们今天先来介绍以下RDB持久化,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。      ...

2018-04-29 22:59:42 457

原创 Redis之EXPIRE

Redis之EXPIRE通过expire或者pexpire命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(Time To Live,TTL),在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。与expire和pexpire类似,客户端也可以通过exporeat或者pexpireat命令,以秒或者毫秒精度来给数据库中的某个键设置过期时间(expire time)。过...

2018-04-29 15:58:57 1898

原创 Redis之压缩列表

Redis之压缩列表        压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,Redis就会使用压缩列表来做列表键的底层实现。        下面看一下压缩列表实现的列表键:列表键里面包含的都是1、3、5、10086这样的小整数值,以及''hello''、''world''这样的短字符串。再看...

2018-04-26 23:37:24 527

原创 Redis中的整数集合

Redis中的整数集合        整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。我们创建一个含有五个元素的集合键:这种形式的集合键就是整数集合。整数集合可以保存的类型为int_16_t、int32_t或者int64_t的整数值,并且集合中不存在重复的元素。contents数组时整数集合的...

2018-04-26 22:18:49 475

原创 Redis中的跳表

Redis中的跳表        跳跃表(skiplist)是一种有序的数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。           Redis中的跳跃表由redis.h/zskiplistNode和redis.h/zskiplist两个结构定义,其中zsliplistNode结构用于表示跳跃表节点,而zskiplist结构则用于保存跳跃表节点的相关信息,...

2018-04-26 21:48:48 1870

原创 Redis底层之字典

Redis底层之字典字典,是一种用于保存键值对(key-value pair)的数据结构。举个例子,我们向redis中写入:msg就是键,“hello world”就是值,他们是一对键值对。而许多这样的键值对组合在一起就成了哈希表。Redis的字典就是使用哈希表作为底层实现,一个哈希表中存放多个哈希表节点(每个节点保存一个键值对)。Redis字典使用的hash表结构如下:table是一个数组,数组...

2018-04-25 23:18:12 230

原创 Redis底层之链表

Redis底层之链表Redis底层链表节点使用listNode来实现。每个listNode节点包含三个成员,一个prev指针指向前一个listNode,一个next指针指向下一个节点。一个value指针指向任何类型的值。多个listNode通过prev和next指针组成双端链表。通过一个list比较方便地来管理产生的listNode链表。list结构为链表提供了表头指针head,表尾指针tail,...

2018-04-25 22:42:08 612

原创 Redis底层之String

Redis底层之StringRedis底层是用C语言写的,Redis中的常用数据类型之一是String。我们来看一下Redis中的String是怎么实现的。首先来看一下C语言中的字符串:就是一个简单的字符型数组。Redis中为了实现方便的扩展、安全和性能,自己定义了一个结构用来存储字符串。我们叫它SDS(simple dynamic string)Redis定义了一个sdshdr的结构。里面除了保...

2018-04-24 23:44:35 4586

原创 剑指题解

剑指题解题目太多不想一个个上传,我传GITHUB上了:https://github.com/15952035082/algorithme/tree/master/jianzhi全是Java写的题解

2018-04-24 23:16:03 167

原创 丑数

丑数把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。import static java.lang.Math.min;public class Solution { public int GetUglyNumber_Solution(int index...

2018-04-24 23:11:41 149

原创 表示数值的字符串

表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。public class So

2018-04-24 23:11:04 107

原创 包含min的函数栈

包含min的函数栈定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。public class Solution { private Stack<Integer> stack=new Stack<>(); private Stack<Integer> minStack=new Stack<>(); pri...

2018-04-24 23:10:32 154

原创 按层输出二叉树

按层输出二叉树从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer> > res=new ...

2018-04-24 23:09:43 1401

原创 String StringBuffer和StringBuilder

String StringBuffer和StringBuilder     首先这三者都是用来存储字符串的。      String、StringBuffer、StringBuilder都是被final修饰的,是不能够被继承改写的。     String存储的字符串常量,存储在字符串常量区(方法区中的一块地方)。所谓常量,即不可以改变的类型。当我们定义一个String str1="aaa" ,这时...

2018-04-24 21:22:04 411

转载 Java对象访问

Java对象访问在Java语言中,对象访问是如何进行的?对象访问在Java语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会却涉及Java栈、Java堆、方法区这三个最重要内存区域之间的关联关系,如下面的这句代码:    Object obj = new Object();假设这句代码出现在方法体中,那“Object obj”这部分的语义将会反映到Java栈的本地变量表中,作为一个re...

2018-04-20 16:15:07 144

转载 Java内存管理

Java内存管理Java虚拟机所管理的内存包括以下几个运行时数据区域:线程私有区域1.程序计数器         程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的...

2018-04-20 16:10:45 170

原创 数据库隔离级别

数据库隔离级别首先我们来分析一下为什么数据库需要隔离。隔离的原因是因为数据库中的数据可能会出现脏读、不可重复读、幻读这三种问题。脏读脏读是指一个事务处理过程中读取了另一个事务没有提交的数据。举个例子说明一下,假定原字段值为100,此时事务A读取该值并尝试修改为200,事务B读取该值为200,事务A修改该值为200失败,原字段值为100,此时就出现了事务B读取的值为200,与数据库中的不一致的情况,...

2018-04-20 12:40:19 183

原创 乐观锁和悲观锁

乐观锁和悲观锁乐观锁:Optimistic Concurrency Control,缩写“OCC”,是一种并发控制的方法。乐观锁假设用户之间的操作不会相互影响,自己对数据库的操作不会受其他操作的影响,放弃了使用锁的机制来保证但是事情是可能有多个用户同时操作了一个数据字段,并且要对数据库提交了修改,此时为了保护数据的正确性,所以人们想出了一个办法来解决这种情况:使用版本控制或者时间戳。简单介绍一下版...

2018-04-20 11:13:26 170

原创 公平锁与非公平锁

公平锁与非公平锁公平锁与非公平锁即fairSybc和NonfairSync。简单说一下两个锁的区别:顾名思义,公平就是先到先得,比如A和B线程均需要获得一个锁,但是此时锁正在被另一个线程C占据着,这是如果A先来B后来。那么当C释放锁以后,A就会获得这个锁。如果是非公平的话,可能B后来但是能比A先获得锁。ReentrantLock可以设置锁的属性为公平还是非公平public ReentrantLoc...

2018-04-14 23:10:29 218

原创 LinkedBlockingQueue

LinkedBlockingQueueLinkedBlockingQueue是基于链表的阻塞FIFO队列,可以指定一个最大的长度限制以防止过度扩展,未指定情况下其大小为Integer.MAX_VALUEpublic LinkedBlockingQueue() { this(Integer.MAX_VALUE); }public LinkedBlockingQueue(int...

2018-04-14 20:16:08 228

原创 BlockingQueue子类之ArrayBlockingQueue

BlockingQueue子类之ArrayBlockingQueueInterface BlockingQueue<E>public interface BlockingQueue<E>extends Queue<E>BlockingQueue是Queue的子类,具有Queue的性质。它实现了几个主要的方法:1.add(E e)将特定的元素插入队列,如果队列的...

2018-04-14 19:16:02 271

原创 Java中线程池的实现

Java中线程池的实现  当我们要使用线程时,就要去创建线程,这样看上去似乎很正常,但是频繁地创建线程、销毁线程会对系统资源造成不小地负担,大大降低了系统地效率。Java中有一个很好地工具,可以事先创建好一些线程,当我们需要使用地时候就直接拿来使用就可以,这样就不会频繁地创建和销毁线程了,这个神奇地工具就是线程池。线程池是通过Executor执行器来创建。我们来看一下在java.util.conc...

2018-04-14 16:43:53 246

原创 Java的构造函数

Java的构造函数Test1是Test的子类。我们来看一下构造函数的执行过程:声明一个Test1对象class Test{ static{ System.out.println(1); } Test(){ System.out.println(2); } Test(int s){ System.out...

2018-03-29 15:49:13 230

原创 ArrayList

ArrayListArrayList简单讲就是复杂版的Array,相比于Array,它能够动态增加和减少元素。对于ArrayList而言,它实现List接口、底层使用数组保存所有元素。其操作基本上是对数组的操作。ArrayList设置了数组的最大长度MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8初始大小为10,每次放入新元素之前先判断大小是否要超过容量,是的话就扩容1...

2018-03-28 11:04:49 192

转载 聚集索引和非聚集索引

聚集索引和非聚集索引原文地址http://www.cnblogs.com/aspnethot/articles/1504082.html索引官方说法: 聚集索引  一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。   聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列...

2018-03-26 21:29:14 167

原创 HashMap在Java8中的红黑树

 红黑树在HashMap中的应用我们知道在jdk1.8之前,HashMap采用链表的方式解决冲突,不过在更新1.8版本之后,HashMap采用了链表加红黑树的方式来优化了结构。话不多说,我们来看源码:/** * The bin count threshold for using a tree rather than list for a * bin. Bins are con...

2018-03-25 12:18:07 3010

空空如也

空空如也

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

TA关注的人

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