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

Oracle数据库数据编程SQL<2.3 DML增、删、改及merge into>

目录

一、DML数据操纵语言(Aate Manipulation Language)

二、【insert】插入数据

1、单行插入

2、批量插入

3、将数据同时插入到多张表insert all/insert first

三、【update】 更新数据

1、语法

2、举例

3、update使用注意事项:

四、【delete】删除数据---多用于删除特定数据

1、语法

2、delete from 表 不加条件则删除全部数据

五、delete 和 truncate的异同

1、相同点:都可以删除表中数据

2、不同点:

六、把序列的值作为主键值插入

七、merge into 用表2更新表1

1、语法

2、举例

八、MERGE高级用法

1、只更新不插入

2、只插入不更新

3、条件操作

九、DML操作注意事项

1、事务控制

2、锁机制

3、性能优化

4、PL/SQL批量DML示例:

十、Oracle特有DML功能

1. RETURNING子句

2. 闪回查询(Flashback Query)

3. 批量绑定(BULK COLLECT & FORALL)

十一、DML最佳实践


一、DML数据操纵语言(Aate Manipulation Language)

1、插入数据 insert into

2、更新数据 update set

3、删除数据 delete from

4、DML 语言 可以commit(提交),rollback(回滚)

二、【insert】插入数据

1、单行插入

【1】insert into 表名(列1,列2,...列n)values(值1,值2,...值n)create table emp0 as select *from emp where 3=999;
insert into emp0 (empno,ename,hiredate,sal)values(33,'霍泂宇',date'2019-1-1',99999);
select *from emp0;
drop table emp0;【2】insert into 表名 values(值1,值2,...值n)--必须和列数相同且对应insert into emp0 values(2,'小B','CLERK',1,sysdate,30,'',20);【3】但是如果表中列的约束有默认default约束,就必须用语法1,假如列2是default约束insert into 表名(列1,列3,...列n)values(值1,值3,...值n);

2、批量插入

【1】insert into 表名 (列1,列2,…列n) 子查询insert into emp0 (empno,ename,sal) select empno,ename,sal from emp where deptno=10【2】insert into 表名 子查询 (插入表与建好的表列数必须相同)insert into emp0 select * from emp where deptno=20
-----emp表10部门的ename,sal,deptno插入到emp0
-----emp表的20部门的empno,hiredate,deptno插入到emp0
-----emp表工作是MANAGER全部信息插入到emp0
insert into emp0 (ename,sal,deptno)select ename,sal,deptno from emp where deptno=10;
insert into emp0 (empno,hiredate,deptno)select empno,hiredate,deptno from emp where deptno=20;
insert into emp0 select * from emp where job='MANAGER'

3、将数据同时插入到多张表insert all/insert first

【1】语法
insert all/first
when 条件1 theninto 表1(列1,列2,...列n) values(值1,值2,...值n)
when 条件2 theninto 表1(列1,列2,...列n) values(值1,值2,...值n)......
when 条件n theninto 表1(列1,列2,...列n) values(值1,值2,...值n)
select 列 from  源表 --建3张表,表格式和emp相同没有数据。
create table emp_1 as select * from emp where 1=2;
create table emp_2 as select * from emp where 1=2;
create table emp_3 as select * from emp where 1=2;
select * from emp_1;
select * from emp_2;
select * from emp_3;--将emp表名字带A的插入到emp_1,带B的插入到emp_2,带C的插入到emp_3
insert all--每一个条件都是针对全表挑选
when ename like '%A%' then into emp_1(ename) values(ename)
when ename like '%B%' then into emp_2(ename) values(ename)
when ename like '%C%' then into emp_3(ename) values(ename)
select ename from empinsert first--只能插入一次,前面表插入过了就不再插入到后面的表了
when ename like '%C%' then into emp_3(ename) values(ename)
when ename like '%B%' then into emp_2(ename) values(ename)
when ename like '%A%' then into emp_1(ename) values(ename)
select ename from emp

三、【update】 更新数据

1、语法

update 表名 set 列1=值1,列2=值2……列n=值n {where 条件}select * from emp0 
update emp0 set job='MANAGER',sal=8000 where ename='SMITH'

2、举例

--EMP表10部门工资涨500
--emp20部门的改成11部门
--emp0表全表的empno改成empno+sal
--emp0的ename首字母转大写
create table emp0 as select*from emp--建表
update emp0 set sal=sal+500 where deptno=10;
update emp0 set deptno=11 where deptno=20;
alter table emp0 modify empno number (5)
update emp0 set empno=empno+sal;
update emp0 set ename=initcap(ename)
select *from emp0

3、update使用注意事项:

(1)sp_updatestats可以更新统计信息到最新。exec sp_updatestats 对整个数据库更新

(2)低内存会导致未被客户端连接的查询计划被清除。

(3)修改表结构,修改索引后,查询计划会被清除,可以再修改后运行几遍查询。

(4)使用update时候,order by 会影响查询速度,where中使用函数则会调用筛选器进行扫描,扫描表要尽量避免。

四、【delete】删除数据---多用于删除特定数据

1、语法

delete from 表名 {where 条件}delete from emp0 where ename like '%%'

2、delete from 表 不加条件则删除全部数据

--删除没有奖金的员工
--删除emp0表周日入职的员工
delete from emp0 where nvl(comm,0)=0
delete from  emp0 where  to_char(hiredate,'day')='星期日'

五、delete 和 truncate的异同

1、相同点:都可以删除表中数据

2、不同点:

(1)truncate 快,delete 慢

(2)truncate 是DDL,delete是DML

(3)truncate 不能回滚,delete可以回滚

(4)truncate 不能加条件,delete可以加条件

(5)truncate 可以降低高水位线,delete不能降低高水位线

truncate table emp1
delete from 表名 {where 条件}

六、把序列的值作为主键值插入

select * from emp1create or replace s_vip
start with 1
maxvalue 999
increment by 1
insert into emp1( ename) values ( s_vip.nextval)--创建表
drop table book;        
create table book(       bookId varchar2(4) primary key,   name varchar2(20)         
);   
--创建序列      
create sequence book_seq start with 1 increment by 1;    --创建触发器      
create or replace trigger book_trigger       
before insert on book       
for each row       
begin       
select book_seq.nextval into :new.bookId from dual;      
end ;   --添加数据      
insert into book(name)  values ('cc');    
insert into book(name)  values ('dd');   commit; 
SELECT * FROM book 

七、merge into 用表2更新表1

1、语法

merge into A
using 表B
on (关联条件)---多个关联条件要加括号
-----------------------------------------------------------有则改之
when matched then---满足条件
update set A.列1=B.列1----更新数据
{where 条件}--限制的是被更新的表
{delete where}--可以删除但一般不用
----------------------------------------------------------无则加之
when not matched then---不满足条件
insert(A.列1,A.列2....)values (B.列1,B.列2...)
where 条件--限制的是参考表

2、举例

--创建两张表,emp001的ename列转小写,另一张表emp002的10部门改成40部门
create table emp001 as select empno,lower(ename)ename,deptno from emp;
create table emp002 as select empno,ename,decode(deptno,10,40 ,20,20,30) deptno from emp;
update emp001 set ename=upper(ename) where deptno in (10,20)
select *from emp001;
select *from emp002;----用emp002的deptno作为参考修改emp001,
---emp001中没有的插入到emp001中
----emp001中有的,ename改成和emp002相等
merge into emp001 a
using emp002 b 
on (a.deptno=b.deptno and a.empno=b.empno)when matched then---满足条件
update set a.ename=b.ename---有则改之when not matched then---不满足条件
insert (a.empno,a.deptno)values (b.empno,b.deptno)---无则加之/*##########################################################################*/
--建两张表
--emp01 复制emp 的ename,job,sal,depnto,30部门的job列改成首字母大写
--emp02 复制emp 的ename,job,sal,depnto,20部门改成21部门
--用emp02 更新emp01 关联条件deptno=deptno,ename=ename
--更新的时候只更新工资小于2000的,插入的时候只插入工资大于2000的
create table emp01 as select ename,job,sal,deptno from emp;
create table emp02 as select ename,job,sal,deptno from emp;
update emp01 set job=initcap(job) where deptno=30;
update emp02 set deptno=21 where deptno=20;merge into emp01 a
using emp02 b
on (a.deptno=b.deptno and a.ename=b.ename)
when matched then --满足条件
update set a.job=b.job/*更新数据*/where a.sal<2000--限制的是被更新表
when not matched then --不满足条件
insert (a.ename,a.job,a.sal,a.deptno) 
values (b.ename,b.job,b.sal,b.deptno)--插入数据
where b.sal>2000--限制的是参考表select * from emp01;
select * from emp02;

八、MERGE高级用法

1、只更新不插入

MERGE INTO employees t
USING new_salaries s
ON (t.employee_id = s.employee_id)
WHEN MATCHED THENUPDATE SET t.salary = s.new_salary;

2、只插入不更新

MERGE INTO employees t
USING new_hires s
ON (t.employee_id = s.employee_id)
WHEN NOT MATCHED THENINSERT (employee_id, last_name, salary)VALUES (s.employee_id, s.last_name, s.salary);

3、条件操作

MERGE INTO employees t
USING updated_data s
ON (t.employee_id = s.employee_id)
WHEN MATCHED AND s.status = 'TERMINATED' THENDELETE
WHEN MATCHED AND s.salary > t.salary THENUPDATE SET t.salary = s.salary
WHEN NOT MATCHED THENINSERT (employee_id, last_name, salary)VALUES (s.employee_id, s.last_name, s.salary);

九、DML操作注意事项

1、事务控制

-- 开始事务(Oracle中DML自动开始事务)
-- 执行DML操作
COMMIT; -- 提交事务
-- 或
ROLLBACK; -- 回滚事务-- 保存点(SAVEPOINT)
SAVEPOINT before_update;
UPDATE employees SET salary = salary * 1.1;
-- 可以回滚到保存点
ROLLBACK TO before_update;

2、锁机制

  • 行级锁:DML操作自动锁定受影响的行

  • 表级锁:某些操作可能升级为表锁

  • 死锁:避免循环依赖的DML操作

3、性能优化

  • 批量操作:使用FORALL批量DML(PL/SQL)

  • 减少提交频率:批量提交而非单行提交

  • 使用绑定变量:避免硬解析

4、PL/SQL批量DML示例

DECLARETYPE id_array IS TABLE OF employees.employee_id%TYPE;v_ids id_array := id_array(101, 102, 103);
BEGINFORALL i IN 1..v_ids.COUNTUPDATE employees SET salary = salary * 1.1WHERE employee_id = v_ids(i);COMMIT;
END;
/

十、Oracle特有DML功能

1. RETURNING子句

获取DML操作影响的数据:

-- 插入并返回生成的ID
DECLAREv_new_id employees.employee_id%TYPE;
BEGININSERT INTO employees (employee_id, last_name, hire_date)VALUES (emp_seq.NEXTVAL, '张伟', SYSDATE)RETURNING employee_id INTO v_new_id;DBMS_OUTPUT.PUT_LINE('新员工ID: ' || v_new_id);
END;
/-- 更新并返回旧值和新值
DECLAREv_old_sal NUMBER;v_new_sal NUMBER;
BEGINUPDATE employeesSET salary = salary * 1.1WHERE employee_id = 100RETURNING salary, salary * 1.1 INTO v_old_sal, v_new_sal;DBMS_OUTPUT.PUT_LINE('薪资从 ' || v_old_sal || ' 调整为 ' || v_new_sal);
END;
/

2. 闪回查询(Flashback Query)

查看和恢复历史数据:

-- 查看5分钟前的数据
SELECT * FROM employees AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);-- 恢复误删数据
INSERT INTO employees
SELECT * FROM employees AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE)
WHERE employee_id = 1001;

3. 批量绑定(BULK COLLECT & FORALL)

高效批量DML操作:

DECLARETYPE emp_array IS TABLE OF employees%ROWTYPE;v_emps emp_array;
BEGIN-- 批量查询SELECT * BULK COLLECT INTO v_empsFROM employeesWHERE department_id = 10;-- 批量更新FORALL i IN 1..v_emps.COUNTUPDATE employeesSET salary = v_emps(i).salary * 1.1WHERE employee_id = v_emps(i).employee_id;COMMIT;
END;
/

十一、DML最佳实践

1、使用绑定变量:提高SQL重用率

-- 不好
UPDATE employees SET salary = 5000 WHERE employee_id = 100;
UPDATE employees SET salary = 6000 WHERE employee_id = 101;-- 好
UPDATE employees SET salary = :new_sal WHERE employee_id = :emp_id;

2、限制事务大小:避免长时间运行的事务

3、批量操作:使用FORALL代替循环单行DML

4、错误处理:实现健壮的异常处理

BEGIN-- DML操作UPDATE employees SET salary = salary * 1.1;COMMIT;
EXCEPTIONWHEN OTHERS THENROLLBACK;DBMS_OUTPUT.PUT_LINE('错误: ' || SQLERRM);
END;

5、性能监控:检查执行计划和统计信息

EXPLAIN PLAN FOR UPDATE employees SET salary = salary * 1.1;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

6、使用MERGE代替单独INSERT/UPDATE:简化代码并提高性能

7、考虑触发器影响:了解表上的触发器可能带来的副作用

相关文章:

Oracle数据库数据编程SQL<2.3 DML增、删、改及merge into>

目录 一、DML数据操纵语言&#xff08;Aate Manipulation Language) 二、【insert】插入数据 1、单行插入 2、批量插入 3、将数据同时插入到多张表insert all/insert first 三、【update】 更新数据 1、语法 2、举例 3、update使用注意事项&#xff1a; 四、【delete…...

面试计算机操作系统解析(一中)

判断 1. 一般来说&#xff0c;先进先出页面置换算法比最近最少使用页面置换算法有较少的缺页率。&#xff08;✘&#xff09; 正确答案&#xff1a;错误解释&#xff1a;FIFO&#xff08;先进先出&#xff09;页面置换算法可能导致“Belady异常”&#xff0c;即页面数增加反而…...

启山智软实现b2c单商户商城对比传统单商户的优势在哪里?

启山智软实现 B2C 单商户商城具有以下对比优势&#xff1a; 技术架构方面 先进的框架选型&#xff1a;基于 SpringCloud 等主流框架开发&#xff0c;是百万真实用户沉淀并检验的商城系统&#xff0c;技术成熟稳定&#xff0c;能应对高并发场景&#xff0c;保证系统在大流量访…...

蓝桥杯备考:贪心问题之均分纸牌

咱的贪心策略就是每次分好一个堆儿&#xff0c;如果某个堆已经是满足题意了&#xff0c;就不用管这个堆了&#xff0c;否则要向下一个堆借几个元素 #include <iostream> using namespace std; const int N 110; typedef long long ll; int a[N]; int n; ll x; int cnt…...

免去繁琐的手动埋点,Gin 框架可观测性最佳实践

作者&#xff1a;牧思 背景 在云原生时代的今天&#xff0c;Golang 编程语言越来越成为开发者们的首选&#xff0c;而对于 Golang 开发者来说&#xff0c;最著名的 Golang Web 框架莫过于 Gin [ 1] 框架了&#xff0c;Gin 框架作为 Golang 编程语言官方的推荐框架 [ 2] &…...

centos7 linux VMware虚拟机新添加的网卡,能看到网卡名称,但是看不到网卡的配置文件

问题现象&#xff1a;VMware虚拟机新添加的网卡&#xff0c;能看到网卡&#xff0c;但是看不到网卡的配置文件 解决方案&#xff1a; nmcli connection show nmcli connection add con-name ens36 ifname ens36 type ethernet #创建一个网卡连接配置文件&#xff0c;这里con…...

python的内置方法getitem和len

完整小测试&#xff1a; #python的内置函数&#xff0c;getitemclass Animal():def __init__(self,name):self.name namedef __str__(self):return f"This is {self.name}"class Zoo():def __init__(self,animal_list):self.animal_list animal_listdef __getite…...

深入理解 Git Stash:功能、用法与实战示例

文章目录 深入理解 Git Stash&#xff1a;功能、用法与实战示例一、Git Stash 的核心概念二、Git Stash 的基本用法1. 存储当前修改2. 查看 Stash 列表3. 恢复 Stash4. 恢复并删除 Stash5. 删除 Stash&#xff08;1&#xff09;删除指定 Stash&#xff08;2&#xff09;清空所有…...

SQL 复杂查询和性能优化

一、掌握复杂查询的核心技能 1. ​理解 SQL 执行顺序 SQL 语句的逻辑执行顺序&#xff08;非书写顺序&#xff09;&#xff1a; FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT ​关键点&#xff1a;每一步的结果会传递给下一步&a…...

【web应用安全】关于web应用安全的几个主要问题的思考

文章目录 防重放攻击1. **Token机制&#xff08;一次性令牌&#xff09;**2. **时间戳 超时验证**3. **Nonce&#xff08;一次性随机数&#xff09;**4. **请求签名&#xff08;如HMAC&#xff09;**5. **HTTPS 安全Cookie**6. **幂等性设计****综合防御策略建议****注意事项…...

看懂roslunch输出

自编了一个demo 第一步&#xff1a;创建功能包 cd ~/catkin_ws/src catkin_create_pkg param_demo roscpp第二步&#xff1a;写 main.cpp 创建文件&#xff1a;param_demo/src/param_node.cpp #include <ros/ros.h> #include <string>int main(int argc, char*…...

如何查看Unity打包生成的ab文件

文章目录 前言AssetStudioab文件介绍1. 动态加载资源2. 资源分离与模块化3. 平台兼容性4. 资源压缩与加密5. 资源管理与更新6. 减少安装包大小7. 资源加载灵活性8. 资源打包与分发9. 实际应用场景10. 注意事项 总结 前言 问题来源于工作又回归到工作&#xff0c;当发现发布包里…...

从泛读到精读:合合信息文档解析如何让大模型更懂复杂文档

从泛读到精读&#xff1a;合合信息文档解析如何让大模型更懂复杂文档 一、引言&#xff1a;破解文档“理解力”瓶颈二、核心功能&#xff1a;合合信息的“破局”亮点功能亮点1&#xff1a;复杂图表的高精度解析图表解析&#xff1a;为大模型装上精准“标尺”表格数据精准还原 功…...

Python SciPy面试题及参考答案

目录 什么是 SciPy?它与 NumPy 有什么区别? 如何在 Python 中安装 SciPy? 如何导入 SciPy 库? SciPy 中有哪些子模块?简要介绍它们的功能。 如何使用 SciPy 进行数值积分?请举例说明。 SciPy 中提供了哪些求解微分方程的函数? 什么是插值?SciPy 中如何进行插值?…...

21.Excel自动化:如何使用 xlwings 进行编程

一 将Excel用作数据查看器 使用 xlwings 中的 view 函数。 1.导包 import datetime as dt import xlwings as xw import pandas as pd import numpy as np 2.view 函数 创建一个基于伪随机数的DataFrame&#xff0c;它有足够多的行&#xff0c;使得只有首尾几行会被显示。 df …...

【redis】数据类型之Stream

Redis Stream是Redis 5.0版本引入的一种新的数据类型&#xff0c;它提供了一种持久化的、可查询的、可扩展的消息队列服务。 它结合了Redis高性能的特性与持久化能力&#xff0c;支持&#xff1a; 多消费者组模式&#xff08;Consumer Groups&#xff09;消息回溯&#xff08…...

day17 周末两天偷懒没更新,今天炼丹加学习,完结STL常用容器部分

还剩下两个常用容器&#xff0c;一个是set(集合容器) &#xff0c; 一个是map容器 set/multiset 容器 set容器是关联式容器&#xff0c;该容器的特点是&#xff1a;所有元素都会在插入时被自动排序 set/multiset 都是关联式容器 &#xff0c;其底层结构是使用二叉树实现的。…...

嵌入式开发场景中Shell脚本执行方式的对比

‌Shell脚本执行方式对比表‌ ‌执行方式‌‌命令示例‌‌是否需要执行权限‌‌是否启动子Shell‌‌环境变量影响范围‌‌适用场景‌‌嵌入式开发中的典型应用‌‌直接执行脚本‌./script.sh是是子Shell内有效独立运行的脚本&#xff0c;需固定环境自动化构建脚本&#xff08;…...

数据结构之多项式相加的链表实现

在计算机科学中&#xff0c;多项式的表示和运算经常会用到。使用链表来表示多项式是一种常见且有效的方法&#xff0c;它可以方便地处理多项式的各项&#xff0c;并且在进行多项式相加等运算时具有较好的灵活性。 多项式通常由一系列的项组成&#xff0c;每一项包含一个系数和…...

Java 实现将Word 转换成markdown

日常的开发中&#xff0c;需要将word 等各类文章信息转换成格式化语言&#xff0c;因此需要使用各类语言将word 转换成Markdown 1、引入 jar包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version&g…...

IEEE PDF Xpress校验出现 :字体无法嵌入问题以及pdf版本问题

文章目录 问题描述一、字体嵌入问题首先查看一下&#xff0c;哪些字体没有被嵌入查看window的font文件夹里的字体下载字体的网站修复字体嵌入问题 二、pdf版本不对 问题描述 在处理IEEE的camera ready的时候&#xff0c;提交到IEEE express的文件没有办法通过validate&#xf…...

Sa-Token

简介 Sa-Token 是一个轻量级 Java 权限认证框架&#xff0c;主要解决&#xff1a;登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 官方文档 常见功能 登录认证 本框架 用户提交 name password 参数&#xff0c;调用登…...

StarRocks 中 CURRENT_TIMESTAMP 和 CURRENT_TIME 分区过滤问题

背景 本文基于Starrocks 3.3.5 最近在进行Starrocks 跑数据的时候&#xff0c;发现了一个SQL 扫描了所有分区的数据&#xff0c;简化后的SQL如下&#xff1a; select date_created from tableA where date_createddate_format(current_time(), %Y-%m-%d %H:%i:%S) limit 20其…...

GithubPages+自定义域名+Cloudfare加速+浏览器收录(2025最新排坑)

前言 最近刷到一个小视频&#xff0c;讲述了选择域名选择的三宗罪&#xff0c;分别是 不要使用 .net&#xff0c;因为它价格贵&#xff0c;但是在顶级域名中的 SEO 效果却不是很好&#xff0c;也就是性价比很低不要使用 .cn&#xff0c;因为国外访问该网站可能会很慢&#xf…...

Canvas粒子系统终极指南:从基础运动到复杂交互的全流程实现

文章目录 一、粒子系统基础架构1.1 粒子数据结构设计1.2 粒子系统管理器 二、基础粒子效果实现2.1 重力场模拟2.2 弹性碰撞效果 三、高级交互实现3.1 鼠标吸引效果3.2 颜色渐变粒子 四、性能优化策略4.1 粒子池复用4.2 分层渲染 五、复杂效果实现5.1 烟花爆炸效果5.2 流体模拟 …...

【QT】新建QT工程(详细步骤)

新建QT工程 1.方法(1)点击new project按钮&#xff0c;弹出对话框&#xff0c;新建即可&#xff0c;步骤如下&#xff1a;(2) 点击文件菜单&#xff0c;选择新建文件或者工程&#xff0c;后续步骤如上 2.QT工程文件介绍(1).pro文件 --》QT工程配置文件(2)main.cpp --》QT工程主…...

详解Http:在QT中使用Http协议

目录 一、HTTP 概述 1、主要特点 2、HTTP 方法 3、HTTP 状态码 4、HTTP 头部 5、HTTP的工作原理 二、在Qt中使用HTTP 1、发送简单的HTTP请求 2、发送POST请求 3、处理异步请求 4、使用QSslConfiguration进行HTTPS 5、 处理JSON响应 6、处理错误 三、总结 一、HTTP…...

Next.js 中间件鉴权绕过漏洞 (CVE-2025-29927) 复现利用与原理分析

免责声明 本文所述漏洞复现方法仅供安全研究及授权测试使用&#xff1b; 任何个人/组织须在合法合规前提下实施&#xff0c;严禁用于非法目的&#xff1b; 作者不对任何滥用行为及后果负责&#xff0c;如发现新漏洞请及时联系厂商并遵循漏洞披露规则。 漏洞原理 Next.js 是一个…...

AI时代的数据底座:火山引擎多模态数据湖的设计与实践

资料来源&#xff1a;火山引擎-开发者社区 随着大模型的发展和应用&#xff0c;文本的边界被拓宽&#xff0c;图像、视频、语音各种模态涌现&#xff0c;并给数据管理、检索、计算带来巨大挑战。 火山引擎多模态数据湖 解决方案则可实现海量结构化、半结构化及非结构化数据的统…...

Numpy用法(二)

一.数组变维 1.1 reshape reshape() 可以改变数组维度&#xff0c;但是返回的是一个新的数组&#xff0c;原数组的形状不会被修改.reshape后产生的新数组是原数组的一个视图&#xff0c;即它与原数组共享相同的数据&#xff0c;但可以有不同的形状或维度&#xff0c;且对视图…...

STM32 IIC通信

目录 IIC简介硬件电路连接I2C时序基本单元IIC完整数据帧MPU6050封装硬件IIC内部电路 IIC简介 IIC&#xff08;Inter-Integrated Circuit&#xff09;是 IIC Bus 简称&#xff0c;中文叫集成电路总线。它是一种串行通信总线&#xff0c;使用多主从架构&#xff0c;由飞利浦公司…...

快速入门 JSON 数据格式

引言 JSON&#xff0c;全称 JavaScript Object Notion&#xff0c;类似于XML&#xff0c;YAML&#xff0c;Properties等&#xff0c;是一种数据交换格式&#xff0c;相比于XML&#xff0c;更简单&#xff0c;更轻量&#xff0c;更容易理解。 JSON vs XML 使用 JSON 目前被广…...

FFmpeg —— 中标麒麟系统下使用FFmpeg内核+Qt界面,制作完整功能音视频播放器(附:源码)

🔔 FFmpeg 相关音视频技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 程序运行效果...

硬件测试工装设计不合理的补救措施

硬件测试工装设计不合理的补救措施主要包括重新评估设计需求、优化工装结构、强化工装校准与验证。其中&#xff0c;优化工装结构尤其重要&#xff0c;通过结构优化能够有效解决因设计不合理导致的测试准确性下降和可靠性不足的问题。根据工程实践数据&#xff0c;经过优化结构…...

任意文件读取漏洞

fofa语句&#xff1a;body"/vite/client" /fs/etc/passwd?import&raw?? https://35.175.173.157/fs/etc/passwd?import&raw?? http://geometer.dev.mvergely.com/fs/etc/passwd?import&raw??...

如何使用RK平台的spi驱动 spidev

RK平台spidev驱动读取RC522版本号示例 1. 硬件与驱动确认 确认SPI接口连接&#xff1a;RC522的SPI引脚与RK开发板的对应SPI控制器正确连接&#xff08;CS、CLK、MOSI、MISO&#xff09;检查内核配置&#xff1a; Bash # 内核需启用以下配置 CONFIG_SPIy CONFIG_SPI_MASTERy…...

网路传输层UDP/TCP

一、端口号 1.端口号 1.1 五元组 端口号(port)标识了一个主机上进行通信的不同的应用程序. 如图所示, 在一个机器上运行着许多进程, 每个进程使用的应用层协议都不一样, 比如FTP, SSH, SMTP, HTTP等. 当主机接收到一个报文中, 网络层一定封装了一个目的ip标识我这台主机, …...

1.2-WAF\CDN\OSS\反向代理\负载均衡

WAF&#xff1a;就是网站应用防火墙&#xff0c;有硬件类、软件类、云WAF&#xff1b; 还有网站内置的WAF&#xff0c;内置的WAF就是直接嵌在代码中的安全防护代码 硬件类&#xff1a;Imperva、天清WAG 软件&#xff1a;安全狗、D盾、云锁 云&#xff1a;阿里云盾、腾讯云WA…...

Dify 服务器部署指南

1. 系统要求 在开始部署之前&#xff0c;请确保你的服务器满足以下要求&#xff1a; 操作系统&#xff1a;Linux&#xff08;推荐使用 Ubuntu 20.04 或更高版本&#xff09;内存&#xff1a;至少 4GB RAM存储&#xff1a;至少 20GB 可用空间网络&#xff1a;稳定的互联网连接…...

从车间到数字生态:MES如何引领制造业智能化革命‌

在全球制造业加速迈向工业4.0的浪潮中&#xff0c;传统生产模式正经历颠覆性变革。制造执行系统&#xff08;MES&#xff09;作为连接物理车间与数字世界的核心纽带&#xff0c;正从“生产辅助工具”升级为“智能决策大脑”&#xff0c;推动制造业向数据驱动、柔性化与可持续化…...

Error:Flash Download failed

出现这个就是编译器要换...

Spring容器生命周期详解

Spring容器生命周期详解 Spring容器的生命周期从启动到关闭分为多个阶段&#xff0c;包括Bean的加载、实例化、初始化、使用和销毁。以下是详细流程和关键点&#xff1a; 1. 容器启动阶段 1.1 容器实例化 核心接口&#xff1a;BeanFactory&#xff08;基础容器&#xff09;或…...

革新测试管理 2.0丨Storm UTP统一测试管理平台智能化升级与全流程优化

承接上篇&#xff1a;从基础架构到深度协同 在首篇文章《革新测试管理 | 统一测试管理平台如何实现远程、协同、自动化&#xff1f;》中&#xff0c;我们探讨了Storm UTP如何通过云端协作、自动化测试框架和分布式执行能力打破传统测试壁垒。经过一年多的客户实践与技术迭代&a…...

将 char [] str = “hello,you,world” 改为 “world,you,hello“,要求空间复杂度为1

题目&#xff1a; 将 char [] str “hello,you,world” 改为 "world,you,hello",要求空间复杂度为1 &#xff08;也就是使用的变量只能是单个字符或者常数&#xff0c;不能使用数组&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 解…...

运维规则之总结(Summary of Operation and Maintenance Rules)

运维规则之总结 在运维领域&#xff0c;经验和流程往往决定了系统的稳定性与可靠性。一个运维人&#xff0c;总结出了以下10条运维规则&#xff0c;涵盖了从基础管理到高级策略的全面内容&#xff0c;旨在帮助运维人员更好地应对各种挑战&#xff0c;确保系统的平稳运行。 1.…...

MongoDB 创建数据库

MongoDB 创建数据库 引言 MongoDB 是一款高性能、可扩展的 NoSQL 数据库&#xff0c;广泛应用于大数据领域。在 MongoDB 中&#xff0c;创建数据库是进行数据存储的第一步。本文将详细介绍 MongoDB 数据库的创建方法&#xff0c;包括手动创建和自动创建两种方式。 MongoDB 数…...

SpringSecurity OAuth2:授权服务器与资源服务器配置

文章目录 引言一、OAuth2基础概念与架构二、授权服务器配置三、令牌策略与存储方式四、资源服务器配置五、远程令牌验证与内省总结 引言 在现代分布式应用架构中&#xff0c;OAuth2已成为实现安全授权与认证的事实标准。Spring Security对OAuth2提供了全面支持&#xff0c;使开…...

Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?

&#x1f680; Vue 2 探秘&#xff1a;visible 和 append-to-body 是谁的小秘密&#xff1f;&#x1f914; 父组件&#xff1a;identify-list.vue子组件&#xff1a;fake-clue-list.vue 嘿&#xff0c;各位前端探险家&#xff01;&#x1f44b; 今天我们要在 Vue 2 的代码丛林…...

C#高级:启动、中止一个指定路径的exe程序

一、启动一个exe class Program {static void Main(string[] args){string exePath "D:\测试\Test.exe";// 修改为你要运行的exe路径StartProcess(exePath);}private static bool StartProcess(string exePath){// 创建一个 ProcessStartInfo 对象来配置进程启动参…...

windows下安装sublime

sublime4 alpha 4098 版本 下载 可以根据待破解的版本选择下载 https://www.sublimetext.com/dev crack alpha4098 的licence 在----- BEGIN LICENSE ----- TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D…...