JDBC数据库连接池的必要性

一、在使用开发基于数据库的web程序时,传统的模式基本是按一下步骤:

1)在主程序(如servlet/beans)中建立数据库连接

2)进行sql操作

3)断开数据库连接

二、这种模式开发,存在的问题:

1)普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载进内存中,再验证用户名和密码(得花费0.05s~1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后就断开连接。这样的方式将消耗大连的时间和资源。数据库的连接资源并没有得到很好的重复利用。若同时有几百人甚至几千人同时在线,频繁的进行数据库连接将占用很多的系统资源,严重的甚至会造成服务器的崩溃。

2)对于每一次数据库连接,使用完成后都要断开。否则,如果程序出现异常而未能关闭,将导致数据库系统的内存泄露,并最终导致重启数据库。

3)这种开发不能控制被创建的连接对象数,系统资源被毫无顾忌的分配出去,如连接过多,也可能导致内存泄露,服务器崩溃

数据库连接池(connection pool)

1)为了解决传统开发中的数据库连接问题,可以采用数据库连接池技术。

2)数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从“缓冲池”中取出一个,使用完毕之后再放回去。

3)数据库连接池负责分配、管理和释放数据库连接,他允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

4)数据库连接池在初始化的时候将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。

连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序想连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待序列中.

数据库连接池(connection pool)的工作原理

数据库连接池(connection pool)的优点

1) 资源重用 
由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量);
2) 更快的系统响应速度 
数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间;
3) 新的资源分配手段 
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术,几年前也许还是个新鲜话题,对于目前的业务系统而言,如果设计中还没有考虑到连接池的应用,那么…….快在设计文档中加上这部分的内容吧。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源;
4) 统一的连接管理,避免数据库连接泄漏 
在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏。一个最小化的数据库连接池实现;

两种开源的数据库连接池
1)JDBC的数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口,该接口通常由服务器(Weblogic,WebSphere,Tomcat)提供实现
--DBCP数据库连接池(Tomcat内置的数据库连接池)
--C3P0数据库连接池(Hibernate推荐使用的数据库连接池,性能不错)
2)DataSource通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把DataSource称为连接池。
DBCP数据库连接池
方式一:
使用DBCP数据库连接池的步骤

* 1.加入JAR包(2个)
* commons-dbcp2-2.1.1.jar
* Commons-pool.jar
* 2.创建数据库连接池
* 3.为数据源实例指定必须的属性
* 4.从数据源中获取数据库连接

具体代码实现:

复制代码
 1 @Test
 2     public void testDBCP() throws Exception{
 3         DataSource dataSource=null;
 4         //1.创建DBCP数据源实例
 5         dataSource=new BasicDataSource();
 6         //2.为数据源实例指定必须的属性
 7         ((BasicDataSource) dataSource).setUsername("root");
 8         ((BasicDataSource) dataSource).setPassword("123456");
 9         ((BasicDataSource) dataSource).setUrl("jdbc:mysql://localhost:3306/atguigu");
10         ((BasicDataSource) dataSource).setDriverClassName("com.mysql.jdbc.Driver");
11         //3.指定数据源一些可选的属性(可以看下载的Jar包中的index.html)API文档 
12         /*
13          * maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
14            MaxActive,连接池的最大数据库连接数。设为0表示无限制。
15            maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
16                                 【温馨提示】:pool2中修改如下:
17                     maxActive  ==>  maxTotal
18                     maxWait ==> maxWaitMillis
19          */
20         //1).指定数据库连接池中初始化连接的个数
21         ((BasicDataSource) dataSource).setInitialSize(10);
22         //2).指定数据库连接池中最大连接的个数:同一时刻可以同时向数据库申请的数据库连接
23         ((BasicDataSource) dataSource).setMaxTotal(5);
24         //3).指定数据库连接池中最小连接的个数:在连接池中保存的最小空闲连接的数量
25         ((BasicDataSource) dataSource).setMinIdle(5);
26         //4).指定数据库连接池分配连接的最长时间,单位为毫秒,超出改时间将抛出异常
27         ((BasicDataSource) dataSource).setMaxWaitMillis(1000*5);
28         //4.从数据源中获取数据库连接
29     
30         Connection connection=dataSource.getConnection();
31         System.out.println(connection.getClass());
32        
33     }
复制代码

方式二:

使用DBCP数据库连接池的步骤

* 1.加载dbcp的properties配置文件
* 配置文件中的键值对需要来自BasicDataSource这个类的属性
* 2.调用BasicDataSourceFactory的createDataSource方法
* 创建DataSource实例
* 3.从DataSource中获取数据库连接

dbcp.properties文件内容如下:

复制代码
driver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/atguigu
user=root
password=123456
initialSize=10
maxTotal=50
minIdle=5
maxWaitMillis=5000
复制代码

具体代码实现:

复制代码
 1 @Test
 2     public void testDBCPWithDataSourceFactory() throws Exception{
 3         Properties properties=new Properties();
 4         InputStream inputStream=JDBCTest.class.getClassLoader()
 5                 .getResourceAsStream("dbcp.properties");
 6         properties.load(inputStream);
 7         DataSource dataSource=
 8                 BasicDataSourceFactory.createDataSource(properties);
 9         System.out.println(dataSource.getConnection());
10         
11         BasicDataSource basicDataSource=
12                 (BasicDataSource) dataSource;
13         System.out.println(basicDataSource.getMaxTotal());
14         
15     }
复制代码

C3P0数据库连接池

方式一:

这里我们需要加入两个JAR包:c3p0-0.9.5.2.jar和mchange-commons-java-0.2.11.jar

我们下载的c3p0JAR包中的doc文件夹中的index.html文件,点击该文件->Contents->Quickstart,我们可以看到c3p0数据库连接池的创建步骤,如下图所示(我们使用一些JAR包的时候要善于利用好帮助文档):

复制代码
import com.mchange.v2.c3p0.*;...ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver            
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("dbuser");                                  
cpds.setPassword("dbpassword");
复制代码

于是我们的代码就可以这样写了:

复制代码
1     @Test
2     public void testC3P0() throws Exception{
3         ComboPooledDataSource cpds = new ComboPooledDataSource();
4         cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver            
5         cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/atguigu" );
6         cpds.setUser("root");                                  
7         cpds.setPassword("123456");
8         System.out.println(cpds.getConnection());
9     }
复制代码

运行结果:证明创建成功

复制代码
五月 09, 2016 4:35:56 下午 com.mchange.v2.log.MLog 
信息: MLog clients using java 1.4+ standard logging.
五月 09, 2016 4:35:57 下午 com.mchange.v2.c3p0.C3P0Registry 
信息: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
五月 09, 2016 4:35:57 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource 
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1hge1d39g158wpld8tx485|1588809, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1hge1d39g158wpld8tx485|1588809, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://localhost:3306/atguigu, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
com.mchange.v2.c3p0.impl.NewProxyConnection@6776ad [wrapping: com.mysql.jdbc.JDBC4Connection@108b2d7]
复制代码

方式二:使用配置文件的形式

具体的步骤:

复制代码
     * 1.创建c3p0-config.xml文件,参考帮助文档中*   Appendix B: Configuation Files, etc.的内容* 2.创建ComboPooledDataSource实例:*   DataSource dataSource = new ComboPooledDataSource("helloc3p0"); *3.从DataSource实例中获取数据库连接
复制代码

其中c3p0-config.xml中的内容我们进行更改成下面的形式:每一行代表什么我都给出了详细的解释

复制代码
<c3p0-config><named-config name="helloc3p0"> <!-- 指定数据源的基本属性 --><property name="user">root</property><property name="password">123456</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/atguigu</property><!-- 若数据库中连接数不足时,一次向数据库服务器申请多少个连接    --><property name="acquireIncrement">5</property><!-- 初始化数据库连接时连接的数量 --><property name="initialPoolSize">10</property><!-- 数据库连接池中最小的数据库连接数 --><property name="minPoolSize">5</property><!-- 数据库连接池中最大的数据库连接数 --><property name="maxPoolSize">10</property><!-- 数据库连接池可以维护的Statement的个数 --><property name="maxStatements">10</property> <!-- 每个连接同时可以使用的Statement对象的个数 --><property name="maxStatementsPerConnection">5</property></named-config>
</c3p0-config>
复制代码

我们可以看到named-config name="helloc3p0",我们要创建的数据库连接池的名称是helloc3p0;

第二种方式的具体代码实现:

复制代码
1     @Test
2     public void testC3P0withConfigFile() throws Exception{
3         DataSource dataSource = 
4                 new ComboPooledDataSource("helloc3p0"); 
5         System.out.println(dataSource.getConnection());
6         ComboPooledDataSource comboPooledDataSource=
7                 (ComboPooledDataSource) dataSource;
8         System.out.println(comboPooledDataSource.getMaxStatements());
9     }
复制代码

测试一些,运行结果:

复制代码
1 五月 09, 2016 4:42:15 下午 com.mchange.v2.log.MLog 
2 信息: MLog clients using java 1.4+ standard logging.
3 五月 09, 2016 4:42:15 下午 com.mchange.v2.c3p0.C3P0Registry 
4 信息: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
5 五月 09, 2016 4:42:15 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource 
6 信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> helloc3p0, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1hge1d39g1594tqaufcxlm|1588809, idleConnectionTestPeriod -> 0, initialPoolSize -> 10, jdbcUrl -> jdbc:mysql://localhost:3306/atguigu, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 10, maxStatementsPerConnection -> 5, minPoolSize -> 5, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
7 com.mchange.v2.c3p0.impl.NewProxyConnection@1bcffb5 [wrapping: com.mysql.jdbc.JDBC4Connection@c1f859]
8 10
复制代码

此时我们JDBCtools中的获取连接的函数getConnection就可以改写代码了,不是每一次都创建新的数据库连接,而是从数据库连接池中获取连接,release函数也不是真正的关闭连接了,而是把数据库连接继续放到连接池中。

复制代码
 1     private static DataSource dataSource=null;
 2     //数据库连接池只被初始化一次
 3     static {
 4         dataSource=new ComboPooledDataSource("helloc3p0");
 5     }
 6     // 获取数据库连接
 7     public static Connection getConnection() throws  Exception{
 8         
 9         /*    ClassNotFoundException, SQLException {
10         Properties properties = new Properties();
11         InputStream inputStream = JDBCTest.class.getClassLoader()
12                 .getResourceAsStream("jdbc.properties");
13         properties.load(inputStream);
14         String user = properties.getProperty("user");
15         String password = properties.getProperty("password");
16         String jdbcUrl = properties.getProperty("jdbcUrl");
17         String driverClass = properties.getProperty("driver");
18         Class.forName(driverClass);
19         Connection connection = DriverManager.getConnection(jdbcUrl, user,
20                 password);*/
21         
22         return dataSource.getConnection();
23     }
复制代码

数据库连接池一般只有一个,所以我们用static修饰,并使用静态代码块的形式初始化数据库连接池,getConnection中的被注释代码使我们原来的获取连接的方式,可以看到代码简洁了不少!

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. SuperMap iClient3D for WebGL教程(空间分析)- Skyline天际线分析

    作者:刘大天际线,天际线又称城市轮廓或全景,是指天空与观察点周围的表面以及要素相分离的界线。天际线分析功能可根据观察点,生成当前场景窗口中建筑物顶端边缘与天空的分离线,主要用于城市建筑规划等场景中 ###iClient3D for WebGL提取天际线 1.创建天际线分析,可设定相…...

    2024/5/7 19:13:46
  2. 解决BeanShell中double或float计算不准确的问题

    最近做的一个项目要用到Beanshell进行公式的统一管理,但是在开发我发现beanshell对于float,double计算不准确的的问题不能进行处理,所以进行公式校验时不能正确运行,我在网上查询解决办法,始终未找到,所以就自己研究了一下,其方法如下: beanshell对于float等类型的加减…...

    2024/4/28 4:39:56
  3. C3P0

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。c3p0与dbcp区别: dbcp没有自动回收空闲连接的功能,c3p0有自动回收空闲连接功能。使用C3P0可以有效解决JDBC引起的memory leak问题 。原…...

    2024/4/19 12:57:48
  4. 关于F429开发板--挑战者中SD卡读写测试的笔记

    最近在调SD卡的代码时,使用"0-野火【F429开发板-挑战者】光盘资料\A盘(资料盘)\3-程序源码\1-固件库例程\SDIO—SD卡读写测试"代码测试SD卡时,一直没有通过。串口输出信息如下:开始进行SD卡读写实验SD卡初始化成功!SD卡擦除测试失败!温馨提示:部分SD卡不支持…...

    2024/4/17 20:22:16
  5. 浅谈git命令

    浅谈git命令 1、pwd 显示当前路径(目录) 2、clear 清屏 3、ll 显示当前目前的所有文件 4、 cd .. 此操作可以退回上一个目录 5、git init 进入到想要托管的文件的目录下后,输入该命令即可托管该文件 6、git status 查看当前目录每个文件的状态 7、git add 文件名 把文件…...

    2024/4/17 20:21:05
  6. SuperMap iClient3D for WebGL教程(影像篇)-Bing Maps

    作者:为梦齐舞本文同步更新于简书文章https://www.jianshu.com/p/150079d21fd9 SuperMap iClient3D for WebGL支持多种服务来源的高精度影像地图服务的加载和渲染,本文将一起来学习下使用BingMaps。 一、认识BingMapsImageryProvider,从图1来看下使用BingMaps的一些参数,其…...

    2024/4/17 20:21:18
  7. 什么是BeanShell?

    什么是BeanShell?BeanShell是一个小型的,免费的,可嵌入式的,具有面向对象脚本语言特性的Java代码解释器。它是用Java语言写的。它能执行标准的Java语句和表达式,还自带简单的脚本命令和语法。它把编程对象当成一个简单的方法,这很像Perl和JavaScript. 你 可以在写Java测试…...

    2024/4/11 21:46:46
  8. com.mchange.v2.c3p0.ComboPooledDataSource常用参数说明

    initialPoolSize:连接池初始化时创建的连接数<property name="initialPoolSize" value="3"></property>minPoolSize:连接池保持的最小连接数<property name="minPoolSize" value="3"></property>maxPoolSiz…...

    2024/4/20 7:27:04
  9. python subprocess.Popen 监控控制台输出

    file_out = subprocess.Popen(ping www.baidu.com, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while True:line = file_out.stdout.readline()print(line)if subprocess.Popen.poll(file_out)==0: #判断子进程是否结束break...

    2024/4/17 20:22:17
  10. pandas 行列切片

    anacolumns=prsana.iloc[:,-9:].columns.tolist() anacolumns=[‘小区名称’]+anacolumns...

    2024/4/17 20:22:16
  11. python_re正则表达

    re模块就本质而言,正则表达式(或RE)是一种小型的、高度专业化的编程语言,(在python中)它内嵌在Python中,并通过re模块实现,正则表达式模块被编译成一系列的字节码,然后由用C编写的匹配引擎执行。字符匹配(普通字符、元字符)#1、正则表达式使用: 用来匹配字符的普通…...

    2024/4/17 20:20:59
  12. stm32f429&stm32f103 驱动 tsl1401 ccd 模块在上位机显示 代码

    stm32f429&stm32f103驱动tsl1401 ccd模块 正在做有关stm32巡线小车的开发,用的是stm32F429版子,但是因所用ccd资料未及时更新,仅有xs128、k60等开发板的资料,便对f103测试ccd在lcd上显示的例程做修改,使其能在f429版上测试tsl1401ccd模块,并通过串口发送给电脑,用上…...

    2024/4/18 13:05:29
  13. DWR使用实例

    1.创建一个Web Project项目,向WEB-INF/lib/目录包里面导入dwr.jar2.修改web.xml文件:DWZ技术学习 https://www.itkc8.com [c-sharp] view plaincopy<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns=&quo…...

    2024/4/19 1:43:09
  14. 【技能】 run -time error"429"

    引言这段时间在学习UML,刚开始接触这个,看的是关于UML的视频,看视频当然是要用到播放了,用的是VGAPlayer播放器,之前看着一直没事,播放也很顺利,在快要看完的时候出现了一个问题,下面我们来说一下这个问题以及相应的解决方法。 问题在我刚要想去看会视频,学习的时候问…...

    2024/4/17 21:39:37
  15. beanShell-excel文件读取

    //beanShell-excel文件读取-调试通过import java.io.*; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;String path = "D:/text.xls";int p = Integer.parseInt(vars.get("i"));//用户自定…...

    2024/4/20 13:13:04
  16. python-试题

    1、以下程序输出为: def test(a,b,*args): print(a) print(b) print(args) test(11,22,33,44,55,66,77,88,99) 正确答案: A 你的答案: A (正确) 11 22 (33, 44, 55, 66, 77, 88, 99) 编译错误 运行错误 11 22 (11,22,33, 44, 55, 66, 77, 88, 99) 2、下面程序运行结果为: …...

    2024/4/20 6:57:06
  17. python subprocess popen 静默模式(不弹出console控制台)

    python subprocess popen 静默模式(不弹出console控制台)import subprocess,sysIS_WIN32 = win32 in str(sys.platform).lower()if IS_WIN32:startupinfo = subprocess.STARTUPINFO()startupinfo.dwFlags = subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW…...

    2024/4/20 6:56:12
  18. SuperMap iClient3D for WebGL教程(Entity)-EllipseGraphics

    作者:刘大本文同步更新于简书文章https://www.jianshu.com/p/3577efdb37e8 EllipseGraphics,顾名思义就是椭圆的实体对象,我们首先通过下面的图1来看下EllipseGraphics具有哪些参数,1.semiMajorAxis:椭圆长半轴; 2.semiMinorAxis:椭圆短半轴,其值应不大于semiMajorAxis,…...

    2024/4/17 20:22:11
  19. c3p0 在spring下的配置

    1、在hibernate.properties中添加: hibernate.connection.provider_class =org.hibernate.connection.C3P0ConnectionProvider 2、将c3p0的常规配置我新建在了自己写的properites中,取名:jdbc.properties,关于c3p0的代码如下: ######C3P0 MySQL config ####### c3p0.url=jd…...

    2024/4/16 5:36:08
  20. 秉火stm32f429移植u-boot

    秉火stm32f429移植u-boot 参考: 《STM32F429i-Discovery 移植并成功跑起来u-boot 2016.05》作者:tcjy1000,链接: https://blog.csdn.net/tcjy1000/article/details/51475438 硬件平台: 使用秉火stm32f429的核心板,搭配挑战者野火stm32的底板。 MCU: stm329igt6,1MB的内…...

    2024/4/20 11:03:52

最新文章

  1. 基于Spring Boot的家具网站设计与实现

    基于Spring Boot的家具网站设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统前台主界面图&#xff0c;用户可进入家具网站可查看…...

    2024/5/7 20:52:38
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 面试经典算法系列之双指针1 -- 合并两个有序数组

    面试经典算法题1 – 合并两个有序数组 LeetCode.88 公众号&#xff1a;阿Q技术站 问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#…...

    2024/5/5 8:39:32
  4. C++ 【原型模式】

    简单介绍 原型模式是一种创建型设计模式 | 它使你能够复制已有对象&#xff0c;客户端不需要知道要复制的对象是哪个类的实例&#xff0c;只需通过原型工厂获取该对象的副本。 以后需要更改具体的类或添加新的原型类&#xff0c;客户端代码无需改变&#xff0c;只需修改原型工…...

    2024/5/7 14:08:47
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57