数据库系统概论

news2024/11/28 3:50:20

文章目录

  • 前言
  • 基础篇:1-5章
  • 第 1 章 绪论
    • 1.1 数据库系统概述
    • 1.2 数据模型
    • 1.3 数据库系统的结构
    • 1.4 数据库系统的组成
    • 1.5 小结
  • 第 2 章 关系数据库
    • 1.关系模型
      • 1.1 关系数据结构
      • 1.2 关系完整性约束
        • 实体完整性、参照完整性、用户定义完整性
    • 2.关系代数
      • 8种关系代数运算符
        • 并 ∪
        • 差 -
        • 交 ∩
        • 笛卡尔积 ×
        • 选择 σ
        • 投影 Π
        • 连接 ⋈
        • 除 ÷
    • 3.关系演算
      • 元组关系演算语言ALPHA、域关系演算语言QBE
  • 第 3 章 关系数据库标准语言SQL
    • 1.数据定义
    • 2.数据查询
      • SELECT
      • WHRER
    • 3.数据更新
      • 插入数据 INSERT
      • 修改/更新 UPDATE
      • 删除数据 DELETE
  • 第 4 章 数据库安全性
    • 4.1 数据库安全性概述
    • 4.2 数据库安全性控制
      • 授权GRANT、收回权限 REVOKE
      • 数据库角色 ROLE
      • 存取控制
        • 自主存取控制 DAC
        • 强制存取控制 MAC
    • 4.3 视图机制
    • 4.4 审计
      • AUDIT 审计
      • NOAUDIT 取消审计
    • 4.5 数据加密
  • 第 5 章 数据库完整性
    • 断言
    • 触发器
  • 高级篇:6-8章
  • 第 6 章 关系数据理论
    • 函数依赖
    • 范式
      • 第一范式:1NF
      • 第二范式:2NF
      • 第三范式:3NF
      • BC范式
    • 闭包 F^+^
  • 第 7 章 数据库设计
      • 小结
  • 第8章 数据库编程
    • 1.嵌入式SQL
      • 游标
    • 2.过程化SQL
    • 3.ODBC
  • 第9章 关系查询处理和查询优化
    • 查询处理过程
    • 查询优化
  • 事务处理(transaction processing)技术 10-11章
  • 第10章 数据库恢复技术
    • 1.事务(transaction)
    • 2.事务的ACID特性(ACID properties)
    • 3.故障的种类
    • 4.恢复的实现技术
        • (1)数据转储 (backup)
        • (2)登记日志文件 (logging)
    • 5.恢复策略
    • 6.具有检查点的恢复技术
    • 7.数据库镜像 (mirror)
  • 第11章 并发控制技术
    • 1.并发控制概述
      • 1.并发操作可能带来的3种数据不一致
      • 2.并发控制的主要技术
    • 2.封锁
    • 3.封锁协议
    • 4.活锁和死锁
    • 5.并发调度的可串行性
    • 6.两段锁协议
    • 7.封锁的粒度
      • 多粒度封锁
      • 意向锁
  • 新技术篇
  • 第13章 数据库技术发展概述
  • 第14章 大数据管理
  • 第15章 内存数据库系统

前言

本笔记主要来源于王珊老师的课程:https://www.bilibili.com/video/BV13J411J7Vu/?p=1&vd_source=887851cb00540298d60639080f3a1241,
及一位学霸同学的笔记。
我个人的笔记就尽量精简,只记录最为重要的部分。详细可跳转查询学霸的笔记。知识,最好记在脑子里而不是外在的纸质或电子笔记上。


基础篇:1-5章

第 1 章 绪论

1.1 数据库系统概述

1.四个概念:数据、数据库、数据库管理系统、数据库系统
2.三大系统:操作系统、数据库系统、编译系统

在这里插入图片描述


1.2 数据模型


1.3 数据库系统的结构


1.4 数据库系统的组成


1.5 小结

在这里插入图片描述



第 2 章 关系数据库

关系数据库,就是关系构成的集合。

1.关系模型

1.1 关系数据结构

1.笛卡尔积
A={a,b},B={0,1,2},则笛卡尔积A×B={a,0} {a,1} {a,2} {b,0} {b,1} {b,2}

2.元组

3.码

4.关系模式:R(U,D,DOM,F)


1.2 关系完整性约束

实体完整性、参照完整性、用户定义完整性

关系的两个不变性:实体完整性、参照完整性


2.关系代数

8种关系代数运算符

并 ∪

差 -

交 ∩

笛卡尔积 ×

选择 σ

投影 Π

连接 ⋈

除 ÷



3.关系演算

元组关系演算语言ALPHA、域关系演算语言QBE



第 3 章 关系数据库标准语言SQL

1.数据定义

2.数据查询

SELECT 内容
FROM 表名
WHERE 条件


GROUP BY
HAVING


ORDER BY


在这里插入图片描述


SELECT

并操作:UNION
交操作:INTERSECT
差操作:EXCEPT
去重:DISTINCT


WHRER

在这里插入图片描述
2.确定范围:BETWEEN (下限) AND (上限) 、NOT BETWEEN (下限) AND (上限)

4.字符匹配:LIKE
(1)通配符
%:任意长度
_:一个字符

(2).转义字符:ESCAPE


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

SELECT Cno,Credit
FROM Course
WHERE Cname LIKE 'DB\_Design' ESCAPE'\';



3.数据更新

插入数据 INSERT

INSERT
INTO <表名>(属性)
VALUES (属性值)

修改/更新 UPDATE

UPDATE <表名>
SET 列名=WHERE 条件

删除数据 DELETE

DELETE
FROM <表名>
WHERE 条件



第 4 章 数据库安全性

4.1 数据库安全性概述

1.数据库的不安全因素
①非授权用户对数据库的恶意存取和破坏
②数据库中重要或敏感的数据被泄露
③安全环境的脆弱性

2.安全标准简介
①TCSEC标准
②CC标准


4.2 数据库安全性控制

授权GRANT、收回权限 REVOKE

1.GRANT

GRANT 权限
ON 对象类型 对象名
TO 用户名

2.REVOKE

REVOKE 权限
ON 对象类型 对象名
FROM 用户 [CASCADE|RESTRICT]

CASCADE:级联回收
RESTRICT:受限回收


数据库角色 ROLE

1.角色的创建

CREATE ROLE 角色名

2.给角色授权

GRANT 权限
ON 对象类型 对象名
TO 角色

3.将一个角色授予其他的角色或用户

GRANT 角色
TO 
[WITH ADMIN OPTION]

4.角色权限的收回

REVOKE 权限
ON 对象类型 对象名
FROM 角色

5.角色权限的增加

GRANT 要增加的权限名
ON 对象类型 对象名
TO 角色名

6.角色权限的减少

REVOKE 要减少的权限名
ON 对象类型 对象名
FROM 角色名

存取控制

自主存取控制 DAC

强制存取控制 MAC


4.3 视图机制


4.4 审计

AUDIT 审计

AUDIT 权限
ON 对象名

NOAUDIT 取消审计

NOAUDIT 权限
ON 对象名

4.5 数据加密

明文(plain text)经加密算法变成密文(cipher text)

1.存储加密
①透明加密
②非透明加密

2.传输加密
①链路加密
②端到端加密


第 5 章 数据库完整性

1.数据的完整性是指数据的正确性相容性
在这里插入图片描述

断言

触发器



高级篇:6-8章

第 6 章 关系数据理论

函数依赖

数据依赖:①函数依赖 ②多值依赖 ③连接依赖


函数依赖的确定:根据语义


1.函数依赖(确定)
2.非平凡的函数依赖
平凡的函数依赖
3.完全函数依赖
部分函数依赖
4.传递函数依赖



1.候选码:
2.超码:
3.主码:
4.主属性:包含在任何一个候选码中的属性
5.全码:



范式

第一范式:1NF

第二范式:2NF

第三范式:3NF

BC范式



闭包 F+



第 7 章 数据库设计

在这里插入图片描述

在这里插入图片描述

小结



第8章 数据库编程

突破SQL语言局限性的三种技术方案:
1.利用高级语言的表达能力:嵌入式SQL
2.扩展SQL语言对于过程控制的表达能力:过程化SQL
3.在一个更大的视野上,将数据库看做是一类数据源:ODBC编程


1.嵌入式SQL

利用高级语言的表达能力:嵌入式SQL

EXEC SQL <SQL语句>

游标

游标是数据库系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
每个游标区都有一个名字,也可以理解为该数据区的指针可以用SQL语句逐一从游标中(指针所指示的位置)获取记录并赋给主变量,交由主语言进一步处理。


2.过程化SQL


3.ODBC



第9章 关系查询处理和查询优化

查询处理过程

1.查询分析
2.查询检查
3.查询优化
4.查询执行

查询优化

1.代数优化:启发式代数优化
2.物理优化:①基于规则的存取路径优化 ②基于代价的优化



事务处理(transaction processing)技术 10-11章

事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理技术主要包括数据库恢复技术和并发控制技术。

第10章 数据库恢复技术

1.事务(transaction)

1.定义:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

2.事务的ACID特性(ACID properties)

原子性 (Atomicity)
一致性 (Consistency)
隔离性 (Isolation)
持续性 (Durability) / 永久性(Permanence)

3.故障的种类

①事务内部故障
②系统故障
③介质故障
④计算机病毒

4.恢复的实现技术

在这里插入图片描述

(1)数据转储 (backup)

在这里插入图片描述

(2)登记日志文件 (logging)

①日志文件的格式和内容
②日志文件的作用
③登记日志文件

5.恢复策略

(1)事务故障的恢复:UNDO
(2)系统故障的恢复:UNDO+REDO
(3)介质故障的恢复:重装后援副本+REDO

6.具有检查点的恢复技术

在这里插入图片描述
在这里插入图片描述
T2从检查点开始REDO就行,不必全部重做。

7.数据库镜像 (mirror)

频繁复制数据导致系统效率低,一般只镜像关键数据日志文件



第11章 并发控制技术

1.串行执行 (单处理机)
2.交叉并发执行 (单处理机),提高了系统资源的利用率。
3.同时并发执行 (多处理机)

1.并发控制概述

1.并发操作可能带来的3种数据不一致

(1)丢失修改 (lost update) (修改-修改 冲突)
(2)不可重复读 (non-repeatable read) (读-更新 冲突)
①读-修改
②读-插入
③读-删除 (②③称为 幻影现象)
(3)读“脏”数据 (dirty read) (修改-读 冲突)

记号:
R(x):读数据x
W(x):写数据x


2.并发控制的主要技术

(1)封锁 (locking)
(2)时间戳 (timestamp)
(3)乐观控制法 (optimistic scheduler)
(4)多版本并发控制 (multi-version concurrency control,MVCC)


2.封锁

1.封锁的定义:对数据对象进行加锁,在其释放锁之前,其他事务不能更新此数据对象。

2.锁的类型
(1)排他锁:X锁 (exclusive locks)、写锁
若事务T对数据对象A加X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。

(2)共享锁:S锁 (share locks)、读锁
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直至T释放A上的S锁为止。

3.封锁类型的相容矩阵
在这里插入图片描述


3.封锁协议

1.封锁协议的定义:何时申请锁、持锁时间、何时释放的约定规则。

2.封锁协议的类型
(1)一级封锁协议
①一级封锁协议的定义:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括 正常结束(COMMIT)、非正常结束(ROLLBACK)。
②功能:一级封锁协议可防止①丢失修改,并保证事务T是可恢复的。但不能防止 不可重复读读脏数据

(2)二级封锁协议
①二级封锁协议的定义:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,读完后立即释放S锁。(一级封锁协议 + 短读锁)
②功能:二级封锁协议可防止①丢失修改②读脏数据,但由于加的读锁是短锁,不能防止不可重复读

(3)三级封锁协议
①定义:一级封锁协议加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。(一级封锁协议 + 长读锁)
②功能:可防止丢失修改、不可重复读、读脏数据

在这里插入图片描述
在这里插入图片描述


4.活锁和死锁

1.活锁
解决活锁的方法:先来先服务(FCFS)

2.死锁
(1)死锁预防
一次封锁法
i.定义:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。
ii.缺点:1)过早加锁,降低系统并发度,降低了系统的效率 2)难以确定所有要加锁的对象

顺序封锁法
i.定义:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实施封锁。
ii.缺点:1)维护成本高 2)难以实现


(2)死锁的诊断和解除
超时法
1)定义:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
2)优点:实现简单
缺点:i.可能误判死锁 ii.时限若设置得过长,死锁发生后不能及时发现

等待图法
1)死锁诊断:等待图中出现了回路,则说明产生了死锁。

(b)图中,T1等待T2,T2等待T3,T3等待T2和T4,T4等待T1。A→B意思为A等待B释放锁。
在这里插入图片描述

  1. 死锁解除
    撤销一个代价最小的事务,让破除等待环

5.并发调度的可串行性

1.串行调度:串行地调度
2.可串行性调度:执行效果和串行调度相同

3.冲突操作:读-写冲突、写-写冲突(对同一个数据对象进行操作,至少有一个写,才冲突)。读-读不冲突。
4.冲突可串行化的调度
(1)定义:一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc为冲突可串行化的调度。
(2)冲突可串行化调度 → 充分 \xrightarrow{充分} 充分 可串行化调度


6.两段锁协议

1.两段锁:
(1)第一阶段,获得封锁 (扩展阶段,只获得锁)
(2)第二阶段,释放封锁 (收缩阶段,只释放锁)

2.遵守两段锁协议 → 充分 \xrightarrow{充分} 充分 可串行化调度

3.遵守两段锁协议不能保证防止死锁,但一次封锁法遵守两段锁协议。

4.两段锁协议与三级封锁协议
两类不同目的的协议。
①两段锁协议:保证并发调度的正确性
②三级封锁协议:在不同程度上保证数据一致性
遵守三级封锁协议 → 必然遵守两段锁协议,→ 必然是可串行化调度。


7.封锁的粒度

1.定义:封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。

2.封锁力度与系统并发度和并发控制的开销密切相关:
①封锁的粒度越大,数据库所能够封锁的数据单元越少,并发度越小,系统开销越小。
②封锁的粒度越小,并发度越高,系统开销越大。


多粒度封锁

1.定义:在一个系统中支持对多种封锁粒度提供不同的事务选择

2.多粒度树:根结点是整个数据库,表示最大的数据粒度。叶结点表示最小的数据粒度。有n层就是n级粒度树

3.显式封锁:直接加到数据对象上的锁

4.隐式封锁:因上级结点加了(显式)锁,而使得该数据对象加了(隐式)锁


意向锁

1.定义:若要对任一结点加锁,必须先对它的上层结点加意向锁。

2.分类
(1)IS锁
若要对某结点加S锁,则要先从其根结点至父结点依次加IS锁,最后才能对该结点加S锁。

(2)IX锁
若要对某结点加X锁,则要先从其根结点至父结点依次加IX锁,最后才能对该结点加X锁。

(3)SIX锁
想读一个数据对象,并更新它的后代结点,加SIX锁 (SIX = S + IX,所有后代都加隐式S锁,某些后代加X锁)。
在这里插入图片描述


(4)加入3种意向锁后的相容矩阵,沿对角线对称
在这里插入图片描述


(5)锁的强度
1.锁的强度:它对其他锁的排斥程度。依次为 ①X②SIX③S /IX ④IS
2.一个事务在申请封锁时以强锁代替弱锁是安全的,以弱锁代替强锁是不安全的。

(6)含有意向锁的多粒度树
①申请锁时应该自上而下
②释放锁时应该自下而上



新技术篇

第13章 数据库技术发展概述

1.第一代数据库系统:
在这里插入图片描述

第二代数据库系统:
在这里插入图片描述

第三代数据库系统:
One Size Does Not Fit All
按照应用需求与系统功能分,可以有各种不同类型的系统


第14章 大数据管理


第15章 内存数据库系统

1.定义:使用内存作为常规数据存储设备的数据库系统,简称为IMDB(In-MemoryDatabase)或MMDB(Main-Memory Database)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「媒体邀约」如何选择适合的媒体公关,媒体服务供应商

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 每天胡老师也会接到大量关于媒体方面的询问&#xff0c;胡老师也都一一的很耐心的进行了解答&#xff0c;也都很详细的做了媒体规划和媒体传播方案&#xff0c;但有的朋友还是很犹豫&…

关于 @Aspect 注解的使用

一、Spring AOPAOP(Aspect Oriented Programming) 是一种面向切面的编程思想。面向切面编程是将程序抽象成各个切面&#xff0c;即解剖对象的内部&#xff0c;将那些影响了多个类的公共行为抽取到一个可重用模块里&#xff0c;减少系统的重复代码&#xff0c;降低模块间的耦合度…

Hive小结

Hive的定义hive是一个建立在Hadoop上的开源数据仓库软件&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;基于表提供了一种类似SQL的查询模型&#xff0c;称为hive查询语言&#xff08;HQL&#xff09;&#xff0c;用于访问和分析存储在Hadoop文件中的大型数…

Uipath Excel 自动化系列12-InsertDeleteSheet(新增删除Sheet)

活动描述 Insert Sheet 新增Sheet:在 Excel 文件中插入工作表,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 Delete Sheet 删除Sheet:从 Excel 文件中删除指定工作表,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 使用如下图&#xff1a; Inser…

【React教程】一、React简介

一、React简介 React是一个用于构建用户界面的JavaScript库&#xff0c;它是Facebook的内部项目&#xff0c;用来架设Instagram的网站,并于2013年5月开源。React主要用于构建Ul&#xff0c;很多人认为React 是 MVC 中的 V&#xff08;视图&#xff09;。由于拥有较高的性能&…

计算机组成原理——计算机系统概述

文章目录计算机系统的组成计算机硬件冯诺依曼结构计算机的功能部件计算机软件系统软件和应用软件三个级别的语言计算机的性能指标字长数据通路宽度主存容量运算速度计算机系统的组成 计算机系统由硬件系统和软件系统组成&#xff1a; 硬件是指有形的物理设备&#xff0c;是计…

【CICD】如何编写 .gitlab-ci.yml 文件

⏳ CICD 指的是持续集成/持续交付&#xff08;continuous integration/ continuous delivery&#xff09;&#xff0c;是为了满足互联网、金融公司快速迭代项目的需要而提出的一种软件开发思想。大致思路是通过编写自动化脚本&#xff0c;使新代码必须通过一些规则核查后才能部…

自定义控件(?/N) - 事件分发

一、外部传递到ViewGroup中Activity会通过 getWindow( ) 获取PhoneWindow对象并调用它的superDispatchTouchEvent( )&#xff0c;该方法会调用它&#xff08;PhoneWindow&#xff09;的内部类 DecorView 的 superDispatchTouchEvent( )&#xff0c;而它&#xff08;DecorView&a…

【Docker】P1 初识 Docker 以及 Ubuntu 安装 Docker

初识 Docker 以及 Ubuntu 安装 Docker初识 Docker故事引入DockerUbuntu 安装 Docker读完本文&#xff0c;你应当会理解这两句话&#xff1a; Docker 可以大大简化运维部署相关操作&#xff0c;可以规避一些 bug&#xff1b; Docker 是一种容器技术&#xff0c;解决软件跨环境迁…

使用Houdini输出四面体网格并输出tetgen格式

我们的目标是从houdini输出生成的四面体&#xff0c;希望是tetgen格式的。 众所周知&#xff0c;houdini是不能直接输出四面体的。 有三方案去解决&#xff1a; 输出点云ply文件&#xff0c;然后利用tetgen生成网格。输出Hounidi内置的.geo格式文件&#xff0c;然后写个脚本…

[Java Web]Request对象 | 超1w字带你熟悉Servlet中的request请求

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;输出优质文章 ⭐所属专栏&#xff1a;Java Web ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注&#x1f609;有写的不好的地方也欢迎指正&#xff0c;一同进步&#x1f601; 目录 Reque…

Codeforces Round 857 (Div. 2)【A-C】

文章目录A. Likes【贪心、模拟】B. Settlement of Guinea Pigs【贪心】C. The Very Beautiful Blanket【构造、观察】链接传送门A. Likes【贪心、模拟】 分析 为了使得当前时间点赞的尽可能大&#xff0c;那么前面的赞的数目也要尽可能大&#xff0c;所以前面把能赞的都要先赞…

2-8 SpringCloud快速开发入门: Eureka 服务注册中心自我保护机制

接上一章节Eureka 注册中心高可用集群搭建&#xff0c;这里讲讲Eureka 服务注册中心自我保护机制 Eureka 服务注册中心自我保护机制 自我保护机制是 Eureka 注册中心的重要特性&#xff0c;当 Eureka 注册中心进入自我保护模式时&#xff0c;在 Eureka Server 首页会输出如下警…

Python JS逆向篇(一)

Python JS逆向篇&#xff08;一&#xff09;效果实现思路最后一步逆向 p.a.HmacSHA256(t, s["a"].state.commonStore.cupid_sign_key)JS实现py实现&#xff08;先苦后甜&#xff09;逆向主题&#xff1a;51job请求头headers中携带的sign参数。 &#xff08;注&#x…

Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

RTMP服务时常用于直播时提供拉流推流传输数据的一种服务。前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器&#xff0c;所以就研究了一下如何搭建及使用。 1、下载nginx 首先我们要知道一般nginx不能直接配置rtmp服务&#xff0c;在Windows系统上需要特殊nginx版本…

centos8 安装 pcs pacemaker

一、背景 在centos-8中安装pcs、pacemaker会显示找不到源 &#xff08;yum install pcs pacemaker 也是一样的&#xff09; 通过搜索引擎&#xff0c;有说&#xff1a;dnf config-manager --set-enable HighAvailability 也有的说&#xff1a;执行dnf update 也有的说执行 dn…

AB测试——流程介绍(设计实验)

前言&#xff1a; 作为AB测试的学习记录&#xff0c;接上文内容&#xff0c; 本文继续介绍假设建立和实验设计部分&#xff0c;包括实验对象、样本量计算&#xff08;显著性水平、统计功效及最小可检测效应&#xff09;、实验周期。 相关文章&#xff1a; AB测试——原理介绍 A…

【PyTorch】教程:torch.nn.PReLU

torch.nn.PReLU 原型 CLASS torch.nn.PReLU(num_parameters1, init0.25, deviceNone, dtypeNone) 参数 num_parameters ([int]) – 需要学习的 aaa 的数量&#xff0c;尽管作为输入&#xff0c;只有两个值是合法的&#xff0c;1 或者 输入的通道数&#xff0c;默认为 1 。ini…

各种光照模型的shader实现

大家好&#xff0c;我是阿赵。 这里打算给大家介绍一些常用的光照模型的shader实现方法。虽然这些光照模型很多都会在各大引擎内置&#xff0c;一般不需要自己写。但我觉得学习一下&#xff0c;首先对了解渲染原理有帮助&#xff0c;然后对写一些复合效果的shader时&#xff0c…

java安全编码规范考试

java安全编码规范考试 整理不易&#xff0c;收点币&#xff01;&#xff01; 安全编码规范考试.md 下面对zip文件的安全解压缩描述&#xff0c;错误的是 A.zip文件解压时&#xff0c;可以使用entry.getSize(&#xff09;对解压缩文件进行文件大小判断 B.zip文件解压时&…