多表查询、事务(MySQL笔记第三期)
p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解
目录
- 多表关系
- 多表查询
- 内连接
- 外连接
- 左外连接
- 右外连接
- 自连接
- 联合查询
- 子查询
- 标量子查询
- 列子查询
- 行子查询
- 表子查询
- 例题
- 事务
- 方式一
- 方式二
- 事务四大特性(ACID)
- 并发事务问题
- 隔离事务级别
多表关系
在项目开发中,进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在各种联系,基本上分为三种:一对一、一对多(多对一)、多对多
.
一对多(多对一):比如部门和员工的的关系,一个部门对应多个员工,一个员工对应一个部门;
实现:在 多(员工) 的一方建立外键,指向 一(部门) 的一方的主键
.
多对多:比如学生与课程的关系,一个学生可以学多门课程,一门课程也可被多个学生选择;
实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
.
一对一:比如用户和用户详情的关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率;
实现:在任意一方加入外键,关联另一方的主键,并设置外键为唯一的(UNIQUE)
多表查询
多表查询,即从多张表中查询数据
-- 表结构参照
create table worker(id int comment '编号',workername varchar(15) comment '工人名字',gender char comment '性别',age tinyint unsigned comment '年龄',idcard char(18) comment '身份证号',entrydate date comment '入职时间',dep_id int comment '部门编号',constraint fk_worker_dep_id foreign key (dep_id) references department(dep_id)
)comment '员工表';create table department(dep_id int primary key auto_increment comment '部门编号',dep char(3) comment '部门'
)comment '部门表';-- 数据参考
insert into department values (1,'销售部'),(2,'采购部'),(3,'管理部');insert into worker values (01,'张三','男',18,1234567,'2024-06-03',1),(02,'李四','女',26,1145411,'2015-11-21',2),(03,'王五','男',30,1152612,'2024-08-26',3),(04,'赵六','女',19,1223653,'2006-01-03',2),(05,'张二狗','男',32,1598764,'2020-11-19',1),(06,'李二','男',17,1965312,'2004-05-18',3),(07,'王三','女',35,2265498,'2024-06-03',null);
如果我们单纯的同时查询两张表,如:select * from worker,department;
这种情况会显示(表A数据条数*表B数据条数)条数据,且无法看出员工对应的是哪个部门;
这种情况称为笛卡尔积
笛卡尔积:指在数学中,两个集合 A集合和B集合的所有组合情况。
所以在多表查询的时候,我们需要消除无效的笛卡尔积
比如这种:select * from worker,department where worker.dep_id = department.dep_id;
多表查询分类:连接查询(内连接、外连接[左外连接、右外连接]、自链接)、子查询
内连接
内连接相当于查询A、B交集部分数据
隐式内连接:SELECT 字段列表 FROM 表1,表2 WHERE 条件...;
显式内连接:SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件...;
举例
-- 查询每一个员工的姓名,及关联部门的名字(隐式内连接)
select workername,dep from worker,department where worker.dep_id = department.dep_id;
-- 使用别名简化(使用别名后就不能使用表名调用字段了)
select workername,dep from worker w,department d where w.dep_id = d.dep_id;
-- 此时不会显示王二的信息-- 查询每一个员工的姓名,及关联部门的名字(显式内连接)
select workername,dep from worker w inner join department d on w.dep_id = d.dep_id;
-- 此时不会显示王二的信息
外连接
左外连接
左外连接相当于查询左表所有数据,以及两张表交集部分数据
语法:SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 连接条件...;
右外连接
右外连接相当于查询右表所有数据,以及两张表交集部分数据
语法:SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 连接条件...;
举例
-- 查询员工表的信息,及关联部门的名字(左外连接)
select w.*,dep from worker w left outer join department d on w.dep_id = d.dep_id;
-- 此时能查询到王二的信息-- 查询部门表的信息,及关联员工的名字(右外连接)
select workername,d.* from worker w right outer join department d on w.dep_id = d.dep_id;
-- 此时不能查询到王二的信息
自连接
自连接:当前表与自身的连接进行查询,自连接必须使用表别名
语法: SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;
自连接查询,可以是内连接查询,也可以是外连接查询
举例
-- 查询员工及所属领导的名字
select a.workername,b.workername from worker a,worker b where a.managerid = b.id;-- 查询员工及所属领导的名字,如果员工没有领导,也需要查询出来
select a.workername,b.workername from worker a left join worker b on a.managerid = b.id;
联合查询
联合查询,即把多次查询的结果合并起来,形成一个新的查询结果集
语法
SELECT 字段列表 FROM 表A...
UNION [ALL]
SELECT 字段列表 FROM 表B...;
举例
-- 将年龄大于20,idcard为2开头的员工全部查询出来
select workername from worker where age>20
union all
select workername from worker where id like '2%';-- 将年龄大于20,idcard为2开头的员工全部查询出来(去重)
select workername from worker where age>20
union
select workername from worker where id like '2%';
注意:联合查询多张表的字段列表数量和类型必须一致;union all
会把所有的数据合并在一起,而union
会对合并后的数据进行去重
子查询
SQL语句中嵌套SELECT语句,称为嵌套查询,即子查询
语法:SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
子查询外部的语句可以是增删改查的任意一种
根据查询结果不同,子查询分为:
标量子查询(子查询结果为单个值)
列子查询(子查询结果为一列)
行子查询(子查询结果为一行)
表子查询子查询结果为多行多列)
根据子查询位置不同,子查询分为:WHERE之后、FROM之后、SELECT之后
标量子查询
标量子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式
常用操作符:= <> > >= < <=
举例
-- 查询销售部的员工信息-- a.查询销售部的ID(子查询)select dep_id from department where dep='销售部';-- b.根据销售部ID查询员工信息select * from worker where dep_id=1;-- 整合
select * from worker where dep_id = (select dep_id from department where dep='销售部');-- ------------------------------------------------------------------------------------------ 查找在李四入职后的员工信息-- a.查询 李四 的入职日期(子查询)select entrydate from worker where workername='李四';-- b.查询指定入职日期之后入职的员工信息select * from worker where entrydate>'2015-11-21';-- 整合
select * from worker where entrydate>(select entrydate from worker where workername='李四');
上面的两条子查询语句返回的都是单个值,所以为标量子查询
列子查询
列子查询返回的结果是一列(也可以是多行)
常用操作符:IN 、NOT IN、ANY、SOME、ALL
举例
-- 查询销售部和管理部的员工信息-- a.查询销售部和管理部的ID(子查询)select dep_id from department where dep='销售部'or dep='管理部';-- b.根据部门ID查询员工信息select * from worker where dep_id in (1,3);-- 整合
select * from worker where dep_id in (select dep_id from department where dep='销售部'or dep='管理部');-- --------------------------------------------------------------------------------------------------- 查询比采购部所有员工年龄都高的员工信息-- a.查询采购部所有员工的年龄(子查询)select dep_id from department where dep='采购部';select age from worker where dep_id=2;-- 整合(子查询)select age from worker where dep_id=(select dep_id from department where dep='采购部');-- b.查询比采购部所有员工年龄都高的员工信息select * from worker where age > all (select age from worker where dep_id = (select dep_id from department where dep='采购部') );-- --------------------------------------------------------------------------------------------------- 查询比管理部任一员工年龄都高的员工信息-- a.查询管理部所有员工年龄(子查询)select age from worker where dep_id=(select dep_id from department where dep='管理部');-- b.查询比管理部任一员工年龄都高的员工信息select * from worker where age > any (select age from worker where dep_id = (select dep_id from department where dep='管理部') );
行子查询
行子查询返回的结果是一行(也可以是多列)
常用符号:=、<>、IN、NOT IN
举例
-- 查询和张三年龄及部门相同的员工信息-- a.查询张三的年龄与部门select age,dep_id from worker where workername='张三';-- b.查询和张三年龄及部门相同的员工信息select * from worker where (age,dep_id) = (select age,dep_id from worker where workername='张三');
表子查询
表子查询返回的结果是多行多列
常用符号:IN
举例
-- 查询和张三、李四性别及部门相同的员工信息-- a.查询张三、李四的性别与部门select gender,dep_id from worker where workername='张三' or workername='李四';-- b.查询和张三、李四性别及部门相同的员工信息select * from worker where (gender,dep_id) in (select gender,dep_id from worker where workername='张三' or workername='李四');-- ------------------------------------------------------------------------------------------------------------- 查询入职日期是'2007-01-01'之后的员工信息,及其部门信息-- a.查询入职日期是'2007-01-01'之后的员工信息select * from worker where entrydate>'2007-01-01';-- b.查询这部分员工对应的部门信息(将这部分员工信息作为一张临时表)select e.*,d.* from (select * from worker where entrydate>'2007-01-01') as e left join department d on e.dep_id=d.dep_id;
例题
-- 查询员工的姓名、年龄、部门信息(隐式内连接)
select w.workername,w.age,d.dep from worker w,department d where w.dep_id = d.dep_id;-- 查询年龄小于30的员工的姓名、年龄、部门信息(显式内连接)
select w.workername,w.age,d.dep from worker w inner join department d on w.dep_id = d.dep_id where age<30;-- 查询拥有员工的部门ID、部门名称
select distinct d.dep_id,d.dep from worker w,department d where w.dep_id = d.dep_id;-- 查询年龄大于25的员工及其部门名称,如果员工没有部门也要展示出来
select w.*,d.dep from worker w left join department d on d.dep_id = w.dep_id where age > 25;-- 查询管理部的平均年龄
select avg(w.age) from worker w,department d where w.dep_id=d.dep_id and d.dep='管理部';-- 查询比平均年龄高的员工信息
select * from worker where age>(select avg(age) from worker);-- 查询低于本部门平均年龄的员工信息-- a.查询指定部平均年龄select avg(w1.age) from worker w1 where w1.dep_id=1;select avg(w1.age) from worker w1 where w1.dep_id=2;-- b.查询低于本部门平均年龄的员工信息select *,(select avg(w1.age) from worker w1 where w1.dep_id=w2.dep_id) '平均年龄' from worker w2 where age < (select avg(w1.age) from worker w1 where w1.dep_id=w2.dep_id);-- 查询所有的部门信息,并统计部门人数
select * from department;select count(*) from worker where dep_id=1;select d.*,(select count(*) from worker w where w.dep_id=d.dep_id) '人数' from department d;
事务
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败
举例说明
好处,当想执行一系列操作时,如果中间出现了异常,由于所有操作均不会被自动执行,从而保证了数据的准确
方式一
查看/设置事务提交方式
SELECT @@autocommit;
set @@autocommit=0;
提交事务:COMMIT;
回滚事务:ROLLBACK;
举例
create table account(name varchar(15) comment '姓名',money int unsigned comment '存款'
) comment '账户表';insert into account values ('张三',2000),('李四',1000);-- ------------------------------------------------------------- 查询当前事务的提交方式
select @@autocommit;-- 设置为手动提交(0为手动,1为自动)
set @@autocommit = 0;-- 转账操作(张三给李四转账1000)-- 1.查询张三账户余额select money from account where name='张三';-- 2.将张三账户余额-1000update account set money = money-1000 where name='张三';-- 3.将李四账户余额+1000update account set money = money+1000 where name='李四';-- 提交事务
commit;-- 回滚事务(撤销事务)
rollback;
方式二
开启事务:START TRANSACTION
或BEGIN
提交事务:COMMIT;
回滚事务:ROLLBACK;
举例
create table account(name varchar(15) comment '姓名',money int unsigned comment '存款'
) comment '账户表';insert into account values ('张三',2000),('李四',1000);-- ------------------------------------------------------------- 查询当前事务的提交方式
select @@autocommit;-- 设置为手动提交(0为手动,1为自动)
set @@autocommit = 1;-- 开启事务
begin;-- 转账操作(张三给李四转账1000)-- 1.查询张三账户余额select money from account where name='张三';-- 2.将张三账户余额-1000update account set money = money-1000 where name='张三';-- 3.将李四账户余额+1000update account set money = money+1000 where name='李四';-- 提交事务
commit;-- 回滚事务(抛出异常时)
rollback;
事务四大特性(ACID)
原子性(Atomicity):原子性意味着事务中的所有操作要么全部完成,要么全部不完成,不会出现只执行了部分操作的情况。如果事务在执行过程中遇到错误,所有已经执行的操作将被回滚,数据库状态回到事务执行前的状态
一致性(Consistency):一致性确保事务从一个一致的状态转换到另一个一致的状态。在事务开始和完成时,数据库的完整性约束没有被破坏。例如,在银行转账的场景中,无论转账是否成功,账户的总金额应保持不变
隔离性(Isolation):隔离性保证了当多个用户并发访问数据库时,数据库为每个用户的事务提供独立的工作区域。每个事务对其他事务的操作不可见,直到该事务提交。这个特性可以防止多个事务同时操作同一数据时可能产生的问题,如脏读、不可重复读和幻读
持久性(Durability):持久性意味着一旦事务被提交,它对数据库的修改将是永久性的。即使发生系统故障,如数据库崩溃或电源故障,已提交的事务所做的修改也不会丢失
并发事务问题
隔离事务级别
为了解决并发事务问题有以下的几种隔离事务级别
(√ 表示可能出现),事务隔离级别越高,安全性越好,性能越低
查看事务隔离级别:SELECT @@TRANSACTION_ISOLATION;
设置事务隔离级别:SET [SESSION|GLOBAL] @@TRANSACTION ISOLATION LEVEL [READ UNCOMMITED | READ COMMIT | REPEATABLE READ | SERIALIZABLE];
相关文章:
多表查询、事务(MySQL笔记第三期)
p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解 目录 多表关系多表查询内连接外连接左外连接右外连接 自连接联合查询子查询标量子查询列子查询行子查询表子查询 例题事务方式一方式二事务四大特性(ACID)并发事务问题隔离事务级别 多…...
python电影数据分析及可视化系统建设
博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
【06】泛型
文章目录 泛型函数中的泛型结构体中的泛型结构体中的方法 枚举中的泛型 泛型 RUST通过在编译时对泛型代码的单态化(monomorphization)来保证运行效率。即,在编译时对泛型填充具体数据类型转换为特定代码进行编译。 由于RUST编译试图穷举所有…...
C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性
在实际项目中为方便了解视觉软件的使用性,可能需要添加一些小而稍微实用的功能:一个StipStatus控件上的Label按钮属性Text需要修改并保存,软件重启后能够自动加载修改后的属性名。 定义变量 public static string controlsText System.Windows.Forms.A…...
Deep seek学习日记1
Deepseek最强大的就是它的深度思考,并且展现了它的思考过程。 五种可使用Deep seek的方式(应该不限于这五种,后续嵌入deepseek的应该更多,多了解一点因为官网容易崩~~): 1.deep seek官网 2.硅基流动silicon…...
我的docker随笔46:在x86平台构建龙芯镜像
本文介绍在x86服务器上构建龙芯平台的docker镜像。 前言 去年11月,在龙芯机器上安装了docker工具,并开始尝试研究如何构建龙芯的文件系统。断断续续搞了2个月后,有点结果出来了。前面有文章介绍了如何用debootstrap构建龙芯编译运行环境&…...
某大型业务系统技术栈介绍【应对面试】
微服务架构【图】 微服务架构【概念】 微服务架构,是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。在微服务架构中,服务与服务之间通信时,通常是…...
wordpress资讯类网站整站打包
wordpress程序,内置了价值499元的模板.但是有了模板没有全自动采集相信大多数人都搞不懂,目录那么多,全靠原创几乎是不可能的事情,除非你是大公司,每人控制一个板块, 这套源码里面最有价值的应该是这个采集…...
移动端测试的挑战与解决方案:兼容性、网络问题及实战策略
引言 移动应用已成为用户触达服务的核心入口,但移动端测试面临设备多样性、网络波动、用户场景复杂等多重挑战。据Statista统计,2023年全球活跃移动设备超180亿台,操作系统(Android/iOS)版本碎片化率超30%,这对测试工程师提出了极高要求。本文深度解析移动端测试的核心痛…...
基于JAVA的幼儿园管理系统的设计与实现源码(springboot+vue+mysql)
项目简介 幼儿园管理系统实现了以下功能: 基于JAVA的幼儿园管理系统的设计与实现的主要使用者管理员可以管理系统基本信息;管理轮播图、系统简介、教师管理、课程管理、幼儿活动管理、餐饮管理、留言管理等功能;前台用户注册登录࿰…...
【Java学习】二维数组
一个数组变量里存的是哈希值(存的大小内容是固定的),它指向对应在堆区上的数组空间,当一个数组变量里存的哈希值指向的在堆上的数组空间里面的一个个引用元素存储的是一个个哈希值指向在堆区上的又一个个数组空间时,此时就形成了二维数组&…...
express + vue 部署宝塔
域名备案 我这里是不同的账号,需要先登录服务器的账号生成授权码给到对应域名的账号。目前域名审核中。 进入域名账号,进行备案即可。 登录阿里云密码设置 未设置登录远程服务的密码,要先设置密码。 登录服务 设置安全组 根据宝塔的需要端…...
前端与后端的对接事宜、注意事项
前端与后端的对接事宜、注意事项 一、对接核心流程(完整生命周期) #mermaid-svg-6yzij6OD8DKqiMLD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6yzij6OD8DKqiMLD .error-icon{fill:#552222;}#mermaid-svg-6yzi…...
【计算机网络】传输层数据段格式
在计算机网络中,数据段(Segment) 是传输层协议(如 TCP 或 UDP)使用的数据单元。TCP 和 UDP 的数据段格式有所不同,以下是它们的详细说明: 1. TCP 数据段格式 TCP(传输控制协议&…...
web第三次作业
弹窗案例 1.首页代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</title><st…...
深度学习(1)-简单神经网络示例
我们来看一个神经网络的具体实例:使用Python的Keras库来学习手写数字分类。在这个例子中,我们要解决的问题是,将手写数字的灰度图像(28像素28像素)划分到10个类别中(从0到9)。我们将使用MNIST…...
DeepSeek 模型部署与使用技术评测(基于阿里云零门槛解决方案)
引言 随着人工智能技术的不断发展,越来越多的企业和个人开始探索如何利用深度学习模型来提升业务效率和用户体验。阿里云推出的【零门槛、轻松部署您的专属 DeepSeek 模型】解决方案为用户提供了多种便捷的部署方式,包括基于百炼 API 调用满血版、基于人…...
学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统
这应该算 stm32裸机用户 转 linux嵌入式系统 的入门学习笔记。 【鲁班猫】39-vnc远程桌面连接鲁班猫_哔哩哔哩_bilibili 本集的鲁班猫的视频介绍中,没有清晰明确指出需要linux开发板接入网络,接入网络可以使用有线网口或者wifi路由,有些提示…...
web集群(LVS-DR)
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项 目,它的官方站点是 www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在 Linux2.4内核以前,使用LVS时必须要重新编…...
Base64 PDF解析器
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Base64 PDF解析器</title><style>body {font-family: Arial, sans-serif;max-width: 800px;margin: 20px auto;padding: 20px;}.contain…...
降本增效 - VGF 构建轻量高性能日志管理平台
VFG 技术架构 Filebeat 接收Syslog ,并进行日志分段,VictoriaLogs 持久化存储日志 ,Grafana 可视化、数据查询、告警、数据导出。 为什么要用VictoriaLogs ? 与Elasticsearch /Grafana Loki相比几十倍的CPU/内存/存储资源占用的…...
leetcode:627. 变更性别(SQL解法)
难度:简单 SQL Schema > Pandas Schema > Salary 表: ----------------------- | Column Name | Type | ----------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int …...
高等代数笔记—欧几里得空间、双线性函数
欧几里得空间 欧几里得空间(欧氏空间) V V V定义: V V V是实数域 R R R上线性空间 在 V V V上定义了一个二元实函数,称为内积,记作 ( α , β ) (\alpha,\beta) (α,β),并且内积满足以下性质:…...
Linux 网络设备驱动中的 netdev_priv 函数详解
在 Linux 内核的网络设备驱动开发中,netdev_priv 函数是一个非常重要的工具,用于访问网络设备的私有数据。本文将详细讲解 netdev_priv 函数的作用、实现原理以及使用方法,并结合代码示例进行说明。 一、netdev_priv 函数的作用 在 Linux 内核中,struct net_device 是描述…...
基于实例详解pytest钩子pytest_generate_tests动态生成测试的全过程
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 作为一名软件开发人员,你一定深知有效测试策略的重要性,尤其…...
20250213 隨筆 雪花算法
雪花算法(Snowflake Algorithm) 雪花算法(Snowflake) 是 Twitter 在 2010 年開發的一種 分布式唯一 ID 生成算法,它可以在 高併發場景下快速生成全局唯一的 64-bit 長整型 ID,且不依賴資料庫,具…...
Bug日记:Linux中systemctl restart network失败问题,网络故障
日期 2023年10月25日 问题描述 在尝试使用 systemctl restart network 重启网络服务时,出现以下错误: Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and …...
计算四个锚点TOA定位中GDOP的详细步骤和MATLAB例程
该MATLAB代码演示了在三维空间中,使用四个锚点的TOA(到达时间)定位技术计算几何精度衰减因子(GDOP)的过程。如需帮助,或有导航、定位滤波相关的代码定制需求,请联系作者 文章目录 DOP计算原理MATLAB例程运行结果示例关键点说明扩展方向另有文章: 多锚点Wi-Fi定位和基站…...
poi 将图片写入到excel文件中
功能点说明 作用:将图片写入到指定的excel文件(或output流) 依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version> </dependen…...
新数据结构(9)——Java异常体系
异常的种类 程序本身通常无法主动捕获并处理错误(Error),因为这些错误通常表示系统级的严重问题,但程序可以捕获并处理异常(Excrption),而Error则被视为一种程序无法或不应尝试恢复的异常类型。…...
HTTP 响应头信息
HTTP 响应头信息 引言 HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一。它定义了客户端与服务器之间交互的基本规则。在HTTP协议中,响应头信息扮演着至关重要的角色。本文将详细介绍HTTP响应头信息的概念、类型、作用及其在实际应用中的重要性。 响应头信息概…...
计算机视觉:卷积神经网络(CNN)基本概念(一)
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络 一、引言 卷积神经网络&…...
C#: String s = new String(“Hello“)无法编译?编程语言字符集有两个?为什么这种变量名“\u0061\u0062”都能编译通过?
C#: String s new String("Hello")无法编译? C# String类型是literal常量,默认不能用new创建,但可以在unsafe下用char *字符串指针创建。 char* charPtr stackalloc char[2]; charPtr[0] H; charPtr[1] \0; String myString new Strin…...
网络安全学习笔记之Internet基本知识
Internet构成 根据工作方式,可以把Internet分为边缘部分和核心部分。边缘部分由连接在Internet上的主机(用户的终端、服务器)组成。用户直接使用边缘部分进行通信和资源共享。核心部分由大量网络和连接这些网络的路由器组成。 服务类别 面向…...
【设计模式】【结构型模式】装饰者模式(Decorator)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
3D可视化定制:开启个性化消费新时代
3D可视化定制是一种将产品的三维模型与可视化技术相结合,以满足消费者个性化需求的服务。以下是对3D可视化定制的详细介绍: 一、定义与原理 3D可视化定制是指利用三维建模技术和可视化工具,为消费者提供一个直观、互动且高度个性化的定制平…...
CRMEB 多商户版v3.0.1源码全开源+PC端+Uniapp前端+搭建教程
一.介绍 crmeb多商户是一套B2B2C商家入驻模式的平台多商户商城系统,系统支持平台自营、联营、招商等多种运营模式,可满足企业新零售、批发、分销、预售、O2O、多店、商铺入驻等各种业务需求。 后端全开源、uniapp多端可编译! 二、搭建教程…...
java八股文-mysql
1. 索引 1.1 什么是索引 索引(index)是帮助Mysql高效获取数据的数据结构(有序).提高数据的检索效率,降低数据库的IO成本(不需要全表扫描).通过索引列对数据进行排序,降低数据排序成本,降低了CPU的消耗. 1.2 mysql索引使用的B树? 1. 没有使用二叉树,最坏情况o&…...
Audio-Visual Speech Enhancement(视听语音增强)领域近三年研究进展与国内团队及手机厂商动态分析
一、视听语音增强领域近三年研究进展 多模态融合与模型轻量化 多模态特征融合:中国科学技术大学团队提出通过引入超声舌头图像和唇部视频的联合建模,结合知识蒸馏技术,在训练阶段利用教师模型传递舌部运动知识,从而在推断时仅依赖唇部视频即可提升语音增强效果。此外,中科…...
React AJAX:深入理解与高效实践
React AJAX:深入理解与高效实践 引言 随着互联网技术的不断发展,前端开发领域也经历了翻天覆地的变化。React 作为当前最流行的前端框架之一,其强大的组件化和虚拟DOM机制受到了广泛关注。而 AJAX(Asynchronous JavaScript and XML)作为实现前后端数据交互的重要技术,与…...
撕碎QT面具(1):Tab Widget转到某个Tab页
笔者未系统学过C语法,仅有Java基础,具体写法仿照于大模型以及其它博客。自我感觉,如果会一门对象语言,没必要先刻意学C,因为自己具有对象语言的基础,等需要用什么再学也不迟。毕竟不是专门学C去搞算法。 1…...
2025.2.16
Web [GDOUCTF 2023]泄露的伪装: 点进去看就是装神弄鬼,那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下:使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…...
002 第一个python程序
编程语言 编程语言可以做的事情: 网站开发、软件 、游戏、APP、 小程序、 爬虫、 数据分析、脚本 第一个python程序 找到IDE图标pycharm 新建项目 选择项目路径 创建目录 新建python文件 输入代码 运行程序查看结果 print 介绍 print : 输出内容…...
面试完整回答:SQL 分页查询中 limit 500000,10和 limit 10 速度一样快吗?
首先:在 SQL 分页查询中,LIMIT 500000, 10 和 LIMIT 10 的速度不会一样快,以下是原因和优化建议: 性能差异的原因 LIMIT 10: 只需要扫描前 10 条记录,然后返回结果。 性能非常高,因为数据库只…...
《Foundation 起步》
《Foundation 起步》 引言 在当今快速发展的科技时代,了解并掌握最新的技术是至关重要的。本文旨在为初学者提供一个全面的《Foundation》起步指南,帮助大家快速入门并掌握这一强大的技术。 一、什么是Foundation? Foundation 是一个流行的前端框架,由 ZURB 公司开发。…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十五节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(RoutineControl_0x31服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x31服务、例程控制、ISO 14229-1:2023、ECU测试 一、服务功能概述 0x31服…...
数据结构:顺序表
目录 一、数据结构的概念 什么是数据结构? 为什么还需要数据结构? 二、顺序表 1.线性表 2.顺序表和数组的区别 3.顺序表分类 3.1静态顺序表 3.2动态顺序表 三、动态顺序表的实现 一、数据结构的概念 什么是数据结构? 数据结构可以…...
LC-随机链表的复制、排序链表、合并K个升序链表、LRU缓存
随机链表的复制 为了在 O(n) 时间复杂度内解决这个问题,并且使用 O(1) 的额外空间,可以利用以下技巧: 将新节点插入到原节点后面:我们可以将复制节点插入到原节点后面。例如,如果链表是 A -> B -> C,…...
对于简单的HTML、CSS、JavaScript前端,我们可以通过几种方式连接后端
1. 使用Fetch API发送HTTP请求(最简单的方式): //home.html // 示例:提交表单数据到后端 const submitForm async (formData) > {try {const response await fetch(http://your-backend-url/api/submit, {method: POST,head…...
打印问题总结
问题一: 记一次发票打印模糊问题,后端返回的是pdf 之前实现的效果是将后端返回的pdf转成canvas再转成图片 预览 问题: 打印效果很模糊 解决方式: 就是直接预览pdf 借助pdf的打印和下载即可 问题二: 激光打印一般…...