当前位置: 首页 > news >正文

HikariCP源码分析之源码环境搭建

一、fork源码库

为了方便记录以及查看一些历史的提交信息,我先在github上fork了这个源码库。
他的原始源码库位置为HikariCP源码位置
在fork到我的源码库之后,我就可以用git clone拉取下来,然后在我本地打开,做一些修改和笔记。然后提交到我自己的源码库上面了。
这样比起你直接下载源码zip包的好处就是,你可以看到每一行代码的提交信息,得以知道他们提交的时候修改了什么以及提交的注释等等。
在这里插入图片描述

二、clone源码,编译运行

使用git clone命令把源码拉取到本地,然后用idea打开。
打开之后常规操作,设置maven库位置,设置jdk版本等等一堆事情。

三、修改依赖,引入mysql驱动

在测试之前,我们先看一眼他的pom文件,我们发现没有mysql的依赖。他默认的是pg。
在这里插入图片描述
而我本地没有pg的服务,所以我又引入了一个mysql的驱动。不然没法读取我的表。
在这里插入图片描述
此时我们就具备了一切前置工作。

四、编写测试类,运行测试

我新建了一个包,下面写一个demo类。

public class Demo {private static final String querySql = "select * from file_info where id=94";public static void main(String[] args) throws SQLException {// // 获取数据源,执行sql,输出执行结果HikariDataSource ds = getDs();Connection connection = ds.getConnection();PreparedStatement preparedStatement = connection.prepareStatement(querySql);try(ResultSet resultSet = preparedStatement.executeQuery()) {while (resultSet.next()){System.out.println(resultSet.getMetaData().getColumnName(1));System.out.println(resultSet.getMetaData().getColumnName(2));System.out.println(resultSet.getMetaData().getColumnName(3));System.out.println(resultSet.getMetaData().getColumnName(4));}}}// 获取数据源public static HikariDataSource getDs() {HikariConfig hikariConfig = new HikariConfig();hikariConfig.setJdbcUrl("jdbc:mysql://ip:3306/表名?useUnicode=true&useSSL=false&characterEncoding=utf8");hikariConfig.setUsername("root");hikariConfig.setPassword("123456");hikariConfig.setMaximumPoolSize(10);hikariConfig.setMinimumIdle(5);hikariConfig.setLeakDetectionThreshold(2000);hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");return new HikariDataSource(hikariConfig);}
}

然后启动即可,我们预期是输出我们这个表的前四列的名字。然后发现报错了。
You need to run the CLI build and you need target/classes in your classpath to run.
这是我没有编译我的源码,编译一下就好了。简单编译,绕过测试类。
这个问题在github上的issues列表,开源作者也有描述。启动异常issues
在这里插入图片描述
此时就发现可以正常输出了。
在这里插入图片描述
而且和我数据表的字段是对的上的。
在这里插入图片描述
此时,我们的源码阅读第一步,搭建环境就完成了。我们提交一下代码区github,看看能不能提交上去。

五、提交改动

git commit push就OK了,就提交到你fork的本地库了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 优化MySQL性能的方法
  • C#知识|语法拾遗:分支结构、循环
  • spark-sql 写入paimon主键表报错 Cannot write nullable values to non-null column
  • MegaCLI和H750阵列卡不匹配导致的服务夯死
  • 第二证券:两融账户开通需要的条件?证券两融开户?
  • Android中几种线程交互方式
  • uniapp开发安卓app--安卓低版本(4.4)不显示echarts图表问题解决思路
  • DataX
  • ES6 -- 总结 03
  • Linux网络编程——C/C++Web服务器(二):IO多路复用select/poll/epoll实现服务器监听多客户端事件
  • Java 使用 POI 导出Excel,实现单元格内容为下拉选项
  • 《计算机操作系统》(第4版)第10章 多处理机操作系统 复习笔记
  • Elasticsearch对象映射
  • 神经网络算法 - 一文搞懂Back Propagation(反向传播)
  • js去重的方法
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • Akka系列(七):Actor持久化之Akka persistence
  • Java多态
  • spring boot下thymeleaf全局静态变量配置
  • STAR法则
  • Travix是如何部署应用程序到Kubernetes上的
  • uva 10370 Above Average
  • webgl (原生)基础入门指南【一】
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 测试如何在敏捷团队中工作?
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 翻译:Hystrix - How To Use
  • 复杂数据处理
  • 好的网址,关于.net 4.0 ,vs 2010
  • 蓝海存储开关机注意事项总结
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端之React实战:创建跨平台的项目架构
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 主流的CSS水平和垂直居中技术大全
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​如何使用QGIS制作三维建筑
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #laravel 通过手动安装依赖PHPExcel#
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (12)目标检测_SSD基于pytorch搭建代码
  • (solr系列:一)使用tomcat部署solr服务
  • (超详细)语音信号处理之特征提取
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (算法)硬币问题
  • (图)IntelliTrace Tools 跟踪云端程序
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转) Android中ViewStub组件使用