多表查询-概述内连接外连接子查询
一.数据准备:
1.部门表:
代码:
-- 部门管理
create table tb_dept
(id int unsigned primary key auto_increment comment '主键ID',name varchar(10) not null unique comment '部门名称',create_time datetime not null comment '创建时间',update_time datetime not null comment '修改时间'
) comment '部门表';
insert into tb_dept (id, name, create_time, update_time)
values (1, '学工部', now(), now()),(2, '教研部', now(), now()),(3, '咨询部', now(), now()),(4, '就业部', now(), now()),(5, '人事部', now(), now());
2.员工表:
代码:
-- 员工管理
create table tb_emp
(id int unsigned primary key auto_increment comment 'ID',username varchar(20) not null unique comment '用户名',password varchar(32) default '123456' comment '密码',name varchar(10) not null comment '姓名',gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',image varchar(300) comment '图像',job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管,5.咨询师',entrydate date comment '入职时间',dept_id int unsigned comment '部门ID', -- 属于外键字段,关联部门表的主键IDcreate_time datetime not null comment '创建时间',update_time datetime not null comment '修改时间'
) comment '员工表';
insert into tb_emp
(id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time)
values (1, 'jinyong', '123456', '金庸', 1, '1.jpg', 4, '2000-01-01', 2, now(), now()),(2, 'zhangwuji', '123456', '张无忌', 1, '2.jpg', 2, '2015-01-01', 2, now(), now()),(3, 'yangxiao', '123456', '杨逍', 1, '3.jpg', 2, '2008-05-01', 2, now(), now()),(4, 'weiyixiao', '123456', '韦一笑', 1, '4.jpg', 2, '2007-01-01', 2, now(), now()),(5, 'changyuchun', '123456', '常遇春', 1, '5.jpg', 2, '2012-12-05', 2, now(), now()),(6, 'xiaozhao', '123456', '小昭', 2, '6.jpg', 3, '2013-09-05', 1, now(), now()),(7, 'jixiaofu', '123456', '纪晓芙', 2, '7.jpg', 1, '2005-08-01', 1, now(), now()),(8, 'zhouzhiruo', '123456', '周芷若', 2, '8.jpg', 1, '2014-11-09', 1, now(), now()),(9, 'dingminjun', '123456', '丁敏君', 2, '9.jpg', 1, '2011-03-11', 1, now(), now()),(10, 'zhaomin', '123456', '赵敏', 2, '10.jpg', 1, '2013-09-05', 1, now(), now()),(11, 'luzhangke', '123456', '鹿杖客', 1, '11.jpg', 1, '2007-02-01', 1, now(), now()),(12, 'hebiweng', '123456', '鹤笔翁', 1, '12.jpg', 1, '2008-08-18', 1, now(), now()),(13, 'fangdongbai', '123456', '方东白', 1, '13.jpg', 2, '2012-11-01', 2, now(), now()),(14, 'zhangsanfeng', '123456', '张三丰', 1, '14.jpg', 2, '2002-08-01', 2, now(), now()),(15, 'yulianzhou', '123456', '俞莲舟', 1, '15.jpg', 2, '2011-05-01', 2, now(), now()),(16, 'songyuanqiao', '123456', '宋远桥', 1, '16.jpg', 2, '2010-01-01', 2, now(), now()),(17, 'chenyouliang', '123456', '陈友谅', 1, '17.jpg', NULL, '2015-03-21', NULL, now(), now());
二.多表查询的SQL语句:
1.代码:多张表之间用逗号分隔
-- 多表查询
select * from tb_dept,tb_emp; -- 同时查询部门表和员工表的所有字段
2.运行结果:
但运行结果中有许多条查询结果,超出了员工表的17条数据和部门表的5条数据,所以这是为什么呢?
观察结果可以发现,金庸和其他员工都各自出现了5次,而且一个员工和5个部门分别进行了匹配,
所以就是将17位员工依次和5个部门匹配,也就是查询结果共有5 * 17 = 85条数据:
这个现象就叫笛卡尔积。
以金庸这个员工为例,金庸实际只归属于2号部门,因此就需要加入一个连接条件来去除掉无效部门,
本例中就需要员工所在的部门id等于部门id:
-- 多表查询
select * from tb_dept,tb_emp where tb_emp.dept_id = tb_dept.id;
运行结果为:
只有16个数据是因为有一个员工的dept_id为null
三.多表查询概述及笛卡尔积:
笛卡尔积(Cartesian product)是指在数学中,两个集合X和Y的笛卡尔积表示为X×Y,其中第一个对象是X的成员,而第二个对象是Y的所有可能有序对的其中一个成员。
笛卡尔积的计算公式可以表示为:A×B = {(x,y)|x∈A∧y∈B},其中A和B是两个集合。
在SQL中,笛卡尔积可以通过简单的多表查询实现,例如:
-- 多表查询
select * from tb_dept,tb_emp; -- 同时查询部门表和员工表的所有字段
这条SQL语句会返回tb_dept表和tb_emp表的所有可能组合,即使这些组合在实际中并不存在任何关联。
为了清除掉无效数据,就需要增加条件语句:
四.多表查询分类:
五.内连接语法:
(隐式内连接的SQL语句中from后可操作不止两张表;显式内连接的SQL语句中inner可省)
a.隐式内连接演示:
1.代码:
-- ==============================内连接==============================
-- A.查询员工的姓名,及所属的部门名称(用隐式内连接实现)
select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;
/*本例中是利用tb_emp.dept_id和tb_dept.id进行关联了员工和部门,员工表的dept_id字段代表部门id,也就关联了部门表的id*/
/*select name,name from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;这样是错的,因为这么写的话数据库就
无法得知两个name字段分别是哪个表的(注:两张表都有name字段),因此就需要都注明name字段是哪张表的*/
2.运行结果:
运行结果有16条数据,而测试数据有17条数据,这是因为第17条数据的dept_id为null即没有分配部门,因此这条记录就和部门表没有关系,而内连接查询的是两张表交集部分的数据,所以第17条数据也就查询不出来:
b.显式内连接演示:
1.代码:
-- B.查询员工的姓名,及所属的部门名称(用显式内连接实现)
select tb_emp.name,tb_dept.name from tb_emp inner join tb_dept on tb_emp.dept_id = tb_dept.id;
/*注:这里的字段和表的先后要一一对应*/
2.运行结果:
六.多表连接查询时需要指定字段的表名,如果表名比较长会导致繁琐,因此可以为表起别名,给表起别名的语法(字段也可以起别名):
1.语法:原名+空格+别名
注:一旦给表起了别名,那么在该SQL语句中后面指定字段名时就需要用表的别名,不能用表的原名;
2.举例:
-- 起别名:字段和表都可以起别名,起别名的语法就是 原名+空格+别名
select e.name,d.name from tb_emp e , tb_dept d where e.dept_id = d.id;
/*e为tb_emp表的别名,d为tb_dept表的别名*/
/*如果给表指定了别名,那么之后该SQL语句中用表时就必须用表的别名,用原名会报错*/
运行结果:
七.外连接语法:
(outer关键字可省略;表1为左表,表2为右表)
a.左外连接演示:
1.代码:
-- ==============================外连接==============================
-- A.查询员工表 所有 员工的姓名,和对应的部门名称(左外连接)
select tb_emp.name,tb_dept.name from tb_emp left outer join tb_dept on tb_emp.dept_id = tb_dept.id;
/*此时可以查询出所有员工的信息,因为虽然第17号员工没有部门id即和部门表没有交集,但它在员工表(左表)中,是可以查到的(左外连接操作是把左表,左表和右表的交集一起查询)*/
/*员工表中员工的姓名字段为name,部门表中部门名称字段为name*/
tb_emp.dept_id = tb_dept.id是用来关联两张表的;
2.运行结果:
此时可以查询出所有员工的信息,因为虽然第17号员工没有部门id即和部门表没有交集,但它在员工表(左表)中,是可以查到的 (左外连接操作是把左表,左表和右表的交集一起查询)
b.右外连接演示:
1.代码:
-- B.查询部门表 所有 部门的名称,和对应的员工名称(右外连接)
select tb_emp.name,tb_dept.name from tb_emp right outer join tb_dept on tb_emp.dept_id = tb_dept.id;
/*此时能查询出19条数据,因为右外连接操作是把右表,左表和右表的交集一起查询*/
/*部门表中有5个部门,员工表中一共关联了2个部门,但根据右外连接的查询规则,剩下的3个部门也会查询出来,尽管员工表中没有关联这些部门*/
2.运行结果:
此时能查询出19条数据,因为右外连接操作是把右表,左表和右表的交集一起查询。部门表中有5个部门,员工表中一共关联了2个部门,但根据右外连接的查询规则,剩下的3个部门也会查询出来,尽管员工表中没有关联这些部门。
第17号员工在员工表中,而第17号员工没有部门id即和部门表没有交集,它只在员工表(左表)中,右外连接中是查询不到的。
拓展:
把左外连接改为右外连接或者把右外连接改为左外连接,只需要把表1和表2互换位置即可:
比如左外连接改为右外连接:
-- B.查询部门表 所有 部门的名称,和对应的员工名称
select tb_emp.name,tb_dept.name from tb_dept left outer join tb_emp on tb_emp.dept_id = tb_dept.id;
/*
select tb_emp.name,tb_dept.name from tb_emp right outer join tb_dept on tb_emp.dept_id = tb_dept.id;
*/
/*此时SQL语句中用到了left outer join,但查询结果和select tb_emp.name,tb_dept.name from tb_emp right outer join tb_dept on tb_emp.dept_id = tb_dept.id;该SQL语句结果一样,因为这是把左外连接改为了右外连接*/
/*左外连接包含左表的所有数据以及两张表交集的数据,意味着left左边就包含了tb_dept表的所有数据,以及两张表交集的数据*/
运行结果为:
项目开发中左外连接用的较多,右外连接用的少,因为右外连接可以替换为左外连接。
八.子查询语法:
(列子查询的结果可以是多行或一行,但必须是一列;行子查询的结果可以是多列或一列,但必须是一行)
a.标量子查询:子返回的结果是单行单列
例1:
代码:
-- ==============================子查询==============================
-- 标量子查询
-- A.查询"教研部"的所有员工信息
/*分析:首先要查询员工的信息,也就是最终要查询员工表的信息,但员工表中只有部门id,并没有部门名称,而现在的限制条件是部门名称"教研部"因此可以把条件进行分解*/
-- 1.查询 教研部 的部门ID:查询部门表即可
select id from tb_dept where name = '教研部';-- 2.再查询该部门ID下的员工信息:查询员工信息就是查询员工表
select * from tb_emp where dept_id = 2;
/*2号部门是教研部,但通常情况下部门名称的id无法得知,此时就需要嵌套查询*/-- 嵌套
select * from tb_emp where dept_id = (select id from tb_dept where name = '教研部');
/*注:嵌套要加括号,括号里的相当于子,本例中子查询的结果为2*/
2.运行结果:
例2:
1.代码:
-- B.查询在"方东白"入职之后的员工信息
-- 1.查询方东白的入职时间
select entrydate from tb_emp where name = '方东白'; /*相当于子,结果是单个值*/-- 2.查询在"方东白"入职之后的员工信息
select * from tb_emp where entrydate > '2012-11-01';-- 嵌套
select * from tb_emp where entrydate > (select entrydate from tb_emp where name = '方东白');
2.运行结果:
b.列子查询:
例如:
1.代码:
-- 列子查询
-- A.查询"学工部"和"教研部"的所有员工信息
/*分析:最终要的是员工信息即员工表的内容,但员工表中只有部门id,没有部门名称,因此就需要先查询出部门名称对应的部门id*/
-- 1.查询"学工部"和"教研部"的部门id,这是在部门表下
select id from tb_dept where name = '学工部' or name = '教研部';
/*select id from tb_dept where name = '学工部' or '教研部';
这条SQL语句有错误,查询的是两个部门name即"学工部"和"教研部"的id,而条件中只限制了一个name,最终可能无法查询完整*/
/*select id from tb_dept where name in ('学工部','教研部');
也是正确的,也可以查询出"学工部"和"教研部"对应的部门id*/-- 2.根据部门id,查询该部门下的员工信息即查询员工表
select * from tb_emp where dept_id in (1,2);
/*select * from tb_emp where dept_id = 1 or dept_id = 2;也对*/-- 嵌套:嵌套的时候SQL语句的条件限制中就无法使用逻辑运算符or了
select * from tb_emp where dept_id in (select id from tb_dept where name = '学工部' or name = '教研部');
/*select * from tb_emp where dept_id = (select id from tb_dept where name = '学工部' or name = '教研部');
这条SQL语句不正确,因为=运算符的右边只能是一个确切的值,而select id from tb_dept where name = '学工部' or name = '教研部'的结果
可能不止一个值*/
2.运行结果:
c.行子查询:
例如:
1.代码:
-- 行子查询
-- A.查询与"韦一笑"的入职日期 及 职位都相同的员工信息
-- 1.查询"韦一笑"的入职日期 及 职位
select entrydate,job from tb_emp where name = '韦一笑'; -- 这是子,结果只有1行,但有多列-- 2.查询与"韦一笑"的入职日期 及 职位都相同的员工信息,最终要的是员工的完整信息
select * from tb_emp where entrydate = '2007-01-01' and job = 2;-- 嵌套合并
/*此时条件语句中有两个参数即entrydate和job,嵌套时就需要把参数分开写*/
select * from tb_emp where entrydate = (select entrydate from tb_emp where name = '韦一笑')and job = (select job from tb_emp where name = '韦一笑');
/*entrydate就专门查entrydate,job就专门查job但嵌套后的SQL语句较繁琐,因此要优化*/-- =============================================优化=============================================
-- select * from tb_emp where entrydate = '2007-01-01' and job = 2;等效于
select * from tb_emp where (entrydate,job) = ('2007-01-01',2);
/*注:括号里的内容是一一对应的*/-- 最终优化效果为
select * from tb_emp where (entrydate,job) = (select entrydate,job from tb_emp where name = '韦一笑');
/*少写了一个select语句*/
2.运行结果:
d.表子查询:
例如:
1.代码:
-- 表子查询
-- A.查询入职日期是"2006-01-01"之后的员工信息,及其部门名称
-- 1.查询入职日期是"2006-01-01"之后的员工信息
select * from tb_emp where entrydate > '2006-01-01';-- 2.查询这部分员工信息及其部门名称
/*分析:其中要查询部门名称,必然要用到部门表,查询到的这部分员工信息可作为临时表进行查询*/
/*这条SQL语句较繁琐,可以给表起别名来简化代码*/
select e.* , d.name from (select * from tb_emp where entrydate > '2006-01-01') e ,tb_dept d where e.dept_id = d.id;
/*e为员工临时表的别名,d为部门表的别名,e.*代表员工临时表的所有信息,d.name代表部门表的部门名称*/
/*e.dept_id = d.id用来关联两张表*/
2.运行结果:
相关文章:
多表查询-概述内连接外连接子查询
一.数据准备: 1.部门表: 代码: -- 部门管理 create table tb_dept (id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null c…...
H5游戏出海如何获得更多增长机会?
海外H5小游戏的崛起给了国内众多中小厂商出海发展的机会,开发者如何在海外市场获得更多的增长机会?#APP出海# H5游戏如何在海外获得核心用户? HTML5游戏的开发与运营者们首先可以利用量多质高的HTML5游戏,维持海外用户粘性&…...
element plus的表单校验,明明输入内容了,但提示红字还是会显示着
下拉框的不隐藏,可能是 trigger为blur的原因,改为change即可 const rules reactive({name: [{ required: true, message: "请输入名称", trigger: "blur" }],price: [{ required: true, message: "请输入价格", trigger…...
MobaXterm Sessions 批量录入导入,会话批量添加,解决导入配置中文乱码
一、创建表格 创建 Excel 表格,将服务器信息写入表格 二、写入文件 新建 list.txt 文件将表格中的服务器信息复制粘贴进去 三、修改脚本 这是你需要修改的变量,其他变量不需要动 # 登录用户 ssh_userroot # 目录名称 folder_name资源池四、执行脚本 …...
Vue项目中的权限控制实践与方案详解
在现代前端开发中,权限控制是一个不可或缺的重要环节。一个完善的权限控制系统不仅能够保护应用的安全性,还能为不同角色的用户提供更好的使用体验。让我们深入探讨Vue项目中权限控制的实现方案和最佳实践。 权限控制本质上是对用户操作的一种限制&…...
C++11新特性之线程std::thread
C std::thread的定义和功能 std::thread是C11引入的标准库类,用于创建和管理线程。通过std::thread,程序可以并发执行多个任务,从而提高效率。 功能与作用: 创建线程:可以启动一个线程执行某个函数或任务。管理线程…...
西门子S7-200 SMART PLC在钢铁行业中的应用
西门子S7-200 SMART PLC在钢铁行业中的应用,主要得益于其强大的功能、简易的编程方式以及卓越的稳定性,这些特点使得它能够在钢铁行业的自动化控制中发挥重要作用。 以下是对西门子S7-200 SMART PLC在钢铁行业中应用的详细分析: 一、钢铁行业…...
Amazon SageMaker 和 Amazon Bedrock 有什么区别
Amazon SageMaker 和 Amazon Bedrock 有什么区别 文章目录 Amazon SageMaker 和 Amazon Bedrock 有什么区别1.服务定位和主要功能区别Amazon SageMakerAmazon Bedrock 2. 适用场景Amazon SageMakerAmazon Bedrock 3. 用户群体Amazon SageMakerAmazon Bedrock 4. 开发和部署流程…...
自动驾驶数据集的应用与思考
数据作为新型生产要素,是数字化、网络化、智能化的基础,是互联网时代的“石油”“煤炭”,掌握数据对于企业而言是能够持续生存和发展的不竭动力,对于需要大量数据训练自动驾驶系统的企业而言更是如此。 而随着激光雷达、毫米波雷…...
Python 中的 threading 模块和 multiprocessing 模块有何区别?
在Python编程中,threading 和 multiprocessing 模块都提供了并行处理的能力,但它们实现的方式以及适用的场景是不同的。 下面将详细解释两者的区别,并给出一些日常开发中的使用建议。 Threading(线程) threading 模…...
网络安全之常见风险端口(Common Risk Ports for Network Security)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…...
思科模拟器路由器的基本配置
一、实验目的 了解路由器的作用掌握路由器的基本配置方法 3、掌握路由器模块的使用和互连方式 二、实验环境 2811路由器一台,计算机两台,Console配置线一根,网线若干;本实验拓扑图如图8-1所示;计算机IP地址规划如表8-…...
使用ssh免密登录实现自动化部署rsync+nfs+lsync(脚本)
单机一键部署sshrsyncnfslsync 执行准备 主机信息 主机角色外网IP内网IP主机名nfs、lsync10.0.0.31176.16.1.31nfs客户端10.0.0.7176.16.1.7web01rsync、nfs10.0.0.41172.16.1.41backup 秘钥信息 #web01可以免密连接nfs和backup [rootweb01 ~]# ssh-keygen [rootweb01 ~]#…...
第425场周赛:最小正和子数组、重排子字符串以形成目标字符串、最小数组和、移除边之后的权重最大和
Q1、[简单] 最小正和子数组 1、题目描述 给你一个整数数组 nums 和 两个 整数 l 和 r。你的任务是找到一个长度在 l 和 r 之间(包含)且和大于 0 的 子数组 的 最小 和。 返回满足条件的子数组的 最小 和。如果不存在这样的子数组,则返回 -…...
常见矩阵分析法(BCG、GE、IE、SPACE、TOWS、优先、战略优先级、安索夫、风险矩阵):如何通过系统化方法助力战略决策与数据驱动决策
在快速变化的商业环境中,企业决策者面临着诸多复杂的选择与挑战。矩阵分析法作为战略分析的重要工具,能够系统化地分析企业的内外部环境,帮助管理层做出更加科学、合理的决策。本文将全面解析常见的矩阵分析法,并探讨它们在数据驱…...
沐风老师3DMAX摄相机阵列插件使用方法
3DMAX摄相机阵列插件,从网格对象或样条线的顶点法线快速创建摄相机阵列。该插件从网格的顶点或样条线的节点获取每个摄影机的位置和方向。 3DMAX摄相机阵列插件支持目前3dMax主流的物理相机、标准相机、VRay物理相机。 【版本要求】 3dMax 2015及更高版本 【安装方…...
踩坑日记-win电脑怎么登录虚拟机上部署的phpmyadmin?
前请提要 电脑win11,安装centOS7虚拟机,部署了linux 安装了docker和一些镜像容器,准备开发项目 访问 phpMyAdmin 时无法打开页面 访问 http://0.0.0.0:8899/ 时,提示无法访问此页面。0.0.0.0 表示 Docker 容器将监听宿主机上的…...
手写观察者模式
本人是JavaScript开发者,以下的示例也是以Javascript举例来说明的。 一、概念 当对象间存在一对多的关系时,使用观察者模式。当被观察的对象发生变化时,其所有的观察者都会收到通知并进行相应的操作。 二、具体例子 比如说,学…...
20.LMAX-DDD的极致性能架构
学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 历史起源架构目标架构要素 时序对比传统时序事件溯源时序LMAX时序 单线程非阻塞异步IO(reactor)多线程单…...
axios的引入和基本使用
一、axios的引入 使用 pnpm add axios 二、使用axios 三、axios的使用方法补充 axios除了直接使用它实例上的方法,还可以通过配置的方式进行使用axios({}),传入一个对象,这个对象可以有如下属性: url(字符串&#…...
14--VulnHub 靶机系列之Gear_Of_War#1
靶机下载地址: https://download.vulnhub.com/gearsofwar/Gear_Of_War%231.ova kali机(VMware)两张网卡: 第一张网卡使用VM0(桥接模式)-桥接到VirtualBox Host-Only Ethernet Adapter 第二张网卡使用NAT模式--用于访问网络 信息收集 kali机eth0的I…...
Python + OpenCV 系列:图像阈值处理
文章目录 引言 1. 阈值处理的基本概念2. OpenCV 中的阈值处理3. 常见的阈值类型3.1 二值化阈值3.2 反向二值化阈值3.3 截断阈值3.4 平滑阈值 4. 自适应阈值5. Otsu’s 阈值法6. 阈值处理的应用场景7. 总结 引言 图像阈值处理是计算机视觉和图像处理中一种非常基础而重要的技术…...
el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee刷新某个节点
一、懒加载的tree已经全部展开,外部点击删除的时候不需要重新展开点击获取下一层数据 <template> <el-treeref"tree":data"treeData":props"defaultProps"render-after-expandhighlight-currentlazy:expand-on-click-node&q…...
如何在 JavaScript 中设置定时器?
在 JavaScript 中,设置定时器通常使用两个内置的函数:setTimeout() 和 setInterval()。它们允许你在指定的时间延迟后执行某个函数或者以某个间隔反复执行某个函数。下面,我将结合实际项目代码示例讲解如何使用它们。 1. setTimeout() — 延…...
LDR6500:音频双C支持,数字与模拟的完美结合
在当今数字化快速发展的时代,音频设备的兼容性和性能成为了用户关注的重点。LDR6500,作为乐得瑞科技精心研发的USB Power Delivery(PD)协议芯片,凭借其卓越的性能和广泛的应用兼容性,为音频设备领域带来了新…...
小型项目的数据库适合选用ClickHouse吗?
我们与MySQL比较。 MySQL 1. 传统的业务系统 用户管理订单处理产品信息企业基础数据 2. 特点 行存储,适合频繁的增删改事务支持完善小规模数据查询性能好数据一致性保证生态系统成熟,运维简单 ClickHouse 1. 数据分析场景 日志分析用户行为分析实…...
MySQL--》如何在SQL中巧妙运用函数与约束,优化数据处理与验证?
目录 函数使用 字符串函数 数值函数 日期函数 流程函数 约束 函数使用 函数是指一段可以直接被另一段程序调用的程序或代码,在mysql当中有许多常见的内置函数,接下来开始对这些内置函数及其作用进行简单的讲解和使用: 字符串函数 my…...
鸿蒙HarmonyOS应用开发 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
鸿蒙心路旅程:探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力 HarmonyOS Next 是华为推出的全新一代操作系统,旨在进一步推动分布式技术的深度应用和生态融合。本文将从技术特点、应用场景入手,通过实战案例与代码示例&…...
JavaWeb 9 MySQL DDL DML
前言 1、什么是数据库? 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库 2、目前主流的关系型数据库有哪些? 目前主流的关系型数据库:(SQL语句是操作关系型数据库的统一标准&#x…...
哑资源对于通信行业的重要性以及哑资源管理的难点
一、哑资源定义与分类 1.1 哑资源概念界定 哑资源(Dumb Resources)在通信行业中指的是那些不具备智能处理能力的物理设备和设施。这些资源虽然不直接参与数据的生成和处理,但它们是通信网络正常运行的基础。哑资源包括但不限于电缆、天线、…...
聊聊大语言模型的上下文处理能力基本概念
一、Llama3的上下文处理能力 Llama 3不同版本的上下文处理能力有所不同: Llama 3基础版本:上下文长度一般为8k tokens左右,约相当于6,000字或10页文档.Llama 3.1版本:将上下文窗口提升到了128k tokens,这使得模型在处…...
总结几种不同风格的学术论文ChatGPT提示词
目录 1.不同写作风格的重要性 2.叙事写作 3.描述性写作 4.说明性写作 5.讨论性写作 小编先跟宝子们来看看一篇学术论文或者研究论文的基本组成部分,有助于后续提示词说明的整体结构和有效性: 引言:引言是写作的开篇部分,作者…...
鸿蒙技术分享:鸿蒙元服务踩坑血泪:文件下载、选择、打开
鸿蒙元服务踩坑:文件下载、选择、打开 因为项目有开发元服务的需求,因此需要将原本给应用开发封装的文件操作相关代码拿到元服务里用。本以为也没很复杂的功能,直接用应该问题不大,结果还是踩了坑…… 原本给应用使用的代码请查…...
12月通信基础知识补充2
看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充6】12月通信基础知识补充2 一、Walsh码1.1 Walsh码的基本特性1.2 …...
佑驾创新冲刺上市:交付进度延后,研发投入缩减,刘国清为实控人
近日,深圳佑驾创新科技股份有限公司(MINIEYE,下称“佑驾创新”)通过港交所聆讯并披露了聆讯后资料集(即招股书)。据贝多财经了解,佑驾创新获得了IPO备案通知书,拟在港交所上市。 对…...
【Linux系列】Linux 防火墙的详细学习
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
使用 Trace 实现 onnx 的导出 - 学习记录
使用 Trace 实现 onnx 的导出 一、使用 Trace 实现 onnx 的导出的流程二、代码分解2.1、定义模型2.2、分析模型操作类型2.3、构建钩子函数2.3.1、定义 hook 函数2.3.2、注册 Conv2d - hook 函数2.3.3、注册 ReLU - hook 函数2.3.4、注册 Add - hook 函数三、完整导出 onnx 代码…...
python字符串处理基础操作总结
1.去掉空格或者特殊符号 input_str.strip() #去掉所有空格 input_str.lstrip() #去掉左边空格 input_str.rstrip() #去掉右边空格 def print_hi():input_str 今天天气不错,风和日丽 out input_str.strip()print(input_str)print(out)if __name__ __main__:print…...
AI如何让PPT制作变得轻松与智能?用一键生成ppt!
谁还愿意把时间浪费在PPT的设计和内容排版上?尤其是对于那些需要频繁制作演示文稿的人来说,一份看起来专业的PPT往往会让人陷入“做与不做”的困境。但随着科技的飞速发展,传统的PPT制作方法正逐渐被更为高效的工具所取代,尤其是智…...
OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算机器人世界/手眼标定: w T b _{}^{w}\textrm{T}_b wTb 和 c T g _{}^{c}\textrm{T}_g cTg。 cv::calibrateRobotWorldHa…...
vscode通过ssh连接虚拟机进行开发
虚拟机自带的vscode很卡而且画质感觉不行,所以用这种方法解决 1.VSCODE安装扩展Tabnine(AI代码补全),Remote Development 2.虚拟机终端ifconfig查看本机ip 192.168.43.197 开启ubuntu的SSH服务 sudo apt-get install openssh-server 配置vscode的ssh …...
TCP/IP协议详解(小白)
TCP/IP协议详解 TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由…...
手机租赁系统开发全面解析与实现指南
内容概要 手机租赁系统的设计理念是为了满足用户对便捷、灵活的手机使用需求。想象一下,谁还愿意花大价钱买一部手机呢?尤其是当新款手机频繁推出时,租赁似乎成了更受欢迎的选择。这个系统旨在让用户可以随时随地选择租用不同型号的手机&…...
洛谷【排序】算法的题单 - 笔记
2024-12-09 - 第 37 篇 洛谷【排序】题单 - 笔记 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 洛谷【排序】题单合集 一、排序算法都有… 1. 简单排序算法 这些算法通常是基础的排序方法,容易理解和实现,但效率较低,适用于数据量较小的情况…...
《筑牢网络安全防线:守护数字时代的生命线》
《筑牢网络安全防线:守护数字时代的生命线》 一、网络安全的重要性二、网络安全面临的挑战三、网络安全技术四、网络安全案例分析五、如何加强网络安全防护六、结论 一、网络安全的重要性 网络安全在当今数字化时代的重要性不言而喻,它涵盖了多个关键领…...
VB.net进行CAD二次开发(二)与cad交互
开发过程遇到了一个问题:自制窗口与控件与CAD的交互。 启动类,调用非模式窗口 Imports Autodesk.AutoCAD.Runtime Public Class Class1 //CAD启动界面 <CommandMethod("US")> Public Sub UiStart() Dim myfrom As Form1 New…...
Python函数——函数的返回值定义语法
一、引言 在Python中,函数的返回值是其核心功能之一,它使得函数能够将计算结果传递给调用者,进而推动程序的逻辑和功能实现。理解和掌握函数的返回值语法,不仅能够提高代码的模块化和可读性,还能使程序更加高效和灵活…...
Python 布尔索引筛选数据
Python 布尔索引筛选数据 1. 布尔索引筛选数据1.1. 根据布尔索引对矩阵元素进行赋值1.2. 根据布尔索引对矩阵元素进行赋值1.3. 根据布尔索引对矩阵元素进行赋值 2. logits[logits < values[:, [-1]]] -1000References 1. 布尔索引筛选数据 布尔索引允许通过条件筛选矩阵中…...
mybatis缓存
一级缓存和二级缓存范围不一样 只缓存查询,缓存增删改没有意义 先在mybatis-config.xml加入 <setting name"cacheEnabled"value"true"/> 在mapper.xml中开启二缓存 <!--回收策略为先进先出,每隔60秒刷新一次,…...
Linux下的编程
实验7 Linux下的编程 一、实验目的 熟练掌握Linux下Python编程的方法、函数调用方法以及shell编程中的控制结构。 二、实验环境 硬件:PC电脑一台,网络正常。 配置:win10系统,内存大于8G ,硬盘500G及以上。 软件&a…...