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

台州网站建设费用网络平台的推广方法

台州网站建设费用,网络平台的推广方法,工信部域名信息备案管理系统查询,网站建设流程案例上次帮小王解决了如何在 Spring Boot 中使用 JDBC 连接 MySQL 后,我就一直在等,等他问我第三个问题,比如说如何在 Spring Boot 中使用 HikariCP 连接池。但我等了四天也没有等到任何音讯,似乎他从我的世界里消失了,而我…

上次帮小王解决了如何在 Spring Boot 中使用 JDBC 连接 MySQL 后,我就一直在等,等他问我第三个问题,比如说如何在 Spring Boot 中使用 HikariCP 连接池。但我等了四天也没有等到任何音讯,似乎他从我的世界里消失了,而我却仍然沉醉在他拍我马屁的美妙感觉里。

6293201e2aff527d9b73b3baa45bc144.png

突然感觉,没有小王的日子里,好空虚。怎么办呢?想来想去还是写文章度日吧,积极创作的过程中,也许能够摆脱对小王的苦苦思念。写什么好呢?

想来想去,就写如何在 Spring Boot 中使用 HikariCP 连接池吧。毕竟实战项目当中,肯定不能使用 JDBC,连接池是必须的。而 HikariCP 据说非常的快,快到 Spring Boot 2 默认的数据库连接池也从 Tomcat 切换到了 HikariCP(喜新厌旧的臭毛病能不能改改)。

HikariCP 的 GitHub 地址如下:

https://github.com/brettwooldridge/HikariCP

目前星标 12K,被使用次数更是达到了 43.1K。再来看看它的自我介绍。

5ab5c98123d976df42b7581ae0230650.png

牛逼的不能行啊,原来 Hikari 来源于日语,“光”的意思,这意味着快得像光速一样吗?讲真,看简介的感觉就好像在和我的女神“汤唯”握手一样刺激和震撼。

既然 Spring Boot 2 已经默认使用了 HikariCP,那么使用起来也相当的轻松惬意,只需要简单几个步骤。

01、初始化 MySQL 数据库

既然要连接 MySQL,那么就需要先在电脑上安装 MySQL 服务(本文暂且跳过),并且创建数据库和表。

CREATE DATABASE `springbootdemo`;
DROP TABLE IF EXISTS `mysql_datasource`;
CREATE TABLE `mysql_datasource` (`id` varchar(64) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

02、使用 Spring Initlallzr 创建 Spring Boot 项目

创建一个 Spring Boot 项目非常简单,通过 Spring Initlallzr(https://start.spring.io/)就可以了。

c1753d735205d7ef104185feb45e60e1.png

勾选 Web、JDBC、MySQL Driver 等三个依赖。

1)Web 表明该项目是一个 Web 项目,便于我们直接通过 URL 来实操。

3)MySQL Driver:连接 MySQL 服务器的驱动器。

5)JDBC:Spring Boot 2 默认使用了 HikariCP,所以 HikariCP 会默认在 spring-boot-starter-jdbc 中附加依赖,因此不需要主动添加 HikariCP 的依赖。

PS:怎么证明这一点呢?项目导入成功后,在 pom.xml 文件中,按住鼠标左键 + Ctrl 键访问 spring-boot-starter-jdbc 依赖节点,可在 spring-boot-starter-jdbc.pom 文件中查看到 HikariCP 的依赖信息。

a8350979a0f5538107edbd102c891d76.png

选项选择完后,就可以点击【Generate】按钮生成一个初始化的 Spring Boot 项目了。生成的是一个压缩包,导入到 IDE 的时候需要先解压。

03、编辑 application.properties 文件

项目导入成功后,等待 Maven 下载依赖,完成后编辑 application.properties 文件,配置 MySQL 数据源信息。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

是不是有一种似曾相识的感觉(和[上一篇]()中的数据源配置一模一样)?为什么呢?答案已经告诉过大家了——默认、默认、默认,重要的事情说三遍,Spring Boot 2 默认使用了 HikariCP 连接池。

04、编辑 Spring Boot 项目

为了便于我们查看 HikariCP 的连接信息,我们对 SpringBootMysqlApplication 类进行编辑,增加以下内容。

@SpringBootApplication
public class HikariCpDemoApplication implements CommandLineRunner {@Autowiredprivate DataSource dataSource;public static void main(String[] args) {SpringApplication.run(HikariCpDemoApplication.class, args);}@Overridepublic void run(String... args) throws Exception {Connection conn = dataSource.getConnection();conn.close();}
}

HikariCpDemoApplication 实现了 CommandLineRunner 接口,该接口允许我们在项目启动的时候加载一些数据或者做一些事情,比如说我们尝试通过 DataSource 对象与数据源建立连接,这样就可以在日志信息中看到 HikariCP 的连接信息。CommandLineRunner 接口有一个方法需要实现,就是我们看到的 run() 方法。

112f0da9f1f0b8a8a054caf865462a03.png

通过 debug 的方式,我们可以看到,在项目运行的过程中,dataSource 这个 Bean 的类型为 HikariDataSource。

05、运行 Spring Boot 项目

接下来,我们直接运行 HikariCpDemoApplication 类,这样一个 Spring Boot 项目就启动成功了。

e5f22a202e2274ae67d3d375cc1c935f.png

HikariDataSource 对象的连接信息会被打印出来。也就是说,HikariCP 连接池的配置启用了。快给自己点个赞。

380740cbec622f3597f99b263c17f6de.png

06、为什么 Spring Boot 2.0 选择 HikariCP 作为默认数据库连接池

有几种基准测试结果可用来比较HikariCP和其他连接池框架(例如c3p0dbcp2tomcatvibur)的性能。例如,HikariCP团队发布了以下基准(可在此处获得原始结果):

HikariCP 团队为了证明自己性能最佳,特意找了几个背景对比了下。不幸充当背景的有 c3p0、dbcp2、tomcat 等传统的连接池。

8c21aebdaf6428955687c30d875fab91.png

从上图中,我们能感受出背景的尴尬,HikariCP 鹤立鸡群了。HikariCP 制作以如此优秀,原因大致有下面这些:

1)字节码级别上的优化:要求编译后的字节码最少,这样 CPU 缓存就可以加载更多的程序代码。

HikariCP 优化前的代码片段:

public final PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
{return PROXY_FACTORY.getProxyPreparedStatement(this, delegate.prepareStatement(sql, columnNames));
}

HikariCP 优化后的代码片段:

public final PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
{return ProxyFactory.getProxyPreparedStatement(this, delegate.prepareStatement(sql, columnNames));
}

以上两段代码的差别只有一处,就是 ProxyFactory 替代了 PROXY_FACTORY,这个改动后的字节码比优化前减少了 3 行指令。具体的分析参照 HikariCP 的 Wiki 文档。

2)使用自定义的列表(FastStatementList)代替 ArrayList,可以避免 get() 的时候进行范围检查,remove() 的时候从头到尾的扫描。

8a6cdccd81306622b9b769ce483ce592.png

07、鸣谢

好了,各位读者朋友们,答应小王的文章终于写完了。能看到这里的都是最优秀的程序员,升职加薪就是你了 。如果觉得不过瘾,还想看到更多,可以 star 二哥的 GitHub【itwanger.github.io】,本文已收录。

PS:本文配套的源码已上传至 GitHub 【SpringBootDemo.SpringBootMysql】。

原创不易,如果觉得有点用的话,请不要吝啬你手中点赞的权力;如果想要第一时间看到二哥更新的文章,请微信搜索「沉默王二」关注我。

http://www.lbrq.cn/news/2398699.html

相关文章:

  • 企业网站建设的层次怎么用模板做网站
  • 建立微信商城网站互动营销案例都有哪些
  • xp系统做网站服务器2022年近期重大新闻事件
  • 深圳做网站的公司 cheungdom网页设计框架
  • 爱做的小说网站南京seo推广公司
  • 怎么做网站卡盟seo用什么工具
  • 建设部网站八大员查询seo优化快排
  • 网站建设和管理制度seo优化器
  • 模板建站系统宁波网络推广方式
  • 网站后台费用北京seo诊断
  • 女人做一级a网站免费郑州seo外包v1
  • ppt模板背景图女装标题优化关键词
  • 那里做一元云购网站交换链接平台
  • 网站开发维护合同书seo关键词推广多少钱
  • 团购网站开发代码抚州网络推广
  • 拿自己爱人做网站如何对网站进行推广
  • 斐讯k2做网站网络优化器
  • 芜湖龙湖建设工程有限公司网站论坛seo招聘
  • 在网站写小说怎么做封面免费收录网站提交
  • 如何做影视网站百度seo文章
  • 王烨铭seo 优化教程
  • 帮客户做网站 没签合同咋办昆明网络营销
  • 门户网站开发需要seo专员是干嘛的
  • 网站建设最基础是什么推一手新闻发稿平台
  • 我司如何自己建设动态网站网站性能优化
  • 营销型网站建设需要懂什么软件域名查询站长之家
  • 余姚网站建设哪家好关键词工具
  • 网站建设的本科毕业论文建一个企业网站多少钱
  • 如何进入网站后台管理网站合肥建站公司seo
  • linux网站做301重定向百度一下你就知道官页
  • STC增强型单片机寄存器 PWM EEPROM TMOD TCON
  • Flowable31动态表单-----------------------终章
  • OpenCV 官翻 3 - 特征检测 Feature Detection
  • leetcode15.三数之和题解:逻辑清晰带你分析
  • Linux服务器端口被占用?
  • FLTK UI窗口关闭时延时卡顿问题全流程分析与优化实战