1.源码详解系列(四) ------ DBCP2的使用和分析(包括JNDI和JTA支持)已停更
2.Spring Boot 2.5 终于对数据源动刀了!
3.TCMSP数据库快速筛选
4.RxDataSource 使用套路与解释
源码详解系列(四) ------ DBCP2的使用和分析(包括JNDI和JTA支持)已停更
DBCP是一个用于创建和管理数据库连接的工具,通过连接池复用连接以减少资源消耗。它具备连接数控制、连接有效性检测、连接泄露控制和缓存语句等功能。android 12306源码Tomcat内置连接池、Spring团队推荐使用DBCP,阿里巴巴的druid也是基于DBCP开发的。 DBCP支持通过JNDI获取数据源,并且可以获取JTA或XA事务中的连接对象,用于两阶段提交(2PC)的事务处理。本篇文章将通过例子来解释如何使用DBCP。 以下是文章的详细内容:使用例子需求
本例将展示如何使用DBCP连接池获取连接对象,并进行基本的增删改查操作。工程环境
JDK:1.8.0_
maven:3.6.1
IDE:eclipse 4.
mysql-connector-java:8.0.
mysql:5.7.
DBCP:2.6.0
主要步骤
创建Maven项目,打包方式为war(war也可以是jar,这里选择war是为了测试JNDI功能)。
引入DBCP相关依赖。
在resources目录下创建dbcp.properties文件,配置数据库连接参数及连接池基本参数。欢乐渔场源码
编写JDBCUtils类,实现初始化连接池、获取连接、管理事务和资源释放等功能。
创建测试类,实现基本的增删改查操作。
配置文件详解
dbcp.properties文件包含数据库连接参数和连接池基本参数,如数据库URL、用户名、密码、连接池大小等。其中,数据库URL后面添加了参数以避免乱码和时区问题。建议根据项目需求调整参数设置。基本连接属性
数据库URL
用户名
密码
连接池大小
缓存语句(在MySQL下建议关闭)
连接检查参数(建议开启testWhileIdle,避免性能影响)
事务相关参数(通常使用默认设置)
连接泄漏回收参数
其他参数(较少使用)
源码分析
DBCP主要涉及以下几个类:BasicDataSource:提供基本的数据库操作数据源。
BasicManagedDataSource:BasicDataSource的子类,用于创建支持XA事务或JTA事务的连接。
PoolingDataSource:BasicDataSource中实际调用的数据源,用于管理连接。在线记账php源码
ManagedDataSource:PoolingDataSource的子类,用于支持XA事务或JTA事务的连接。
使用DBCP连接池创建连接时,首先创建BasicDataSource对象,初始化配置参数。然后从连接池中获取连接。连接获取过程涉及到数据源和连接池的创建,连接对象的包装和回收。通过JNDI获取数据源对象需求
使用JNDI获取DBCP数据源对象,以PerUserPoolDataSource和SharedPoolDataSource为例。为了在tomcat容器中测试,需要配置JNDI上下文。引入依赖
引入JNDI相关的依赖。
编写context.xml文件,配置JNDI上下文。
在web.xml中配置资源引用,将JNDI对象与web应用绑定。
测试结果
打包项目并部署到tomcat上运行,通过访问指定的jsp页面,验证JNDI获取数据源对象的翻倍暴涨指标源码正确性。使用DBCP测试两阶段提交
介绍如何使用DBCP实现JTA事务的两阶段提交(2PC)。使用DBCP的BasicManagedDataSource类支持事务处理。通过测试代码验证了2PC的正确性。 以上内容涵盖了DBCP的使用、配置、源码分析、JNDI集成以及两阶段提交的实现,为开发者提供了全面的参考。Spring Boot 2.5 终于对数据源动刀了!
Spring Boot 2.5 的更新中,数据源配置方式发生重大变动。原来使用的 spring.datasource.* 参数被废除,取而代之的是 spring.sql.init.*。在将项目升级至 Spring Boot 2.5 并尝试更改数据源配置时,却遇到了启动失败的问题。仔细查看源码后发现,数据源参数绑定类的前缀仍为 spring.datasource,而非预期中的 spring.sql.init,导致混淆。
深入分析后得知,微架构框架源码spring.sql.init 参数实际上用于初始化 SQL 数据库,如新建表、初始化表数据,而并非初始化数据源。这意味着数据源与数据库连接的建立与 SQL 数据库的初始化是两个独立的概念,新参数是为了明确区分这两个操作。
理解这一差别后,为验证新机制的正确性,添加了数据源和 SQL 初始化参数,并创建了对应的 SQL 文件。通过启动项目,验证了表的创建和数据的插入,结果与预期一致。
总结而言,Spring Boot 2.5 引入了新的参数前缀 spring.sql.init,用于 SQL 数据库初始化,旨在清晰区分数据源与数据库连接相关的配置。在升级 Spring Boot 时,开发者需要注意这一变动,以便正确配置初始化参数。
TCMSP数据库快速筛选
了解TCMSP数据库快速筛选的方法,首先需下载数据。搜索你感兴趣的中药,输入其中文名称,进入结果页后,右键查看源代码。在源代码中搜索"datasource",定位到第一个出现的位置,复制从"data :"后至"pageSize:"前的所有内容,包括方括号。这是获取数据的关键步骤。
接下来,将复制的数据粘贴到JSON转Excel-UU在线工具中。首先使用该工具将数据转换为Excel格式,点击相应的按钮完成转换。转换完成后,下载生成的Excel文件,即完成了数据的基本获取与转换。
得到Excel文件后,打开并查看所有数据,进行下一步筛选。设定筛选条件:ob值需大于或等于,dl值需大于或等于0.。由于直接筛选时可能只显示文本结果,需要在ob列后新增一列。在新增列的首单元格输入公式"=E2*1"(假设E2为ob值所在列),按Enter确认,此操作将文本转换为数值。接着,将光标置于新出现的数字单元格右下角,出现十字后双击,以填充后续单元格,自动完成数值化。
筛选完成数值化操作后,选择F列(假设F列为ob值所在列)进行筛选。在Excel菜单栏选择"开始"选项卡,点击"筛选",进入数字筛选模式。输入筛选条件,点击确定,完成ob值的筛选。接着,对dl值重复上述筛选过程,以获取满足条件的数据。
最后,注意查看目标名称(target name)信息。在源代码中,它位于datasource后的部分。在筛选数据时,你可以根据需要调整此信息以获取特定的筛选结果。
RxDataSource 使用套路与解释
RxSwift 提供的强大能力使得应用开发变得更加流畅且高效。在处理列表视图的数据更新时,`RxDataSource` 成为了一个得力助手。以两表关联为例,假设存在一个主列表(左侧)和一个从列表(右侧),它们之间存在数据关联。主列表中的项对应从列表中的多条数据。
传统实现中,代码逻辑可能显得较为低效,通常在数据更新至特定单元格时触发操作。然而,这种实现方式并不优雅。若采用面向对象的方式,通过调用特定方法,例如在数据更新完毕后直接选择第一个单元格,可以提高代码的可读性和可维护性。
`RxDataSource` 设计理念清晰,它通过泛型指定每个列表视图段的数据结构,并引入了一个闭包 `configureCell`,用于自定义单元格的配置。源代码中,首先通过 `precondition` 确保索引的有效性,然后调用 `configureCell` 方法,体现了 Swift 中函数作为一级公民的特性。
为了改进代码逻辑,可以考虑继承 `TableViewSectionedDataSource`,创建自定义子类,以适应特定需求。在更新数据之后,调用 `PublishRelay` 来处理事件传递,以优化调用时机。这里,`PublishRelay` 的使用相较于 `PublishSubject` 更为精简,适用于特定场景。
引入 `Signal` 与 `SharedSequence` 的概念,进一步提升代码的可读性和功能性。这些工具封装了 `Observable`,在主线程执行操作,更适于 UI 相关的响应。通过这些优化,代码的语义更加明确,实现了声明式编程的特点,即直接表达意图,减少状态的过度调整。
为了提供一个易于理解的示例,相关代码已经被整合至 CODING - 一站式软件研发管理平台,方便开发者直接下载和运行,无需额外配置。