【MySQL】MySQL表的增删改查(CRUD) —— 上篇
目录
MySQL表的增删改查(CRUD)
1. 新增(Create)/插入数据
1.1 单行数据 + 全列插入 insert into 表名 values(值, 值......);
1.2 单行数据 + 指定列插入
1.3 多行数据 + 指定列插入
1.4 关于时间日期(datetime) 类型的 数据插入
2. 查询(Retrieve)
2.1 全列查询(select * from 表名;)
2.2 指定列查询
2.3 查询字段(列)为表达式
2.4 指定别名查询(as 别名)
2.5 去重查询(distinct)
2.6 查询结果排序(order by)
2.7 条件查询(where 条件)
基本条件查询
and与or
范围查询(between and),(in)
模糊查询 (like)
null 的查询 (<=>,is noll)
2.8 分页查询 (limit)
3. 修改(Update)
4. 删除(Delete)
总结语句
MySQL表的增删改查(CRUD)
这个章节是mysql最核心的部分。这里涉及到的SQL都是工作中最常用到的,这些东西掌握了,覆盖日常工作80%+以上的内容了。
CRUD:
- 注释:在SQL中可以使用“ --空格+描述 ”来表示注释说明
- CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写
1. 新增(Create)/插入数据
1.1 单行数据 + 全列插入 insert into 表名 values(值, 值......);
into可以省略
- 其中括号里值的个数,类型,顺序要和表头结构匹配,
- SQL没有字符型, ' ' 和 " " 都可以表示字符串
错误的插入方式:
个数不匹配
类型不匹配
此处还有一种错误,数据库字符集没有正确配置引起的,数据库不做任何修改,默认情况下创建的数据库字符集是“拉丁文"字符集,不能表示中文。MySQL 5.7 及更早版本。
- 此时要做的事情,让数据库的字符集和你输入的文字的字符集匹配。如果你输入的文字是utf8,就得在创建数据库的时候设置成utf8。
- 删除该数据库重新创建数据库,在创建数据库的时候指定对应字符集。一般来说,咱们的终端是utf8的,但是也可能有同学是gbk
创建了数据库之后也能更改字符集,但是比较麻烦。
1.2 单行数据 + 指定列插入
- 只给某些指定的列进行插入数据,其他的列将按照默认值的方式填充。
- 例如:插入一行,指定插后两列
1.3 多行数据 + 指定列插入
- 一次插入多行数据,values后面写多个() 通过 , 隔开。
例如:插入两行,指定插后两列。
- 这里的提示,就是反馈效果。客户端给服务器发起插入请求,服务器要返回这次插入是否成功了。
- 一行受到影响就是成功插入了一行,两行受到影响就是成功插入了两行。可能插入10行,但是显示5行成功插入。
一次插入多行记录,相比于一次插入一行,分多次插入,要快不少。
mysql是一个客户端服务器结构的程序
- 分多次插入,客户端与服务器交互多次,此处的成本不仅仅是网络交互,服务器处理数据插入自身也有一系列成本(加锁等操作);一次性插入,只需客户端与服务器交互一次,所以效率会更高一些。
- 虽然一次插入多行记录体积比较大,但对效率上影响比较小;而三次网络交互,影响效率比较大。所以比较推荐使用一次插入多行记录。
1.4 关于时间日期(datetime) 类型的 数据插入
插入时间的时候,是通过固定格式的字符串来表示时间日期的。例如: '2000-06-26 8:15:26'
假设我现在想把这个时间日期设置成当前时刻,sql提供了一个特殊的函数now()
2. 查询(Retrieve)
2.1 全列查询(select * from 表名;)
![]()
把表中的所有行和所有列都查询出来。 * 表示所有的列,这种特殊含义的符号,计算机中叫做“通配符”。
这里的表是查询出来之后,服务器通过网络把这些数据返回给客户端的,并且在客户端以表格的形式,打印出来。
select * 操作,其实也是一个危险操作。当前阶段,怎么写都没事,为了方便观察。在公司中,针对数据量比较大的生产环境不能随便select *
- mysql是一个"客户端–服务器"结构的程序。通过网络进行通信。
- 客户端这里进行的操作,就都会通过请求发送给服务器。服务器查询的结果也就会通过响应返回给客户端。
如果数据库当前这个表中的数据特别多,就可能会产生问题:
- 读取硬盘。把硬盘的IO给跑满了,此时程序的其他部分想访问硬盘,就会非常慢。
- 操作网络。可能把网卡的带宽也跑满,此时其他客户端想通过网络访问服务器,也会非常慢。
- 这样的拥堵,就可能导致客户端无法顺利访问到数据库。进一步的也就对整个系统造成影响(相当于数据库服务器挂了)。
- 得出结论,执行select * 操作,可能很危险,如果数据量有几亿,几十亿操作就麻烦了,瞬间吃满硬盘带宽和网络带宽,就可能导致其他程序无法使用硬盘或者使用网络。
- 当前阶段,怎么写都没事,为了方便观察。在公司中,针对数据量比较大的生产环境(也叫线上环境)不能随便select *
2.2 指定列查询
按需进行查询
- 指定列的顺序不需要按定义表的顺序来。
- 注意这里类型没括号
2.3 查询字段(列)为表达式
- 查询过程中,可以做一些简单的 加减乘除 之类的运算。
- 会把当前表的每一行对应列进行计算,是进行列和列之间的运算
- null参与各种运算,结果还是null
可以在查询的时候,针对分数进行变换。比如让查询的 math 成绩都在原来基础上+10分
上述这样的查询,数据库服务器硬盘的数据,是否发生了改变?并没有改变。再次查询math,此时的结果是+10之前的数据。
- msyql是一个“客户端-服务器”结构的程序!!!
- 用户在客户端输入的sql,通过请求发送给服务器,服务器解析并执行sql把查询的结果,从硬盘读取出来通过网络响应返回给客户端,客户端把这些数据以临时表的形式展示出来。只是在客户端这里显示一下的临时表。(显示一下就销毁了)和服务器那边的硬盘上的表没啥关系。
- 上上图中为什么会出现108.0这样的数字,出现在临时表里和原始的表没啥关系。decimal(3,1)这个类型是原始的表的类型不能约束临时表。
- 那临时表的类型是什么:就是一个单纯的 double / decimal不是一个带有有效数字的版本了。
查询计算每个同学的总成绩
- 表达式查询,是让列和列之间进行运算,而不是行和行之间,(后面还会学习一个聚合查询,是行和行之间运算)
- 按照表达式查询,临时表的列名和表达式一样的,很多时候表达式的含义是不直观的。如求平方差等,很复杂的计算。所以就引出了:查询的时候给列/表达式指定别名(给表也能指定别名)
2.4 指定别名查询(as 别名)
- 查询的时候指定别名,指定别名相当于是起了个"小名"/外号,更方便的来理解含义。
- as 别名,可以是针对表达式,列,表名
- as 关键字,as可以省略,但是不建议。math + chinese + english total
- 一个不留神,total当成了要+的一个列 或者 当成前面有个,total是一个单独的列。
- 查询结果的临时表中,列名就是刚才的别名。
2.5 去重查询(distinct)
- 使用 distinct 关键字对 某列/多个列/表达式 数据进行去重,把重复的行只保留一个。
- distinct 指定多个列的时候,要求这些列的值都相同,才视为重复。
2.6 查询结果排序(order by)
- order by 子句,按照 某些列/表达式/别名 进行排序。以行为单位。
- asc升序,desc降序,descend的缩写 不是describe。如果省略默认升序排序。
- mysql是一个客户端服务器结构的程序,
- 把请求发给服务器之后,服务器进行查询数据,并且把查询到的结果进行排序之后,再组织成响应数据返回给客户端。
- 排序仍然是针对临时数据来展开的,此处的排序,不影响原有数据在mysql服务器上存储的顺序。
- 如果一个sql 不加 order by 此时查询的结果数据的顺序是 不确定的/无序的/未定义的/不可预期的,永远不要依赖这个顺序 —— 乱纪元。在代码中不能依赖上述的顺序来展开一些代码逻辑。
- order by 指定的列,如果 select 的时候没有把这一列显示出来,也不影响排序。
- order by 还可以针对表达式以及别名进行排序。
- null数据排序,视为比任何值都小。升序出现在最上面,降序出现在最下面。null参与各种运算,结果还是null
- 可以对多个字段进行排序,order by后面写多个列,使用 , 来分割开。排序优先级(主次关系)随书写顺序。
例如,查询同学各门成绩,先按照数学成绩降序,如果数学成绩相同,再按照语文降序的方式显示。
2.7 条件查询(where 条件)
- 指定具体的条件,按照条件针对数据进行筛选。
- 遍历这个表的每一行记录,把每一行的数据分别带入到条件中,如果条件成立,这个记录就会被放入结果集合中。如果条件不成立,这个记录就pass
- sql通过一系列的运算符来表示条件。
比较运算符:
运算符 | 说明 |
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
!= , <> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)。左右都是闭区间。 |
IN (option, ...) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符 |
逻辑运算符:
运算符 | 说明 |
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
- = 在 sql 表数据条件查询中 是比较相等,在sql 表数据修改中 又表示赋值。sql 中没有 ==。
- and 相当于 &&, or相当于||, not相当于 !
- 通过where子句,搭配上条件表达式,就可以完成条件查询。
- where条件可以使用表达式,但不能使用别名。
- and的优先级高于or,在同时使用时,需要使用小括号()包裹优先执行的部分。
基本条件查询
查询英语不及格的同学及英语成绩 ( < 60 )
- where子句搭配上条件查询,其实相当于,针对数据库的表进行遍历,取出每一行数据,把数据代入到条件中看条件是否符合,如果是真,这个记录就保留作为结果集的一部分,如果是假,这个记录就pass,继续下一条。
- 这里如果数据量过大,服务器是不是要崩了。
- 数据量大了,硬盘读写开销,,是避免不了的。但是由于有条件限制,还有很多数据都没有作为结果集。最终给客户端返回的数据量是更可控的。(具体是否可控,也取决于条件是咋写的,至少比select * 好不少)
查询语文成绩好于英语成绩的同学,拿两个列进行比较
查询总分在 200 分以下的同学,使用表达式来作为条件
这里null要注意了,null参与各种运算,结果都是null。 null < 200 结果是null,所以条件不成立 false。
条件为表达式以及别名,会出现问题:
此处total别名不能作为where条件,和当前sql的执行顺序有关,这也是mysql对于语法规定的一部分。执行where的时候,total还处于"未定义"的状态。
写下一个sql不是从前往后的执行,执行顺序是有特定的规则的。
在上述代码中,select条件查询执行的顺序:
- 遍历表中的每个记录。
- 把这一行当前记录的值,带入到 where 的条件中,根据条件进行筛选。
- 如果这个记录条件成立,就要保留,进行列上的表达式计算。
- 如果有 order by 会在所有的行都被获取到之后(表达式也算完了),再针对所有的结果进行排序。
实现sql解析引擎的时候,其实是完全可以做到把这里的别名预先的定义好,然后再执行123,保证执行到where 的时候也能访问到别名。但是mysql 当前没有这样实现,可能是历史遗留问题吧。
and与or
查询语文成绩大于80分,且英语成绩大于80分的同学
查询语文成绩大于80分,或英语成绩大于80分的同学
观察 AND 和 OR 的优先级:sql中 and 的运算符优先级更高。
范围查询(between and),(in)
- between...and... 约定的是一个 左闭右闭 区间 (包含两侧边界)
- 大部分区间是采用左闭右开的。例如:String类的有些方法,就是按照区间来指定的 substring 等方法。List类的有些方法也是按照区间subList 等方法
查询语文成绩在 [80, 90] 分的同学及语文成绩:
使用and也能实现,这两种写法本质一样,没啥区别。
in 使用in来表示一个"离散"的集合
查询数学成绩是 78 或者 98 或者 84 或者 85 分的同学及数学成绩
使用or也能实现,这两种写法本质一样,没啥区别。
模糊查询 (like)
- like 模糊匹配(模糊匹配字符串),不要求字符串完全相同,只要满足一定的规则就可以了。搭配通配符使用,通配符就是一些特殊的字符,能够表示特定的含义。
- 通配符,类似于扑克中"会儿”或者叫做"赖子"的特殊牌,可以用来代替任意的点数和花色。
- 正则表达式(也是模糊匹配),通过特殊符号来描述一个字符串的特征用这个来匹配字符串。
like功能比 正则表达式简单很多,只支持两个用法:
- 使用 % 代表任意N个字符(包含0个字符)
- 使用 _ 代表任意1个字符
- like '孙%’ 查询孙开头的
- like '%孙’ 查询孙结尾的
- like '%孙%' 查询包含孙的
- 此处模糊查询的功能是有限的,在计算机中,进行模糊匹配字符串还有“正则表达式" 这样的方式来进行实现。
- 这里mysql中不用正则表达式模糊匹配,而是用like模糊匹配,是因为正则表达式,匹配的效率是很慢的,mysql本身也不快,慢上加慢。
null 的查询 (<=>,is noll)
- null和其他数值进行运算,结果还是null,null结果在条件中,相当于false
- null = null => 结果还是 null => false 所以没有查询结果。
- sql不区分大小写的,NULL/null表示表格里的这一项是空着的。
- <=> 使用这个比较相等运算,就可以处理null的比较。可以针对两个列比较的。
- 还有一种方法 is null ,意思为:是null。只能看到一个列
2.8 分页查询 (limit)
使用select *这种方式查询,是比较危险的,需要保证一次查询,不要查出来的东西太多。
有的时候数据非常多,一次全都显示出来,会影响到效率,也会不方便用户去看。
limit 可以限制查询最多能查出来多少个结果。
- limit 可以分别搭配 where 和 order by 使用,
- where 或者 order by 是在 limit子句 前面书写的,一般limit子句是在整个sql语句最后书写的。
- limit还可以搭配 offset,声明从哪一条开始查询(从0开始计数)
- 解读,limit 3 offset 6; 从第6条记录开始,查询3条记录。
- limit 和 offset 是用下标计算的。offset意为偏移量,从0开始
- limit 限制的是最多是多少数据,小于或等于limit不受影响。
limit 3 offset 6; 等价于 limit 6,3;(不太推荐这么写),容易混淆。
- 只查询操作,查询到的结果都是临时表/临时数据,对这些临时表/临时数据进行修改,并不会影响在mysql服务器硬盘上存储的原始数据。例如:列的表达式计算,去重查询,查询结果排序。
- 只要是查询,都不会影响原始数据。
3. 修改(Update)
- where 条件,是限制这次操作具体要修改哪些行的数据。
- 这里的 = 又相当于赋值了,注意跟 where 条件 中的 = (表示比较相等) 区别。
将孙悟空同学的数学成绩变更为 80 分
将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
总成绩:表达式。 倒数:排序 order by。 前三:limit
- 这里必须写作math = math + 30 不能写作 math += 30 sql中没有 这个种语句。
- 这里‘唐三藏’的数学成绩加30变成128.0,超出了表中该字段类型设置的范围decimal(3,1),失败报错,此时修改不会生效。
将所有同学的语文成绩更新为原来的 2 倍。update后面不写任何条件,就是针对所有行进行修改。
同样也是超出了表中该字段类型设置的范围。
改为将所有同学的语文成绩更新为原来的 0.5 倍。
- 如上如所示:matched:8 所有行数就是8,找到了 8行数据匹配;Changed显示只改变了7行;Warnings警告 2行,意为代码有问题,但是问题不大,还能接受。
- show warnings 查看警告原因:发现发生截断了,小数点后位数不够了,只能发生截断。是发生在第二行和第五行 的 chinese 列,查看修改前的情况,
- 这一列字段的类型的范围是decimal(3,1), 3位有效数字,小数点后保留1位。超出了这个范围,按照四舍五入的方式把数据截断了。
- 只修改了7行原因是:第8行的‘唐三藏’的语文成绩是null,null参与各种运算,结果还是null。相当于没有修改。
修改如果修改后超出范围,会失败报错;如果修改后小数点位过长了,它会截断,会有警告信息。
update操作非常危险
- 撤回不了。
- 测试只能测试个大概,有可能你的bug是一个小概率触发的情况。
4. 删除(Delete)
delete 删除记录,把符合条件的行,从表中删除掉。
删除孙悟空同学考试成绩
这里就是把条件匹配出来的结果,都删掉了
删除整张表数据。不指定任何条件,就是删除整个表。
- drop table是删除了表,也删除了表里的记录。
- delete from 只删除了表中的记录,表还在(空表)
truncate也能清空表的内容,和delete from差不多。
delete from 是一条一条删,删的慢。truncate 直接一下就删没了。
删除的时候可以取消,但没有撤销操作。如果执行的sql时间很长,随时可以按ctrl +c取消。
delete和update都是很危险的操作。delete 一旦删除的条件没设置好,就可能把不该删除的给删掉了。
这里的 修改/删除 是持久生效的,都会影响到数据库服务器硬盘中的数据。
总结语句
对表中数据进行操作
新增
- insert into 表名 values (值, 值....); 插入
查询:
- select * from 表名; 查询
- distinct 去重查询
- order by 子句; 查询结果排序
- where 条件查询
- and与or 和与或
- between and 范围条件 in ‘离散’ 集合
- like 模糊匹配
- limit 分页查询
修改
- update 表名 set 列名 = 值, 列名 = 值..... where 条件;
删除
- delete from 表名 where 条件; 删除
好啦Y(^o^)Y,本节内容到此就结束了。下一篇内容一定会火速更新!!!
后续还会持续更新MySQL方面的内容,还请大家多多关注本博主,第一时间获取新鲜的知识。
如果觉得文章不错,别忘了一键三连哟!
相关文章:
【MySQL】MySQL表的增删改查(CRUD) —— 上篇
目录 MySQL表的增删改查(CRUD) 1. 新增(Create)/插入数据 1.1 单行数据 全列插入 insert into 表名 values(值, 值......); 1.2 单行数据 指定列插入 1.3 多行数据 指定列插入 1.4 关于时间日期(datetime&am…...
基于大模型的腹股沟疝诊疗全流程风险预测与方案制定研究报告
目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与创新点 二、大模型技术概述 2.1 大模型基本原理 2.2 常用大模型类型及特点 2.3 大模型在医疗领域的应用潜力 三、腹股沟疝诊疗流程分析 3.1 腹股沟疝的发病机制与分类 3.2 传统术前评估方法与局…...
使用nssm将Nginx配置为Windows服务
使用nssm将Nginx配置为Windows服务 下载nssm工具 :使用NSSM创建服务启动并验证服务管理服务(启动/停止/重启) 下载nssm工具 : nssm下载网址 下载到指定路径下,解压就行。 使用NSSM创建服务 winr打开运行命令框&am…...
(8)VTK C++开发示例 --- 交互式3D部件
文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 这个例子介绍了3D小部件(vtkBoxWidget)。3D小部件利用了前面介绍的事件/观察者设计模式。它们…...
ReAct、CoT 和 ToT:大模型提示词推理架构的对比分析
ReAct、CoT 和 ToT:大模型提示词推理架构的对比分析 在大型语言模型(LLM)的研究与应用中,如何有效提升模型在复杂任务上的推理能力是关键问题之一。目前,ReAct(Reasoning and Acting)、CoT&…...
Evidential Deep Learning和证据理论教材的区别(主要是概念)
最近终于彻底搞懂了Evidential Deep Learning,之前有很多看不是特别明白的地方,原来是和证据理论教材(是的,不只是国内老师写的,和国外的老师写的教材出入也比较大)的说法有很多不一样,所以特地…...
golang context源码
解析 context结构 Deadline:返回 context 的过期时间; Done:返回 context 中的 channel; Err:返回错误; Value:返回 context 中的对应 key 的值. type Context interface {Deadline() (deadl…...
VSCODE插值表达式失效问题
GET https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.js net::ERR_CONNECTION_-CSDN博客 更换正确的vue域名 GET https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.js net::ERR_CONNECTION_ <script src"https://unpkg.com/vue2.6.14/dist/vue.js"></sc…...
6.VTK 颜色
文章目录 概念RGB示例HSV示例 概念 RGB颜色系统:通过红(R)、绿(G)、蓝(B)三个颜色分量的组合来定义颜色。每个分量的取值范围是0到1,其中(0, 0, 0)代表黑色,而(1, 1, 1)代表白色。可以使用vtkProperty::SetColor(r, g, b)方法为Actor设置颜色…...
MQTTClient.c的线程模型与异步事件驱动
MQTTClient.c的线程模型与异步事件驱动 1. 多线程架构设计 MQTTClient.c通过分离网络I/O和用户逻辑线程实现异步通信,核心设计如下: sequenceDiagramparticipant 主线程 as 主线程(用户调用)participant 发送队列 as 发送队列pa…...
Flutter异常Couldn‘t find dynamic library in default locations
Flutter项目在Windows系统使用ffigen生成代码时报下面的错误: [SEVERE] : Couldnt find dynamic library in default locations. [SEVERE] : Please supply one or more path/to/llvm in ffigens config under the key llvm-path. Unhandled exception: Exception: …...
在PyCharm中部署AI模型的完整指南
引言 随着人工智能技术的快速发展,越来越多的开发者开始将AI模型集成到他们的应用程序中。PyCharm作为一款强大的Python IDE,为AI开发提供了出色的支持。本文将详细介绍如何在PyCharm中部署AI模型,从环境配置到最终部署的完整流程。 第一部分:准备工作 1. 安装PyCharm …...
6.6.图的广度优先遍历(英文缩写BFS)
树是一种特殊的图,树的广度优先遍历即层次遍历,所以会从树的角度入手图的广度优先遍历: BFS与DFS的区别在于,BFS使用了队列,DFS使用了栈 一.广度优先遍历: 1.树的广度优先遍历: 详情见"…...
练习(杨辉三角、字符串旋转)
一、 以下程序执行的结果: int main() {//0~255unsigned char a 200;//00000000000000000000000011001000//11001000 - a 截断unsigned char b 100;//00000000000000000000000001100100//01100100 - b unsigned char c 0;c a b;//11001000 - a//0110010…...
L1-7 矩阵列平移
题目 给定一个 nn 的整数矩阵。对任一给定的正整数 k<n,我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置,平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。 输入格式: 输入第一行给出…...
webgl入门实例-11模型矩阵 (Model Matrix)基本概念
WebGL 模型矩阵 (Model Matrix) 在WebGL和3D图形编程中,模型矩阵(Model Matrix)是将物体从局部坐标系(模型空间)转换到世界坐标系的关键变换矩阵。 什么是模型矩阵? 模型矩阵是一个4x4的矩阵,用于表示物体在世界空间中的位置、旋转和缩放。…...
【漫话机器学习系列】209.均值的标准误差(Standard Error of the Mean)
均值的标准误差(Standard Error of the Mean)详解 在统计学中,我们经常会遇到“均值的标准误差”这个概念,英文称为 Standard Error of the Mean(简称 SEM)。它是对样本均值作为总体均值估计的可靠程度的一…...
Multi Agents Collaboration OS:文档合规性及质量检测助手设计及实践
文档审查及质量检测背景 随着企业运营和知识管理的日益复杂,文档的合规性与质量成为确保信息准确、流程顺畅及风险控制的关键环节。传统上,人工进行文档的合规性和质量检测不仅耗时耗力,且易受主观因素影响,难以保证检测的全面性…...
Vue Teleport 及其在 SSR 中的潜在问题
Vue 3 的 Teleport 特性为开发者提供了更灵活的 DOM 结构控制能力,但在服务端渲染(SSR)场景中,它可能引发一些需要注意的问题。本文将深入探讨 Teleport 的核心机制及其在 SSR 中的使用陷阱。 一、Teleport 核心机制解析 1. 基本…...
Fastapi 日志处理
uvicorn 日志处理总结: 一、日志的结构 日志结构如下: {"version": 1,"disable_existing_loggers": false,"formatters": {},"handlers": {},"loggers": {} }loggers 用于定义日志处理最顶层的标识…...
FME实现矢量建筑面shp拉伸并贴纹理
文章目录 效果2、数据准备3、整理流程图4、操作步骤4.1 打开软件4.2 添加shp数据4.3 添加Extruder转换器4.4 添加AppearanceSetter转换器4.5 添加png纹理数据4.6 添加输出节点4.7 添加Logger节点4.8 执行5、执行结果效果 2、数据准备 (1)建筑面shp (2)纹理 test.png 其中s…...
仿腾讯会议项目实现——设置配置文件
目录 1、初始化配置 2、实现初始化配置的函数 3、修改配置文件内的ip地址 1、初始化配置 Ckernel.h 2、实现初始化配置的函数 3、修改配置文件内的ip地址 首先修改IP 运行出现设置的IP, 找到运行的配置文件,修改成自己当前的ip 将函数运行条件改成非…...
1187. 【动态规划】竞赛总分
题目描述 学生在我们USACO的竞赛中的得分越多我们越高兴。我们试着设计我们的竞赛以便人们能尽可能的多得分。 现在要进行一次竞赛,总时间T固定,有若干类型可选择的题目,每种类型题目可选入的数量不限,每种类型题目有一个si(解答…...
从零开始学Python游戏编程31-类3
2.6 run()方法 run()方法的作用是在while循环中调用以上方法,运行游戏。代码如图11所示。 图11 run()方法代码 其中,第43行控制while循环的是实例属性running,在图7所示的__init__()方法中定义;第44-46行代码分别调用了processI…...
Transformer 架构 - 解码器 (Transformer Architecture - Decoder)
一、解码器整体结构:多层堆叠设计 Transformer解码器由N个相同结构的解码器层堆叠而成(通常N=6),每层包含三个核心子模块(图1) 1 5 12 : 带掩码的多头自注意力层(Masked Multi-Head Self-Attention)编码器-解码器注意力层(Encoder-Deco…...
解锁健康生活:养生新主张
在生活节奏日益加快的当下,健康养生不再是中老年人的专属话题,越来越多的人开始意识到,它是维持生命活力、抵御疾病的重要保障。 中医养生讲究 “药食同源”,在饮食上,我们可以根据季节变化调整食谱。春天气候多变&…...
__call__ 方法
__call__ 是 Python 中的一个魔法方法,也称为类方法。 它的作用是将类的实例变成可调用对象,类似于像函数一样被调用。 __call__ 使用举例 class MyClass:def __call__(self, x, y):return x yobj MyClass() print(obj(1, 2)) 对比其他类/对象的使用…...
济南通过首个备案生活服务大模型,打造行业新标杆
近日,一则振奋人心的消息在人工智能领域传开:济南本土企业丽阳神州智能科技有限公司自主研发的 “丽阳雨露” 大模型成功通过国家网信办的备案。这一成果不仅是济南企业在科技创新道路上的重大突破,更标志着我国在生活服务领域的人工智能应用…...
UE5有些场景的导航生成失败解决方法
如果导航丢失,就在项目设置下将: 即可解决问题: 看了半个小时的导航生成代码发现,NavDataSet这个数组为空,导致异步构建导航失败。 解决 NavDataSet 空 无法生成如下: 当 NavDataSet 为空的化 如果 bAut…...
STM32使用rand()生成随机数并显示波形
一、随机数生成 1、加入头文件:#include "stdlib.h" 2、定义一个用作生成随机数种子的变量并加入到滴答定时器中不断自增:uint32_t run_times 0; 3、设置种子:srand(run_times);//每次生成随机数前调用一次为佳 4、生成一个随…...
继承的了解与学习
目录 1. 继承的概念及定义 1.1 继承的概念 1.2继承的名称 1.3继承方式 1.4继承类模板 2.基类和派生类之间的转化 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6.继承与静态函数 7.多继承与其菱形继承问题 8.虚继承 9.继承和组合 1. 继承的概念及定义 …...
如何精通C++编程?
如果从学生时代算起的话,我学习和使用C已经差不多快十年了,仍然不敢说自己已经掌握了C的全部特性,但或许能够给出一些有用的建议吧。 我学习C全靠自学,花费了不少的功夫,在这里分享一些学习心得,希望对大家…...
【科研绘图系列】R语言绘制多个气泡图组合图(bubble plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图函数画图系统信息介绍 【科研绘图系列】R语言绘制多个气泡图组合图(bubble plot) 加载R包 library(dplyr) library(tidyr) library(ggp…...
利用大模型实现地理领域文档中英文自动化翻译
一、 背景描述 在跨国性企业日常经营过程中,经常会遇到专业性较强的文档翻译的需求,例如法律文书、商务合同、技术文档等;以往遇到此类场景,企业内部往往需要指派专人投入数小时甚至数天来整理和翻译,效率低下&#x…...
Oracle 19c部署之手工建库(四)
#Oracle #19c #手工建库 手工创建Oracle数据库(也称为手工建库)是指在已经安装了Oracle数据库软件的基础上,通过手动执行一系列命令和步骤来创建一个新的数据库实例。这种方法与使用Database Configuration Assistant (DBCA)等工具自动创建数…...
Leetcode 2158. 每天绘制新区域的数量【Plus题】
1.题目基本信息 1.1.题目描述 有一幅细长的画,可以用数轴来表示。 给你一个长度为 n 、下标从 0 开始的二维整数数组 paint ,其中 paint[i] [starti, endi] 表示在第 i 天你需要绘制 starti 和 endi 之间的区域。 多次绘制同一区域会导致不均匀&…...
使用最新threejs复刻经典贪吃蛇游戏的3D版,附完整源码
基类Entity 建立基类Entity,实现投影能力、动画入场效果(从小变大的弹性动画)、计算自己在地图格位置的方法。 // 导入gsap动画库(用于创建补间动画) import gsap from gsap// 定义Entity基类 export default class …...
Google优化搜索体验:全新动态摘要功能(Beta)为欧洲用户带来更丰富的结果
Google持续推动搜索体验的创新,最新推出的动态摘要(Dynamic Snippets)功能(Beta版)为欧洲经济区(EEA)的用户和企业带来了全新的交互方式。2025年4月,Google更新了动态摘要的文档&…...
[苍穹外卖 | 项目日记] 第三天
前言 实现了新增菜品接口实现了菜品分页查询接口实现了删除菜品接口实现了根据id查询菜品接口实现了修改菜品接口 今日收获: 今日的这几个接口其实和之前写的对员工的操作是一样的,都是一整套Curd操作,所以今天在技术层面上并没有…...
【Python爬虫基础篇】--2.模块解析
目录 1.urllib库 1.1.request模块 1.1.1、urllib.request.urlopen() 函数 1.1.2.urllib.request.urlretrieve() 函数 1.2. error模块 1.3. parse 模块 2. BeautifulSoup4库 2.1.对象种类 2.2.对象属性 2.2.1.子节点 2.2.2.父节点 2.2.3.兄弟节点 2.2.4.回退和前进 …...
LabVIEW技巧——获取文件版本信息
获取可执行文件(exe)版本信息的几种方法 方法1. LabVIEW自带函数 labview自带了获取文件版本号的VI,但是没有开放到程序框图的函数选板中,在该目录下可以找到:...\LabVIEW 20xx\vi.lib\Platform\fileVersionInfo.llb…...
【软件工程】用飞书画各种图(流程图,架构图···)
笔者在做服务外包大赛的时候被文档内容的编写反复折磨,网上的工程图绘画工具要么是展示效果不佳,要么要收大几百的VIP费,最后发现飞书竟然可以直接绘画并插入示意图。 一、为什么选择飞书文档画流程图? 完全免费,无广…...
RFID图书管理系统如何重构数字化仓储管理新生态
引言 在图书馆与出版行业数字化转型进程中,RFID图书管理系统正打破传统人工管理的效率瓶颈,通过与数字化仓储管理系统的深度融合,实现从图书采购、入库到借阅的全链路智能化。本文结合RFID固定资产管理软件的应用逻辑,解析这一技…...
如何校验一个字符串是否是可以正确序列化的JSON字符串呢?
方法1:先给一个比较暴力的方法 try {JSONObject o new JSONObject(yourString); } catch (JSONException e) {LOGGER.error("No valid json"); } 方法2: Object json new cn.hutool.json.JSONTokener("[{\"name\":\"t…...
操作系统-PV
🧠 背景:为什么会有 PV? 类比:内存(生产者) 和 CPU(消费者) 内存 / IO / 磁盘 / 网络下载 → 不断“生产数据” 例如:读取文件、下载视频、从数据库加载信息 CPU → 负…...
工厂方法模式详解及c++代码实现(以自动驾驶感知模块中的应用为例)
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,通过定义抽象工厂接口将对象创建过程延迟到子类实现,实现对象创建与使用的解耦。该模式特别适合需要动态扩展产品类型的场景。 自动驾驶感知场景分析 自动驾…...
Jsp技术入门指南【五】详细讲解jsp结构页面
Jsp技术入门指南【五】详细讲解jsp结构页面 前言一、JSP页面的结构二、JSP页面的部件1. 指令(核心控制部件)2. 动作(页面交互部件,了解即可)3. 脚本(Java逻辑嵌入部件) 三、JSP指令详解1.1 JSP指…...
游戏APP如何抵御DDoS攻击与黑客勒索?实战防护全攻略
一、游戏行业安全挑战与攻击危害 游戏APP因高实时性、高并发及虚拟资产交易特性,成为DDoS攻击和勒索的重灾区,典型威胁包括: DDoS攻击瘫痪服务: UDP Flood:针对游戏服务器端口(如UDP 7777)发起…...
Mac 选择下载安装工具 x86 还是 arm64 ?
要确定你的 Mac 电脑应该选择下载安装工具的 x86 还是 arm64 版本,关键是判断你的 Mac 使用的是 Intel 处理器(x86 架构)还是 Apple Silicon(如 M1、M2 等,arm64 架构)。具体方法如下: 方法 1&…...
string函数的应用
字符串查找 find 方法 实例 string s "Hello World,C is awesome!";//查找子串 size_t pos1 s.find("World"); //pos16 size_t pos2 s.find("Python"); //pos2string::npos//查找字符 size_tpos3s.find(c); //pos313//从指定位置开始查找 size…...