common pool 源码分析

【common pool 源码分析】common pool.jar , commoncollections.jar .commons-dbcp.jar,1关于commons pool和commonsdbcp版本,之前的项目一直使用commons,升级到jedis2.5.1.jar后,jedis中使用的池依赖由原来的commonspool1.6 . jar改 。

1、超详细的线程池使用解析Java中的线程池是应用最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用 。合理使用线程池可以带来很多好处:(1)减少资源消耗 。通过重用已创建的线程,减少线程创建和销毁造成的消耗 。(2)提高响应速度 。当处理一个执行任务时,该任务可以立即执行,而不需要等待线程的创建 。(3)提高线程可管理性 。线程是稀缺资源 。如果无限制地创建它们 , 不仅会消耗系统资源,还会降低系统的稳定性 。线程池可用于统一分配、调优和监控 。

2、[Netty 源码 分析]ByteBuf(一ByteBuf通过两个指针辅助读写操作 。readerIndex用于读操作,writerIndex用于写操作 。writerIndex的初始值为0,写数据时增加,读数据时增加 。但是 , readerIndex不会超过writerIndex 。读取后 , 0 0readerIndexes之间的空格被视为丢弃 。调用discardReadByte方法可以释放这个空间,类似于ByteBuffer的compact方法 。readerIndexwriterIndex之间的数据是可读的 。相当于ByteBuffer中positionlimit之间的数据 。writerIndexcapacity之间的空格是可写的,相当于ByteBuffer中limitcapacity之间的空格 。读只影响readerIndex,写只影响writerIndex,读写之间不需要调整指针位置 。所以相对于NIO ByteBuffer,可以大大简化读写操作,调用disca 。

3、Druid连接池 源码解析(1DruidDataSource是整个连接池的基本入口,实现了JDBC的DataSource参数来控制锁的公平性 。默认的假不公平configFromPropety方法从配置中初始化各种配置属性 , 有很多属性 。浏览后可以看看super的构造函数 。定义锁的状态,然后调用init()方法初始化init,这个过程非常长 。主要做以下几件事:主链接getConnectionDirect(maxwaitmillis)> getConnectionInternal(maxwaitmillis)> createphysicalconnection()> DruidConnectionHolder > poll last()未能重新创建a > newDruidConnectionHolder(这个,

4、Webpack打包流程细节 源码解析(P2本博客紧随上一篇,上一篇讨论了我们的webpack处理单个文件的整个过程 。本节主要讲的是webpack的文件打包问题,这个问题本身其实是比较简单的,但是加入了异步块和htmlplugin,这个步骤就变得特别复杂了 。这里有几个重要的概念:在上一节中,我们成功地处理了每个文件 。通过process方法处理所有的入口文件及其依赖文件 , 得到依赖文件的初始列表 。现在我们可以优化资源的依赖性 。本片的内容将从webpack/lib/Compiler.js:510的断点开始,逐渐向源码proceed分析before seal展开 。因为一轮编译已经完成,所以调用finish方法来完成处理 , 这对应于我们注册的finishmodules事件 。这里我们首先看到的是老朋友index.ejs,由于他是一个已经被加载器处理过的独立文件,不依赖于额外的处理函数,所以这里我们最后看到的模块其实是一个包装在其JS shell中的ejs文件,这个阶段还没有注入资源hash 。这里有一个 。

    推荐阅读