加载中
时间轮算法

前言 现实开发中有许多的延迟操作,比如定时清理过期数据等,在JDK中自带的Timer或者DelayQueue来实现延迟的功能,但很多开源的中间件中并没有使用Timer或者DelayQueue来实现而是使用基于时间...

2019/08/30 14:30
3K
SpringMVC实现解析之开篇

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

2019/06/13 10:21
70
Spring源码分析之事务

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

2019/06/10 14:13
117
Spring源码分析之@EnableAspectJAutoProxy注解分析

纵观整个Spring的发展历史,注解的配置正逐步替代xml的配置,到SpringBoot时代,完全可以用注解的配置替换繁杂的xml配置,例如我们需要开启AOP功能只要在代码上配置上@EnableAspectJAutoPro...

2019/05/09 18:58
1.1K
如何优化Java垃圾回收机制

我为GC优化归纳了两个目的: 一个是将转移到老年代的对象数量降到最少 另一个是减少Full GC的执行时间 将转移到老年代的对象数量降到最少 按代的GC机制由Oracle JVM提供,不包括可以在JDK7以...

2019/05/06 20:41
94
Java内存溢出类型

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

2019/05/06 19:29
468
Spring源码分析之容器初始化

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

2019/05/06 12:00
550
Netty源码分析之ChannelOutboundBuffer

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

2019/03/30 12:11
547
Netty源码分析之IO事件

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

2019/03/07 19:32
458
Netty源码分析之Selector流程

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

2019/02/24 21:33
689
Netty源码分析之服务端启动流程

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

2019/02/16 13:47
1.8K
Netty源码分析之开篇

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

2019/01/31 15:57
154
Java并发编程之ThreadLocal源码分析

ThreadLocal介绍 ThreadLocal是JDK1.2提供的,作用是给单个线程内的共享变量提供载具。每个线程之间的ThreadLocal里的数据是相互隔离的,并随着线程的消亡而消亡。 使用 ThreadLocal提供了g...

2019/01/23 16:54
820
Java并发编程之Semaphore源码分析

Semaphore介绍 Semaphore是JDK1.5提供允许一组拿到许可证的线程访问共享资源,并禁止其他拿不到许可证的线程访问共享资源工具。Semaphore一般用来做系统的限流。 特点 Semaphore和Reentrant...

2019/01/19 20:51
286
Java并发编程之CyclicBarrier源码分析

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

2019/01/14 10:58
58
Java并发编程之CountDownLatch源码分析

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

2019/01/06 17:18
275
Java并发编程之Condition源码分析

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

2018/12/31 19:41
474
Java并发编程之ReentrantLock源码分析

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

2018/12/22 14:09
1.7K
MySQL联合索引原理解析

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

2018/12/09 13:36
1.2W
TCP拆包粘包问题

对于刚接触TCP网络编程的人有时候碰到一些问题,比如当客服端发送一串消息到服务端,服务端只收到消息的一半,或者当连续发送两个消息到服务端,服务端同时收到这两个消息但无法解析。这就是...

2018/12/08 11:59
1.9K

没有更多内容

加载失败,请刷新页面

返回顶部
顶部