自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Bean copy实战

一次Bean copy引起的问题分析

2022-01-23 17:22:17 924

原创 单个PROPAGATION_REQUIRED执行流程图

1.执行流程图2.获取status的状态图

2020-08-31 22:45:48 218

原创 第一个PROPAGATION_REQUIRED,第二个是PROPAGATION_REQUIRES_NEW执行过程

1.demo代码 @Test public void test_required_requires_new() { AccountService accService = ctx.getBean("accountServiceImpl", AccountService.class); transactionTemplate.execute(status -> { accService.addDate("郭林", 123); transactionTemplate.s

2020-08-31 01:12:14 697

原创 第一个PROPAGATION_REQUIRED,第二个是PROPAGATION_NOT_SUPPORTED执行过程

1.demo代码 @Test public void test_required_supports() { AccountService accService = ctx.getBean("accountServiceImpl", AccountService.class); transactionTemplate.execute(status -> { accService.addDate("郭林", 123); transactionTemplate.setPr

2020-08-31 00:55:37 1841

原创 两个PROPAGATION_REQUIRED事务执行过程

1.demo代码 @Test public void test_required_required_error() { AccountService accService = ctx.getBean("accountServiceImpl", AccountService.class); transactionTemplate.execute(status -> { accService.addDate("郭林", 123); try { transactio

2020-08-31 00:08:40 315

原创 Spring事务基础接口

spring事务三大接口:1.TransactionStatusspring对事务封装的接口public interface TransactionStatus extends SavepointManager, Flushable { boolean isNewTransaction(); boolean hasSavepoint(); void setRollbackOnly(); boolean isRollbackOnly(); @Override

2020-08-29 22:53:50 484

原创 JdkDynamicAopProxy代理类invoke方法

1.invoke @Override @Nullable public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object oldProxy = null; boolean setProxyContext = false; TargetSource targetSource = this.advised.targetSource; Object target = n

2020-08-29 16:41:31 388

原创 浅析spring创建代理类

1.demo代码示例public class AopTest { @Test public void test_aop_config(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AopConfig.class); final TestService service = (TestService)ac.getBean("testServiceImpl"); serv

2020-08-29 14:17:53 238

原创 CglibAop代理的小demo

demo代码1.核心测试类public class AopTest { @Test public void test_demo(){ ProxyFactory proxyFactory = new ProxyFactory(); // 一个Advisor代表的是一个已经跟指定切点绑定了的通知 // 在这个例子中意味着环绕通知不会作用到toString方法上 Advisor advisor = new DefaultPointcutAdvisor(new DmzPointc

2020-08-29 09:38:43 217

原创 springmvc的启动流程

1.内置web容器,Spring mvc启动流程2.一次Spring MVC请求的流程

2020-08-13 08:48:08 178

原创 spring容器启动

AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext();ac.refresh();ac.register(CycleConfig.class);Spring bean工厂的后置处理器流程图

2020-08-08 12:40:34 183

原创 Netty执行任务队列

runAllTasks(ioTime * (100 - ioRatio) / ioRatio); /** * 轮询任务队列中的所有任务,并通过{@link Runnable#run()}方法运行它们。此方法停止运行 * 任务队列中的任务,如果运行时间超过{@code timeoutNanos},则返回。 */ protected boolean run...

2020-05-02 19:28:50 401

原创 processSelectedKeys

private void processSelectedKeys() { if (selectedKeys != null) { processSelectedKeysOptimized(); } else { processSelectedKeysPlain(selector.selectedKeys()); ...

2020-05-02 18:53:44 366

原创 NioEventLoop的轮训事件

直接看代码: //事件循环 @Override protected void run() { for (;;) { try { try { //hasTasks() 若taskQueue or tailTasks任务队列中有任务 返回false 没有则返回...

2020-05-02 17:33:27 269

原创 Netty优雅退出机制shutdownGracefully源码分析

使用netty开发的小伙伴对netty下面这两句代码应该非常熟悉了,netty的优雅退出机制bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();首先看其中的shutdownGracefully()方法,其中的参数quietPeriod为静默时间,timeout为截止时间,第三个参数是TimeUnit uni...

2020-05-02 16:16:02 879

原创 NioEventLoopGroup的初始化

NioEventLoopGroup我们先看下类图NioEventLoopGroup workGroup = new NioEventLoopGroup();public NioEventLoopGroup() { this(0); } public NioEventLoopGroup(int nThreads) { this(nTh...

2020-05-02 15:38:19 359

原创 Netty新连接的接入

新连接的建立可以分为三个步骤1.检测到有新的连接2.将新的连接注册到worker线程组3.注册新连接的读事件检测到有新连接的接入我们已经知道,当服务端启动后,服务端channel已经注册到boss reactor线程中,reactor不断检测有新的事件,直到检测出有accept事件发生NioEventLoop.java private void processS...

2020-05-01 21:16:40 170

原创 spring5.1源码编译

1.安装环境配套Gradle 5.6.2+java version "1.8.0_181"+IDEA 2019.2.3+spring framework5.1.x2.从github上下载压缩包,解压到本地3.然后导入到IDEA中,进行编译4.如果环境没有问题应该可以编译通过5.然后跑一下spring-core单元测试下载cglib的jar包...

2019-10-29 08:58:50 409 1

原创 spring的BeanDefinition学习总结

1.BeanDefinition类结构图及属性图如下 1.1 类关系图 ...

2019-10-28 09:29:22 268

原创 模拟JDK动态代理

package dumu.test.proxy.demo;import javax.tools.JavaCompiler;import javax.tools.StandardJavaFileManager;import javax.tools.ToolProvider;import java.io.File;import java.io.FileWriter;import jav...

2019-10-28 09:15:25 98

原创 从源码角度理解ClassLoader

双亲委派模式工作原理双亲委派模式要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器,请注意双亲委派模式中的父子关系并非通常所说的类继承关系,而是采用组合关系来复用父类加载器的相关代码,类加载器间的关系如下:双亲委派模式是在Java 1.2后引入的,其工作原理的是,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行

2018-02-03 15:18:55 251

原创 2.菜鸟总结spring源码——获取Document

1.上一篇文档大概回顾了Resource resource = new ClassPathResource("beanFactoryTest.xml")的加载机制;   本次回顾从BeanFactory factory = new XmlBeanFactory(resource);这句话开始;   public XmlBeanFactory(Resource resource, BeanF

2018-01-29 21:30:57 280

原创 1、菜鸟Spring源码解析总结——Resource

spring学习Resource总结1.spring  Resource中类关系图;  2.在日常的开发工作中,资源文件的加载,可以直接使用Spring提供的类,比如:  Resource resource = new ClassPathResource("name")  InputStream inputStream = resource.getInputStre

2018-01-28 19:32:25 266

原创 mybatis的理解

学习深入浅出Mybatis技术原理与实战的总结第一章:Mybatis简介:Hibernate和Mybatis的对比1:Hibernate 对JDBC封装程度比较高,我们不需要SQL语言,只要使用HQL语言就行了,Herbernate是全表映射,Hibernate屏蔽了SQL,那意味着只能进行全表映射,如果一个表有上百个字段,如果需要只有两个,这样Hibernate就无法进行适应;全

2017-10-07 20:43:31 1583

空空如也

空空如也

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

TA关注的人

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