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

从入门到精通【MySQL】 JDBC

文章目录

    • 📕1. 什么是JDBC
    • 📕2. JDBC的使用原理
    • 📕3. 使用JDBC具体步骤
        • ✏️3.1 标题获取MySQL驱动包并修改pom.xml文件
        • ✏️3.2 建立数据库连接
        • ✏️3.3 创建Statement
        • ✏️3.4 执行SQL语句
        • ✏️3.5 处理返回结果
        • ✏️3.6 释放资源和关闭连接
    • 📕4. JDBC中常用的类和接口
        • ✏️4.1 DriverManager 和DataSource
        • ✏️4.2 Connection 数据库连接
        • ✏️4.3 Statement 对象
            • 🔖4.3.1 Statement
            • 🔖4.3.2 SQL注入
            • 🔖4.3.3 PreparedStatement
        • 📕4.4 ResultSet结果集

📕1. 什么是JDBC

JDBC(Java Data Base Connectivity, Java数据库连接)是Java程序和数据库之间的桥梁,包含了一套Java定义的用于执行SQL语句的接口,使开发者能够编写数据库的程序。JDBC 的主要作用是:与数据库建立连接、发送SQL语句和处理数据库执行结果。

📕2. JDBC的使用原理

首先回顾一下我们使用Navicat客户端操作MySQL数据库的过程:
a. 连接到数据库
b. 发送SQL语句
c. 执行SQL语句
d. 显示得到的结果
e. 关闭连接

同样如果使用程序操作数据库也会经历以上几步,但是不同的数据库对于同一个操作不论是协议还是参数都各有不同,如果让程序员自己去实现,那就必须针对不同的数据库进行编码实现,这个工作量和维护成本显然太大。Java采取的做法是把以上操作步骤定义了相应的接口,具体的实现交给数据库厂商去做,Java程序员只需要按照需要调用接口中定义的方法即可,这样不论使用什么数据库,都对于Java程序没有任何影响,即便是换一个数据库,也只需要换一下相应厂商的实现依赖。

JDBC工作原理简洁地概括为:

1. 加载数据库厂商的驱动包(告诉程序该使用哪一个数据库)
2. 建立连接
3. 创建Statement对象(用来执行SQL语句的对象)
4. 执行SQL
5. 处理返回结果
6. 释放资源和关闭连接

📕3. 使用JDBC具体步骤

✏️3.1 标题获取MySQL驱动包并修改pom.xml文件

在Maven仓库搜索MySQL,找到最新版的驱动包(点击即可)

修改pom.xml文件:在Maven工程中的pom.xml文件中的 标签中添加MySQL依赖

<dependencies><!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency></dependencies>
✏️3.2 建立数据库连接

首先给大家介绍一下URL,在数据库连接中,URL(Uniform Resource Locator,统一资源定位符)参数起着关键作用。以下是对数据库 URL 参数的解释说明:

一. 通用结构

jdbc:mysql://[host][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

二. 各部分含义

  1. jdbc:mysql://
这是 JDBC 连接 MySQL 数据库的前缀标识,表明使用 JDBC 连接 MySQL 数据库驱动程序。
  1. [host]
数据库服务器的主机名或 IP 地址。指定数据库服务器所在的位置,例如 “localhost” 表示本地主机,或者是一个具体的 IP 地址如“192.168.1.100”。
  1. [:port]
数据库服务器的端口号。MySQL 的默认端口号是 3306,但如果数据库服务器配置为使用不同的端口,则需要在 URL中指定正确的端口号。
  1. [database]
要连接的数据库名称。指定要连接和操作的具体数据库。
  1. [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]…
常用连接参数:allowPublicKeyRetrieval=true|false:
含义:决定是否允许客户端从服务器自动检索公钥。如果设置为true,则允许检索公钥,这在某些情况下可以解决连接问题,但可能会带来一定的安全风险。如果设置为false,则不允许检索公钥。useSSL=true|false:
含义:指定是否使用 SSL(Secure Sockets Layer)加密连接。设置为true表示使用 SSL
加密连接,确保数据在传输过程中的安全性;设置为false表示不使用 SSL 连接。characterEncoding=[encoding]:
含义:设置连接的字符编码。常见的编码有UTF-8、GBK等。确保客户端和服务器之间的数据传输使用正确的字符编码,以避免出现乱码问题。autoReconnect=true|false:
含义:当连接断开时,决定是否自动重新连接。如果设置为true,在连接断开时,驱动程序会尝试自动重新连接到数据库;如果设置为false,则不会自动重新连接。zeroDateTimeBehavior=[behavior]:
含义:指定当数据库返回零日期时间值时的处理方式。常见的行为有exception(抛出异常)、convertToNull(转换为null)等。不常用连接的参数:serverTimezone=[timezone]:
含义:设置服务器的时区。确保数据库中的日期时间值与客户端的时区一致,避免出现时间不一致的问题。connectTimeout=[milliseconds]:
含义:指定连接超时时间,以毫秒为单位。如果在指定的时间内无法建立连接,则连接尝试将失败。socketTimeout=[milliseconds]:
含义:设置套接字超时时间,以毫秒为单位。指定在读取或写入数据库时等待的最长时间,如果超过这个时间仍未完成操作,则会抛出超时异常。

• 使用驱动管理类 DriverManager 的静态发法获取数据库连接

在这里插入图片描述

• 通过数据源 DataSource 对象获取(更推荐使用这种方式建立数据库连接)
在这里插入图片描述

✏️3.3 创建Statement

Statement是用 于执行静态SQL语句并返回执行结果的对象
在这里插入图片描述

✏️3.4 执行SQL语句

• 执行select查询时返回的是⼀个结果集,用ResultSet接收
• 执行nsert, update, delete操作时,返回的是受影响的行数,用int类型接收
在这里插入图片描述
执行前:
在这里插入图片描述

✏️3.5 处理返回结果

在这里插入图片描述
执行后:
在这里插入图片描述

✏️3.6 释放资源和关闭连接

在这里插入图片描述

📕4. JDBC中常用的类和接口

✏️4.1 DriverManager 和DataSource
  • DriverManager类是JDBC的管理层,用来管理数据库中的驱动程序,在使用java操作数据库之前,必须使用class类的静态方法forName(String classname)加载能够连接数据库的驱动程序。
  • DataSource数据源是DriverManager的替代方案,始于JDK1.4,是获取数据库连接的首选方法

DriverManager 与 DataSource 的区别

  • DriverManager每次调用getConnection方法都会初始化⼀个新的连接,使用完成后会关闭真实连接,导致资源浪费
  • DataSource使用了连接池的技术,会在初始化时创建⼀定数量的数据库连接,这些连接可以重复使用,关闭时并不是真正关闭连接,而是将连接归还给连接池,以供后续使用,有效地提高资源利用率和和性能(池化技术后续进阶篇会介绍)
✏️4.2 Connection 数据库连接

Connection接口代表java端与指定数据库之间的连接,Connection接口的常用方法及说明如下表:

方法功能描述
createStatement()创建Statement对象
createStatement(int resultSetType,int resultSetConcurrency)创建Statement对象,Statement对象被用来生成一个具有给定类型、并发性和可保存性的ResultSet对象
prepareStatement()创建预处理prepareStatement对象
prepareCall(String sql)创建一个CallableStatement对象来调用数据库存储过程
isReadOnly()查看当前Connection对象的读写模式是否是只读模式
setReadOnly()查看当前Connection对象的读写模式,默认为非只读模式
commit()事上一次提交/回滚后进行的更改成为持久更改,并释放此Connection对象当前持有的数据库锁
roolback()取消在当前事务中进行的更改,并释放此Connection对象当前持有的数据库锁
close()立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放
✏️4.3 Statement 对象
🔖4.3.1 Statement

用于执行静态SQL语句并返回执行结果

方法功能描述
execute(String sql)执行静态的SELECT语句,该语句可能返回多个结果集
executeQuery(String sql)执行给定的SQL语句,该语句返回单个ResultSet对象
clearBatch()清空此Statement对象的当前SQL命令列表
executeBatch()将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组,数组元素的排序与SQL语句的添加顺序对应
addBatch()将给定的SQL命令添加到此Statement对象的当前命令列表中,如果驱动程序不支持批量处理,将抛出异常
close()释放Statement对象占用的数据库和JDBC资源
executeUpdate()执行前面包含的参数的动态INSERT、UPDATE或DELETE语句

由于只能执行静态语句,所以这里会有⼀个问题,假设一个语句中需要动态的参数,比如where子句中的条件,那么只能通过字符串拼接的方式组装完成的SQL语句,比如:

String sql = "select * from student where name = '" + name + "' and class_id = " + classId;

字符串拼接形式构造SQL语句时,如果不处理参数中的特殊字符就会造成SQL注入,这是一个非常
严重的安全性问题。

🔖4.3.2 SQL注入

SQL注入即是指web应用程序对用户输⼊数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进⼀步得到相应的数据信息。

示例:
• 姓名条件宋江和班级编号条件 1 是动态的参数

# 正常的查询,没有符合的结果
mysql> select * from student where name = '宋江' and class_id = 1;
Empty set (0.01 sec)

• 构造恶意参数来执行非法的SQL,把正常的条件值宋江替换为 ’ or 1 = 1;–

# 查询出来了所有的记录,此时学⽣表中的数据全部都将泄漏
mysql> select * from student where name = '' or 1 = 1;-- 宋江' and class_id = 1;
+----+----------+--------+------+--------+-------------+----------+
| id | name | sno | age | gender | enroll_date | class_id |
+----+----------+--------+------+--------+-------------+----------+
| 1 | 唐三藏 | 100001 | 18 | 1 | 1986-09-01 | 1 |
| 2 | 孙悟空 | 100002 | 18 | 1 | 1986-09-01 | 1 |
| 3 | 猪悟能 | 100003 | 18 | 1 | 1986-09-01 | 1 |
| 4 | 沙悟净 | 100004 | 18 | 1 | 1986-09-01 | 1 |
| 5 | 宋江 | 200001 | 18 | 1 | 2000-09-01 | 2 |
| 6 | 武松 | 200002 | 18 | 1 | 2000-09-01 | 2 |
| 7 | 李逹 | 200003 | 18 | 1 | 2000-09-01 | 2 |
| 8 | 不想毕业 | 200004 | 18 | 1 | 2000-09-01 | 2 |
+----+----------+--------+------+--------+-------------+----------+
8 rows in set (0.01 sec)
🔖4.3.3 PreparedStatement

预编译SQL语句对象,SQL语句被预编译并存储在PreparedStatement对象中,可以使用该对象多次
执行SQL语句,同时可以解决SQL注入问题。

示例:通过Connection对象获取到PreparedStatement对象,需要传入SQL模板,动态参数用占位
符 ? 表示。

// 获取了个处理SQL的PrepareStatement对象
PreparedStatement preparedStatement = connection.prepareStatement("select id, 
name, sno, age, gender, enroll_date, class_id from student where name = ? and 
class_id = ?");
// ⽤真实值去替换占位符
preparedStatement.setString(1, "宋江");
preparedStatement.setLong(2, 2);
📕4.4 ResultSet结果集

ResultSet接口类似于一个临时表,用来暂时存放对数据库中的数据执行查询操作后的结果,ResultSet对象具有指向当前数据行的指针,指针开始的位置在第一条记录上,通过next()方法可向下移动指针,ResultSet接口的常用方法以及说明如下表:
在这里插入图片描述

相关文章:

从入门到精通【MySQL】 JDBC

文章目录 &#x1f4d5;1. 什么是JDBC&#x1f4d5;2. JDBC的使用原理&#x1f4d5;3. 使用JDBC具体步骤✏️3.1 标题获取MySQL驱动包并修改pom.xml文件✏️3.2 建立数据库连接✏️3.3 创建Statement✏️3.4 执行SQL语句✏️3.5 处理返回结果✏️3.6 释放资源和关闭连接 &#…...

Sigfox技术|独特的运营模式 + 超窄带技术 + 非授权频谱

在物联网&#xff08;IoT&#xff09;通信技术的快速发展中&#xff0c;低功耗广域网&#xff08;LPWAN&#xff09;成为了推动智能设备连接的重要基础技术之一。作为LPWAN中的一种专有通信协议&#xff0c;Sigfox以其低功耗和广覆盖的特点脱颖而出&#xff0c;在物联网应用中占…...

【Dify 前端源码解读系列】MDX 让 API 文档焕发生机

什么是 MDX? MDX 是一种强大的文档格式,它允许在 Markdown 内容中使用 JSX。这意味着你可以在 Markdown 的简洁语法中嵌入交互式组件,使文档不再局限于静态内容。MDX 完美地将 Markdown 的简单与 JSX 的灵活性结合在一起,特别适合需要丰富交互体验的文档场景。 MDX 的优势…...

docker能用来干什么的

最近项目像简快部署docker&#xff0c;但是发现源被隔离&#xff0c;暂时先记下&#xff0c;以后有机会再研究。 下面摘抄的网文网址如下&#xff1a;Docker能用来干什么的 ?_超级码客_海量程序员面试题库 | 笔试题库 | 面试求职考试神器 docker能用来干什么的 docker能用来做…...

dispaly: inline-flex 和 display: flex 的区别

display: inline-flex 和 display: flex 都是 CSS 中用于创建弹性盒子布局&#xff08;Flexbox&#xff09;的属性值&#xff0c;但它们之间有一些关键的区别&#xff0c;主要体现在元素如何在页面上被渲染和它们对周围元素的影响。 主要区别 1&#xff0c;块级 vs 行内块级 d…...

AI Agent系列(九) -Data Agent(数据分析智能体)

AI Agent系列【九】 前言一、Data Agent场景二、Data Agent核心因素2.1 数据源2.2 大模型2.3 应用及可视化 三、Data Agent应用场景 前言 Data Agent就是在大模型基础上构建一个数据分析的智能体&#xff0c;是一种基于人工智能技术&#xff0c;特别是大模型技术的数据分析智…...

【工具】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~

Krillin AI 是全能型音视频本地化与增强解决工具。这款简约而强大的工具&#xff0c;集音视频翻译、配音、语音克隆于一身&#xff0c;支持横竖屏格式输出&#xff0c;确保在所有主流平台&#xff08;哔哩哔哩&#xff0c;小红书&#xff0c;抖音&#xff0c;视频号&#xff0c…...

api护照查验-GO国内护照查验接口-身份安全卫士

在全球化浪潮汹涌的当下&#xff0c;跨境电子商务蓬勃发展&#xff0c;国际旅游持续升温&#xff0c;留学热潮也未曾减退。在这些跨越国界的活动背后&#xff0c;护照作为国际旅行的关键凭证&#xff0c;其真伪核验的重要性愈发凸显。护照查验接口&#xff0c;宛如一颗璀璨的新…...

在 Tailwind CSS 中优雅地隐藏滚动条

在开发中&#xff0c;我们经常需要隐藏滚动条但保持滚动功能&#xff0c;这在构建现代化的用户界面时很常见。 本文将介绍两种在 Tailwind CSS 项目中实现这一目标的方法&#xff0c;方便同学们记录和查阅。 方法一&#xff1a;使用 tailwind-scrollbar-hide 插件 这是一种更…...

【C++】深入浅出之继承

目录 继承的概念及定义继承的定义继承方式和访问限定符protected与private的区别 默认继承方式继承类模板基类和派生类对象赋值兼容转换继承中的作⽤域(隐藏关系)相关面试题⭐ 派生类的默认成员函数⭐构造函数拷贝构造赋值重载析构函数 继承与友元继承与静态成员继承的方式菱形…...

Linux软件仓库

Linux常见软件包类型&#xff1a; dbdDebian家族及Ubuntu等基于Debian的Linux操作系统所使用的软件包管理格式rpmRed Hat Linux、Fedora、openSUSE、Mandriva和Mageia等使用的标准软件包管理格式源代码软件包一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码…...

Git创建分支操作指南

1. 创建新分支但不切换&#xff08;仅创建&#xff09; git branch <分支名>示例&#xff1a;创建一个名为 new-feature 的分支git branch new-feature2. 创建分支并立即切换到该分支 git checkout -b <分支名> # 传统方式 # 或 git switch -c <分支名&g…...

从基础概念到前沿应用了解机器学习

一、机器学习基础概念 1.机器学习定义与核心价值 机器学习是人工智能的重要分支&#xff0c;通过算法让计算机系统能够从数据中自动学习并改进性能。其核心价值在于&#xff1a; 自动化决策&#xff1a;无需显式编程即可完成复杂任务 持续进化&#xff1a;随着数据积累不断…...

跨平台嵌入式音视频开发指南:EasyRTC音视频通话的多场景适配与AI扩展能力

在数字化通信技术飞速发展的今天&#xff0c;实时音视频通信已成为众多智能设备和应用的核心功能。从智能家居到远程办公&#xff0c;从在线教育到智能安防&#xff0c;音视频通信技术的应用场景不断拓展&#xff0c;对低延迟、高稳定性和跨平台兼容性的需求也在持续增长。在这…...

停止回答 docker启动redis

在Docker中启动Redis服务器是一个相对直接的过程。下面是一些步骤和示例&#xff0c;帮助你在Docker容器中运行Redis。 步骤 1: 安装Docker 确保你的系统上已经安装了Docker。你可以从Docker官网下载并安装Docker。 步骤 2: 拉取Redis镜像 首先&#xff0c;你需要从Docker Hu…...

2025年4月16日华为留学生笔试第二题200分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 图书馆借阅管理系统 问题描述 卢小姐是一家大学图书馆的管理员,她需要开发一个简单的图书借阅管理系统来处理日常的图书流通操作。系统需要支持以下四种操作: in s:表示一本…...

0417 Langchain

Langchain就是&#xff0c;帮助大模型和外部计算、数据结合起来。 pip install langchain pip install langchain-openai 文档 登录并获取LangSmish&#xff08;监控&#xff09;的API key&#xff1a; 根据AI框架&#xff1a;Langchain的环境和监控_哔哩哔哩_bilibili htt…...

SQL Server 游标介绍

SQL Server 游标是用于对查询结果集进行逐行处理的数据库对象。下面从基本概念、使用步骤、示例代码、优缺点等方面详细介绍&#xff1a; 基本概念 游标提供了一种对从表中检索出的数据进行逐行操作的机制&#xff0c;它允许开发者在结果集中向前或向后移动&#xff0c;一次处…...

Linux:显示 -bash-4.2$ 问题(CentOS 7)

文章目录 一、原因二、错误示例三、解决办法 一、原因 在 CentOS 7 系统中&#xff0c;如果你看到命令行提示符显示为 -bash-4.2$&#xff0c;一般是 Bash shell 正在运行&#xff0c;并且它没有找到用户的个人配置文件&#xff0c;或者这些文件有问题而未能成功加载。这个提示…...

小数点舍入,round与Decimal的区别

两者对中间值&#xff08;5&#xff09;的处理不同 主要是精度问题 表面上是2.675 但是实际上不一定是2.675。 from decimal import Decimal, ROUND_HALF_UPprint(f{2.675:.20f}) print(f"{Decimal(f{2.675}):.20f}")# 使用 Python 内置的 round 函数进行四舍五入 …...

【华为】OSPF震荡引起CPU占用率高怎么解决?

原创&#xff1a;厦门微思网络 现象描述 如图所示&#xff0c;Switch_1、Switch_2、Switch_3和Switch_4配置了OSPF协议&#xff0c;发现Switch_1设备的CPU占用率高&#xff0c;ROUT任务占用率明显高于其他任务并且产生路由震荡。 故障组网图 原因分析 网络中IP地址冲突导致…...

2025年4月16日华为留学生笔试第三题300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 智慧城市网络优化 问题描述 K小姐是一家智慧城市服务提供商的网络架构师。她负责规划城市边缘计算节点的布局,以提供更快速、稳定的网络服务。 城市内有 n n...

禁用USB接口的电脑管理软件推荐

软件介绍 还在为同事随意插U盘拷贝文件而头疼&#xff1f;这款「USB守门员」堪称办公室数据防泄漏神器&#xff01;不到100KB的迷你体积&#xff0c;却能让你瞬间掌控电脑的USB权限&#xff0c;操作简单到连小白都能秒变“技术大佬”&#xff01; 禁用/启用&#xff0c;一键掌…...

FreeRTOS任务创建和删除简要概述

任务创建 函数原型&#xff1a;xTaskCreate()是创建任务的主要函数&#xff0c;其原型通常如下&#xff1a; BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,T…...

【C++初阶】第14课—缝合怪deque和优先队列、仿函数

文章目录 1. 双端队列deque1.1 认识deque1.2 deque的迭代器1.3 deque的常用接口1.4 deque的优缺点 2. 优先队列priority_queue2.1 认识priority_queue2.2 模拟实现优先队列priority_queue 3. 仿函数 在学习deque之前&#xff0c;回顾一下vector和list各自的优缺点 数据结构优点…...

通过helm在k8s中安装mysql 8.0.37

使用 Helm 在 Kubernetes 中安装 MySQL 8.0.37 是一个相对简单的过程。以下是详细步骤&#xff1a; 下载helm包 #添加 Helm 仓库 helm repo add bitnami https://charts.bitnami.com/bitnami#搜索mysql helm search repo mysql --versions NAME CHAR…...

人工智能 - browser-use:重新定义浏览器自动化的 AI 新范式

在浏览器自动化领域&#xff0c;Selenium 和 Playwright 等工具已成为开发者的标配。但随着网页复杂度的提升&#xff08;如动态渲染、反爬虫机制、验证码等&#xff09;&#xff0c;传统工具逐渐暴露出效率低、扩展性差的缺陷。browser-use 的出现&#xff0c;通过深度融合人…...

Langchain-简单Demo

支持的模型 官方示例&#xff1a; #OpenAI pip install -qU langchain-openai import getpass import os os.environ["OPENAI_API_KEY"] getpass.getpass() from langchain_openai import ChatOpenAI model ChatOpenAI(model"gpt-4") #Anthropic pip ins…...

怎样才能设计好的自动化测试用例

设计一个好的自动化测试用例&#xff0c;就像写一段“自解释的、高质量的代码”——它应该清晰、可靠、独立、易维护&#xff0c;而且对测试目标有价值。 ✅ 好的自动化测试用例应具备的 8 大特性&#xff1a; 特性解释示例&#x1f3af; 目标明确一个用例只验证一个点&#…...

NFC 碰一碰发视频源码搭建全流程详解,支持OEM

在移动互联网时代&#xff0c;便捷的数据传输方式备受关注。NFC&#xff08;近场通信&#xff09;技术以其操作简单、连接迅速的特点&#xff0c;为数据交互提供了新的可能。通过搭建 NFC 碰一碰发视频功能&#xff0c;用户只需将设备轻轻靠近&#xff0c;就能快速完成视频传输…...

vue入门:路由 router

文章目录 介绍安装配置路由模式嵌套路由路由传参编程式导航路由懒加载 底层原理 介绍 vue2 vue router API vue3 vue router API Vue Router 是 Vue.js 的官方路由管理器&#xff0c;它允许你通过不同的 URL 显示不同的组件&#xff0c;从而实现单页面应用&#xff08;SPA&a…...

运营商二要素认证 API 接口具有哪些的好处?

目录 一、提高认证准确性 1.数据真实性可靠 2.实时验证效率高 3.双重验证更精准 4.多场景适用性强 5.动态更新数据准 二、增强安全性 1.防止身份冒用 2.抵御欺诈行为 3.保障数据安全 4.强化业务安全 5.支持安全审计与追溯 三、提升用户体验 1.操作简便快捷 2.认…...

从GPT到Gemini 大模型进化史

从GPT到Gemini&#xff1a;大模型进化史 在过去的几年里&#xff0c;人工智能领域经历了翻天覆地的变化&#xff0c;其中最引人注目的莫过于大规模语言模型的发展。从最初的GPT系列到最近的Gemini&#xff0c;这些模型不仅在技术上取得了重大突破&#xff0c;还在实际应用中展…...

大模型时代下全场景数据消费平台的智能BI—Quick BI深度解析

一、前言 在数字化转型浪潮中&#xff0c;BI工具已成为企业数据驱动决策的核心引擎。Quick BI作为阿里云旗下的全场景数据消费平台&#xff0c;以其"让业务决策触手可及"的理念在市场中占据一席之地。通过Quick BI可以让企业的数据资产快速的流动起来&#xff0c;通…...

高防ip的原理

高防IP&#xff08;高防御IP地址&#xff09;是一种专门用于抵御大规模网络攻击的防护服务&#xff0c;其核心原理是通过​​流量清洗、协议分析与智能调度​​等技术&#xff0c;将恶意流量与正常业务流量分离&#xff0c;保障目标服务器或应用的可用性。以下是其核心技术原理…...

微服务4--服务网关

网关 在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务&#xff0c;那么作为客户端要如何去调用 这么多的微服务呢&#xff1f;如果没有网关的存在&#xff0c;我们只能在客户端记录每个微服务的地址&#xff0c;然后分别去调用。 这样的架构&#xff0c;会存在着诸…...

容器docker入门学习

这里写目录标题 容器容器的软件厂商 dockerdocker引擎 虚拟化虚拟化技术 docker安装详解1、安装检查2、安装yum相关的工具3、安装docker-ce软件4、查看docker版本5、启动docker服务6、设置docker开机启动7、查看有哪些docker容器运行进程8、查看容器里有哪些镜像9、下载nginx软…...

Flink调优面试题及参考答案20道

1. 如何优化Flink的Checkpoint机制? 答案: 增大Checkpoint间隔:减少对作业吞吐量的影响(如从1分钟调整为5分钟)。 使用增量Checkpoint(RocksDB状态后端):仅上传变化的文件,降低IO压力。 调整超时时间:checkpointTimeout避免因短暂反压导致失败。 对齐优化:使用非对…...

【音视频】MP4解封装

一、概述 实现了读取mp4文件&#xff0c;提取出h264和aac文件&#xff0c;可以直接播放 二、实现过程 准备文件 在build路径下添加mp4文件 同时&#xff0c;添加main函数参数&#xff0c;表示输入文件和输出文件 打开文件 打开输入文件&#xff0c;初始化格式上下文 char…...

全球6G大会 | 紫光展锐用“芯”推动空天地一体创新纪元

近日&#xff0c;全球6G技术与产业生态大会&#xff08;简称“全球6G技术大会”&#xff09;在南京召开。紫光展锐应邀出席“空天地一体化与数字低空”平行论坛&#xff0c;并从6G通信、感知、定位等多方面分享了紫光展锐在6G前沿科技领域的创新理念及在空天地一体化技术方面的…...

C++学习:六个月从基础到就业——面向对象编程:虚函数与抽象类

C学习&#xff1a;六个月从基础到就业——面向对象编程&#xff1a;虚函数与抽象类 本文是我C学习之旅系列的第十四篇技术文章&#xff0c;主要探讨C中的虚函数与抽象类&#xff0c;这是实现多态性的核心机制。查看完整系列目录了解更多内容。 引言 多态性是面向对象编程的三大…...

git分支操作

一、git branch&#xff1a;分支管理 1. 查看分支 git branch # 查看本地分支&#xff08;* 表示当前分支&#xff09; git branch -a # 查看所有分支&#xff08;本地远程&#xff09; git branch -vv # 查看分支跟踪关系 2. 创建/删除分支…...

IDEA 中 Scala 项目远程连接虚拟机 Spark 环境

IDEA 中 Scala 项目远程连接虚拟机 Spark 环境 1. 环境准备 确保虚拟机 Spark 环境正常运行 虚拟机中已安装并启动 Spark记录虚拟机的 IP 地址和 Spark 端口&#xff08;默认 7077&#xff09;确保虚拟机防火墙允许相关端口访问 本地 IDEA 环境配置 安装 Scala 插件安装 Spar…...

2. 判断列表元素的单一性

【问题描述】编写程序&#xff0c;判断一个列表中的各个元素如果相同(例如[2,2,2,2,2]),则输出True&#xff0c;不相同(例如[1,2,3,2,3])则输出False。 【输入形式】ainput() 【输出形式】用print()函数 【样例输入】 [2,2,2,2,2] 【样例输出】 True 【样例输入】 [1,2,…...

King3399(ubuntu文件系统)GDB/GDBServer调试配置

0 引言 最近在用king3399进行驱动开发&#xff0c;即使是一些简单的外设也不免反复修改与烧录&#xff0c;若仅仅通过printk这种方法对程序进行打印调试&#xff0c;其过程也是相当复杂&#xff0c;因此想通过GDB/GDBServer的方式进行调试&#xff0c;本文主要是记录配置过程的…...

机器学习简介

目录 机器学习简介机器学习的大致分类监督学习 (Supervised learning)RegressionClassification / Predict categories 无监督学习 (Unsupervised learning)Clustering algorithmAnomaly DetectionDimensionality Reduction对比总结 强化学习 (Reinforcement learning)强化学习…...

k8s调度器:如何控制Pod的分布

引言&#xff1a;从“随机分配”到“智能调度” 想象你的Kubernetes集群是一个繁忙的物流中心&#xff0c;节点&#xff08;Node&#xff09;是仓库&#xff0c;Pod是货物。 默认调度器 就像一名普通分拣员&#xff0c;简单地将货物塞进最近的仓库&#xff0c;可能导致某些仓…...

机器学习在催化剂设计中的应用理论加实操

背景介绍​​ 数据智能驱动&#xff0c;催化理性设计新纪元​​ 催化材料设计是能源转化、化工合成及环境治理等领域的核心挑战。传统催化研究主要依赖密度泛函理论(DFT)计算与实验试错法&#xff0c;通过量子力学模拟揭示活性位点电子结构&#xff0c;结合高通量实验筛选候选…...

Spring Cloud Alibaba微服务-微服务介绍和搭建

1. 课程介绍 单体服务中有订单&#xff0c;用户&#xff0c;库存&#xff0c; 两个缺陷&#xff1a; a. 是以应用的维度进行负载均衡&#xff0c;资源占用大 b. 当其中一个模块宕机&#xff0c;整个应用就不能用了&#xff1b; nacos&#xff1b;ribbon&#xff0c;loadBa…...

量子通信应用:量子安全物联网(三)协议融合

第一部分:引言与概述 1.1 量子安全物联网的背景与必要性 随着物联网(IoT)设备的爆炸式增长(预计2030年全球连接设备超750亿台),传统安全机制(如RSA、ECC加密)正面临量子计算的颠覆性威胁。量子计算机的Shor算法可在多项式时间内破解非对称加密体系,而Grover算法则对…...