大树先生
码龄8年
  • 149,973
    被访问
  • 72
    原创
  • 496,822
    排名
  • 118
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2014-07-20
博客简介:

大树的学习之路

查看详细资料
个人成就
  • 获得136次点赞
  • 内容获得40次评论
  • 获得431次收藏
创作历程
  • 11篇
    2018年
  • 12篇
    2017年
  • 25篇
    2016年
  • 14篇
    2015年
  • 21篇
    2014年
成就勋章
TA的专栏
  • Android
    1篇
  • ACM
    20篇
  • JavaEE
    18篇
  • java
    22篇
  • 数据结构与算法
    8篇
  • 设计模式
    10篇
  • 网络
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【啃啊啃 Spring5 源码】细碎四:核心类总结

阅读spring源码时,有许多 “核心类” 的作用我们了解了,才会阅读的更顺畅。这里总结下我阅读源码时认为比较重要,需要了解的一些 “核心类”注:本文前三节 为参考【Spring4揭秘 基础2】PropertySource和Enviroment系列文章,进行的总结扩展1. 资源配置相关1.1 Resourcepublic interface Resource exten...
原创
发布博客 2018.09.09 ·
395 阅读 ·
1 点赞 ·
0 评论

【啃啊啃 Spring5 源码】细碎三:AOP两种动态代理的区别

spring 中 AOP是基于 “动态代理” 实现,其采用了两种方式:java代理:采用java内置的代理API实现cglib代理:采用第三方API实现本文主要阐述这两种方式的区别动态代理和静态代理静态代理:编译时将增强代码植入class文件,因为是编译期进行的增强,所以代码运行时效率比动态代理高。使用Aspect可以实现静态代理。动态代理:运行时生成代理类并加载,效...
原创
发布博客 2018.08.19 ·
631 阅读 ·
0 点赞 ·
0 评论

【Java并发学习五】图解ThreadLocal

简单整理下ThreadLocal的原理,以及它需要注意的内存泄漏。ThreadLocal原理ThreadLocal不多介绍,可看作线程内的局部变量(这个比喻很贴切)。我们平时声明的局部变量的范围一般是方法内的,而ThreadLocal变量的范围是整个线程。我们先来看一段代码demo:public class Test { //可看作线程内声明的局部变量 st...
原创
发布博客 2018.07.29 ·
1256 阅读 ·
1 点赞 ·
1 评论

【啃啊啃 Spring5 源码】细碎二:bean的循环依赖

循环依赖所谓循环依赖,是指在spring中,类A中有一个成员变量为类B,而类B中也有一个成员变量为类A。这会造成在spring初始化容器中的bean时,bean A的初始化需要bean B的初始化的完成,而bean B的初始化又需要bean A初始化的完成。A与B间形成了循环依赖: 循环依赖的解决spring中,循环依赖的解决是有条件的:仅限于singleton(单例)作用域...
原创
发布博客 2018.07.29 ·
565 阅读 ·
0 点赞 ·
1 评论

【Java并发学习四】如何实现一个定时线程池

在【Java并发学习一】如何实现一个线程池上进行扩展,我们想一下如何实现一个定时任务线程池呢?所谓 “定时任务线程池” 就是指放入线程池的任务,可以按照指定的等待周期循环执行。Java里面ScheduledThreadPoolExecutor这个类实现了这种功能。Spring里面的定时任务也是在ScheduledThreadPoolExecutor的基础上扩展而来。如何实现我们...
原创
发布博客 2018.07.18 ·
5773 阅读 ·
0 点赞 ·
0 评论

@Async、@Transational、AOP 方法内部调用失效的解决方法

遇到过 方法A 内调用Aop修饰的方法B 失效、方法A 内调用@Async修饰的方法C 失效,百度谷歌都没看到一个好的解决,这里分享一个我的解决方案。为什么失效这个百度上很多解答,分析的也很好,其实就是Spring代理机制造成的。简单的说,就是通过spring容器获取的类对象,很多情况下并不是原类,而是被spring修饰过了的代理类。例如你执行 A类对象的方法A.invoke(...
原创
发布博客 2018.07.16 ·
3027 阅读 ·
7 点赞 ·
1 评论

【啃啊啃 Spring5 源码】细碎一:spring 事件机制

学习spring源码时,看到ApplicationEvent相关的代码觉得熟悉又困惑,深入了解了一下,发现原来是spring事件机制(原谅我之前没用过……)。 这里在【Spring4揭秘 基础1】监听器和事件的基础下进行一下扩展,感谢这篇博文的作者,他的spring基础系列文章让我在阅读源码时,轻松了不少。注:源码部分根据spring-5.0.7版本分析spring事件机制sprin...
原创
发布博客 2018.07.06 ·
745 阅读 ·
0 点赞 ·
1 评论

【Java并发学习三】内存屏障与synchronized、volatile的原理

注:本文内容会有部分涉及上节的硬件知识:【Java并发学习二】多线程编程的硬件基础知识总结1. 内存屏障上一节讲过,为了解决写缓冲器和无效化队列带来的有序性和可见性问题,我们引入了内存屏障。内存屏障是被插入两个CPU指令之间的一种指令,用来禁止处理器指令发生重排序(像屏障一样),从而保障有序性的。另外,为了达到屏障的效果,它也会使处理器写入、读取值之前,将写缓冲器的值写入高速缓存,...
原创
发布博客 2018.06.27 ·
2313 阅读 ·
1 点赞 ·
4 评论

【Java并发学习二】多线程编程的硬件基础知识总结

这篇简单梳理下与多线程相关的硬件知识,了解它们能够让我们更清晰的了解多线程工作的本质,以及关键字synchronized、volatile、final的实现原理。我们会发现,每一个硬件部件的引入都是为了解决某些问题,然后它们又诞生了新的问题。(程序员就处在这样的永无止境的循环中……)高速缓存1. 缓存概念先来说说缓存的概念,现在的处理器运行速度远大于内存的读写速度的,为了填...
原创
发布博客 2018.04.22 ·
426 阅读 ·
1 点赞 ·
0 评论

Simple Java—Compiler and JVM(二)为什么域不能被“重写”

为什么域不能被重写这篇文章解释了Java中的一个基础概念——隐藏域1. Java中域能被重写吗?让我们看一下下面的例子package oo;class Super { String s = "Super";}class Sub extends Super { String s = "Sub";}public class FieldOverri...
原创
发布博客 2018.04.16 ·
181 阅读 ·
0 点赞 ·
0 评论

【Java并发学习一】如何实现一个线程池

前言和设计模式一样,打算花三个月的时间,结合《Java并发编程实战》一书,来总结下并发方面的知识。第一章从线程池的原理开始总结,希望自己能坚持下来,加油!1. 如何实现一个线程池?线程池的概念这里不多说,在讲它的原理前,我们先自己想一下,如果我来写,那如何实现一个线程池?1.1 线程池的重要变量首先要定义一个存放所有线程的集合; 另外,每有一个任务分配给线程池,我们就
原创
发布博客 2018.01.17 ·
12028 阅读 ·
11 点赞 ·
2 评论

分布式基础-RMI原理简单通俗版

RMI原理
原创
发布博客 2017.10.10 ·
429 阅读 ·
0 点赞 ·
0 评论

Head First 设计模式(十)状态模式

状态模式,状态模式与策略模式的区别
原创
发布博客 2017.06.14 ·
1098 阅读 ·
1 点赞 ·
5 评论

Head First 设计模式(九)迭代器与组合模式

迭代器模式定义组合模式
原创
发布博客 2017.04.24 ·
976 阅读 ·
1 点赞 ·
0 评论

Head First 设计模式(八)模板方法模式

模板方法模式
原创
发布博客 2017.04.17 ·
860 阅读 ·
0 点赞 ·
0 评论

Head First 设计模式(七)适配器模式和外观模式

适配器模式和外观模式的实例模式
原创
发布博客 2017.04.13 ·
328 阅读 ·
0 点赞 ·
0 评论

Head First 设计模式(六)命令模式

用例子说明命令模式
原创
发布博客 2017.04.11 ·
290 阅读 ·
0 点赞 ·
0 评论

Head First 设计模式(五)单件模式

单件模式总结
原创
发布博客 2017.04.08 ·
505 阅读 ·
0 点赞 ·
1 评论

Head First 设计模式(四)装饰者模式

装饰者模式
原创
发布博客 2017.04.06 ·
310 阅读 ·
0 点赞 ·
0 评论

Head First 设计模式(三)工厂模式

工厂模式详解
原创
发布博客 2017.04.02 ·
423 阅读 ·
0 点赞 ·
0 评论
加载更多