自定义博客皮肤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,源码分析

  • 博客(62)
  • 资源 (3)
  • 收藏
  • 关注

原创 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 2427

原创 TCP协议大全

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

2018-08-21 16:22:53 5998

原创 http全面讲解

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

2018-08-21 16:22:24 546

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

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

2018-08-21 16:21:34 275

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

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

2018-08-21 16:21:01 387

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

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

2018-08-21 16:20:33 246

原创 java集合-CopyWrite系列

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

2018-08-21 16:19:42 1266

原创 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 143

原创 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 1632

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

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

2018-08-21 16:18:14 115

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

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

2018-08-21 14:36:37 149

原创 java集合-HashMap(三)

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

2018-08-20 14:36:09 364

原创 java集合-List(二)

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

2018-08-20 14:35:39 229

原创 java集合-框架(一)

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

2018-08-20 14:35:10 278

原创 基础算法-树(四)

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

2018-08-20 14:34:17 254

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

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

2018-08-20 14:33:43 132

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

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

2018-08-20 14:33:20 164

原创 基础算法-栈(一)

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

2018-08-20 14:32:39 221

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

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

2018-08-20 14:31:58 134

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

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

2018-08-20 14:30:41 2828

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

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

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

原创 Spring MVC源码分析

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

2018-08-16 16:06:05 274

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

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

2018-08-16 16:05:33 4945

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

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

2018-08-16 16:04:55 305

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

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

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

原创 spring-事务详细讲解(五)

Date: 2017-11-15 00:00:01spring-事务(五) 文章说明:本文不会只做复制粘贴的动作,在讨论一个问题的时候,理论部分总是词不达意,所以会从网上找合适的描述文章作为本篇的开篇,后续的深入讨论基本都是自己实践经验所得。先来看一下spring整块的逻辑图 前言对于spring事务,我将分两大部分部分讲解:事务的基本配置与实践:申明式事务,...

2018-08-16 16:03:53 281

原创 spring-装配Bean(二)

spring-装配Bean(二)Spring配置Bean可选方案Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。但是,作为开发人员,你需要告诉Spring要创 建哪些bean并且如何将其装配在一起。当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制:在XML中进行显式配置。 在Java中进行显式配置。...

2018-08-16 16:02:54 150

原创 spring-基础介绍(一)

spring-基础介绍(一)spring简介为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程; 通过依赖注入和面向接口实现松耦合; 基于切面和惯例进行声明式编程; 通过切面和模板减少样板式代码。依赖注入依赖注入这个词让人望而生畏,现在已经演变成一项复杂的编程技巧或设计模式理念。但事实证明,依赖注入并不像它听上去那么复...

2018-08-16 16:02:24 171

原创 RabbitMQ的使用

RabbitMQ的使用 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。AMQP,即Advanced Message Queuing Pr...

2018-08-13 10:39:01 7017 1

原创 RabbitMq集群之高可用(二)

RabbitMq集群之高可用(二)前面一文中搭建了集群,还有镜像模式,看似安全了,但是RabbitMq却没有负载均衡,就是说,你在使用客户端连接mq的时候,即使有node1,node2两台mq集群,但是client只会连接到一台,当node1挂了,才会连接到node2中,如果node1没有挂掉,将会一直使用node1,这样一来node2就成了摆设了,或者成了备份机了。集群我们更希望的是高可用,...

2018-08-13 10:38:19 698 1

原创 RabbitMQ集群之安装(一)

RabbitMQ集群之安装(一)RabbitMQ安装集群准备工作现在有两台服务器:192.168.10.100,192.168.10.101//进入到100服务器中//查看hostname,或者使用hostname node1修改主机名> hostname//配置hosts> vi /etc/hosts //修改如下192.168.10.100 ...

2018-08-13 10:23:45 3485

原创 zookeeper实战全面讲解(一)

zookeeper学习笔记(一) 这里没有太多的分析,只是做为一些简单配置及安装记录,生怕自己忘记了。zk是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop的重要组件,CDH版本中更是使用它进行Namenode的协调控制。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字...

2018-08-13 10:22:24 12366 1

原创 redis实战全面讲解

redis笔记(一)redis简介Redis 是一个开源的 使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志 型、Key-Value 数据库。存储操作redis的key-value需要特别说明下,key只能为字符串类型,但value可以为字符串,hash表,列表(list),集合(set),有序集合(sorted set)等多种数据类型,这也是redis与...

2018-08-10 15:03:25 14344 1

原创 关于多线程中的面试题

关于多线程中的面试题常见面试的1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 答:使用join就OK了。public class ThreeThread { public static void main(String[] args) throws InterruptedException { OneT...

2018-08-10 14:15:57 7331

原创 jvm调优现场

jvm 内存查看线程1.输出该进程拥有的线程总数 ps -mp pid -o THREAD,tid,time | wc -l2.输出占用cpu最大的前10线程 ps -mp pid -o THREAD,tid,time | sort -rn | head -103.查看进程中线程当前的的状态(thread dump) jstack pid对于查找blocked线程比较有意义...

2018-08-10 14:15:17 672

原创 线上宕机优化过程记录

线上宕机优化过程记录在线上容器中配置jvm参数-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/logs/outMemoryDump.hprof线上宕机后,自动将当前内存堆导出到文件中.事故现场: 由于线上配置的是6G的内存,结果6G内存都被撑爆了,所以dump出来的堆文件有7G大小.线上服务器dump.hprof文件拖到本...

2018-08-10 14:10:38 439

原创 java多线程高级-FutureTask与Callable(八)

java多线程高级-FutureTask与Callable(八)平时在工作中一般用到的多线程为:一种是直接继承Thread,另外一种就是实现Runnable接口,但是有时我们希望多线程执行完后返回结果,那就使用FutureTask与Callable。FutureTask从图中可以看出,FutureTask只是一个实现了Runnable的一个普通类,没什么特别的,唯一多了一个Fu...

2018-08-10 14:05:23 333

原创 java多线程高级-线程池原理(七)

java多线程高级-线程池原理(七)为什么要使用线程池? 我们现在考虑最简单的服务器工作模型:服务器每当接收到一个客户端请求时就创建一个线程为其服务,10个客户端就需要创建10个线程为其服务。 实际上会存在一些缺陷,服务器应用程序中经常出现的情况是单个客户端请求处理的任务本身很简单但客户端请求的数目却是巨大的,因此服务器在线程的创建和销毁上所花费的时间和系统资源可能比处理客户端请求处理的任务...

2018-08-10 14:04:48 266

原创 java多线程高级-concurrentHashMap(六)

java多线程高级-concurrentHashMap(六) 这里写的文字较少,因为它和HashMap原理是一样的,只不过在HashMap外面又套了一层数组而已,所以只分析下源码的分段锁实现。ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。一个 ConcurrentHashMap 实例中包含由若干个 Segment 对象组成的数组,...

2018-08-10 14:04:13 2013

原创 java多线程高级-concurrent实战(五)

java多线程高级-concurrent实战(五)Semaphore信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可. Semaphore sema = new Semaphore(5); 这里申请了5个信...

2018-08-10 14:03:41 297

spring事务的源码分析

spring的核心就是IC依赖注入,那么就要先解析依赖配置,然后再注入。所以spring的功能都会出现两块,一块是解析mxl,一块是构建BeanDefinition。 事务增强器也是这样,先要解析事务的标签,然后才是执行事务。

2018-06-11

网管教程 从入门到精通软件篇

网管教程 从入门到精通软件篇,如果你想成为网管,这部教程是你成为高手不得不看的好资源哦!

2011-09-02

《100万!我是如何成为史上最牛淘宝客的》

教你怎么在淘宝网上淘宝,一部非常好的教程。

2011-09-02

空空如也

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

TA关注的人

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