自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 时间轮算法

前言现实开发中有许多的延迟操作,比如定时清理过期数据等,在JDK中自带的Timer或者DelayQueue来实现延迟的功能,但很多开源的中间件中并没有使用Timer或者DelayQueue来实现而是使用基于时间轮算法来实现执行延迟任务功能,例如2.7.0以上的Dubbo基于时间轮实现了,失败...

2019-08-30 14:30:00 838

转载 SpringMVC实现解析之开篇

#启动流程SpringMVC通过javaweb的web.xml配置来初始化Spring容器,启动web项目后,web容器首先回去找web.xml文件,读取这个文件,web.xml配置执行顺序为:context-param -> listener-> filter -> se...

2019-06-13 10:21:00 127

转载 Spring源码分析之事务

前言本篇以@EnableTransactionManagement注解的方式来讲解Spring事务的实现@EnableTransactionManagement配置proxyTargetClass配置在Spring中其事务是利用动态代理实现,动态代理有2种实现方式:false:基...

2019-06-10 14:13:00 147

转载 Spring源码分析之@EnableAspectJAutoProxy注解分析

纵观整个Spring的发展历史,注解的配置正逐步替代xml的配置,到SpringBoot时代,完全可以用注解的配置替换繁杂的xml配置,例如我们需要开启AOP功能只要在代码上配置上@EnableAspectJAutoProxy。废话不多说,我们这节来分析下@EnableAspectJAutoP...

2019-05-09 18:58:00 939

转载 如何优化Java垃圾回收机制

我为GC优化归纳了两个目的: 一个是将转移到老年代的对象数量降到最少 另一个是减少Full GC的执行时间 将转移到老年代的对象数量降到最少 按代的GC机制由Oracle JVM提供,不包括可以在JDK7以及更高版本中使用的G1 GC。换句话说,对象被创建在伊甸园空间,而后...

2019-05-06 20:41:00 99

转载 Java内存溢出类型

1.堆空间溢出,比如读入大量的数据,报错java.lang.OutOfMemoryError:heap space2.永久代溢出,比如Spring框架加载了很多新生成类,报错java.lang.OutOfMemoryError: PermGen space3.JVM通过统...

2019-05-06 19:29:00 146

转载 Spring源码分析之容器初始化

AnnotationConfigApplicationContext核心类,BeanDefinition注册器,所有的BeanDefinition都是调用这个类去注册。1.registerAnnotationConfigProcessors()注册后面用到的组件包括:1.Confi...

2019-05-06 12:00:00 182

转载 Netty源码分析之ChannelOutboundBuffer

ChannelOutboundBuffer介绍ChannelOutboundBuffer是Netty发送缓存,当Netty调用write时数据不会真正的去发送而是写入到ChannelOutboundBuffer缓存队列,直到调用flush方法Netty才会从ChannelOutboundBu...

2019-03-30 12:11:00 891

转载 Netty源码分析之IO事件

IO事件概述在上节我们知道Netty启动后会动起一个selector线程监听IO事件,IO事件包括以下几个:SelectionKey.OP_READ 读操作位触发读事件SelectionKey.OP_WRITE 写操作位触发写事件SelectionKey.OP_ACCEPT 接收操作...

2019-03-07 19:32:00 328

转载 Netty源码分析之Selector流程

在Netty启动后,Netty的线程池会起一个Selector线程处理IO事件和其他业务事件,下面来看下Selector流程流程图Selector线程是一个循环线程它一直处理IO事件和其他业务事件。这里需要说明Selector线程是处理IO事件和处理其他业务共享线程,也就是说Select...

2019-02-24 21:33:00 533

转载 Netty源码分析之服务端启动流程

上节对Netty的做了简单介绍,这节分析下Netty启动流程,后面的源码分析都以Netty4.0.32版本为例,以下面启动代码为例子public class TimeServer { public void bind(int port) throws Exception { //...

2019-02-16 13:47:00 134

转载 Netty源码分析之开篇

Netty是什么Netty是Java的一种能提供异步事件驱动网络编程框架,Netty提供了简洁强大的API,能极大提高开发稳定可靠网络服务器和客户端程序的效率。如何使用以创建一个服务端举例说明public class TimeServer { public void bind...

2019-01-31 15:57:00 77

转载 Java并发编程之ThreadLocal源码分析

ThreadLocal介绍ThreadLocal是JDK1.2提供的,作用是给单个线程内的共享变量提供载具。每个线程之间的ThreadLocal里的数据是相互隔离的,并随着线程的消亡而消亡。使用ThreadLocal提供了get(),set(T value),remove()3个对外方法...

2019-01-23 16:54:00 93

转载 Java并发编程之Semaphore源码分析

Semaphore介绍Semaphore是JDK1.5提供允许一组拿到许可证的线程访问共享资源,并禁止其他拿不到许可证的线程访问共享资源工具。Semaphore一般用来做系统的限流。特点Semaphore和ReentrantLock功能很类似都是限制线程访问共享资源而且都有公平锁和非公平...

2019-01-19 20:51:00 94

转载 Java并发编程之CyclicBarrier源码分析

CyclicBarrier介绍CyclicBarrier是JDK1.5提供允许一组线程等待彼此都达到一个共同的障碍点的同步的工具。CyclicBarrier适用于固定大小线程池,可以设置一个Runnable任务,当各线程达到共同的障碍点时触发这个任务。例子 //创建线程池 privat...

2019-01-14 10:58:00 79

转载 Java并发编程之CountDownLatch源码分析

CountDownLatch介绍CountDownLatch是JDK1.5提供用来多线程并发同步的工具,可以让一个或多个线程等待另一个线程执行完再执行。例子private static CountDownLatch countDownLatch = new CountDownLatch(...

2019-01-06 17:18:00 141

转载 Java并发编程之Condition源码分析

Condition介绍上篇文章讲了ReentrantLock的加锁和释放锁的使用,这篇文章是对ReentrantLock的补充。ReentrantLock#newCondition()可以创建Condition,在ReentrantLock加锁过程中可以利用Condition阻塞当前线程并临...

2018-12-31 19:41:00 103

转载 Java并发编程之ReentrantLock源码分析

ReentrantLock介绍从JDK1.5之前,我们都是使用synchronized关键字来对代码块加锁,在JDK1.5引入了ReentrantLock锁。在JDK1.6之前synchronized关键字性能比ReentrantLock锁要差,JDK1.6之后性能基本是持平,但Reentr...

2018-12-22 14:09:00 233

转载 MySQL联合索引原理解析

什么是MySQL联合索引联合索引又叫复合索引,是MySQL的InnoDB引擎中的一个索引方式,如果一个系统频繁地使用相同的几个字段查询结果,就可以考虑建立这几个字段的联合索引来提高查询效率。如何建立索引举个例子:create table `table_name`( `id` bigi...

2018-12-09 13:36:00 7230

转载 TCP拆包粘包问题

对于刚接触TCP网络编程的人有时候碰到一些问题,比如当客服端发送一串消息到服务端,服务端只收到消息的一半,或者当连续发送两个消息到服务端,服务端同时收到这两个消息但无法解析。这就是今天要讲的TCP拆包粘包现象。拆包粘包产生的原因我们可以通过以下图进行说明1.图一是正常的情况下包的发送和...

2018-12-08 11:59:00 85

转载 Spring Bean生命周期

0.实例化对象前调用扩展了BeanFactoryPostProcessor接口的postProcessBeanFactory方法 1.调用BeanNameAware:setBeanName(让Bean获取自己在BeanFactory配置中的名字,通常更好配置Log) 2.调用BeanFacto...

2018-12-08 11:53:00 54

转载 MySQL的事务隔离级别

四种隔离级别MySQL有四种隔离级别分别为读未提交(Read Uncommitted),读提交(Read Committed),可重复读 (Repeatable Read),串行化(Serializable)。隔离级别越高,数据的安全性越高不会出现幻读和脏读,但可并发性越低。所以在选择MyS...

2018-10-10 21:52:00 70

转载 如何改变类加载的双亲委派模式

package com.stand.job.common.classload;import java.io.File;import java.net.MalformedURLException;import java.net.URL;import java.net.URLC...

2017-11-12 19:53:00 190

空空如也

空空如也

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

TA关注的人

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