SQL写法技巧
目录
1.批量插入,查询,删除数据
缺点
实现方法
1.批量插入数据
2.批量查询数据
3.批量删除数据
4.批量修改数据
解释
2.树型表查询
方法一:递归(适用于多级的情况)
方法二:表的自连接
方法三:MySQL递归(既可以向下递归也可以向上递归)(MySQL8 支持)
表的连接该怎么选择
1.等值连接&内连接
2.左连接&右连接&外连接
3.自连接
1.批量插入,查询,删除数据
千万不要循环调用数据库!!!
比如:
public void deleteBatch(List<Integer> ids) {for (Integer id : ids) {blogMapper.deleteById(id);}
}
缺点
- 性能问题:
-
- 高延迟:每次数据库操作都需要建立连接、执行操作、然后关闭连接,这个过程涉及到网络延迟和数据库处理时间。
- 资源消耗:频繁的数据库连接和断开操作会消耗大量的系统资源,如内存和CPU。
- 并发限制:数据库连接通常是有限的资源,大量并发连接可能会导致数据库连接池耗尽。
- 可扩展性问题:
-
- 瓶颈:当需要处理大量数据时,循环调用数据库会成为一个明显的性能瓶颈。
- 扩展难度:随着数据量的增加,系统的性能会显著下降,而优化这种循环操作通常比较困难。
- 事务管理:
-
- 事务开销:每次数据库操作可能都会启动一个新的事务,这会增加事务管理的开销。
- 原子性保证困难:如果需要保证一系列操作的原子性,循环调用可能会导致部分操作成功而部分失败,难以实现原子性。
- 维护和调试困难:
-
- 代码复杂性:循环调用数据库的代码通常比较冗长且难以维护。
- 错误追踪:如果其中一个操作失败,可能需要检查每个单独的操作来确定问题所在,增加了调试的难度。
- 锁竞争和死锁:
-
- 锁竞争:循环操作可能会导致数据库上的锁竞争,影响数据库的整体性能。
- 死锁风险:如果多个线程或进程同时进行循环操作,可能会增加死锁的风险。
- 用户体验:
-
- 响应时间:用户可能会遇到较长的等待时间,特别是在前端需要等待所有数据库操作完成后才能继续执行的情况下。
实现方法
1.批量插入数据
public interface BlogMapper {// 假设Blog是一个实体类,代表要插入的数据int insertBatch(List<Blog> blogs);
}
public class BlogService {@Autowiredprivate BlogMapper blogMapper;public void insertBatch(List<Blog> blogs) {blogMapper.insertBatch(blogs);}
}
<!-- BlogMapper.xml -->
<insert id="insertBatch" parameterType="java.util.List">INSERT INTO blogs (column1, column2, ...)VALUES<foreach collection="list" item="blog" separator=",">(#{blog.column1}, #{blog.column2}, ...)</foreach>
</insert>
2.批量查询数据
public interface BlogMapper {// 假设Blog是一个实体类,代表查询结果List<Blog> selectBatch(List<Integer> ids);
}
public class BlogService {@Autowiredprivate BlogMapper blogMapper;public List<Blog> selectBatch(List<Integer> ids) {return blogMapper.selectBatch(ids);}
}
<!-- BlogMapper.xml -->
<select id="selectBatch" parameterType="java.util.List" resultType="Blog">SELECT * FROM blogs WHERE id IN<foreach item="id" collection="list" open="(" separator="," close=")">#{id}</foreach>
</select>
3.批量删除数据
public interface BlogMapper {int deleteBatch(List<Integer> ids);
}
public class BlogService {@Autowiredprivate BlogMapper blogMapper;public void deleteBatch(List<Integer> ids) {blogMapper.deleteBatch(ids);}
}
<!-- BlogMapper.xml -->
<delete id="deleteBatch" parameterType="java.util.List">DELETE FROM blogs WHERE id IN<foreach item="id" collection="list" open="(" separator="," close=")">#{id}</foreach>
</delete>
<delete id="deleteEnergyWorkshopByIds" parameterType="String">delete from energy_workshop where id in<foreach item="id" collection="array" open="(" separator="," close=")">#{id}</foreach>
</delete>
4.批量修改数据
举例 1:
<update id="changeSort"><foreach collection="videoSeriesList" separator=";" item="item">update user_video_seriesset sort = #{item.sort}where user_id = #{item.userId} and series_id = #{item.seriesId}</foreach>
</update>
举例 2:
void update(@Param("blogs") List<Blog> blogs);
<update id="update" parameterType="java.util.List">UPDATE blogSET read_count =<foreach collection="blogs" item="blog" separator=" "
open="CASE id" close="END">WHEN #{blog.id} THEN #{blog.readCount}</foreach>WHERE id IN<foreach collection="blogs" item="blog" separator=","
open="(" close=")">#{blog.id}</foreach>
</update>
以上sql拼接的结果类似于:
UPDATE blog
SET read_count =
CASE idWHEN 1 THEN 10WHEN 2 THEN 20WHEN 3 THEN 30
END
WHERE id IN (1, 2, 3)
解释
foreach
标签的作用:foreach
标签用于遍历集合,并将集合中的每个元素插入到 SQL 语句中。它最终生成的是一条 SQL 语句,而不是多条 SQL 语句。IN
子句的实现:MyBatis 会将foreach
标签生成的 SQL 语句发送到数据库,数据库会一次性处理这些查询操作,而不是逐条查询。这种方式比逐条查询更高效。
2.树型表查询
树型表举例:
方法一:递归(适用于多级的情况)
private List<CategoryInfo> convertLine2Tree(List<CategoryInfo> dataList, Integer pid) {//pid:0List<CategoryInfo> children = new ArrayList(); for (CategoryInfo m : dataList) {if (m.getCategoryId() != null && m.getpCategoryId() != null && m.getpCategoryId().equals(pid)) {m.setChildren(convertLine2Tree(dataList, m.getCategoryId()));children.add(m);}}return children;}
方法二:表的自连接
层级固定的话用表的自连接
selectone.id one_id,one.name one_name,one.parentid one_parentid,one.orderby one_orderby,one.label one_label,two.id two_id,two.name two_name,two.parentid two_parentid,two.orderby two_orderby,two.label two_labelfrom course_category oneinner join course_category two on one.id = two.parentidwhere one.parentid = 1and one.is_show = 1and two.is_show = 1order by one.orderby,two.orderby
举例:
查询课程计划(树型结构)(这个树型结构固定为两层)
<!-- 课程分类树型结构查询映射结果 --><resultMap id="treeNodeResultMap" type="com.xuecheng.content.model.dto.TeachplanDto"><!-- 一级数据映射 --><id column="one_id" property="id"/><result column="one_pname" property="pname"/><result column="one_parentid" property="parentid"/><result column="one_grade" property="grade"/><result column="one_mediaType" property="mediaType"/><result column="one_startTime" property="startTime"/><result column="one_endTime" property="endTime"/><result column="one_orderby" property="orderby"/><result column="one_courseId" property="courseId"/><result column="one_coursePubId" property="coursePubId"/><!-- 一级中包含多个二级数据 --><!-- 映射子节点teachPlanTreeNodes,一对多映射,用collection--><collection property="teachPlanTreeNodes" ofType="com.xuecheng.content.model.dto.TeachplanDto"><!-- 二级数据映射 --><id column="two_id" property="id"/><result column="two_pname" property="pname"/><result column="two_parentid" property="parentid"/><result column="two_grade" property="grade"/><result column="two_mediaType" property="mediaType"/><result column="two_startTime" property="startTime"/><result column="two_endTime" property="endTime"/><result column="two_orderby" property="orderby"/><result column="two_courseId" property="courseId"/><result column="two_coursePubId" property="coursePubId"/><!-- 每个小章节子节点还对应着一个媒资视频文件 --><!-- 一对一映射用association --><association property="teachplanMedia" javaType="com.xuecheng.content.model.po.TeachplanMedia"><result column="teachplanMeidaId" property="id"/><result column="mediaFilename" property="mediaFilename"/><result column="mediaId" property="mediaId"/><result column="two_id" property="teachplanId"/><result column="two_courseId" property="courseId"/><result column="two_coursePubId" property="coursePubId"/></association></collection></resultMap><!-- 表的自连接 查询课程计划(树型结构)(这个树型结构固定为两层) --><select id="selectTreeNodes" parameterType="long" resultMap="treeNodeResultMap">select one.id one_id,one.pname one_pname,one.parentid one_parentid,one.grade one_grade,one.media_type one_mediaType,one.start_time one_startTime,one.end_time one_endTime,one.orderby one_orderby,one.course_id one_courseId,one.course_pub_id one_coursePubId,two.id two_id,two.pname two_pname,two.parentid two_parentid,two.grade two_grade,two.media_type two_mediaType,two.start_time two_startTime,two.end_time two_endTime,two.orderby two_orderby,two.course_id two_courseId,two.course_pub_id two_coursePubId,m1.media_fileName mediaFilename,m1.id teachplanMeidaId,m1.media_id mediaIdfrom teachplan oneLEFT JOIN teachplan two on one.id = two.parentidLEFT JOIN teachplan_media m1 on m1.teachplan_id = two.idwhere one.parentid = 0and one.course_id = #{cousrseId}order by one.orderby,two.orderby</select>
方法三:MySQL递归(既可以向下递归也可以向上递归)(MySQL8 支持)
with recursive t1 as (
select * from course_category p where id= '1'
union allselect t.* from course_category t inner join t1 on t1.id = t.parentid
)
select * from t1 order by t1.id, t1.orderby
3.表的连接该怎么选择
1.等值连接&内连接
等值连接一定程度上就是内连接。
等值连接是内连接的一种,通常是内连接最常见和最基础的形式。
等值连接可以视为内连接的一种特例,因为等值连接只是内连接的一种情况,其中连接条件使用了相等运算符 (=
)。换句话说,所有的等值连接都是内连接,但并非所有的内连接都是等值连接。
内连接允许使用各种比较运算符(包括等于、不等于、大于、小于等),而等值连接专门使用等于运算符(=
)作为连接条件。
SELECT a.id, b.name
FROM table_a a,table_b b
WHERE a.id = b.id;
这是最开始学的等值连接写法。实际上和下面的内连接意义相同。
SELECT a.id, b.name
FROM table_a a
INNER JOIN table_b b ON a.id = b.id;SELECT orders.id, customers.name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;
这是内连接的写法。
2.左连接&右连接&外连接
左连接
- 定义:左连接返回左表中的所有记录,即使右表中没有匹配的记录。如果右表中没有匹配的记录,结果会显示为
NULL
。 - 使用场景:当你希望获取左表中所有数据,包括没有匹配数据的记录时使用。
- 示例:查询所有客户及他们的订单(即使客户没有订单也要显示)。
SELECT customers.name, orders.id
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;
这个查询会返回所有客户及他们的订单,如果客户没有订单,则订单字段为 NULL
。
右连接(用的比较少)
- 定义:右连接与左连接类似,但它返回的是右表中的所有记录。如果左表中没有匹配的记录,结果会显示为
NULL
。 - 使用场景:这种连接方式使用得较少,通常在需要保留右表的所有数据时才使用。
- 示例:查询所有订单和对应的客户信息(即使某个订单没有关联客户)。
SELECT orders.id, customers.name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id;
外连接(用的很少)
- 定义:外连接返回左表和右表中的所有记录,当某一表没有匹配的记录时,另一个表中的字段会填充
NULL
。不过需要注意,MySQL 不直接支持 FULL OUTER JOIN,可以通过使用LEFT JOIN
和RIGHT JOIN
结合来模拟。 - 使用场景:当你希望返回两个表中所有的记录(无论是否匹配)时使用。
- 示例:没有直接的支持,你可以通过组合
LEFT JOIN
和RIGHT JOIN
来模拟:
SELECT * FROM A
LEFT JOIN B ON A.id = B.id
UNION
SELECT * FROM A
RIGHT JOIN B ON A.id = B.id;
3.自连接
一个表与它自己连接,通常用来查找同一表中的关联数据。
使用自连接一定要给表取别名。
至于自连接的实现方式的选择就要看具体情况了:
自连接通常使用 内连接 或 左连接,具体选择取决于你是否需要保留左表的所有记录。
- 如果你只关心表中有匹配关系的记录,使用 内连接。
- 如果你希望保留表中的所有记录(即使没有匹配的记录),使用 左连接。
相关文章:
SQL写法技巧
目录 1.批量插入,查询,删除数据 缺点 实现方法 1.批量插入数据 2.批量查询数据 3.批量删除数据 4.批量修改数据 解释 2.树型表查询 方法一:递归(适用于多级的情况) 方法二:表的自连接 方法三:MySQL递归&am…...
`pip freeze > requirements.txt` 命令
pip freeze > requirements.txt 命令的作用是将当前 Python 环境中已安装的所有包及其版本号导出到一个名为 requirements.txt 的文件中。这个文件通常用于记录项目的依赖包,以便在其他环境中快速安装相同的依赖。 ### 具体作用 1. **生成依赖列表**:…...
windows安装pytorch
windows安装pytorch 通过pip来安装pytorch. 1、更新pip 在激活的虚拟环境中,输入命令: python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/2、安装cpu版的pytorch pip3 install torch torchvision torchaudio -i http…...
计算机网络之路由协议(自治系统)
一、自治系统(AS) 自治系统是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。它是网络的基本构成单位,每个自治系统是一个独立运营并自主决定与谁交换流量的实体。自治系统内部运行内部网关协议(IGP)…...
unity获取指定麦克风的分贝(deepseek)
在Unity中,获取指定麦克风的分贝值需要使用Microphone类来捕获麦克风输入,并通过AudioSource或直接处理音频数据来计算分贝值。以下是实现步骤和示例代码: 实现步骤: 1、初始化麦克风:使用Microphone.Start开始录制麦…...
Spring5框架八:整合Mybatis
精心整理了最新的面试资料,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 1、导入相关的jar包 <dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>…...
从人机环境系统智能角度看传统IP的全球化二次创作法则
从人机环境系统智能的视角看,传统IP的全球化二次创作法则需结合技术、文化、伦理与环境的复杂协同。这一过程不仅是内容的本土化改编,更是人、机器与环境在动态交互中实现价值共创的体现。 一、人机环境系统智能的底层逻辑与IP二次创作的融合 1、感知层&…...
《论软件的可靠性评价》审题技巧 - 系统架构设计师
论软件的可靠性评价写作框架 一、考点概述 软件可靠性评价作为软件可靠性活动的关键环节,是确保软件质量、提升用户体验的重要手段。本题主要考察以下几个方面的内容: 首先,本题要求考生理解并掌握软件可靠性评价的基本概念及其在软件开发…...
基于数据可视化学习的卡路里消耗预测分析
数据分析实操集合: 1、关于房间传感器监测数据集的探索 2、EEMD-LSTM模型择时策略 — 1.EEMD分解与LSTM模型搭建 3、EEMD-LSTM模型择时策略 — 2. 量化回测 4、国际超市电商销售数据分析 5、基于问卷调查数据的多元统计数据分析与预测(因子分析、对应分…...
毕业项目推荐:基于yolov8/yolov5/yolo11的果蔬检测识别系统(python+卷积神经网络)
文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...
Graspness Discovery in Clutters for Fast and Accurate Grasp Detection 解读
研究背景 研究问题 :这篇文章要解决的问题是如何在杂乱的环境中快速且准确地检测抓取姿态。传统的 6自由度抓取方法将场景中的所有点视为平等,并采用均匀采样来选择抓取候选点,但忽略了抓取位置的重要性,这极大地影响了抓取姿态检…...
Redission可重试、超时续约的实现原理(源码分析)
Redission遇到其他进程已经占用资源的时候会在指定时间waitTime内进行重试。实现过程如下: 执行获取锁的lua脚本时,会返回一个值, 如果获取锁成功,返回nil,也就是java里的null 如果获取锁失败,用语句“PT…...
vscode 配置 Copilot 提示GHE.com连接失败
步骤一:打开设置并进入 settings.json 点击菜单栏中的 “文件” -> “首选项” -> “设置”。 在搜索设置栏中输入 “Copilot: Advanced”。 点击搜索结果下方的 “在 settings.json 中编辑” 链接,这会打开 settings.json 文件。 步骤二&#…...
红队内网攻防渗透:内网渗透之内网对抗:实战项目VPC1打靶PHP-RCE三层代理路由防火墙上线密码喷射域控提权
红队内网攻防渗透 实战网络攻防靶场记录1.靶机配置详情讲解1.1 入口点靶机:Windows Server 20121.2 第一层靶机:Windows 7 + Windows 101.3 第二层靶机:Windows 2012 R21.4 第三层靶机:Windows 2016 web +Windows 2016 AD域1.5 攻击者系统 :Kali-linux2.靶场渗透完整流程2…...
四、综合案例(Unity2D)
一、2D渲染 1、2D相机基本设置 上面是透视,下面是正交 2、图片资源 在Unity中,常规图片导入之后,一般不在Unity中直接使用,而是转为精灵图Sprite 将图片更改为即可使用Unity内置的图片切割功能 无论精灵图片是单个的还是多个的…...
50周学习go语言:第1周 环境搭建
以下是为零基础学习者准备的详细第1周教程,包含环境搭建、工具配置和首个Go程序的完整操作指南: 一、Go语言环境安装(Windows/macOS/Linux通用) 1. 下载安装包 官网地址:https://go.dev/dl//根据系统选择对应版本&am…...
Docker Desktop 入门教学
引言 Docker Desktop 是 Docker 官方为开发者提供的桌面应用程序,支持在 Windows 和 macOS 上轻松构建、运行和共享容器化应用程序。它集成了 Docker 引擎、Docker CLI 客户端以及 Docker Compose 等工具,方便您在本地开发和测试。 一、快速安装 1. 系…...
BOOST电路设计
目录 1电路模型 2器件选型 2.1设计需求 2.2参数计算 2.2.1电感L计算 2.2.2电容计算 2.2.3电阻计算 3仿真测试 4参数测试 4.1负载调整率 4.2电容测试 4.3电感测试 5实际应用 1电路模型 Boost升压电路,可以工作在电流断续工作模式(DCM)和电流连续工作模式(CCM)。CCM工…...
Qt常用控件之标签QLabel
标签QLabel QLabel 标签用来显示文本和图片,在 Qt 中使用频率很高。 1. Label属性 属性说明textQLabel 中的文本。textFormat文本的格式。其中 Qt::PlainText 为纯文本;Qt::RichText 为富文本(支持 html 格式); Qt:…...
基于Spring Boot的公司资产网站设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
网络安全知识--网络、网络安全产品及密码产品概述
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络结构 网络设备:交换机、路由器、负载均衡 安全设备: 通信网络安全类:通信安全、网络监测与控制 区域边界安全类:隔离类…...
【mysql中mvcc的含义和作用及原理】
MySQL中的MVCC(多版本并发控制)是一种用于提高数据库并发性能的机制,通过维护数据的多个版本,实现读写操作的无锁并发。以下是其核心要点: 1. MVCC的含义 全称:Multi-Version Concurrency Control…...
【Android】Android 悬浮窗开发 ( 动态权限请求 | 前台服务和通知 | 悬浮窗创建 )
文章目录 一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后返回处理 二、悬浮窗 前台服务和通知1、前台服务 启动 悬浮窗 的必要性① 保持悬浮窗存活② 悬浮窗的要求③ 悬浮窗版本兼容 2、其它类型服务简介① 前台服务…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (1)
1.问题描述: 客户端创建实况窗后,通过Push kit更新实况窗内容,这个过程是自动更新的还是客户端解析push消息数据后填充数据更新?客户端除了接入Push kit和创建实况窗还需要做什么工作? 解决方案: 通过Pu…...
基于Flask的第七次人口普查数据分析系统的设计与实现
【Flask】基于Flask的第七次人口普查数据分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 基于Flask的人口普查可视化分析系统 二、项目界面展示 登录/注册 首页/详情 …...
java实现多图合并加字和画框等
java实现多图合并加字和画框等 在wutool中,封装了图片处理工具类,基于java自带的BufferedImage类,实现多图合并和加字、图片画框等。 关于wutool wutool是一个java代码片段收集库,针对特定场景提供轻量解决方案,只要…...
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票 作者:某七年数据开发工程师 | 2025年02月23日 关键词:SQL窗口函数、连续问题、股票分析、腾讯面试题 一、问题背景与难点拆解 在股票量化分析场景中,"连续N天满足条件"是高频面试题类型。本题要求在单表stoc…...
Elasticsearch 自动补全搜索 - autocomplete
作者:来自 Elastic Amit Khandelwal 探索处理自动完成的不同方法,从基础到高级,包括输入时搜索、查询时间、完成建议器和索引时间。 在本文中,我们将介绍如何避免严重的性能错误、Elasticsearch 默认解决方案为何不适用以及重要的…...
大屏自适应终极方案:基于比例缩放的完美适配实践(Vue3版)
需求背景 在数据可视化大屏开发中,我们常面临这样的挑战:如何让1920*1080的设计稿在不同分辨率设备上完美呈现?传统的响应式布局难以应对复杂的大屏元素排布,本文介绍一种基于CSS3变换的终极适配方案 实现思路 本方案的核心是动…...
云计算中的API网关是什么?为什么它很重要?
在云计算架构中,API网关(API Gateway)是一个重要的组件,主要用于管理、保护和优化不同服务之间的接口(API)通信。简单来说,API网关就像是一个中介,它充当客户端和后端服务之间的“桥…...
前端ES面试题及参考答案
目录 let/const 与 var 的区别?TDZ 是什么? 箭头函数与普通函数的区别?箭头函数能否作为构造函数? 模板字符串的嵌套表达式和标签模板用法? 解构赋值的应用场景及对象 / 数组解构差异? 函数参数默认值的生效条件及暂时性死区问题? 展开运算符(...)在数组 / 对象中…...
【架构思维基础:如何科学定义问题】
架构思维基础:如何科学定义问题 一、问题本质认知 1.1 问题矛盾 根据毛泽东《矛盾论》,问题本质是系统内部要素间既对立又统一的关系。例如: 电商系统矛盾演变: 90年代:商品供给不足 vs 消费需求增长00年代&#x…...
【网络安全】常见的web攻击
1、SQL注入攻击 定义: 攻击者在HTTP请求中注入恶意的SQL代码,当服务器利用参数构建SQL语句的时候,恶意的SQL代码被一起构建,并在数据库中执行。 示例: 用户登录: 输入用户名xx, 密码 or 1 …...
ECOLOGY流程表单字段由单行文本改成多行文本
用户需要把单行文本改成多行文本 1、数据库端处理 select lwnr from FORMTABLE_MAIN_237 where lwnr is not null FORMTABLE_MAIN_237 有记录。DESCRIBE OA.FORMTABLE_MAIN_237 LWNR VARCHAR2(999) 由999改成4000 ALTER TABLE OA.FORMTA…...
AI发展迅速,是否还有学习前端的必要性?
今天有个小伙伴跟我讨论:“现在 AI 发展迅速,是否还有学习 JS 或者 TS 及前端知识的必要?” 我非常肯定地说: 是的,学习 JavaScript/TypeScript 以及前端知识仍然非常必要,而且在可预见的未来,…...
视频的分片上传
分片上传需求分析: 项目中很多地方需要上传视频,如果视频很大,上传到服务器需要很多时间 ,这个时候体验就会很差。所以需要前端实现分片上传的功能。 要实现分片上传,需要对视频进行分割,分割成不同的大小…...
pyside6学习专栏(二):程序图像资源的加载方式
pyside6中的QLabel控件可以加载图像和gif动画,可以直接从外部文件加载,也可以从QRC类型的文件(实际是一脚本文件)经编绎生成对应的资源.PY模块文件(就是将qrc文本中指定的资源文件的16制内容写入.py文件)来使用,本文对两种方式作了一简单的示…...
QQ登录测试用例报告
QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景:输入账号密码并提交登录请求。预期结果:账号密码通过加密传输(如HTTPS)与存储(如哈希加盐),无明文暴露。 2. 二…...
56. 合并区间 (LeetCode 热题 100)
题目来源: 56. 合并区间 - 力扣(LeetCode) 题目内容: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组&am…...
冒泡排序(详解)c++
冒泡排序(Bubble Sort)也是⼀种简单的排序算法。它的⼯作原理是每次检查相邻两个元素,如果前⾯ 的元素与后⾯的元素满⾜给定的排序条件,就将相邻两个元素交换。当没有相邻的元素需要交换时, 排序就完成了。 由于在算法的执⾏过程中࿰…...
CSS背景属性
<!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS背景属性</title><style>.c1{/* …...
10种方法教你又小又清晰地压缩视频
视频压缩是有可能会损失画质的,但也可以通过一些方法尽量减少画质损失。在有效压缩视频大小的同时,尽量控制视频压缩画质在人眼无法察觉的范围内。下面就从10个角度向大家介绍10个不同的视频压缩方法,并推荐相关的视频压缩软件,整…...
当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时
英文解决站点 applocal.ps1 fails in Visual Studio 2019 because of wildcard path in VcpkgAppLocalDLLs Issue #28614 microsoft/vcpkg 虽然这个bug不影响生成exe文件,第一次会弹出该错误,再次运行就正常,vcpkg会把对应的libcrypto-*-x64.dll版本复制到exe路径下..但是对…...
AI大模型学习(四): LangChain(三)
Langchain构建代理 语言模型本身无法执行动作,他们只能输出文本,代理是使用大型语言模型(LLM)作为推理引擎来确定要执行的操作以及这些操作的输入应该是什么,然后这些操作的结果可以反馈到代理中,代理将决定是否需要更多的操作,或者是否可以结束 例如:我们想要查询现在北京的…...
JavaScript函数-arguments的使用
在JavaScript编程语言中,函数是构建复杂逻辑和实现代码复用的关键组件。虽然现代JavaScript(尤其是ES6及之后版本)提供了更多灵活的方式来处理函数参数(如剩余参数、默认参数等),但arguments对象仍然是一个…...
C# 从基础神经元到实现在0~9数字识别
训练图片:mnist160 测试结果:1000次训练学习率为0.1时,准确率在60%以上 学习的图片越多,训练的时候越长(比如把 epochs*10 10000或更高时)效果越好 using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Windo…...
【每日八股】计算机网络篇(一):概述
OSI 的 7 层网络模型? OSI(Open Systems Interconnection,开放互联系统)是由国际标准化组织(ISO)提出的一种网络通信模型。 自上而下,OSI 可以被分为七层,分别是:应用层…...
Jupyter里面的manim编程学习
1.Jupyterlab的使用 因为我之前一直都是使用的vscode进行manim编程的,但是今天看的这个教程使用的是Jupyter,我也很是好奇这个manim在Jupyter这样的交互式下面会生成怎么样的效果,所以今天尝试了jupyter,并且对于两个进行比较和说…...
Web刷题之PolarDN(简单)
1.swp 考点:敏感文件、preg_match()函数绕过 什么是swp文件: vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data,那么swp文件…...
JVM 深入理解与性能优化
JVM(Java Virtual Machine,Java 虚拟机)是 Java 代码运行的核心,它负责 内存管理、类加载、字节码执行、垃圾回收(GC)和 JIT 编译。理解 JVM 有助于优化 Java 应用的性能,提高调试和排错能力。 …...