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

【数据库系统概论】第三章关系数据库标准语言SQL

选择题会考:

1.数据查询:

SELECT:用于选择需要查询的列和行。

FROM:用于指定要查询的表。

WHERE:用于指定查询条件。

GROUP BY:用于按照指定的列对结果进行分组。

HAVING:用于指定分组条件。

ORDER BY:用于指定查询结果的排序方式。

2.数据操纵:

INSERT INTO:用于将数据插入表中。

UPDATE:用于更新表中的数据。

DELETE FROM:用于删除表中的数据。

3.数据定义:

CREATE TABLE:用于创建新表。

ALTER TABLE:用于修改现有表的结构。

DROP TABLE:用于删除表。

4.数据控制:

GRANT:用于向用户或用户组授予特定的数据库权限。

REVOKE:用于撤销已授予的数据库权限。

3.1SQL概述

SQL语句特点:

3.3数据定义

建立三个表

1. 建立学生表Student

create table Student
(
Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);

2. 建立一个课程表Course

create table Course
(
Cno char(4) primary key,
Cname char(40) not null,
Cpno char(4),
Ccredit smallint,
foreign key (Cpno) references Course (Cno)
);

3. 创建一个SC表

create table SC
(
Sno char(9),
Cno char(9),
Grade smallint,
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key (Cno) references Course(Cno)
);

3.4数据查询

一般格式:select [all或distinct]<目标列表达式>[,<目标列表达式>]...

from<表名字或视图名>[,<表名或视图名...>]或(<select 语句>)[as]<别名>

[where<条件表达式>]

[group by<列名1>[having <条件表达式>]]

[order by<列名2>[asc或desc]];

例一:查询全体学生的学号与姓名

select Sno,Sname
from student;

例二:查询全体学生的详细记录

select *
from student;

例三:查询全体学生的姓名、出生年份、所在院系(小写)

select Sname,2023-Sage as Birthyear,
lower(Sdept)as Department 
from student;
/*注意列名的丢失*/

例四:查询考试成绩合格学生的成绩

select distinct Sno/*毕竟在SC表中 学号是重复出现的元素*/
from SC
where Grade>60;

例五:查询年龄在20~23岁之间学生的姓名,系名,年龄

select Sname,Sdept,Sage
from student
where Sage between 20 and 30;

例六:查询CS MA IS的学生姓名和学号

select Sname,Sage
from student 
where Sdept in('CS','MA','IS');
/*in 查找属性值属于指定集合的元组*/

例七:查询第二个名字为立的同学

select Sno
from Student
where Sname like '_立%';/*一个汉字这里是俩个斜杠*/
/*但是在sql server中一个汉字代表的是一个斜杠*/

例八:查询DB_Design课程的课程号和学分

select Cno,Ccredit
from Course
where Cname like 'DB\_Design' escape '\';
/*由于_是占位符 但是在这里_是具体符号,所以得用escape关键字*/

Order by子句

例九:查询全体学生情况,系号升序年龄降序

以上为错误示范

select *
from Student
order by Sdept , Sage desc;/*默认升序*/

聚集函数

例十:查询选修了课程的学生人数

select count(distinct Sno)
from sc;

例十一:查询选修1号课程的学生平均成绩

select avg(Grade)
from SC;
where Cno='1';

例十二:查询学生202102810224选修课程的总学分数

select sum(Ccreidt)
from SC,Course
where Sno='202102810224' and SC.Cno=Course.Cno;/*必须连接俩表 否则关系无法建立起来*/

group by 子句

往往表头元素和数字有关系的时候 就会用group by语句 比如:查询每个学生的选课门数,选修三门以上学生的名字等等

目的:细化聚集函数的作用对象,分组后,聚集函数将作用于每一个组,每一个组都有一个函数值

将表头元素和聚集函数值生成表建立联系

不可以用where 只可以用having

group by 后面加聚集函数之前的所有列表属性

having后面只可以加聚集函数

例一:查询各个课程号及相应的选课人数

select Cno,count(Sno)
from SC
group by Cno;

例二:查询每个学生的选课门数

select Sno,count(Cno)
from SC
group by Sno;

例三:查询选修三门以上课程的学生学号

select Sno
from SC
group by Sno
having count(Cno)>3;

例四:查询选修课程中至多一门>70分的学生学号

SC的Sno投影-Sno的投影(选择Grade>70(SC)) 所有成绩都<=70的

并(union)上

有且仅有一门是70分的(和数量有关 得用到group by)

where后面不可以加聚集函数

/*所有成绩<=70的*/
select Sno 
from SC 
where Sno not in(select Sno from SC where Grade >70)
union 
/*有且仅有一门是70分的*/
select Sno
from SC
where Grade>70
group by Sno
having  count(Cno)=1 
/*对于课本的表 这个代码是没有数据的*/

为什么这段代码没有数据??

分组之后 Cno已经没有=1的了

例五:查询平均成绩>=90分的学生学号和平均成绩

select Sno,avg(Grade)
from SC
group by Sno
having avg(Grade)>=90;

连接查询

例一:查询每个学生及其选修课程的情况

select Student.*,SC.*
from Student,SC
where SC.Sno=Student.Sno;

例二:查询选修二号课程且成绩在90分以上的所有学生的学号和姓名

select Student.Sno,Sname
from Student,SC
where SC.Sno=Student.Sno and SC.Cno='2' and SC.Grade>90;

例三:查询每一门课的间接先修课

select C1.Cno,C2.Cpno
from Course as C1 ,Course as C2
where C1.Cpno=C2.Cno;

例四:查询每个学生的学号,姓名,选修的课程,成绩

select Sno,Sname,Cno,Grade
from SC,Course,Student
where Student.Sno=SC.Sno and SC.Cno=Course.Cno /*虽然是三表连接 但是用一个and就可以解决问题*/

例五:

注意,SC连接的时候用的是Sno,不是Cno

嵌套查询

在 SQL 语言中, 一个select-from-where 语句称为一个查询块,将一个查询块嵌套在另一个和查询块的 where 子句或者 having 短语的条件中的查询称为 嵌套查询

  1. 无关子查询,先写子查询再写父查询
  2. 能用in的绝对不要用=
  3. 子查询前面一定是属性+in 不要只写in

例一:查询与刘晨在同一个系的学生

select Sno,Sname,Sdept
from Student 
where Sdept in(select Sdept from Student where Sname='刘晨');

例二:查询既选修1号又选修2号课程的学生

select Sno
from Student
where Cno='1' and Sno in
(select Sno from Student where Cno='2');

例三:查询选修了课程名为'信息系统'的学生姓名和学号

select distinct Student.Sno,Sname
from SC,Student,Course
where SC.Sno=Student.Sno and Course.Cno=SC.Cno and Course.Cname='信息系统';

例四:查询成绩都大于70分学生的成绩

/*查询所选课程成绩全部大于70分的学生的学号*/
select distinct Sno
from SC 
where Grade not in(select Grade from SC where Grade<=70);

相关子查询

例五:找出每个学生超过他自己选修课程平均成绩的课程号

select Sno,Cno
from SC as X
where Grade>=(select avg(grade) from SC Y where Y.Sno=X.Sno);

// 1. 从外层查询中取出 SC 的一个元组 x, 将元组 x 的 Sno 值(201215121) 传送给内层查询

select avg(Grade)

form SC y

where y.Sno='201215121'

// 2. 执行内层查询,得到值 88(平均成绩的近似值), 用该值代替内层查询, 得到外层查询

select Sno,Cno

from SC x

where Grade>=88

// 3. 执行这个查询,得到

select Sno,Cno

from SC x

where Grade>=88;

然后从外层查询取出下一个元组重复上述 1 ~ 3 步骤的处理, 知道外层的 SC 元组全部处理完毕,结果为

// 学号 和 课程号

(201215121,1)

(201215121,3)

(201215122,2)

带有ANY和ALL谓词的子查询

例一:查询非计算机科学系某一个学生年龄小的学生姓名和年龄

select Sname,Sage
from student
where Sage<any(select Sage from Student where Sdept='CS')
and Sdept <>'CS';

例二:查询非计算机科学系中比计算机学科系所有学生年龄都小的学生姓名和年龄

select Sname,Sage
from Student
where Sage<all(select Sage from student where Sdept='CS') and Sdept <>'CS';

带有EXISTS谓词的子查询

例一:查询选修了1号课程的学生姓名

select Sname
from Student
where exists(select * from SC where SC.Sno=Student.Sno and Cno='1');

相关子查询的过程分析:

1.取外层查询中Student表的第一个元组,根据与内层查询相关的属性值处理内层查询

2.与SC.Sno判断条件,如果满足,则记录下来

3.取Student表的下一个元组,重复这一过程

例二:查询选修了全部课程的学生姓名

select Sname
from Student
where not exists(select* from Course where not exists(select* from SC where Sno=Student.Sno and Cno=Course.Cno));

理解:如果同时满足俩个条件,那么双重否定表肯定就是想要的结果

只要有一个结果不满足,那么就返回真,之后还有一个NOT EXISTS,就是假

例三:查询至少选修了20215122选秀的全部课程的学生号码

select distinct Sno
from SC X
where not exists(select * from SC Y where y.Sno='20215122' and not exists(select * from SC Z where Z.Sno=X.Sno and Z.Sno=Y.Cno));

集合查询

例一:查询计算机科学系的学生及年龄不大于19岁的学生

select *
from Student
where Sdept='CS'
union 
select *
from Student
where Sage<=19;

例二:查询选修1号课程与2号课程的学生

select Sno
from SC
where Cno='1'
intersect
select Sno
from SC
where Cno='2';

例三:查询计算机科学系的学生与年龄不大于19岁的学生的差集

select *
from Student
where Sdept='CS'
except--除去的意思
select *
from Student
where Sage<=19;

基于派生表的查询

意义:可以将一些相关子查询改写为便于理解的非相关子查询

前情背景: 我们的子查询语句一般都是在where语句中,当然也可以出现在from语句中,这时候可以利用子查询生成的临时派生表成为主查询的查询对象

例一:找出每个学生超过自己选修课程平均成绩的

select Sno,Cno
from SC x
where Grade>=(select avg(Grade) from SC y where y.Sno=x.Sno);

改写:

select Sno,Cno
from SC,(select Sno,avg(Grade) from SC group by Sno) as avgsc(avgsno,avggrade);
where SC.Sno=avgsc.avgsno and SC.Cno>avgsc.avggrade;

注:如果子查询没有聚集函数,派生类可以不指定属性列

例二:查询所有选修1号课程的学生名字

select Sname
from Student,(select Sno from SC where Cno='1') as SC1
where Student.Sno=SC1.Sno;

3.5数据更新

1.插入数据

insert

into 表名 (表头名1,表头名2...)

values (常量1,常量2)

注意:如果into中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值

插入元组

  • INTO子句中没有出现的属性列,新元组在这些列上将会取NULL
  • 若INTO子句中没有指明任何属性列名,则新插入的元祖必须在每个属性列上均有值

例一:将一个新学生元组(学号:201215128,姓名:陈冬,性别:男,所在系:年龄:18岁)插入到Student 表中

INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128 陈冬,男,IS18);
  • 注意顺序可以和表不一致(因为student后面的属性已经完全指出了)

例二:插入学生张三

INSERT
INTO student
VALUES('201215126','张成民','男',18,'CS');
  • 注意由于没有指定顺序,所以按照必须按照表中属性列的顺序插入,否则会导致插入错误

插入子查询

例三:对每一个系,求学生的平均年龄,并把结果存入数据库

CREATE TABLE dept_age(Sdept char(15),Age SMALLINT
);INSERT 
INTO dept_age(Sdept,Age)
SELECT Sdept,AVG(Sage)
FROM student
GROUP BY Sdept;

2.修改数据(update)

例四:将所有学生的年龄增加1岁

UPDATE student
set Sage=Sage+1;

例五:将CS所有学生成绩为0

UPDATE sc
SET Grade=0
WHERE Sno IN
(SELECT Sno FROM student WHERE Sdept='CS'
);

3.删除数据(delete)

  • DELETE删除的是表的数据,而不是表的定义
  • 如果省略WHERE子句,那么就表示删除全部元组

例六:删除计算机科学系所有学生选课记录

DELETE FROM sc
WHERE Sno IN(SELECT Sno FROM student WHERE Sdept='CS');

3.6触发器

插入:inserted表中有,deleted无

删除:deleted有,inserted无

CREATE TRIGGER trigger_name 
ON table_name
INSTEAD OF DELETE--前触发器
AS
BEGIN
-- 触发器内容
END

例一:当在学生表S中删除某一个学生时,在学生选课表SC中的选课记录也全部被删除。

例二:当对表sc的grade进行修改时,若分数增加了10%,则将此次操作记录到另一个表中sc_u(sno,cno,oldgrade,newgrade)

--则将此次操作记录到另一个表中sc_u(sno,cno,oldgrade,newgrade)

create trigger sb
on sc
after update 
as
beginset nocount on;if (1.1<=(select inserted.grade/deleted.gradefrom inserted,deletedwhere  inserted.sno=deleted.sno and inserted.cno=deleted.cno))begin 
insert into sc_u
select deleted.* ,inserted.grade
from inserted,deleted
where inserted.sno=deleted.sno and inserted.cno=deleted.cnoend
end

例三:创建触发器,该触发器能够保证在学生选课表SC表中添加新的记录时,学生的学号SNO必须已经存在于学生基本信息表S中

例三:如果学生成绩小于60,改为60

create TRIGGER scl_grade
on SC 
instead of INSERT
as
BEGIN
SET NOCOUNT ON;
if 60> (select grade--50 --70 from  inserted)begin
insert into SC
select Sno,Cno,60
from inserted
endif 60<= (select grade from  inserted)
begin
insert into SC
select Sno,Cno,inserted.Grade
from inserted
endEND;insert into SC  values('001','10',50);

ALTER TABLE Orders

ADD CONSTRAINT FK_CustomerOrder

FOREIGN KEY (CustomerID)

REFERENCES Customers(CustomerID)

ON DELETE CASCADE;

3.7视图(见课本121页吧 实在写不动了)

写实验报告遇到的错误点

1.插入错误

表和into的位置写反了

2.查询选修了全部课程的学生的学号和姓名

第二个表是course 写成了SC 因为要的是全部课程 所以就得从Course中选择

3.删除C1的记录

更改:

4.创建视图

相关文章:

【数据库系统概论】第三章关系数据库标准语言SQL

选择题会考&#xff1a; 1.数据查询&#xff1a; SELECT&#xff1a;用于选择需要查询的列和行。 FROM&#xff1a;用于指定要查询的表。 WHERE&#xff1a;用于指定查询条件。 GROUP BY&#xff1a;用于按照指定的列对结果进行分组。 HAVING&#xff1a;用于指定分组条件…...

云计算是什么?学习云计算能做什么工作?

很多人经常会问云计算是什么&#xff1f;云计算能干什么&#xff1f;学习云计算能做什么工作&#xff1f;其实我们有很多人并不知道云计算是什么&#xff0c;小知今天来给大家讲讲学习云计算能做什么。 中国的云计算行业目前正处于快速发展阶段&#xff0c;随着互联网和数字化…...

ES6 -- 模块化(CommonJS、AMD、ES Module)

模块模式 将代码拆分成独立的块&#xff0c;然后再将这些块连接起来可以通过模块模式来实现。这种模式背后的思想很简单&#xff1a;把逻辑分块&#xff0c;各自封装&#xff0c;相互独立&#xff0c;每个块自行决定对外暴露什么&#xff0c;同时自行决定引入执行哪些外部代码…...

c# xml 参数读取读取的简单使用

完整使用之测试参数的读取&#xff08;xml&#xff09; 保存一个xml文档&#xff08;如果没有就会生成一个默认的 里面的参数用的是我们默认设置的&#xff09;&#xff0c;之后每次更改里面的某项&#xff0c;然后保存 类似于重新刷新一遍。 这里所用的xml测试参数前面需要加…...

gym原来是这样用的

今天down了一个深度强化学习的程序&#xff0c;但是试来试去总是跑不成功&#xff0c;第一句就出问题了 env gym.make("clusterEnv-v0").unwrapped总是报没有该环境&#xff0c;思想半天&#xff0c;然后发现这是自己写的环境&#xff0c;需要到gym中去注册才能使用…...

百度SEO优化技巧与布局(提升网站排名的5种有效方法)

网站SEO关键词介绍&#xff1a; SEO&#xff08;SearchEngineOptimization&#xff09;即搜索引擎优化&#xff0c;是通过一系列技术手段和策略&#xff0c;让网站在搜索引擎中获得更好的排名和流量。关键词是SEO优化的重要组成部分&#xff0c;通过关键词布局合理&#xff0c…...

文案配音软件哪个好?(适合新手使用)

随着短视频的逐渐普及&#xff0c;视频博主越来越多&#xff0c;所以很多朋友也期待成为视频博主。但是&#xff0c;如果你想成为一个有名的视频博主&#xff0c;你需要在很多层面上比别人做得更好。其中之一就是视频文字的配音。相信大部分人都没有配音的技巧&#xff0c;所以…...

excel映射xml方法

excel映射xml方法 创建xml模板 新建一个文本文件&#xff0c;编写模板并命名为xxx.xml <?xml version"1.0" encoding"UTF-8"?> <root><item ID""><surname></surname><man></man><woman>&…...

2023/10/15

文章目录 1.uniapp之Vue2升Vue3值得注意的几点1.1 页面生命周期的使用1.2 引入资源的方式 2. 浏览器本地存储之Cookie和webStorage3. CSS变量 var()的用法4. CSS之实现线性渐变背景5. 图片无法和文字对齐的正确解决方案6. 使用正则处理接口返回的富文本内的图片7. transition实…...

Linux系统中如何开启和配置OpenGauss数据库的远程连接

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…...

【Docker】Docker网络及容器间通信详解

目录 背景 默认网络 1、bridge 网络模式 2、host 网络模式 3、none 网络模式 4、container 网络模式 自定义网络 容器间网络通信 IP通信 Docker DNS server Joined容器 前言 本实验通过docker DNS server和joined 容器两种方法实现Docker容器间的通信。Docker容器间…...

TikTok国际版 使用特网科技Bluestacks模拟器安装方法

特网科技Bluestacks模拟器主机 桌面自带Bluestacks模拟器 TikTok国际版Bluestacks模拟器搜索tiktot 登录google应用商店-安装TikTok 安装过程可能需要3-5分钟不等-配置过低可能会导致安装失败&#xff0c;建议升级更高内存。 安装完成-打开 安装成功APP-我的游戏查看 打开国际版…...

【Hello Algorithm】暴力递归到动态规划(四)

动态规划的数组压缩技巧 - 机器人走格子问题 题目是leetcode62题目原题 表示如下 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中…...

arm day 8

arm 写一段按键中断代码 main.c #include "uart.h" #include "key_it.h" int main() {char c;char *s;uart4_init();//串口初始化//中断初始化key_it_config();while(1){//保证主程序不结束}return 0; } src/key_it.c #include"key_it.h"voi…...

k8s-14 存储之volumes

Volumes配置管理 容器中的文件在磁盘上是临时存放的&#xff0c;这给容器中运行的特殊应用程序带来一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 将重新启动容器&#xff0c;容器中的文件将会丢失因为容器会以干净的状态重建。其次&#xff0c;当在一个 Pod 中…...

二分图博弈

一张二分图&#xff0c;Alice和Bob每人走一步&#xff0c;不能重复走&#xff0c;谁不能走谁输 结论&#xff1a;若存在最大匹配不包含初始点&#xff0c;则Bob赢&#xff0c;否则Alice赢 以上图为例&#xff0c;红色为最大匹配。 首先对于Alice第一步只能走黑边。而Alice无论…...

【C++】C++11—— 包装器

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】C11…...

LED显示屏高刷新率和低刷新率有什么区别

LED显示屏的刷新率是指图像在LED显示屏上更新的速度&#xff0c;也即屏幕上的图像每秒钟出现的次数&#xff0c;它的单位是赫兹&#xff08;Hz&#xff09;。LED显示屏的刷新率越高&#xff0c;图像闪烁感就越小&#xff0c;稳定性也就越高&#xff0c;换言之对视力的保护也越好…...

国际伦敦银点差费值得吗?

伦敦银是国际轨技术属市场上广受追捧的白银保证金交易品种&#xff0c;具有交易时长、交易制度灵活、资金利用率高等诸多的优点。 国际伦敦银的优势主要来自它所实行的是保证金交易制度。目前香港平台一般执行的保证金比例标准是2%&#xff0c;以目前22美元/盎司左右的白银价格…...

常见的作物模型应用技巧!DSSAT模型、APSIM模型、WOFOST模型与PCSE模型等应用

①最新DSSAT作物模型建模方法及应用 DSSAT模型内核算法是基于Fortran语言开发的&#xff0c;软件界面是基于C进行开发。了解和熟悉DSSAT模型的关键算法和软件的操作是学习DSSAT模型的基础。此外&#xff0c;想要成为一名优秀的作物模型使用者与科研团队不可或缺的人才&#xff…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...