自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis-spring 源码分析之 Mapper Bean

MapperScannerConfigurer 实现BeanDefinitionRegistryPostProcessor 而该类有继承了BeanFactoryPostProcessor 即Spring的拓展点之一在实例化之前可以做一些事情,比如这里的扫描dao的描述对象BeanDefinition注册到工厂中,剩下的活就交由Spring来创建Dao对象了。 而然很遗憾BeanFactoryPos...

2019-02-28 22:31:55 371

原创 设计模式---职责链模式

职责链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。将这些对象连成一条链,沿着这条链传递该请求,直到有一个对象处理为止。public abstract class Handler { protected Handler handler; public void setHandler(Handler handler) { ...

2019-02-28 12:39:39 70

原创 Spring---FactoryBean

一般情况下,Spring通过反射机制利用<bean>的class属性指定实现类实例化Bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在<bean>中提供大量的配置信息。配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。Spring为此提供了一个org.springframework.bean.factory.FactoryB...

2019-02-27 23:05:46 77

原创 设计模式---迭代器模式

迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 public interface Iterator<T> { public T next(); public boolean isDone(); public T currentItem();}  public class Concrete...

2019-02-27 13:37:00 77

原创 Kafka --- 时间轮

Kafka 时间轮:    附上 kafka 官网介绍 https://www.confluent.io/blog/apache-kafka-purgatory-hierarchical-timing-wheels/         源码部分: // tickMs 当前时间轮中一个时间格表示的时间跨度// wheelSi...

2019-02-27 13:33:28 275 1

原创 Spring ConfigurationClassParser 详解

        Spring的 ConfigurationClassParser 用于分析@Configuration注解的配置类,产生一组ConfigurationClass对象。它的分析过程会接受一组种子配置类(调用者已知的配置类,通常很可能只有一个),从这些种子配置类开始分析所有关联的配置类,分析过程主要是递归分析配置类的注解@Import,配置类内部嵌套类,找出其中所有的配置类,然后返回这...

2019-02-27 12:09:51 1382

原创 Spring EnableAutoConfigurationImportSelector 详解

EnableAutoConfigurationImportSelector ,从 spring boot 1.5 以后,EnableAutoConfigurationImportSelector已经不再被建议使用,而是推荐使用 AutoConfigurationImportSelector。源头:@SpringBootApplication—> @EnableAutoConfigura...

2019-02-27 11:46:01 1192 1

原创 JUC 之 CountDownLatch 源码分析

CountDownLatch用于同步一个或多个任务,强制他们等待由其他任务执行的一组操作完成。源码分析:CountDownLatch没有显示继承哪个父类或者实现哪个父接口,那么其父类是Object。 private static final class Sync extends AbstractQueuedSynchronizer { // 版本号 pri...

2019-02-22 00:03:51 84

原创 JUC 之 Semaphore 源码分析

Semaphore 主要用于限量控制并发执行代码的工具类, 其内部通过 一个 permit 来进行定义并发执行的数量。/** * 使用非公平版本构件 Semaphore */public KSemaphore(int permits){ sync = new NonfairSync(permits);}/** * 指定版本构件 Semaphore */public KS...

2019-02-21 23:39:14 117

原创 设计模式---命令模式

命令模式:将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。public abstract class Command { protected Receiver receiver; public Command(Receiver receiver) { this.receiver = receive...

2019-02-21 23:20:55 65

原创 CacheBuilder之LoadingCache

LoadingCache是Cache的子接口,相比较于Cache,当从LoadingCache中读取一个指定key的记录时,如果该记录不存在,则LoadingCache可以自动执行加载数据到缓存的操作。与构建Cache类型的对象类似,LoadingCache类型的对象也是通过CacheBuilder进行构建,不同的是,在调用CacheBuilder的build方法时,必须传递一个CacheLoa...

2019-02-21 22:19:05 1246

原创 设计模式---解释器模式

解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子public interface Expression { public void interpreter(Context context);}public class Context { private String out; public Strin...

2019-02-20 12:45:11 79

原创 设计模式---备忘录模式

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到以前保存的状态。public class Memento { private String state; public Memento(String state) { this.state = state; } public S...

2019-02-19 23:30:43 78

原创 线程池---如何保证核心线程不被销毁的

问题:1.线程池是怎么保证他的核心线程不释放 而一直等待任务的执行的呢?2.我们一直理解的线程run方法执行完毕线程就销毁是不正确的?3.还有我们为何通过设置allowCoreThreadTimeOut(true) 就能使核心线程销毁的呢?答案:1.线程阻塞2.和那个关系不大3.可以的有兴趣的话,可以看看下面的源码分析:从 exexute 方法开始:public void ex...

2019-02-19 21:08:01 7723 7

原创 设计模式---状态模式

状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了它的类。状态接口:public interface State { public void handle(Context context);}状态上下文:public class Context { private State state; public Context(State ...

2019-02-18 15:07:09 49

原创 设计模式---访问者模式

访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者:public interface Visitor { void visit(Course course);}访问者具体的实现:public class VisitorImpl implements Visitor { @Override ...

2019-02-18 14:47:33 68

原创 Netty之时间轮

一个Hash Wheel Timer是一个环形结构,可以想象成时钟,分为很多格子,一个格子代表一段时间(越短Timer精度越高),并用一个List保存在该格子上到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应List中所有到期的任务。任务通过取模(实际是通过位运算)决定应该放入哪个格子。假设一个格子是1秒,则整个wheel能表示的时间段为8s,假如当前指针指向2,此时需要调度一个...

2019-02-16 00:53:40 2536

原创 Flink入门及运行

入门级程序public class SocketWindowWordCountJava { public static void main(String[] args) throws Exception { //获取 flink 的运行环境 StreamExecutionEnvironment env = StreamExecutionEnvironm...

2019-02-02 22:40:49 1407 2

空空如也

空空如也

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

TA关注的人

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