自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

piaoslowly的专栏

Java,源码分析

原创 java并发队列之SynchronousQueue(六)

java并发队列之SynchronousQueue(六)SynchronousQueue是一个只有一个元素的同步阻塞队列,不存在无界有界问题.生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。内部使用CAS乐观锁来实现的.写不动了,就参考下面两篇也够用了.http://ifeve.com/java-synchronousqueue/https://www...

2018-12-14 16:15:46 190

原创 java并发队列之总结(八)

java并发队列之总结(八)JDK为我们提供了一系列多线程安全的队列. 按实现方式的不同可以分为阻塞队列和非阻塞队列.阻塞与非阻塞队列先来看一组类图:阻塞队列:非阻塞队列:从上面的类图可以看出,阻塞与非阻塞就在于是否实现了BlockingQueue这个接口.这个是一个阻塞队列接口.来看一下Queue类的基本方法:add:增加一个元索,一般来说都是直接调用offer()方法...

2018-12-14 16:15:14 141

原创 java并发队列之非阻塞队列ConcurrentLinkedQueue(七)

java并发队列之非阻塞队列ConcurrentLinkedQueue(七)ConcurrentLinkedQueue是一个非阻塞,无界的高并发队列.底层数据结构使用单链表来实现,出队和入队操作使用CAS来实现线程安全.从图中可以看出非阻塞队列和阻塞队列非常像,只是非阻塞队列并未实现BlackingQueue接口.实战public class ConcurrentLinkedQueu...

2018-12-14 16:14:50 163

原创 java并发队列之延时队列DelayQueue(五)

java并发队列之延时队列DelayQueue(五)DelayQueue这是一个无界的延时阻塞队列. DelayQueue内部是使用优先级队列PriorityQueue实现的,使用时间来做优先级的延时阻塞队列DelayQueue = BlockingQueue + PriorityQueue + Delayed实战import lombok.extern.slf4j.Slf4j;...

2018-12-13 18:50:59 1962

原创 java并发队列之优先级队列PriorityBlockingQueue(四)

java并发队列之优先级队列PriorityBlockingQueue(四)PriorityBlockingQueue是一个数组实现的带优先级无阻塞队列并发安全队列.实战import lombok.extern.slf4j.Slf4j;@Slf4jpublic class ArrayBlockingQueueDemo { public static void main(St...

2018-12-13 18:50:39 275

原创 java并发队列之LinkedBlockingQueue(三)

java并发队列之LinkedBlockingQueue(三)LinkedBlockingQueue是一个用单链表实现的有界阻塞并发安全队列.实战public class ArrayBlockingQueueDemo { public static void main(String[] args) { final BlockingQueue<String...

2018-12-13 18:50:21 281

原创 java 并发队列之ArrayBlockingQueue(二)

java并发队列之ArrayBlockingQueue(二)ArrayBlockingQueue是一个用数组实现的有界阻塞并发安全队列.demo实战public class ArrayBlockingQueueDemo { public static void main(String[] args) { //队列总长度为10. final Blocki...

2018-12-13 18:50:04 73

原创 java 并发队列-前言(一)

java 并发队列-前言(一)JDK为我们提供了一系列多线程安全的队列. 按实现方式的不同可以分为阻塞队列和非阻塞队列.阻塞与非阻塞队列先来看一组类图:阻塞队列:非阻塞队列:从上面的类图可以看出,阻塞与非阻塞就在于是否实现了BlockingQueue这个接口.这个是一个阻塞队列接口.来看一下Queue类的基本方法:add:增加一个元索,一般来说都是直接调用offer()方...

2018-12-13 18:49:43 109

原创 用Linux命令来优化我的工作

找出两个文件不同的//先把两个文件进行排序$ sort -r number.txt -o number.txt$ sort -r number1.txt -o number1.txt//排序后在对比不同.$ diff number1.txt number.txt -y -W 50sort -r number.txt > number.txtsort -r降序排序, -o为重定...

2018-10-26 17:05:01 63

原创 服务器性能常用命令

tomcat内存情况https://blog.csdn.net/ligang2585116/article/details/46343271输出该进程拥有的线程总数ps -mp 5841 -o THREAD,tid,time | wc -l输出占用cpu最大的前10线程ps -mp 5841 -o THREAD,tid,time | sort -rn | head -10将需要的线程I...

2018-10-24 10:48:55 104

原创 linux常用命令

Linux常用脚本背书日志筛选查看日志:筛选‘cost=任意数组3,6’,-P表示正则,o表示只显示匹配的项,其他不显示。 awk 按照=号分割,显示第2个字符,然后排序。cat log/log_debug.log | grep -Po 'cost=\d{3,6}' | awk -F '=' '{print $2}'|sort -n查看日志:筛选cost=2333任意3,到6位的数字。-P...

2018-10-24 10:39:52 83

原创 Redis设计原理之复制,Sentinel,redis集群(四)

Redis设计原理之复制,Sentinel,redis集群(四)复制用户可以通过slaveof让B服务器去复制A服务器里面的数据.我们称B为从服务器,A为主服务器.也就是主从复制了.从作为主服务器的备份服务器.127.0.0.1:7001> slaveof 127.0.0.1 7000 //将7001这个节点设置为7000这个节点的从服务器当把7001这个节点设置为7000这个节点...

2018-10-24 10:24:12 128

原创 Redis设计原理之数据库与持久化(三)

Redis设计原理之数据库与持久化(三)数据库struct redisServer{ //一个数组,保存着服务器中的所有数据库 redisDb *db; // 服务器的数据库数量,默认值为16 int dbnum; //记录保存条件的数组 struct saveparam *saveparams; //修改计数器 long long dirty; //上一次执行...

2018-10-24 10:23:47 86

原创 Redis设计原理之五种对象(二)

Redis设计原理之五种对象(二)第一章介绍了redis的8种数据结构,但是redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统.字符串对象,列表对象,哈希对象,集合对象和有序集合对象.每种对象都至少用到了一种其中的数据结构.对象Redis使用对象来表示数据库中的键和值,我们每次在redis中创建一个键值对,就至少会包含两个对象,一个键对象,一个...

2018-10-24 10:23:09 118

原创 Redis设计原理之底层数据结构(一)

Redis设计原理之底层8种数据结构(一)本文基本参考《Redis设计与实现》第二版,主要是学习了之后想写一些笔记,防止自己忘记了.没看过的人这本书的人,或者想深入学习redis底层原理的人,建议看书本.如果只是想看大致了解下,可以看本博客就OK了.如果想实战操作reids的可以看redis实战大全里面有很详细的实战操作.全局图思维导图简单动态字符串都知道redis是通过c语言来编...

2018-10-24 10:22:43 695

原创 nginx反向代理,一个ip对应多个应用

Title: nginx反向代理,一个ip对应多个应用 Date: 2015-04-27 16:50:17 URL: /archives/520 Tags: nginx , 反向代理#user nobody;worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;#e...

2018-08-22 17:01:23 1758

原创 TCP协议大全

Date: 2017-01-02 10:10:11TCP协议笔记上一篇文章已经讲过啦TCP/IP协议族了,大概多TCP协议有了大概的了解。 在网页中HTTP请求获取内容之前是需要先建立TCP连接的,而TCP建立连接需要三次握手,该篇文章将讲解TCP的工作原理。TCP特性TCP提供一种面向连接的、可靠的字节流服务在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用...

2018-08-21 16:22:53 717

原创 http全面讲解

Date: 2017-01-01 10:10:10HTTP知识笔记(一般)网络基础TCP/IP协议族计算机与网络设置之间要互相通信,怎么办,怎么样不同的计算机之间互相通信。 这就需要统一定义相应的协议,大家互相遵守协议,这样按照协议的规定来传输数据,这样大家就都互相认识了。 协议中规定了很多内容。从电缆的规格到ip地址的选定方法,寻找异地用户的方法,双方建立的通信的顺序...

2018-08-21 16:22:24 238

原创 java基础-强、软、弱、虚引用

Date: 2017-01-14 10:10:10java基础-强、软、弱、虚引用jdk1.2之后java对引用的概念进行了扩充,分为强引用,软引用,弱引用,虚引用。强引用(FinalReference):类似Object obj=new Object();这类的引用只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。软引用(SoftReference):用来描述一些还有用...

2018-08-21 16:21:34 93

原创 java基础-动态代理与静态代理

java基础-动态代理与静态代理 代理主要有:静态代理和动态代理(jdk基于接口的实现,cglib基于类的实现) jdk动态代理来自于反射,先了解反射,再来了解动态代理哦! Proxy类它也是在反射包里面的,所以它也是反射的一部分,这部分太大了,使用也比较广泛所以拿出来单独讲解。 动态代理(动态加载,动态链接,各叫各的,其实带动态的都是一个意思只是叫法不同而已)...

2018-08-21 16:21:01 131

原创 java基础-java反射详细讲解

java基础-java反射java里的class文件加载分为两种情况,一种就是类型是编译器已知的,这种文件的.class文件在编译的时候,编译器会把.class文件打开检查,但是注意不是加载哦,第二种就是我们可能是从别的地方获取到了一个引用,然后动态的把这个未知类型的引用的对象的.class文件加载进jvm虚拟机里。前者为RTTI,即Run- Time Type Identification ...

2018-08-21 16:20:33 94

原创 java集合-CopyWrite系列

java集合-CopyOnWrite系列Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。什么是CopyOnWriteCopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接...

2018-08-21 16:19:42 333

原创 java集合-总结(六)

Date: 2017-01-15 10:10:16java集合-总结(六)关系图: 有序无序图: 在集合中只有List下面的集合是有序的。Map中LinkedHashMap也是有序的,TreeMap需要自己定义排序规则。和hash相关的key都是不可以重复的,Map集合中的key都不许重复,重复会覆盖。set里面的HashSet,TreeSet分别来自HashMap,T...

2018-08-21 16:19:22 79

原创 java集合-WeakHashMap(五)

Date: 2017-01-14 10:10:12java集合-WeakHashMap与ThreadLocal(五)前面两篇文章《HashMap源码分析》,《Java基础-强,弱,软引用》已经把WeakHashMap用到的技术都讲完了。这篇文章也就没啥好讲的了。WeakHashMap就是一个HashMap,只不过它的key继承了WeakReference表示key是一个弱引用,在G...

2018-08-21 16:18:39 1093

原创 java集合-TreeMap(红黑树四)

java集合-TreeMap(红黑树)五红黑树的定义根节点与叶节点都是黑色节点(注意:叶节点为Null节点哦,普通二叉树里面叶子节点是左右节点为null的节点为叶子节点,而红黑树是null节点为叶子节点)不能有连续两个红色节点任意节点到叶子节点所经过的黑色节点数量是相同的(比如:根节点不管走左右节点到达null节点所经过的黑色节点数都是一样的)。 红黑树最难的就是:添加...

2018-08-21 16:18:14 49

原创 java集合-TreeMap(红黑树四)

java集合-TreeMap(红黑树)五红黑树的定义根节点与叶节点都是黑色节点(注意:叶节点为Null节点哦,普通二叉树里面叶子节点是左右节点为null的节点为叶子节点,而红黑树是null节点为叶子节点)不能有连续两个红色节点任意节点到叶子节点所经过的黑色节点数量是相同的(比如:根节点不管走左右节点到达null节点所经过的黑色节点数都是一样的)。 红黑树最难的就是:添加...

2018-08-21 14:36:37 68

原创 java集合-HashMap(三)

java集合-HashMap(三)哈希算法什么是哈希算法?百度百科给出的解释:哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整...

2018-08-20 14:36:09 70

原创 java集合-List(二)

java集合-集合List(二)ArrayListArrayList 是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组队...

2018-08-20 14:35:39 96

原创 java集合-框架(一)

java集合-基础框架(一)Java集合框架是java提供的工具包,在java.util.*中,这个包中包含了常用的数据结构:集合、数组、链表、栈、队列、映射等。java集合框架主要可以分为四个部分:List列表、Set集合、Map映射和工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。 CollectionCollection...

2018-08-20 14:35:10 102

原创 基础算法-树(四)

基础算法-树,二叉树(四)树树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: - 每个节点有零个或多个子节点; - 没有父节点的节点称为根节点; - 每一个非根节点有且只有一个父节点; - 除了根节点外,每个子节点可以分为多个不相交的子树;...

2018-08-20 14:34:17 98

原创 基础算法-链表(三)

Date: 2017-01-5 10:10:13基础算法-链表(三) 理论部分为转载,代码编写部分为自己实现的。 转载的文章链表实现太过复杂,自己实现的比较简单。(链表是一种数据结构,只需要满足这种数据结构就OK了,一万个人有一种实现方式)。单链表链表在初始化时仅需要分配一个元素的存储空间,并且插入和删除新的元素也相当便捷,同时链表在内存分配上可以是不连续的内存...

2018-08-20 14:33:43 61

原创 基础算法-队列(二)

基础算法-队列(二) 理论部分为转载,算法实现部分为自己写的。线性队列队列同样是一种特殊的线性表,其插入和删除的操作分别在表的两端进行,队列的特点就是先进先出(First In First Out)。我们把向队列中插入元素的过程称为入队(Enqueue),删除元素的过程称为出队(Dequeue)并把允许入队的一端称为队尾,允许出的的一端称为队头,没有任何元素的队列则称为空队。...

2018-08-20 14:33:20 73

原创 基础算法-栈(一)

Date: 2017-01-5 10:10:11基础算法-栈(一) 理论部分为转载,算法实现部分为自己写的。栈的抽象数据类型: 栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(To...

2018-08-20 14:32:39 84

原创 基础算法-AVL平衡二叉树(五)

基础算法-AVL平衡二叉树(五) 一路学习下来才发现,算法是最难学的东西,其他什么jvm,jdk源码啊,看起来都比较简单。这里写的文章并不好,因为很多分析都是参照网上博客的,没有太多自己的东西,所以只有代码,介绍部分很少,分析部分没有。想要了解更多分析方面的知识请参看下面给出的参考地址。普通树很容易不平衡,比如随便插入一个1,2,3……10就会发现,全部偏向了右边,就和单链表差不多了...

2018-08-20 14:31:58 54

原创 MySql 基础概念全面讲解(一)

MySql 基础概念全面讲解(一)数据库的基本概念磁盘文件–> 层次模型 –> 网状模型 –> (Codd) 关系模型 主键(Primary key):用于惟一确定一个记录的字段;复合主键:多个字段组合成一个主键(NOT NULL);惟一键:一个或多个字段的组合,填入的数据必须能在本表 中唯一标识本行;允许为NULL,但只能有一个null。 约束:主键...

2018-08-20 14:30:41 1403

原创 记一次SpringBoot 部署到resin容器

记一次SpringBoot 部署到resin容器springboot打包war包第一步:将<packaging>war</packaging>改为war包第二步:移除tomcat<dependency> <groupId>org.springframework.boot</groupId> <...

2018-08-16 16:06:31 1942 1

原创 Spring MVC源码分析

Spring MVC源码分析 本篇文章只讲源码分析,不讲spring mvc基础的东西,文章中部分理论部分为转载。spring mvc概述Spring MVC框架是一个基于请求驱动的Web框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器(动作/处理器)进行处理。先来看一下spring mvc的处理一个url的请求逻辑图 (图为转载...

2018-08-16 16:06:05 96

原创 Spring AOP无法拦截内部方法调用

Spring AOP无法拦截内部方法调用 spring aop之对象内部方法间的嵌套失效 来看一个内部调用失败的经典例子//如果存在事务,则抛出异常。public class TxDemo{ @Transactional(propagation = Propagation.NEVER) public void serviceH() { User...

2018-08-16 16:05:33 2928

原创 Spring-事务的源码分析(七)

Spring-事务的源码分析(七)都知道事务是通过spring AOP来实现的;前面文章已经分析过AOP的实现原理了,而事务只不过是AOP中的一个增强器而已;所以接下来将分析一下事务增强器的原理。spring的核心就是IC依赖注入,那么就要先解析依赖配置,然后再注入。所以spring的功能都会出现两块,一块是解析mxl,一块是构建BeanDefinition。 事务增强器也是这样,先要解...

2018-08-16 16:04:55 167

原创 Spring-事务的传播属性(六)

Spring-事务的传播属性(六)事务的传播属性概述所谓spring事务的传播属性,就是定义在存在多个事务同时存在的时候,spring应该如何处理这些事务的行为。这些属性在TransactionDefinition中定义,具体常量的解释见下:Propagation.REQUIRED(required):支持当前事务,如果当前有事务, 那么加入事务, 如果当前没有事务则新建一个(默...

2018-08-16 16:04:27 8080 2

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