Java与MySQL数据库连接的JDBC驱动配置教程
系列文章目录
Java JDBC编程
文章目录
- 系列文章目录
- 前言
- 一、JDBC简介:
- 二、mysql-connector-java驱动详解:
- 驱动版本特性介绍:
- 三、JDBC驱动安装与配置:
- 1.IDE项目设置:
- 2.命令行安装:
- 3.使用Maven或Gradle :
- 配置要点:
- 四、Java程序中的MySQL数据库连接操作:
- 1.连接URL的格式和参数解读:
- 2.SQL语句执行方法:
- 3.结果集处理:
- 总结
前言
我们在学习数据库和java程序以后我们需要将其连接起来,这时候就需要用到JDBC,通过使用JDBC,Java程序可以轻松地操作各种主流数据库,例如,Oracle,MS SQL Server,MySQL等。由于Java语言本身的跨平台性,所以使用JDBC编写的程序不仅可以实现跨数据库,还具有跨平台性和可移植性。使用JDBC访问数据库具有操作简单,获取方便且安全可靠等优势。所以我们将详细讲解一下JDBC编程。
一、JDBC简介:
Java 数据库连接(JDBC)是Java应用程序与数据库之间的一种标准的SQL数据库连接协议。它允许Java开发者通过Java代码使用SQL语句来访问和操作数据库中的数据。JDBC是Java平台的一部分,它为不同类型的数据库提供了统一的访问方式,使Java程序可以移植到不同的数据库系统上,只需要更换相应的JDBC驱动。
JDBC包含了一系列的API和Java类库,开发者可以通过这些API和类库来执行SQL语句,管理数据库连接,处理事务,以及处理查询结果等。JDBC API定义了一套Java程序如何与数据库交互的标准接口,而JDBC驱动则是实现这些接口的具体方式。
随着Java技术的发展,JDBC也在不断地进化。从JDBC 1.0到如今的JDBC 4.3,每一次更新都对数据库编程的便捷性和性能进行了优化,例如支持Java 8的Lambda表达式和新时间日期API等特性。
下面章节将详细介绍JDBC的安装、配置以及如何在Java程序中进行MySQL数据库的连接操作。
核心作用:
- 建立数据库连接。
- 执行 SQL 语句(查询、更新、事务等)。
- 处理结果集(查询返回的数据)。
二、mysql-connector-java驱动详解:
在现代的Java应用开发中, mysql-connector-java
驱动是连接Java应用程序和MySQL数据库的重要桥梁。
驱动版本特性介绍:
mysql-connector-java-5.1.13-bin.jar 是一个被广泛使用的稳定版本,其提供了与MySQL 5.1.x版本的数据库兼容的连接能力。这个版本的驱动支持如自动重连、连接池等重要的特性,使得数据库连接更加稳定和高效。此版本还增加了对SSL加密通信的支持,这在处理敏感数据时显得尤为重要。
三、JDBC驱动安装与配置:
我们需要下载一个来完成驱动:
链接在这里: mysql-connector-java-5.1.13-bin.jar
需要的同学可以进行下载。
1.IDE项目设置:
下载好了之后我们需要在当前进行连接数据库的项目中创建一个文件夹,把这个jar包放进去。
但是可不是放进去就完事了,我们还需要配置依赖,在执行的时候可以找到这个jar包。
我们要先点项目结构
然后我们点击这个Modules,然后再点击Dependencies,然后点击上面的加号
然后选择你的mysql-connector-java-5.1.13-bin.jar所在目录找到它加进去。
对于eclipse来说,在Eclipse中,这通常通过右键点击项目->属性->Java构建路径->库->添加外部JARs...来完成。
2.命令行安装:
可以使用Java的 -cp
参数指定JAR文件的路径来运行Java程序。例如:
java -cp .;path_to/mysql-connector-java-5.1.13-bin.jar com.example.MyApp
环境变量配置 :将JAR文件路径添加到系统的 CLASSPATH
环境变量中,这样Java运行时就能自动识别并加载JDBC驱动
3.使用Maven或Gradle :
在现代的Java项目中,通常使用构建自动化工具如Maven或Gradle。在这些项目的 pom.xml
(对于Maven)或 build.gradle
(对于Gradle)文件中添加依赖项即可自动下载和管理JDBC驱动依赖。
配置要点:
Classpath配置方法和注意事项
Classpath是Java虚拟机搜索类文件的路径。正确设置Classpath对于JDBC驱动的加载至关重要。以下是Classpath配置的一些要点:
Classpath的设置 :Classpath可以通过多种方式设置,包括使用命令行参数 -cp 或 -classpath ,通过环境变量 CLASSPATH ,或是在IDE中设置。
JAR文件的位置 :确保JDBC驱动的JAR文件包含在Classpath中,无论是直接指定JAR文件还是指定包含JAR文件的目录。
环境差异 :在不同的操作系统中,Classpath的设置可能有所不同。例如,在Windows系统中,多个路径用分号( ; )分隔,在Unix/Linux系统中则使用冒号( : )。
路径引用 :如果JAR文件位于应用程序的当前工作目录中,可以使用相对路径 . 来表示。
代码块示例:
下面是一个使用 mysql-connector-java-5.1.13-bin.jar
驱动连接MySQL数据库的代码示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class MysqlConnectExample {public static void main(String[] args) {Connection conn = null;try {// 加载并注册JDBC驱动Class.forName("com.mysql.jdbc.Driver");// 创建数据库连接String url = "jdbc:mysql://localhost:3306/your_database_name?useSSL=false";String user = "your_username";String password = "your_password";conn = DriverManager.getConnection(url, user, password);System.out.println("成功连接数据库!");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
}
四、Java程序中的MySQL数据库连接操作:
加载驱动与获取连接的方法
在Java中,与MySQL数据库建立连接通常涉及以下几个关键步骤:
加载驱动 :在Java程序中,我们必须首先加载MySQL JDBC驱动,以便能够与MySQL数据库进行通信。这可以通过调用 Class.forName() 方法实现,或者根据JDBC 4.0规范,如果驱动程序类在类路径中,驱动程序将在运行时自动加载。
获取连接 :一旦驱动被加载,我们可以使用 DriverManager.getConnection() 方法来获取一个数据库连接。这个方法需要一个连接字符串(也称为URL)、用户名和密码作为参数。
下面的代码展示了如何加载MySQL JDBC驱动,并建立一个数据库连接:
package JdbcSimple;import java.sql.*;/*** @author 袁敬尧* @version 1.0*/
@SuppressWarnings({"all"})
public class ConnectionDemo {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/userdetail?useSSL=false&serverTimezone=UTC";// 数据库连接URL格式通常为 "jdbc:mysql://<host>:<port>/<database>"String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("数据库已经连接成功");//创建Statement对象Statement stmt = conn.createStatement();//获取查询结果集String seq = "SELECT id ,username FROM userdetails";ResultSet rs = stmt.executeQuery(seq);System.out.println("查询成功!");//访问结果集中的数据while (rs.next()) {System.out.println(rs.getString(1) + " " + rs.getString("username"));}} catch (ClassNotFoundException e) {e.printStackTrace();}catch (SQLException e) {e.printStackTrace();}}
}
请注意,在JDBC 4.0及以上版本中,如果 mysql-connector-java
驱动已正确添加到项目的类路径中,那么 Class.forName("com.mysql.cj.jdbc.Driver")
这一步是可选的,因为驱动会自动加载。
连接URL的格式和参数解读:
数据库连接URL的格式通常遵循这样的模式: jdbc:mysql://<host>:<port>/<database> 。下面是一个实际的URL示例:
jdbc:mysql://localhost:3306/mydatabase
协议前缀 : jdbc:mysql:// 前缀表明我们正在使用MySQL数据库。
主机名 : localhost 是运行数据库服务器的计算机的地址。
端口号 : 3306 是MySQL服务器的默认监听端口,如果配置了不同的端口,应该使用相应的端口号。
数据库名 : mydatabase 是我们希望连接的数据库的名称。
除了基础的URL格式,还有几个参数可以添加到URL中以改变连接的行为,如:
SSL配置 : useSSL=false ,如果数据库支持SSL,但你不想使用SSL连接,可以设置这个参数。
允许的服务器端准备的语句 : allowMultiQueries=true ,允许一次执行多个查询。
字符编码设置 : useUnicode=true&characterEncoding=UTF-8 ,用于支持Unicode和UTF-8字符编码。
例如,一个带有额外参数的连接字符串可能如下所示:
jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
SQL语句执行方法:
Statement和PreparedStatement的使用
在建立了数据库连接之后,我们可以使用 Statement 或 PreparedStatement 对象来执行SQL语句。
Statement
Statement 对象用于执行静态SQL语句。它们可以用来执行任何类型的SQL语句,但是它们是易受SQL注入攻击的,因为它们不提供参数化查询。
以下是如何使用 Statement 对象的示例代码:
package JdbcSimple;import java.sql.*;/*** @author 袁敬尧* @version 1.0*/@SuppressWarnings({"all"})
public class ConnectionDemo {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/userdetail?useSSL=false&serverTimezone=UTC";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("数据库已经连接成功");//创建Statement对象Statement stmt = conn.createStatement();//获取查询结果集String seq = "SELECT id ,username FROM userdetails";ResultSet rs = stmt.executeQuery(seq);System.out.println("查询成功!");//访问结果集中的数据while (rs.next()) {System.out.println(rs.getString(1) + " " + rs.getString("username"));}} catch (ClassNotFoundException e) {e.printStackTrace();}catch (SQLException e) {e.printStackTrace();}}
}
PreparedStatement
PreparedStatement 是 Statement 的子接口,它继承了 Statement 的功能,并添加了使用参数化查询的能力。与 Statement 不同, PreparedStatement 能够通过设置参数来预防SQL注入攻击。
以下是如何使用 PreparedStatement 对象的示例代码:
package JdbcSimple;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;/*** @author 袁敬尧* @version 1.0*/
@SuppressWarnings({"all"})
public class PreparedStatementDemo {public static void main(String[] args) {try {//加载驱动Class.forName("com.mysql.jdbc.Driver");//建立数据库连接String url = "jdbc:mysql://localhost:3306/userdetail?useSSL=false&serverTimezone=UTC";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);System.out.println("连接成功");//定义带参数的SQL语句String insertSql = "INSERT INTO userdetails(id,username,pwd,sex) VALUES(?,?,?,?)";PreparedStatement pstmt = conn.prepareStatement(insertSql);//使用set方法对参数进行赋值pstmt.setInt(1,7);pstmt.setString(2,"TOM");pstmt.setString(3,"123456");pstmt.setByte(4,(byte)1);//执行int result = pstmt.executeUpdate();System.out.println("插入"+result+"行");pstmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}
}
使用 PreparedStatement的另一个好处是预编译SQL语句,可以提高执行效率,尤其是执行相同的SQL语句多次时。
结果集处理:
ResultSet的基本操作:
ResultSet
对象代表数据库查询操作的返回结果集。它允许我们遍历查询结果,并从结果集中获取数据。
以下是如何处理 ResultSet
对象的基本步骤:
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {conn = DriverManager.getConnection(url, user, password);stmt = conn.createStatement();String query = "SELECT * FROM users";rs = stmt.executeQuery(query);// 遍历结果集while (rs.next()) {int id = rs.getInt("id");String username = rs.getString("username");// 获取其他字段...// 处理数据...}
} catch (SQLException e) {// 异常处理代码...
} finally {// 关闭资源的代码...
}
结果集的遍历、检索和更新:
遍历
ResultSet
提供了 next()
方法来移动到结果集的下一行,并返回一个布尔值表示是否有更多行。
while (rs.next()) {// 处理每一行的数据...
}
检索
我们可以通过 getString()
, getInt()
, getDouble()
, 等方法根据列名或列索引检索数据。
String username = rs.getString("username");
int id = rs.getInt("id");
更新
ResultSet
提供了 updateXXX
系列方法来更新当前行的数据。要使更改对数据库有效,需要调用 updateRow()
方法。
rs.updateString("username", "newUsername");
rs.updateRow();
代码块的逻辑分析
在上述代码中,我们使用了JDBC API来:
加载MySQL JDBC驱动
建立数据库连接
执行SQL查询
遍历查询结果集
每个步骤都涉及了特定的方法调用和异常处理。 try 块用于尝试执行可能抛出 SQLException 的操作,而 catch 块用于捕获并处理这些异常。 finally 块用于确保即便发生异常,也能够关闭所有打开的资源,比如数据库连接、 Statement 和 ResultSet 对象。
总结
以上就是我要讲的内容,通过以上内容我们基本可以打通Java与数据库之间的连接了,接下来我会持续更新Java的内容。
相关文章:
Java与MySQL数据库连接的JDBC驱动配置教程
系列文章目录 Java JDBC编程 文章目录 系列文章目录前言一、JDBC简介:二、mysql-connector-java驱动详解: 驱动版本特性介绍: 三、JDBC驱动安装与配置: 1.IDE项目设置:2.命令行安装:3.使用Maven或Gradle :…...
光伏产品研发项目如何降本增效?8Manage 项目管理软件在复合材料制造的应用
在复合材料制造领域,特别是光伏PECVD石墨舟和燃料电池石墨双极板等高精尖产品的研发过程中,高效的项目管理直接决定了产品开发周期、质量和市场竞争力。然而,许多企业在项目立项、进度跟踪、资源分配和质量控制等环节面临挑战。 针对这些痛点…...
矫平机:工业制造中的“板材整形师“
在机械制造车间此起彼伏的轰鸣声中,一卷卷冷轧钢卷正经历着神奇的蜕变。经过开卷、矫平、剪切等工序,原本蜷曲的金属板材变得平整如镜,这些改变都源于生产线上一个关键设备——矫平机。这台被称作"板材整形师"的精密机械࿰…...
数据江湖:Node.js 与 SQLite3 的轻量之道
前言 在这个“万码奔腾”的时代,想在江湖中闯出一片天地,不光要有剑(JavaScript),还得有招式(数据库)!本篇秘籍便是教你如何用 Node.js + SQLite3 打造一座小而美的“数据藏经阁”。初学者可轻松上手,高手可在细节中悟出更深的“数据库心法”。 简介 SQLite 在前端…...
4.15BUUCTF Ez_bypass,HardSQL,AreUSerialz,BabyUpload,CheckIn
[MRCTF2020]Ez_bypass 打开环境,看源码 include flag.php; $flagMRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}; if(isset($_GET[gg])&&isset($_GET[id])) {$id$_GET[id];$gg$_GET[gg];if (md5($id) md5($gg) && $id ! $gg) {echo You got the first step;i…...
【HarmonyOS NEXT+AI】问答 03:找不到 DevEco Studio Cangjie Plugin 下载链接?
【HarmonyOS NEXTAI】问答 03:找不到 DevEco Studio Cangjie Plugin 下载链接? 在 "HarmonyOS NEXTAI 大模型打造智能助手 APP (仓颉版)" 课程里面,有学员提到了这样一个问题:我在华为开发者社区官网找不到 DevEco Stu…...
使用 reverse-sourcemap 工具反编译 Vue 项目
要使用 reverse-sourcemap 工具反编译 Vue 项目,可以按照以下步骤操作: 步骤一:安装 reverse-sourcemap 首先,需要全局安装 reverse-sourcemap 工具。在命令行中执行以下命令: npm install --global reverse-sourcem…...
通信安全员历年考试重难点有哪些?
通信安全员考试的重难点紧密围绕行业特性和法规更新展开,需结合最新政策与实践案例综合掌握。以下是基于历年考试趋势及 2025 年新规的深度解析: 一、核心法规与标准体系(占比 30%-40%) 1. 安全生产法与行业规定 《安全生产法》…...
C++(OpenCV)实现MATLAB的edge(I, “sobel“)边缘检测
文章目录 方案分析具体代码实现关键步骤说明注意事项 为了实现类似于MATLAB的edge(I, "sobel")函数的C代码,我们需要复现其完整的边缘检测流程,包括梯度计算、非极大值抑制和阈值处理。以下是具体的方案及代码实现: 方案分析 图像…...
uniapp通过uni.addInterceptor实现路由拦截
注:此拦截不能首次拦截路由跳转的方法(switchTab, navigateTo, reLaunch, redirectTo),拦截request请求api可以 1. app.vue 代码 import { onLaunch} from dcloudio/uni-appimport permission from ./utils/permissiononLaunch(…...
vue2.x Echart label根据数据长度选择不同的间隔显示
折线图需要在各个点上方展示数据,但是数据数字的位数可能达到5~8位,需要根据密度进行间隔展示。例如,如果数据长度小于7,则每一项都展示,如果在7~10之间,2位展示一项,如果大于10,那么…...
Wifi密码查看软件V1.0
⭐本软件用于查看电脑连接过所有WiFi密码,不具备破解功能。 可在忘记WiFi密码或他人输入密码自己不知道的情况下使用。 ⭐⭐为便于快速分享,加入双击【密码】列可将WIFI密码复制在粘贴板。 ⭐⭐⭐双击【名称】列可生成用于手机连接的二维码进行显示&…...
Hyperf (Swoole)的多进程 + 单线程协程、Gin (Go)Go的单进程 + 多 goroutine 解说
1. 核心概念解析 (1) Hyperf (Swoole): 多进程 单线程协程 Swoole 并发模型详解 Swoole 的并发模型基于多进程架构,每个进程是单线程的,线程内运行多个协程。以下是其结构的关键点: 多进程:Swoole 应用程序启动时,…...
国内网络设备厂商名单(List of Domestic Network Equipment Manufacturers)
国内网络设备厂商名单 运维工程师必须广泛熟悉国内外各大厂商的设备,深入掌握其应用场景、功能特点及优势。这不仅有助于在故障排查时迅速定位问题,还能在系统设计、优化与升级中做出更合理的决策。对设备特性的精准把握,能够显著提升运维效…...
基础元器件-电感(2025.4.17)
1.电感是电磁感应器件,它是储能元器件。 2.电感表示形式(直标法和色标法) 3.电感读取基准是mH,3R3指的是3.3mH,R代表小数点。 4.电感特性:通直流阻交流 5.电感的分类 注:用电容或者电感滤波是…...
高通手机抓取sniffer log的方法
方法如下: adb root adb remount adb shell echo 4 >/sys/module/wlan/parameters/con_mode //不同的高通基线这块目录存在差异性 ifconfig wlan0 up iwpriv wlan0 setMonChan 149 2 //设置信道和bandwitdh tcpdump -i wlan0 -v -w /data/chan149.pcap 生成…...
React 设计艺术:如何精确拆分组件接口,实现接口隔离原则
接口隔离原则 接口隔离原则(Interface Segregation Principle,简称 ISP)也是面向对象设计中的重要原则之一。它的核心思想是,一个类不应该依赖它不需要的接口。在 React 开发中,遵循接口隔离原则可以提高代码的可维护性…...
BFS DFS ----习题
题目1 答案1 #include <bits/stdc.h>using namespace std;const int N 210; int n,k; int arr[N]; int res 0;void dfs(int x,int start,int nowsum) {if (nowsum > n) return ;if(x>k){if(nowsum n) res;return ;}for(int i start;nowsumi*(k-x1)<n;i){a…...
第十七届“华中杯”大学生数学建模挑战赛题目A题 晶硅片产销策略优化 完整成品 代码 模型 思路 分享
近年来,高纯度晶硅片需求的增长引发了更激烈的市场竞争。晶硅片企业需要在成本控制、利润优化和供需管理之间取得平衡,以提高经营效率和市场竞争力。晶硅片的生产是一个高能耗、高成本的过程,企业效益会受到原材料价格波动、市场需求变化以及…...
java 设计模式之单例模式
简介 单例模式:一个类有且仅有一个实例,该类负责创建自己的对象,同时确保只有一个对象被创建。 特点:类构造器私有、持有自己实例、对外提供获取实例的静态方法。 单例模式的实现方式 饿汉式 类被加载时,就会实例…...
新能源汽车能量流测试的传感器融合技术应用指南
第一部分:核心原理模块化拆解 模块1:多源传感器物理层融合 关键技术: 高精度同步采集架构 采用PXIe-8840控制器同步定时模块(NI PXIe-6674T),实现CAN/LIN/模拟量信号的μs级同步光纤电压传感器࿰…...
高级java每日一道面试题-2025年4月11日-微服务篇[Nacos篇]-Nacos使用的数据库及其数据同步机制是什么?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos使用的数据库及其数据同步机制是什么? 我回答: Nacos 使用的数据库及其数据同步机制详解 在微服务架构中,Nacos 作为服务注册与配置管理的核心组件,其数据存储和同步机制对系统的高可用性和…...
音视频相关协议和技术内容
视频编解码: H264(AVC,MPEG-4 Part 10) 高压缩率,支持多种分辨率和帧率,用于在线流媒体、会议、数字电视 编码过程: 分块处理,将视频帧划分为宏块(16x16)使用帧预测和…...
SpringBoot整合Rabbitmq(包括docker配置Rabbitmq的详细过程)
一、什么是mq MQ(message queue),从字面意思上看就个 FIFO 先入先出的队列,只不过队列中存放的内容是 message 而已,它是一种具有接收数据、存储数据、发送数据等功能的技术服务。 在互联网架构中,MQ 是一种非常常见的上下游“逻…...
20个常用的初级Java笔试题及其参考答案
### 1. Java基本数据类型有哪些? - **答案**:Java中的基本数据类型有: - `byte`:8位 - `short`:16位 - `int`:32位 - `long`:64位 - `float`:32位 - `double`:64位 - `char`:16位(Unicode字符) - `boolean`:表示真或假(没有固定大小) ### 2. Java中的字符串是可…...
矫平机:工业制造的精密“雕刻师”
在金属加工的浩瀚图景中,矫平机犹如一位沉默的雕塑大师,用机械的精准与科学的智慧,将扭曲变形的板材重塑为工业艺术的杰作。从新能源电池极片到空间站耐压舱体,矫平工艺贯穿现代制造的每一处精度巅峰。 一、核心技术:从…...
游戏数据分析,力扣(游戏玩法分析 I~V)mysql+pandas
力扣的游戏玩法分析 I~V, ps:虽然表结构不变但是力扣输入示例数据有些许变化,所以你使用上一题的数据跑下一题的代码可能产生的结果和示例中的不一样,建议点击连接到力扣中直接运行! 目录 1. 游戏玩法分析 I mysql …...
C++之哈希
目录 一、unordered_set 1.1、unordered_set的介绍 1.2、unordered_set和set的使用差异 二、unordered_map 2.1、unordered_map和map的差异 2.2、unordered_multimap/unordered_multiset 三、哈希表 3.1、哈希概念 3.1.1、直接定地址法 3.1.2、哈希冲突 3.1.3、负载…...
DSP、MCU、FPGA 的详细总结
一、核心定义与特点 类型定义核心特点DSP(数字信号处理器)专为高速数字信号处理设计的处理器- 哈佛架构,单周期乘加(MAC) - 实时性强,低延迟处理流式数据 - 专用指令集优化算法(如FFT、滤波&am…...
linux学习 3.用户的操作
用户 建议在系统操作的时候不要一直使用root用户,因为root用户具有最高权限,你可能因为某些操作影响了你的系统,采用子用户则可以避免这一点 这里的学习不用太深入,掌握如何创建删除切换即可(除非你要做详细的用户管理࿰…...
闭坑-- `a-auto-complete` 组件中的 `options` 数据存在重复
当 ant-design 的 a-auto-complete 组件中的 options 数据存在重复时,可能会导致以下问题: 1. 交互问题 键盘导航失效: 使用键盘上下键选择时,可能会在重复项之间跳转,无法正常移动到下一个选项。选择结果不准确&…...
【Rust基础】使用Rocket构建基于SSE的流式回复
背景 我们正在使用Rust开发基于RAG的知识库系统,其中对于模型的回复使用了常用的SSE,Web框架使用Rocket,Rocket提供了一个简单的方式支持SSE,但没有会话保持、会话恢复等功能,因此我们自己简单实现这两个功能。 使用R…...
一种改进的CFAR算法用于目标检测(解决多目标掩蔽)
摘要 恒虚警率(CFAR)技术在雷达自动检测过程中起着关键作用。单元平均(CA)CFAR算法在几乎所有的多目标情况下都会受到掩蔽效应的影响。最小单元平均(SOCA)CFAR算法仅当干扰目标位于参考窗口的前后方时才具有…...
什么是人工智能芯片?
行业专家指出,许多智能设备和物联网设备都是由某种形式的人工智能(AI)驱动的——无论是语音助理、面部识别摄像头,还是电脑。这些设备需要采用某种技术为它们进行的数据处理提供支持。有些设备需要在云平台的大型数据中心处理数据,而也有一些…...
0.深入探秘 Rust Web 框架 Axum
在当今的 Web 开发领域,Rust 凭借其出色的性能、内存安全性和并发处理能力,正逐渐崭露头角。而 Axum 作为 Rust 生态系统中一款备受瞩目的 Web 框架,更是为开发者提供了高效、灵活且强大的工具,用于构建现代化的 Web 应用程序。本…...
深度监听 ref 和 reactive 的区别详解
深度监听 ref 和 reactive 的区别详解 一、ref 的深度监听(示例代码)关键点:1. ref 的存储方式:2. 监听 ref 的特性 二、reactive 的深度监听(示例代码)关键点:1. reactive 的深度响应性2. 监听…...
面向对象—有理数类的设计
目录 1.代码呈现 1.1编写toString、equals方法 1.2测试代码 1.3有理数类的代码 2.论述题 3.有理类设计 1.代码呈现 1.1编写toString、equals方法 (1)toString方法 Overridepublic String toString(){if(this.v20){return "Undefined";}return this.v1 "/…...
OpenHarmony Camera开发指导(四):相机会话管理(ArkTS)
概述 相机在使用预览、拍照、录像、获取元数据等功能前,都需要先创建相机会话。 相机会话Session的功能如下: 配置相机的输入流和输出流。 配置输入流即添加设备输入,通俗来讲即选择某一个摄像头进行拍照录像;配置输出流&#x…...
Linux电源管理(三),CPUIdle 和 ARM的PSCI
更多linux系统电源管理相关的内容请看:Linux电源管理、功耗管理 和 发热管理 (CPUFreq、CPUIdle、RPM、thermal、睡眠 和 唤醒)-CSDN博客 1 简介 Linux下的空闲进程cpuidle在内核中是一个子系统。cpuidle子系统所需要做的事情就是在CPU进入idle状态后,…...
【测试工具】JMeter使用小记
JMeter 使用小记 下载与安装 jdk 下载地址:https://www.oracle.com/java/technologies/downloads/#jdk18-windowsJMeter 下载地址:https://jmeter.apache.org/download_jmeter.cgi 教程参考:JMeter下载及安装详细教程-CSDN博客 设置中文界…...
Obsidian的简单使用
一、安装并配置仓耳今楷字体 优化阅读体验,个人实测觉得正文用 仓耳今楷04-W03最合适(前面的数字代表字体,数字越大,越偏向于楷体,而01就很像黑体。后面的数字代表粗细,正常粗细是W03,最粗是W0…...
docker的基础知识
Docker https://www.yuque.com/leifengyang/sutong 下载镜像 检索: docker search下载: docker pull列表: docker images删除 docker rmi启动容器 运行: docker run查看: docker ps停止: docker stop启动: …...
PcVue助力立讯:精密制造的智能化管控实践!
PcVue助力立讯: 精密制造的智能化管控实践! 客户介绍 立讯精密(Luxshare ICT,股票代码:002475)成立于2004年5月24日,专注于为消费电子产品、汽车领域产品以及企业通讯产品提供从核心零部件、…...
深度学习-157-Dify工具之创建知识库
文章目录 1 硅基流动1.1 模型广场1.1.1 对话模型(免费)1.1.2 嵌入模型(免费)1.1.3 重排序模型(免费)1.2 模型调用1.2.1 文本对话1.2.2 文本嵌入2 构建知识库2.1 准备文档2.2 点击创建知识库2.3 设置嵌入参数2.4 召回测试3 创建聊天助手3.1 仅使用大模型3.2 结合知识库的大模型3…...
Oracle--安装Oracle Database23ai Free
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 官方文档: Get Started with Oracle Database 23ai | Oracle 一、安装的环境要求 本文同步使用Oracle Linux9的虚拟机进行操作 1、Orac…...
【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(三)
本篇博客给大家带来的是集合类在多线程下的使用和死锁的知识点还包括常见的面试题. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&…...
【verilog】多个 if 控制同一个变量(后面会覆盖前面)非阻塞赋值真的并行吗?
非阻塞赋值 (<) 是“并行”的,但是代码顺序会影响结果?”这正是 Verilog 的硬件描述本质 vs 行为语义之间的微妙之处。 💡1. 非阻塞赋值真的并行吗? 是的!非阻塞赋值 < 从行为上是并行的,也就是说&a…...
C++事件驱动编程从入门到实战:深入理解与高效应用
C事件驱动编程从入门到实战:深入理解与高效应用 在现代软件开发中,事件驱动编程(Event-Driven Programming)作为一种流行的编程范式,被广泛应用于图形用户界面(GUI)、网络通信、游戏开发等众多…...
问题 | MATLAB比Python更有优势的特定领域
以下是关于MATLAB在特定领域相较于Python的优势的详细分析,结合其核心功能、行业应用及技术特性展开论述: 一、科学研究与工程计算 1. 数值计算的高效性 MATLAB的核心设计围绕矩阵运算展开,其底层对线性代数和数值计算进行了深度优化。例如…...
黑马商城项目(三)微服务
一、单体架构 测试高并发软件 二、微服务 三、SpringCloud 四、微服务拆分 黑马商城模块: 服务拆分原则: 拆分服务: 独立project: maven聚合: 拆分案例: 远程调用: package com.hmall.cart.…...