- 博客(17)
- 收藏
- 关注
原创 第一章、创建和销毁对象
类中提供一个公有的静态工厂方法(),只返回类的实例。如来自 Boolean 的简单示例1、可以拥有名称当一个类需要多个带有相同方法签名的构造器时,就用静态工厂方法代替构造器,并且仔细选择名称不可变类可以使用预先构建好的实例,进行重复利用,避免创建不必要的重复对象。如 方法,不创建对象,类似享元模式。如果程序要求创建相同对象,并且创建对象的代价很高,这种方法可以极大的提升性能。???todo如 没有公有的构造器,只有静态工厂方法,返回两个子类之一的实例,具体取决于底层枚举类型的大小这两个实现类对于客
2022-06-05 23:06:46 604
原创 2、Reactor核心
Flux,an Asynchronous Sequence of 0-N ItemsFlux 是通用反应类型. 请注意,所有事件,包括终止事件,都是可选择的。如没有onNext 事件,但是有一个 onComplete 事件 表示一个有限空序列,如果移除 onComplete 事件,表示一个无限空序列同样,无限序列不一定是空的。例如,Flux.interval(Duration) 产生一个Flux<Long>,无限的并从时钟发出定期滴答声。Monoan Asynchronous 0-
2022-05-29 23:57:00 371 1
原创 1、响应式编程基础概念
为了实现更高的资源利用率,使用异步非阻塞交互模型背压是指处理模块之间工作负载的一种机制,保证不会压垮下一个模块观察者模式(Observer Pattern)定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。examplepublic interface Observer { void update(String event);}class Subject { private final List<Observ
2022-05-28 22:38:23 199
原创 如何决定Spring中Bean的加载顺序
resources目录下创建META-INF,在META-INF目录下创建spring.factories这个文件org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.spring.java.webflux.DemoConfiguration举个荔枝使用reactor进行web开发,里面有个webHandler有默认的bean,如果想要加载自己的Bean就需要配置上面的Configuration...
2022-05-25 21:04:03 499
原创 WebFilter 和 WebFilterChain
/** * 一个拦截风格的约定, Web 请求链式过程中, 用于实现横向剪切点应用系统必要的要求,比如安全,耗时等 */public interface WebFilter { /** * Process the Web request and (optionally) delegate to the next * {@code WebFilter} through the given {@link WebFilterChain}. * @param exchange the cu.
2022-05-25 20:56:26 651
原创 webHandler
webHandler默认webHandler实现是DispatcherHandler@Beanpublic DispatcherHandler webHandler() { return new DispatcherHandler();}
2022-05-25 20:56:11 636
原创 第十章、DruidDataSource.connections是按照什么排序的
com.alibaba.druid.pool.DruidDataSource#connections
2022-05-21 00:29:57 227
原创 第九章、销毁线程的 shrink 方法
com.alibaba.druid.pool.DruidDataSource#shrink(boolean, boolean)
2022-05-19 23:42:46 170
原创 第八章、removeAbandoned 连接池泄露检测
com.alibaba.druid.pool.DruidDataSource#removeAbandoned
2022-05-19 00:07:54 1044
原创 第七章、testWhileIdle、testOnBorrow、testOnReturn 在探活的应用
很有用的三个参数testwhileie,这个如果空闲时间大于一个参数,就执行validationsql检测连接是否有效,另外两个分别是借出和归还时对交接进行检验我们聊聊为什么会有量的探活语句出现。探活机制实际上是数据源连接池通的种检测机制,可以检测连接池内的连接对象是否真的可。拿Druid连接池举例,探活SQL是通过数据源的 validationQuery 属性配置的。与之相关的配置属性还有:testOnBorrow testWhileIdle testOnReturn timeBetweenEvict
2022-05-18 00:22:03 771
原创 第六章、StatementProxyImpl、PreparedStatementProxyImpl、ConnectionProxyImpl逻辑梳理
DruidConnectionHolder 的个数就是连接池中资源的总个数,DruidConnectionHolder中最重要的两个参数DruidAbstractDataSource dataSource = DruidDataSource 和 Connection conn = ConnectionProxyImpl , 理论上来说,DruidConnectionHolder 公用同一个DruidDataSource,各自包含一个 ConnectionProxyImpl#mermaid-sv
2022-05-14 23:56:49 528
原创 第五章、DruidDataSource的init方法中三只线程
目录前言一、createAndLogThread二、createAndStartCreatorThread三、createAndStartDestroyThread总结前言在执行DruidDataSource的init方法中,会开启三个线程去做某些事情, 这篇文章主要分析一下,这三个方法CountDownLatch initedLatch = new CountDownLatch(2);createAndLogThread();createAndStartCreatorThread(); //
2022-05-14 16:05:37 501
原创 第四章、DruidPooledConnection中的close方法
文章目录前言一、close方法二、DruidPooledConnection#recycle三、DruidDataSource#recycle四、DruidDataSource#putLast总结前言Connection使用完成之后,执行关闭方法后,重新资源池中,资源利用一、close方法 public void close() throws SQLException { if (this.disable) { return; }
2022-05-14 00:52:16 1429
原创 第三章、获取DruidPooledConnection真正的方法
DruidDataSource中的getConnectionInternal 方法private DruidPooledConnection getConnectionInternal(long maxWait) throws SQLException { if (closed) { connectErrorCountUpdater.incrementAndGet(this); throw new DataSourceClosedExcept
2022-05-13 00:24:58 680
原创 第二章、DruidDataSource 和 DruidAbstractDataSource
文章目录一、DruidAbstractDataSource二、DruidDataSource总结一、DruidAbstractDataSource protected ReentrantLock lock; protected Condition notEmpty; protected Condition
2022-05-11 22:33:09 900
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人