自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 tomcat参数以及tcp连接-性能调优实验

TCP 三次握手进入的半连接队列和全连接队列 TOMCAT的acceptCount和操作系统的TCP全连接队列关系 TOMAT最大连接数和线程数以及TCP全连接的关系 jmeter的连接超时时间和TCP状态监测,jmeter压测tomcat tomcat调优实验 jconsole远程监控tomca...

2019-11-06 11:14:13 807 4

原创 Hystrix降级和熔断实验

代码实验Hystrix降级和熔断 1.Hystrix 滑动窗口配置 2.熔断状态切换(CLOSE,OPNE,HALF_OPEN) 3.线程池打满服务降级和熔断 4.某个时间窗口内的buket时间内服务请求书和错误率导致降级和熔断 5.hystrix.stream 或者Hystrix Dashboa...

2019-11-01 14:55:48 206 0

原创 SpringBoot自动装配

Springboot自动装配-自定义starter实践与踩坑什么是spring-boot的starter自定义starter步骤示例自动装配原理自定义Starter注意事项新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表...

2019-09-17 18:20:41 737 0

原创 ThreadLocal源码分析

ThreadLocal源码一些思考 ThreadLocal经常出现在各大框架:Hibernate/struts2/spring,主要完成的功能就是同一线程内,变量在不同方法中(非入参形式)传递,不同线程之间传递的变量互不影响。这里所说的变量比如session,connection等等,下图就是对...

2019-09-17 11:22:55 77 0

原创 Spring环境Environment

Spring环境Environment 标准环境 AbstractEnvironment private final MutablePropertySources propertySources = new MutablePropertySources(this.logger); public...

2019-01-25 16:17:43 540 0

原创 Spring注解事件源码分析

Spring注解事件源码分析 @EventListener 解析处理器 EventListenerMethodProcessor @EventListener事件监听器ApplicationListenerMethodAdapter 事件发布器ApplicationEventMulticaste...

2019-01-25 15:23:05 362 0

原创 Spring事务源码分析

事务是什么在Spring初始化bean的接入的 什么时候打开一个Session 什么时候关闭一个Session Session和ThreadLocal区别和联系 @EnableTransactionManagement @Import(TransactionManagementConfigurat...

2018-12-29 18:28:35 116 0

原创 Spring AOP源码分析

Spring AOP源码分析 配置类AopAutoConfiguration @Configuration @ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class, Annotated...

2018-12-18 20:05:53 159 0

原创 分布式架构(二)TCP/IP协议

分布式架构(二)通信协议 说到通信协议不得不提OSI七层协议和TCP/IP四层协议 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理...

2018-07-27 19:12:22 412 0

原创 Java的SPI-ServiceLoader详解

Java的SPI-ServiceLoader详解 Java SPI机制 SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。 我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdb...

2018-07-24 11:11:09 1172 0

转载 hash冲突解决方案

hash冲突解决方案 一)哈希表简介 非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。 哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。 哈希函数:一般情况下,需要在关键字与它在...

2018-07-18 19:07:37 227 0

原创 CopyOnWriteArrayList源码分析

CopyOnWriteArrayList源码分析 容器一般分为三类:普通容器,同步容器,并发容器。 对于容器我们每天都再用,无非就是对容器的增删改查和迭代,单个操作都没有问题,加上多线程有修改、有迭代、有查询。如果你遇到如下问题但对原理说不清楚,还是建议先看下我之前的博文Java容器迭代时修改...

2018-07-18 16:39:38 1019 1

原创 CompletionService源码分析

CompletionService源码分析 本文假设你已经会使用线程池以及了解FutureTask了,不熟悉的源码强烈建议看下之前的博文Java线程池源码分析,读完在读本片博文轻松加愉快。 还是总结下任务的提交流程: 1)submit(taks) task为Callable或者Runn...

2018-07-18 11:52:21 486 0

原创 CyclicBarrier源码-JUC线程同步工具3

CyclicBarrier源码-JUC线程同步工具3 这是线程同步的第三个工具类,跟前文CountDownLatch 如果理解不深入,会觉得他们很相似,觉得都是一个主线程在等待其它子线程完成自己的任务,主线程运行。本文会介绍它们两个的区别,以及内部实现。 何为CyclicBarrier Cy...

2018-07-16 16:45:43 529 0

原创 CountDownLatch源码-JUC线程同步工具2

CountDownLatch源码-JUC线程同步工具2 上篇博文将的线程同步工具信号量Semaphore源码 以停车车辆坑位表示并发量来展开阐述的。 何为CountDownLatch CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进...

2018-07-13 19:09:56 666 0

原创 Semaphore源码-JUC线程同步工具1

Semaphore源码-JUC线程同步工具1 之前JAVA锁Lock说过一句话线程获取到了锁就是AQS得成员state+1了,今天讲的信号量Semaphore还是跟它有关系。 何为信号量 Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一...

2018-07-13 17:41:20 697 0

原创 PriorityBlockingQueue源码-JUC阻塞队列3

PriorityBlockingQueue源码-JUC阻塞队列3 它是我们要说的第三个BlockingQueue

2018-07-13 16:23:57 99 0

原创 LinkedBlockingQueue源码-JUC阻塞队列2

LinkedBlockingQueue源码-JUC阻塞队列2 上篇讲过ArrayBlockingQueue源码

2018-07-12 19:06:58 686 0

原创 ArrayBlockingQueue源码-JUC阻塞队列1

JUC-阻塞队列 前面写了好久片跟锁有关的博客,就是为了接下来的JUC系列文章,对锁熟悉的看JUC事半功倍了,我是强烈建议大家看下我之前的两篇关于Java锁的文章ReentrantLock可冲入锁 以及条件锁,没办法lock是整个JUC的基础。 我们今天主要看下阻塞队列的几个实现类: 先看...

2018-07-04 19:18:41 1046 0

原创 Java线程池源码分析(一)

Java线程池源码分析 使用线程池场景,好处,不在本文范围内,我们分析的是源码。 带着几个问题我们来分析源码: 线程池构造方法的参数的含义,线程池的数量设置,阻塞队列是如何选择的 线程池是异步的那么结果放到哪里了又是如何拿到结果的 线程池提交runnable和callabl...

2018-06-29 18:01:51 4434 6

原创 事务传播行为引发的问题

事务隔离级别和传播行为高级篇 有了前文的基础,才可进行本文的阅读。

2018-06-26 12:07:18 132 0

原创 事务隔离级别和传播行为

数据库隔离级别和传播行为终极篇 曾经我以为我对数据库事务和隔离级别很熟悉了,至少以前整理过,看过网上很多文章,有些带有命令行操作的印象挺深,但是事务传播(包块调用外部系统服务)、分布式锁、mybatis一级缓存等一起存在,导致了很多看起来听不可思议的问题,这都是线上案例。 项目中架构师是否跟你...

2018-06-26 12:02:49 778 0

原创 Java分布式锁(一行代码搞定)

Java分布式锁(一行代码搞定) 前面几篇文章都是介绍的java单机锁,但是目前很多应用都是分布式的(不同jvm进程),单机锁已经不能满足应用的需求了...

2018-06-20 17:49:50 3903 1

原创 Java锁lock源码分析(三)读写锁

Java锁lock源码分析(三)读写锁 前文Java锁Lock源码分析(一)提过在java的Lock中获取锁就表示AQS的volatile int state =1表示获取到了独占锁,state>1表示当前线程重入锁(获取锁了再次获取到了锁)...

2018-06-19 16:32:10 892 2

原创 Java锁Lock源码分析(二)条件锁

本篇博文主要分析条件锁的源码实现、以及状态两个队列的变化: 1)Condition的使用场景 2)lock方法的队列(FIFO双向无环链表)官方点说是同步队列 sync queue 3)condition队列(FIFO单向队列) 官方点说是条件队列 condition queu...

2018-03-01 12:06:43 1302 2

原创 Java锁Lock源码分析(一)

Java中的锁Lock源码分析(一) Java中的锁有很多,同时也是了整个并发包的基础,可以说明白了锁整个并发包你也就能明白一半了,如果之前你有所了解的话java中的锁你或许对这些名词有些概念: 独占锁、共享锁 公平锁、非公平锁、重入锁 条件锁 读写锁 本节要点: 0)锁是如何表...

2018-02-27 15:59:26 3633 1

原创 Java集合迭代时修改

Java集合迭代时修改 本文主要分如下几个要点: 0)Java集合分类 1)对于熟悉JDK集合源码的帮你加深对ConcurrentModificationException的下印象 2)对于迭代时修改提供一个正确的姿势。 3)单线程和多线程环境下迭代时修改的...

2018-02-11 12:09:58 3018 0

原创 MyBatis源码(六)之动态Sql解析运行阶段BoundSql

上篇博文讲述的是dao方法参数是如何传递到Executor的MyBatis源码(五)之动态Sql解析运行阶段参数处理 一定要有这个基础,在进行本博文你将看到一条Sql是如何拼装出来的。我把运行时信息打印出来,主要是在顺便回顾下之前的讲解读取mapper过程,解析select insert 等标签...

2017-11-24 13:28:43 624 0

原创 MyBatis源码(五)之动态Sql解析运行阶段参数处理

上篇博文分析到Mapper文件的读取,以及启动过程动态Sql的解析部分 MyBatis源码(四)之mapper文件解析和动态Sql解析启动阶段本博文继续动态Sql的解析,在运行时的解析。前文也提过,在动态Sql中,sql的最终生成是依靠传入的参数来决定的。所以在继续分析之前先来分析下是mybati...

2017-11-22 18:49:49 283 2

原创 MyBatis源码(四)之mapper文件解析和动态Sql解析启动阶段

上篇博文介绍了Mybatis 执行流程全貌 非常重要。本博文mybatis启动过程是如何解析配置文件的。 这还得从Spring的配置文件中SqlSessionFactoryBean 创建SqlsessionFactory说起。该Bean实现了InitializingBean【又是一个Spring...

2017-11-17 18:35:18 389 0

原创 Mybatis源码(三)之SqlSession执行流程全貌

上一篇博文解释了SqlSession是如何创建的Spring整合mybatis创建SqlSession本篇博文注重你对流程的理解,可以增长你的内功修为。 后续的博文也会写一些实现细节跟你平时调试很相关,比如像动态Sql,读取配置文件等。 后者注重于你调试(就是码农干的事情),前者让你从全局更了...

2017-11-10 18:55:40 346 0

原创 Mybatis源码(二)之Spring整合mybatis创建SqlSession

Spring未整合Mybatis和整合之后Mybatis获取的方式:Spring没有整合Mybatis之前,获取SqlSession很简单就是DefaultSqlSessionFactory.openSession(); Spring整合Mybatis的时候,稍复杂些: 扫描dao,注册Bean...

2017-11-08 19:00:14 1695 0

原创 Mybatis源码(一)之Spring整合Mybatis扫描dao

带着几个问题我们来分析下Spring是如何整合Mybatis的 1.Spring是如何扫描Dao,将其转换成BeanDefinition注册到BeanFactory的? 2.为什么我们可以直接使用dao接口调用方法就能操作数据库了? 3. 原生Mybatis的使用和jdbc的使用与跟Spri...

2017-11-08 18:58:47 2325 0

原创 Mybatis源码之温故jdbc

我们回顾下之前没有使用Mybatis,使用原生态jdbc的场景public Integer insert(User user) { Connection conn = null; PreparedStatement preparedStatement = null;...

2017-11-08 10:28:52 265 0

原创 Java单例

Java单例模式任何一个系统的大部分配置文件读取、线程安全类工具类、常量类等都会使用单例模式---不要说你没见过,有可能见过但是知道是单例模式,还有你确定你懂单例模式吗?你有梦想吗?哈哈,我想当架构师,我想当CTO,我想当一名技术极客----狗屁!!!先醒一醒,你凭什么能成功,靠嘴皮子,还是靠意淫...

2017-09-05 22:32:16 210 0

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