MyBatis 动态 SQL 优化:标签的实战与技巧
目录
- 动态SQL详解
- 一、动态SQL的核心概念
- 1.1 什么是动态SQL?
- 1.2 动态SQL的优点
- 1.3 动态SQL的常见用途
- 二、动态SQL的常见用法(XML方式)
- 2.1` < if >` 标签
- 2.2` < trim> `标签
- 2.3 `<where>`标签
- 2.4`<set>`标签
- 2.5 `<foreach> `标签
- 2.6 `<include>`标签
- 三、动态SQL的注意事项
- 3.1 SQL注入问题(`搞破坏`)
- 3.2 performance
- 3.3 动态SQL的可读性和维护性
- 四、总结
动态SQL详解
动态SQL是一种在运行时生成和执行SQL语句的技术,广泛应用于处理复杂查询条件和动态数据需求。以下是动态SQL的核心概念、常见用法及注意事项。
一、动态SQL的核心概念
1.1 什么是动态SQL?
动态SQL是一种灵活的SQL编写方式,允许开发者在程序运行时根据条件生成SQL语句,而不是在编译时固化。动态 SQL 是Mybatis的强大特性之一,能够完成不同条件下不同的 SQL拼接。
1.2 动态SQL的优点
- 灵活性:根据不同条件生成不同的SQL语句。
- 复用性:减少重复代码,提高代码维护性。
- 性能:在某些场景下可以优化查询性能。
1.3 动态SQL的常见用途
- 处理多条件查询。
- 动态指定表名、字段或排序方式。
- 处理批量操作。
二、动态SQL的常见用法(XML方式)
数据库数据信息
2.1 < if >
标签
主要用于在动态SQL中根据条件判断是否执行某个SQL片段。它可以根据传入的参数或条件动态地添加或移除SQL语句的一部分,从而实现灵活的查询需求。
UserInfoMapperXML.java 接口代码
Integer insertUserBySQL(UserInfo userInfo);
UserInfoMapper.xml 文件
<insert id="insertUserBySQL">insert into user_info (username,password,age,<if test="gender!=null">gender,</if>phone)values(#{username},#{password},#{age},<if test="gender!=null">#{gender},</if>#{phone})</insert>
测试类没有插入gender的情况
:
@Testvoid insertUserBySQL() {UserInfo userInfo=new UserInfo();userInfo.setUsername("qq");userInfo.setPassword("qq");userInfo.setAge(46);userInfo.setPhone("465131");userInfoMapperXML.insertUserBySQL(userInfo);}
运行结果:
可以看到把gender
这个字段使用if标签之后,这个字段就被移除了。
2.2< trim>
标签
trim标签在动态SQL中起到格式化SQL语句的作用,允许开发者在生成SQL时自动处理空格、换行符以及前缀后缀的添加。通过合理使用trim标签,可以简化动态SQL的开发,提高代码的可读性和维护性,同时确保生成的SQL语句高效且正确。
prefix
:表示整个语句块,以prefix的值作为前缀
suffix
:表示整个语句块,以suffix的值作为后缀
prefixOverrides
:表示整个语句块要去除掉的前缀
suffixOverrides
:表示整个语句块要去除掉的后缀
为了更好的了解trim标签的作用,先来个错误的示范。
XML.java
文件
Integer insertUserBySQL1(UserInfo userInfo);
.xml
文件
<insert id="insertUserBySQL1">insert into user_info<trim prefix="(" suffix=")" ><if test="username!=null">username,</if><if test="password!=null">password,</if><if test="age!=null">age,</if><if test="gender!=null">gender,</if><if test="phone!=null">phone</if></trim>values<trim suffix="(" prefix=")" ><if test="username!=null">#{username},</if><if test="password!=null">#{password},</if><if test="age!=null">#{age},</if><if test="gender!=null">#{gender},</if><if test="phone">#{phone}</if></trim></insert>
测试类
@Testvoid insertUserBySQL1() {UserInfo userInfo=new UserInfo();userInfo.setUsername("zhangs");userInfo.setPassword("123461");userInfo.setPhone("7489");userInfoMapperXML.insertUserBySQL1(userInfo);
运行结果:
修改 .xml
文件,通过trim标签给SQL语句添加或者去除前后缀。
再进行测试;
可以看到成功了。
2.3 <where>
标签
标签用于在动态SQL中自动处理WHERE子句的生成,简化多条件查询的开发。它能自动处理逻辑连接词(如AND、OR)以及去除多余的关键字,使得代码更加简洁和高效。
XML.java
文件代码:
List<UserInfo> selectByWhere();
.xml
文件代码
<select id="selectByWhere" resultType="com.sliqvers.model.UserInfo">select * from user_info<where><if test="username!=null">and username=#{username}</if><if test="password!=null">or password=#{password}</if><if test="age!=null">and age=#{age}</if><if test="phone!=null">or phone=#{phone}</if></where></select>
测试类
@Testvoid selectByWhere() {userInfoMapperXML.selectByWhere().stream().forEach(x-> System.out.println(x));}
生成的SQL:
当username和phonel都有值:
SELECT * FROM user_info WHERE username = ? AND phone =?;
当只有username有值:
SELECT * FROM user_info WHERE username =?;
当两者都为null:
SELECT * FROM user_info;
2.4<set>
标签
标签在UPDATE语句中起到动态设置字段值的作用,自动处理SET关键字和逗号,避免空更新。通过合理使用
<set>
标签,可以简化代码,提高SQL执行效率,确保系统的安全性和稳定性。
XML.java
文件
Integer upadteUserSql(UserInfo userInfo);
.xml
文件
<update id="upadteUserSql">update user_info<set><if test="password!=null">password = #{password} ,</if><if test="username!=null">username = #{username},</if></set>where id=#{id}</update>
测试类:
@Testvoid upadteUserSql() {UserInfo userInfo=new UserInfo();userInfo.setUsername("Sliqvers");userInfo.setPassword("111111");userInfo.setId(1);userInfoMapperXML.upadteUserSql(userInfo);}
运行结果:
生成的SQL:
当username和password都有值:
UPDATE user_info SET username = ?, email = ? WHERE id = ?
当只有username有值:
UPDATE user_info SET username = ? WHERE id = ?
当只有password有值:
UPDATE users_info SET password = ? WHERE id = ?
当两者都为null:
UPDATE user_info WHERE id = ?
2.5 <foreach>
标签
<foreach>
标签在动态SQL中起到遍历集合或数组的作用,生成IN子句、批量INSERT或UPDATE等操作。通过合理使用标签,可以简化批量操作的SQL拼接,提高开发效率和系统性能。同时,注意避免SQL注入和空集合处理等问题,可确保动态SQL的安全性和可靠性。
<foreach>
标签的属性
collection:必填,指定要遍历的集合名。
item:必填,指定遍历时的变量名。
open:可选,遍历开始时添加的字符串。
close:可选,遍历结束时添加的字符串。
separator:可选,遍历时的分隔符(默认",")。
index:可选,遍历时的索引变量。
select:可选,用于嵌套查询。
XML.java
接口
List<UserInfo> selectBySql(List<Integer> ids);
.xml
文件
<select id="selectBySql" resultType="com.sliqvers.model.UserInfo">select * from user_info where id in<foreach collection="ids" open="(" close=")" separator="," item="id">#{id}</foreach></select>
测试类
@Testvoid selectBySql() {List<Integer> ids=new ArrayList<>();ids.add(1);ids.add(2);ids.add(3);userInfoMapperXML.selectBySql(ids).stream().forEach(x-> System.out.println(x));}
运行结果:
生成的SQL:
ids = [1, 2, 3] 时:
SELECT * FROM user_info WHERE id IN (1, 2, 3)
2.6 <include>
标签
在xml映射⽂件中配置的SQL,有时可能会存在很多重复的片段,此时就会存在很多冗余的代码,我们可以对重复的代码片段进行抽取,将其通过
<sql>
标签封装到⼀个SQL片段,然后再通过<include>
标签进行引用。
定义一个常用的WHERE条件
<sql id="allColumn">id, username, age, gender, phone, delete_flag, create_time, update_time
</sql>
通过
<include>
标签在原来抽取的地方进行引用。操作如下:
<select id="queryAllUser" resultMap="BaseMap">select<include refid="allColumn"></include>from user_info
</select>
三、动态SQL的注意事项
3.1 SQL注入问题(搞破坏
)
- 风险:直接拼接用户输入可能导致SQL注入。
- 解决方案:使用参数化查询或ORM框架(如MyBatis)提供的安全功能。
3.2 performance
- 执行计划缓存:动态SQL可能导致数据库无法有效利用执行计划缓存。
- 优化建议:尽量减少动态SQL的使用场景,或者使用有限的条件组合。
3.3 动态SQL的可读性和维护性
- 复杂性:动态SQL可能使代码更难阅读和维护。
- 建议:合理分层代码,遵循编码规范。
四、总结
本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化 MyBatis 配置,提升开发效率,确保 SQL 的高效执行和安全性。学习这些技巧,帮助开发者更高效地构建和维护数据库交互层。
相关文章:
MyBatis 动态 SQL 优化:标签的实战与技巧
目录 动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态SQL的常见用途 二、动态SQL的常见用法(XML方式)2.1 < if > 标签2.2 < trim> 标签2.3 <where>标签2.4<set>标签2.5 <foreach&g…...
自动化机器学习(TPOT优化临床试验数据)
目录 自动化机器学习(TPOT优化临床试验数据)1. 引言2. 项目背景与意义2.1 临床试验数据分析的重要性2.2 自动化机器学习的优势2.3 工业级数据处理与GPU加速需求3. 数据集生成与介绍3.1 数据集构成3.2 数据生成方法4. 自动化机器学习与TPOT4.1 自动化机器学习简介4.2 TPOT在临…...
spring boot3 验证码工具kaptcha使用
1、pom.xml文件,下载验证码工具kaptcha依赖 官网搭建的spring boot项目 <!--验证码工具kaptcha的依赖--> <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId> </dependency> 阿里云…...
Android 根据Url使用Retrofit框架进行文件下载
一、背景 根据后端返回的url下载地址,去执行文件下载,将文件保存到SD卡。这里使用Retrofit网络框架。 二、代码实现 2.1、定义一个DownloadFileService interface DownloadFileService {StreamingGETsuspend fun downloadFile(Url fileUrl: String):ResponseBody…...
可视化动态表单动态表单界的天花板--Formily(阿里开源)
文章目录 1、Formily表单介绍2、安装依赖2.1、安装内核库2.2、 安装 UI 桥接库2.3、Formily 支持多种 UI 组件生态: 3、表单设计器3.1、核心理念3.2、安装3.3、示例源码 4、场景案例-登录注册4.1、Markup Schema 案例4.2、JSON Schema 案例4.3、纯 JSX 案例 1、Form…...
Java常用类
常用类 1.包 2.String类 3.String注意事项 String是不可变字符串对象。只要是以“ …. ”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份。但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。String s2 s1 "a"…...
多模态大模型常见问题
1.视觉编码器和 LLM 连接时,使用 BLIP2中 Q-Former那种复杂的 Adaptor 好还是 LLaVA中简单的 MLP 好,说说各自的优缺点? Q-Former(BLIP2): 优点:Q-Former 通过查询机制有效融合了视觉和语言特征…...
2025 年大模型排行分析:中美竞争与未来展望
具体排名数据见文章结尾 在人工智能领域,大模型的性能成为衡量机构技术实力的重要标志。以下是根据最新排名的一些主要发现,尤其关注中国模型的发展现状和优势。 全球领先的模型 在本次排名中,美国 OpenAI 的多个版本占据榜首位置。具体而…...
为什么后端路由需要携带 /api 作为前缀?前端如何设置基础路径 /api?
一、为什么后端路由需要携带 /api 作为前缀? 1. 区分 API 端点与其他路由 在 Web 应用程序中,后端不仅需要处理 API 请求,还可能需要处理静态资源(如 HTML、CSS、JS 文件)或其他服务(如 WebSocket&#x…...
Mac:Ant 下载+安装+环境配置(详细讲解)
📌 下载 Ant 下载地址:https://ant.apache.org/bindownload.cgi 📌 无需安装 Apache官网下载 Ant 压缩包,无需安装,下载解压后放到自己指定目录下即可。 按我自己的习惯,我会在用户 jane 目录下新建了个…...
web客户端存储,IndexDB相关讲解
IndexDB详细讲解 IndexedDB 是浏览器提供的一种底层 API,用于在客户端存储大量结构化数据。相比 Web Storage(localStorage/sessionStorage),它支持更复杂的数据结构、事务处理、索引查询等高级功能。以下是一个系统化的讲解: 一、核心概念 1、数据库(Database) 每…...
使用DeepSeek翻译英文科技论文,以MarkDown格式输出,使用Writage 3.3.1插件转换为Word文件
一、使用DeepSeek翻译英文科技论文,以MarkDown格式输出 以科技论文“Electrical Power System Sizing within the Numerical Propulsion System Simulation”为例。 需要Writage 3.3.1 license key注册码的小伙伴,可发送邮件至邮箱pyengine163.com. 首先…...
Linux 文件操作-文件IO函数2- write向文件写入数据、read从文件读取数据、lseek重定位文件描述符的偏移量的验证
目录 1.write 向文件描述符中写入数据 1.1 向标准输出STDOUT_FILENO (终端屏幕)写入数据 1.2 向文件写入数据 2.read 从文件描述符中读取数据 2.1从标准输入STDIN_FILENO(键盘)读取数据 2.2从文件读取数据 3.lseek重定位偏移量 1.write 向文件描述…...
`chromadb` 是什么
chromadb 是什么 chromadb 是一个开源的向量数据库,它专门用于存储、索引和查询向量数据。在处理自然语言处理(NLP)、计算机视觉等领域的任务时,通常会将文本、图像等数据转换为向量表示,而 chromadb 可以高效地管理这些向量,帮助开发者快速找到与查询向量最相似的向量数…...
Python 爬虫(4)HTTP协议
文章目录 一、HTTP协议1、HTTP特点2、HTTP工作原理3、HTTP与HTTPS的区别 前言: HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于在客户端和服务器之间传输超文本…...
Redis 事件机制详解
Redis 事件机制详解 Redis 的事件机制是其高性能和高并发能力的关键之一,它采用Reactor 模型,基于文件事件驱动机制实现高效的 I/O 处理。Redis 的事件机制主要分为以下几类: 文件事件(File Event) —— 处理网络 I/…...
JMeter对API接口进行压力测试使用教程
1.启动工具:以管理员身份运行 启动成功会有两个窗口,都保留别关闭 2.创建线程组 3.创建http请求 配置 4.添加监听,查看请求结果 5.运行 成功截图 6.接口压力测试,修改线程组参数 7.2000请求,2秒完成...
Vue 3 项目实现国际化指南 i18n
引言 在开发现代 Web 应用时,国际化(Internationalization,简称 i18n)已经成为一个不可或缺的功能。无论是面向全球用户的商业网站,还是需要支持多语言的企业应用,良好的国际化支持都能显著提升用户体验。本…...
使用Trae 生成的React版的贪吃蛇
使用Trae 生成的React版的贪吃蛇 首先你想用这个贪吃蛇,你需要先安装Trae Trae 官方地址 他有两种模式 chat builder 我使用的是builder模式,虽然是Alpha.还是可以用。 接下来就是按着需求傻瓜式的操作生成代码 他生成的代码不完全正确,比如没有引入…...
HAL库定时器配置
定时器的开启需要手动开启,例如在driver_capature.c开启,该文件主要写了具体的函数实现,与driver_can.c一样,同时还有回调函数等一些高级的自定义函数。 这段代码是 STM32 HAL 库中用于初始化 定时器 2 (TIM2) 的函数 MX_TIM2_In…...
快速部署Linux + Ollama + AnythingLLM + Deepseek
简介 部署的系统:Ubuntu20.04 这里选择AnythingLLM的原因,是因为它自身支持了知识库的功能,其他的还有chatbox、dify等可以选择。 部署流程(请务必使用魔法) 一、Ollama安装 1、访问ollama官网:https:/…...
人脸表情识别系统分享(基于深度学习+OpenCV+PyQt5)
最近终于把毕业大论文忙完了,众所周知硕士大论文需要有三个工作点,表情识别领域的第三个工作点一般是做一个表情识别系统出来,如下图所示。 这里分享一下这个表情识别系统: 采用 深度学习OpenCVPyQt5 构建,主要功能包…...
Qt 导入TagLib库
文章目录 0. 前言和环境介绍1. 下载TagLib2. 下载zlib3. 修改.pro文件4. 测试代码 0. 前言和环境介绍 最近在使用Qt写一个播放器,需要解析mp3文件,于是研究了一下如何导入TagLib库 Qt构建套件:Desktop Qt6.8.2 MinGW64-bit Qt Creator安装目录: D:\bit…...
LiteratureReading:[2023] GPT-4: Technical Report
文章目录 一、文献简明(zero)二、快速预览(first)1、标题分析2、作者介绍3、引用数4、摘要分析(1)翻译(2)分析 5、总结分析(1)翻译(2)…...
Elasticsearch8.17 生产集群使用优化
一、通用优化建议 避免返回大量文档结果集 Elasticsearch 作为搜索引擎,擅长返回与查询匹配的顶级文档。对于需要检索所有匹配文档的数据库类型操作,建议使用 滚动 API(Scroll API) 或 **搜索后游标(Search After Cursor)**,以避免内存和性能问题。 避免大型文档 默…...
Linux系统管理与编程09:任务驱动综合应用
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 [环境] windows11、centos9.9.2207、zabbix6、MobaXterm、Internet环境 [要求] zabbix6.0安装环境:Lamp(linux httpd mysql8.0 php) [步骤] 5 …...
C++:背包问题习题
1. 货币系统 1371. 货币系统 - AcWing题库 给定 V 种货币(单位:元),每种货币使用的次数不限。 不同种类的货币,面值可能是相同的。 现在,要你用这 V 种货币凑出 N 元钱,请问共有多少种不同的…...
Flutter中常用命令
1.检测flutter运行环境 flutter doctor 2.升级flutter flutter upgrade 3.查看flutter 版本 flutter --version 4.查看连接的设备 flutter devices 5.运行flutter项目 flutter run 或者在vscode中按FnF5 6.打包 flutter build apk //默认打release包 7.开…...
数学爱好者写的编程系列文章
作为一个数学爱好者,我大学读的专业却不是数学专业,而是跟计算机有关的专业。原本我对编程一窍不通,平时上课也是在看数学文献,作业基本靠同学,考试及格就行。不过后来因为毕业的压力,我还是拥抱编程了&…...
QT笔记---JSON
QT笔记---JSON JSON1、JSON基本概念1.1、判断.json文件工具 2、生成.json数据3、解析.json数据 JSON 在现代软件开发中,数据的交换和存储格式至关重要。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁易…...
C站算法技能题-题解(javascript)
切面条 const 切面条 (n10)>{return 2 ** n 1; } 切面条(0) 2 切面条(1) 3 切面条(2) 5 切面条(10) 1025大衍数列 const 大衍数列 (n100) > {let ans []for(let i1;i<n;i){if(i%2 0){ans.push((i ** 2 ) / 2)}else{ans.push((i ** 2 - 1) / 2)}}return ans…...
专利信息管理知识产权基于Spring Boot SSM
目录 一、需求分析 1.1系统用户角色与权限 1.2 专利信息管理功能 二、数据分析与报表生成 三、系统性能与安全性 四 用户体验与界面设计 五 扩展性与可维护性 六、法律法规与合规性 七. 技术选型与实现 7.1技术选型: 7.2实现方式: 随…...
掌握新编程语言的秘诀:利用 AI 快速上手 Python、Go、Java 和 Rust
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
KiLog2MaximumIncrement的由来和KiMaximumIncrementReciprocal的由来
第一部分:KiLog2MaximumIncrement的由来 i 1; j KeMaximumIncrement; while ((1UI64<<i) < KeMaximumIncrement) { i; } KiLog2MaximumIncrement i; 2^17131072 2^18262144 i18KiLog2MaximumIncrement 中…...
工具层handle_excel
该工具类利用openpyxl的load_workbook加载Excel,通过iter_rows按行迭代数据,将表头和用例数据用zipdict组合成字典,通过list.append将字典(单条测试用例)追加到列表中,从而封装Excel数据解析工具。 模块/类方法/属性使用场景描述o…...
解释 RESTful API,以及如何使用它构建 web 应用程序
RESTful API 是一种符合 REST 架构风格的 API 设计,它基于 HTTP 协议来进行通信,通过对资源进行标识、定义各种操作,并使用 HTTP 请求方法来进行操作(比如 GET、POST、PUT、DELETE 等),实现客户端与服务器之…...
区块链赋能项目包装融资:开启融资新范式
在当今充满挑战与机遇的商业环境中,项目融资对于企业的发展壮大起着关键作用。而项目包装作为吸引投资者、展示项目价值的重要手段,其方式正随着科技的发展不断革新。区块链技术的兴起,为项目包装融资带来了全新的思路与变革,深刻…...
【Linux】应用层自定义协议 + 序列化和反序列化
应用层自定义协议 序列化和反序列化 一.应用层1.再谈 "协议"2.序列化 和 反序列化 二. Jsoncpp1.序列化2.反序列化 三. Tcp全双工 面向字节流四.自定义协议 保证报文的完整性1.Makefile2.Mutex.hpp3.Cond.hpp4.Log.hpp5.Thread.hpp6.ThreadPool.hpp7.Common.hpp8.…...
框架的CVE漏洞利用 php类 java类 手工操作和自动化操作蓝队分析漏洞利用的流量特征
前言 php重要框架和基本的识别特征 php的主要是 tp框架 和 laravel 当然还有 yii等 tp的主要特征 1\报错信息: 2、图标 3、请求头 Laravel特征 1、报错信息 2、请求头 php框架CVE利用 lavarvel 工具 https://github.com/zhzyker/CVE-2021-3129 https://git…...
使用 .github/realse.yml 自动生成 release change log
🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!🌟 您的支持是我们前进的动力!🤝 欢迎贡献代码或提出建议,一起让 gone 变得更好…...
python学习笔记--实现简单的爬虫(一)
任务:爬取豆瓣最受欢迎的250个电影的资料 链接:豆瓣电影 Top 250 用浏览器打开后,使用F12或鼠标右键--检查,查看网页的源代码,分析网页结构,如下图所示: 分析后得知: 1.电影名位于…...
[学习笔记] 部署Docker搭建靶场
前言 我们需要部署Docker来搭建靶场题目,他可以提供一个隔离的环境,方便在不同的机器上部署,接下来,我会记录我的操作过程,简单的部署一道题目 Docker安装 不推荐在物理机上部署,可能会遇到一些问题&…...
二分查找-在排序数组中查找元素的第一个和最后一个位置
34.在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(…...
蓝桥杯真题 2109.统计子矩阵
原题地址:1.统计子矩阵 - 蓝桥云课 问题描述 给定一个 NMNM 的矩阵 AA, 请你统计有多少个子矩阵 (最小 1111, 最大 NM)NM) 满足子矩阵中所有数的和不超过给定的整数 KK ? 输入格式 第一行包含三个整数 N,MN,M 和 KK. 之后 NN 行每行包含 MM 个整数, 代表矩阵 AA. 输出格…...
学术型ppt制作经验分享 - 如何美化科研ppt?
WordinPPT / 持续为双一流高校、科研院所、企业等提供PPT制作系统服务。 - 院士增选、国家科技奖、杰青、长江学者特聘教授、校企联聘教授、重点研发、优青、青长、青拔... / 学术型ppt制作经验分享 部分页面内容 / PPT全文共101页 - 科学技术奖ppt:自然科学奖…...
Python数据可视化实战:从基础图表到高级分析
Python数据可视化实战:从基础图表到高级分析 数据可视化是数据分析的重要环节,通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例,手把手教你使用Python的Matplotlib库完成各类数据可视化任务,涵盖条形图、堆积面积图、…...
稳定运行的以Oracle NoSQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
提高基于Oracle NoSQL数据库的ETL(提取、转换、加载)性能时,主要从多个角度进行优化。 提高基于Oracle NoSQL数据库的ETL性能需要综合考虑多个方面,关键是减少不必要的I/O操作、优化数据转换和加载过程、合理配置Oracle NoSQL数据…...
ORACLE 19.8版本数据库环境EXPDP导数据的报错处理
近期用户在做EXPDP导出时,报错异常termination终止;EXPDP本身是简单的功能并且这个环境也是经常做导出的,到底是什么原因导致了这个问题呢? 导出脚本报错: 分析导出日志,当时系统资源充足但是进程启动失败,…...
GPT-5 将免费向所有用户开放?
GPT-5 将免费向所有用户开放? 硅谷知名分析师 Ben Thompson 最近与 OpenAI CEO Sam Altman 进行了一场深度对谈,其中Sam Altman透漏GPT-5将免费向大家发放。 OpenAI 这波操作可不是一时冲动,而是被逼出来的。DeepSeek 这个新秀横空出世&am…...
【AI模型】深度解析:DeepSeek的联网搜索的实现原理与认知误区
一、大模型的“联网魔法”:原来你是这样上网的! 在人工智能这个舞台上,大模型们可是妥妥的明星。像DeepSeek、QWen这些大模型,个个都是知识渊博的“学霸”,推理、生成文本那叫一个厉害。不过,要是论起上网…...