数据库系统概论(个人笔记)(第四部分)

数据库系统概论(个人笔记)

文章目录

  • 数据库系统概论(个人笔记)
  • 4、中间的SQL
    • 4.1 连接表达式
    • 4.2 视图
    • 4.3 事务
    • 4.4 完整性约束
    • 4.5 SQL数据类型和模式
    • 4.6 SQL中的索引定义
    • 4.7 授权

4、中间的SQL


4.1 连接表达式

Join Expressions


Joined Relations

连接操作 Join operations 接受两个关系并返回另一个关系作为结果。

连接操作是笛卡尔积,它要求两个关系中的元组匹配(在某些条件下)。它还指定了出现在连接结果中的属性

连接操作通常用作 from 子句中的子查询表达式

连接条件 Join condition ——定义两个关系中的哪些元组匹配,以及在连接结果中出现哪些属性

连接类型 Join type ——定义如何处理每个关系中与其他关系中任何元组不匹配的元组(基于连接条件)

在这里插入图片描述


Natural Join in SQL

自然连接 Natural Join 为所有公共属性匹配具有相同值的元组,并且只保留每个公共列的一个副本。

列出每个学生所修的课程:

  • select name, course_id
    from  students, takes
    where student.ID = takes.ID;
    

在SQL中使用“自然连接”构造进行相同的查询:

  • select name, course_id
    from student natural join takes;
    

from 子句可以有多个使用自然连接组合的关系:

select  A1, A2, … An
from  r1  natural join r2 natural join .. natural join rn
where  P ;

Student Relation

在这里插入图片描述


Takes Relation

在这里插入图片描述


student natural join takes

在这里插入图片描述


Dangerous in Natural Join

谨防不相关的相同名称的属性被错误地等同

Example——列出学生的名字以及他们所修课程的名称

  • 不正确的版本

    select name, title
    from student natural join takes natural join course;
    
    student( ID, name dept_name, tot_cred)
    course(course_id, title, dept_name, credits))
    takes(ID, course_id, sec_id, semester, year, grade)
  • 正确的版本

    select name, title
    from student natural join takes, course
    where takes.course_id = course.course_id;
    
    • 该查询省略了学生在该学生所在系以外的系中学习课程的所有(学生姓名、课程名称)对。
    • 正确的版本(如上),正确输出这样的匹配。

Natural Join with Using Clause

为了避免错误地等同属性的危险,我们可以使用“using”构造,它允许我们精确地指定应该等同哪些列。

查询示例

select name, title
from  (student natural join takes)  join course using (course_id)

Join Condition

on 条件允许在连接的关系上使用一般谓词

该谓词的编写与 where 子句谓词类似,只是使用了关键字 on

查询示例

select *
from  student join takes on student_ID  = takes_ID
  • 上面的 on 条件指定了一个来自 student 的元组与来自 take 的元组匹配,如果它们的 ID 值相等。

等价于:

select *
from  student , takes
where  student_ID  = takes_ID

Outer Join

连接操作的扩展,可避免信息丢失。

计算连接,然后将一个关系中不匹配另一个关系中的元组的元组添加到连接的结果。

使用空值 null。

外连接 Outer Join 的三种形式:

  • 左外连接 left outer join
  • 右外连接 right outer join
  • 全外连接 full outer join

Outer Join Examples

在这里插入图片描述


Left Outer Join

在这里插入图片描述


Right Outer Join

在这里插入图片描述


Full Outer Join

在这里插入图片描述


Joined Types and Conditions

连接操作 Join operations 接受两个关系并返回另一个关系作为结果。

这些额外的操作通常用作 from 子句中的子查询表达式。

连接条件 Join condition ——定义两个关系中哪个元组匹配。

连接类型 Join type ——定义如何处理每个关系中与其他关系中任何元组不匹配的元组(基于连接条件)。

在这里插入图片描述


Joined Relations – Examples

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


4.2 视图

Views

在某些情况下,不希望所有用户都看到整个逻辑模型(即存储在数据库中的所有实际关系)。

考虑一个人需要知道导师的名字和部门,但不知道薪水。这个人应该看到 SQL 中描述的关系:

 select ID, name, dept_namefrom instructor

视图 view 提供了一种机制,可以在某些用户的视图中隐藏某些数据。

任何不属于概念模型但作为“虚拟关系”对用户可见的关系都称为视图 view


View Definition

视图是使用 create view 语句定义的,该语句具有如下形式:

create view v as <query expression>

其中 是任何合法的SQL表达式。视图名用 v 表示。

一旦定义了视图,就可以使用视图名称来引用视图生成的虚拟关系。

视图定义与通过计算查询表达式来创建新关系不同

  • 相反,视图定义会导致表达式的保存;该表达式被替换到使用视图的查询中。

View Definition and Use

教师没有他们工资的一个视图:

create view faculty asselect ID, name, dept_namefrom instructor

找到生物系的所有老师:

select name
from faculty
where dept_name = 'Biology'

创建部门工资总额视图:

create view departments_total_salary(dept_name, total_salary) asselect dept_name, sum (salary)from instructorgroup by dept_name;

Views Defined Using Other Views

一个视图可以在定义另一个视图的表达式中使用

如果在定义 v1 的表达式中使用了 v2 ,则认为视图关系 v1 直接依赖于 depend directly on 视图关系 v2

如果视图关系 v1 直接依赖于 v2 ,或者存在从 v1 到 v2 的依赖路径,则称视图关系 v1 依赖于 depend on 视图关系 v2

如果视图关系 v 依赖于自身,则称其为递归 recursive

create view physics_fall_2017 asselect course.course_id, sec_id, building, room_numberfrom course, sectionwhere course.course_id = section.course_idand course.dept_name = 'Physics'and section.semester = 'Fall'and section.year = '2017;
create view physics_fall_2017_watson asselect course_id, room_numberfrom physics_fall_2017where building= 'Watson';

View Expansion

展开视图(将上述两个结合起来):

create view physics_fall_2017_watson asselect course_id, room_numberfrom (select course.course_id, building, room_numberfrom course, sectionwhere course.course_id = section.course_idand course.dept_name = 'Physics'and section.semester = 'Fall'and section.year = '2017')where building= 'Watson';

定义根据其他视图定义的视图的含义的一种方法。

让视图 v1 由表达式 e1 定义,表达式 e1 本身可以包含视图关系的用法。

表达式的视图展开重复以下替换步骤:

repeat

​ 查找e1中任何视图关系vi

​ 用定义vi的表达式替换视图关系vi,

until e1中不再存在视图关系

只要视图定义不是递归的,这个循环就会终止


Materialized Views

某些数据库系统允许对视图关系进行物理存储。

  • 定义视图时创建的物理副本。
  • 这样的视图被称为物化视图 Materialized Views

如果更新了查询中使用的关系,则物化视图结果将过期

  • 需要通过在底层关系更新时更新视图来维护 maintain视图。

Update of a View

向前面定义的教员 faculty 视图添加一个新的元组

insert into facultyvalues ('30765', 'Green', 'Music');

这个插入必须通过插入到教员关系中来表示

  • 必须有工资的价值

两种方法

  • 拒绝插入
  • 将元组(‘30765’, ‘Green’, ‘Music’, null)插入到讲师关系中

Some Updates Cannot be Translated Uniquely

create view instructor_info asselect ID, name, buildingfrom instructor, departmentwhere instructor.dept_name= department.dept_name;
insert into instructor_info values ('69987', 'White', 'Taylor');

问题:

  • 如果 Taylor 有多个部门,那是哪个部门?
  • 如果 Taylor 没有部门呢?

And Some Not at All

create view history_instructors asselect *from instructorwhere dept_name= 'History';

如果我们将 (‘25566’, ‘Brown’, ‘Biology’, 100000) 插入history_instructors 会发生什么?


View Updates in SQL

大多数SQL实现只允许对简单视图进行更新

  • from 子句只有一个数据库关系。
  • select 子句只包含关系的属性名,没有任何表达式、聚合或不同的 distinct 规范。
  • 任何未在 select 子句中列出的属性都可以设置为null。
  • 查询没有 group byhaving 子句。

4.3 事务

Transactions

事务 Transaction 由一系列查询和/或更新语句组成,是一个“工作单元”

SQL 标准指定在执行 SQL 语句时隐式地开始事务。

交易必须以下列语句之一结束:

  • 提交工作 Commit work。事务执行的更新将永久保存在数据库中。
  • 回滚的工作 Rollback work。事务中 SQL 语句执行的所有更新都将撤消。

原子事务 Atomic transaction

  • 要么完全执行,要么回滚,就像从未发生过一样

隔离并发事务 Isolation from concurrent transactions


4.4 完整性约束

Integrity Constraints

完整性约束通过确保对数据库的授权更改不会导致数据一致性丢失,从而防止对数据库的意外损坏。

  • 支票账户的余额必须大于10,000美元
  • 银行职员的工资必须至少是每小时4美元
  • 客户必须有一个(非空)电话号码

Constraints on a Single Relation

Constraints on a Single Relation 单个关系上的约束

  • not null
  • primary key
  • unique
  • check (P), where P is a predicate P是谓词

Not Null Constraints

not null

  • 声明名称和预算不为空 not null

    name varchar(20) not null
    budget numeric(12,2) not null
    

Unique Constraints

unique(A1, A2, …, Am)

  • 唯一规范声明属性 A1,A2,…,Am 构成一个候选键。
  • 候选键允许为空(与主键相反)。

The check clause

check(P)子句指定一个谓词P,关系中的每个元组都必须满足该谓词P。

Example:确保这个学期是秋季、冬季、春季或夏季之一

create table section (course_id varchar (8),sec_id varchar (8),semester varchar (6),year numeric (4,0),building varchar (15),room_number varchar (7),time slot id varchar (4),primary key (course_id, sec_id, semester, year),check (semester in ('Fall', 'Winter', 'Spring', 'Summer')))

Referential Integrity

Referential Integrity 参照完整性

确保在一个关系中出现的值对于给定的一组属性也出现在另一个关系中的一组属性中。

  • Example:如果“生物学”是出现在教员关系中某个元组中的院系名,则在院系关系中存在“生物学”的元组。

设 A 是一组属性。设 R 和 S 是两个包含属性A的关系,其中 A 是 S 的主键。如果对于出现在 R 中的 A 的任何值,这些值也出现在 S 中,则称 A 是 R 的外键 foreign key

外键可以指定为 SQL create table 语句的一部分

foreign key (dept_name) references department

默认情况下,外键引用被引用表的主键属性。

SQL 允许显式地指定引用关系的属性列表。

 foreign key (dept_name) references department (dept_name)

Cascading Actions in Referential Integrity

Cascading Actions in Referential Integrity 引用完整性中的级联操作

当引用完整性约束被违反时,正常的过程是拒绝导致违反的操作。

在删除或更新的情况下,另一种选择是级联:

create table course ((...dept_name varchar(20),foreign key (dept_name) references departmenton delete cascadeon update cascade,...) )

我们可以使用以下命令代替 cascade :

  • set null
  • set default

Integrity Constraint Violation During Transactions

Integrity Constraint Violation During Transactions 在事务期间违反完整性约束

考虑如下情况:

create table person (ID char(10),name char(40),mother char(10),father char(10),primary key ID,foreign key father references person,foreign key mother references person)

如何插入元组而不造成约束违反?

  • 在插入 person 之前插入 person 的父亲和母亲
  • 或者,将父属性和母属性初始设置为空,在插入所有人员后更新(如果声明父属性和母属性不为空 not null,则不可能)
  • 或者推迟约束检查

Complex Check Conditions

Complex Check Conditions 复杂检查条件

检查子句中的谓词可以是任意谓词,可以包含子查询。

check (time_slot_id in (select time_slot_id from time_slot))

检查条件声明 section 关系中每个元组中的 time_slot_id 实际上是 time_slot 关系中一个时隙的标识符。

  • 不仅在 section 中插入或修改元组时必须检查条件,而且在关系 time_slot 发生变化时也必须检查条件

Assertions

断言 assertion 是表示我们希望数据库始终满足的条件的谓词。

以下约束可以用断言来表示:

对于学生关系中的每个元组,属性 tot_cred 的值必须等于该学生成功完成的课程的学分总和。

一个教师不能在一个学期的同一时间段在两个不同的教室授课

SQL中的断言采用以下形式:

create assertion <assertion-name> check (<predicate>);

4.5 SQL数据类型和模式

SQL Data Types and Schemas


Built-in Data Types in SQL

date: 日期,包含(4位)年、月和日期

  • Example:date ‘2005-7-27’

time: 一天中的时间,以小时、分钟和秒为单位。

  • Example:time ‘09:00:30’ time ‘09:00:30.75’

timestamp: 日期加上时间

  • Examlpe:timestamp ‘2005-7-27 09:00:30.75’

interval: 时间段

  • Example:interval ‘1’ day
  • 从一个日期/时间/时间戳值 date/time/timestamp 减去另一个值得到一个间隔值
  • 间隔值可以添加到日期/时间/时间戳 date/time/timestamp 值中

Large-Object Types

大对象 Large objects (照片、视频、CAD文件等)作为大对象存储:

  • blob:二进制大对象——对象是未解释的二进制数据的大集合(其解释留给数据库系统外的应用程序)
  • clob:字符大对象——对象是字符数据的大集合

当查询返回一个大对象时,返回的是指针而不是大对象本身。


User-Defined Types

SQL中的 create type 构造创建用户定义的类型:

create type Dollars as numeric (12,2) final

Example:

create table department
(dept_name varchar (20),building varchar (15),budget Dollars);

Domains

SQL-92 中的 create domain construct 创建用户定义的域类型:

create domain person_name char(20) not null

类型和域是相似的。域上可以指定约束,比如不为空。

Example:

create domain degree_level varchar(10)constraint degree_level_testcheck (value in ('Bachelors', 'Masters', 'Doctorate'));

4.6 SQL中的索引定义

Index Definition in SQL


Index Creation

许多查询只引用表中一小部分记录。

对于系统来说,读取每条记录来查找具有特定值的记录是低效的

关系属性上的索引 index 是一种数据结构,它允许数据库系统在关系中有效地找到具有该属性指定值的元组,而无需扫描关系的所有元组。

我们使用 create index 命令创建索引:

create index <name> on <relation-name> (attribute);

我们还可以删除带有索引名称的索引:

drop index <name>;

Index Creation Example

create table student
(ID varchar (5),name varchar (20) not null,dept_name varchar (20),tot_cred numeric (3,0) default 0,primary key (ID))
create index studentID_index on student(ID)

(以下的语句)可以通过使用索引查找所需的记录来执行查询,而不必查看 student 的所有记录:

select *
from student
where ID = '12345'

Basic Concepts

用于加快对所需数据访问的索引机制。

  • 例如,图书馆的作者目录

搜索键属性 Search Key:用于查找文件中记录的一组属性。

索引文件 index file 由以下形式的记录(称为索引条目 index entries )组成

search-keypointer

索引文件通常比原始文件小得多

两种基本指标:

  • 有序索引 Ordered indices:搜索键按排序顺序存储
  • 哈希索引 Hash indices:使用“ hash function ”在“ buckets ”中均匀分布搜索键。

Example of Hash Index

在这里插入图片描述


Example of B+ - Tree

在这里插入图片描述


Type of Index

不同数据类型和条件类型的索引

查询类型索引类型
Point queries(score=90)Hash、B±tree
Range queries(score>60)B±tree
Multi-condition queries (gender=male & rating=5)Bitmap
Spatial range queries (115.7°<lag<117.4°& 39.4°<long<41.6°)Nearest neighbor queries(KNN)Multidimensional index (R-tree、Quadtree、KD-tree)

是否支持持久化和快速恢复

  • 内存索引和磁盘索引

4.7 授权

Authorization

我们可以对数据库的某些部分为用户分配几种形式的授权。

  • 读取 Read ——允许读取,但不允许修改数据。
  • 插入 Insert ——允许插入新数据,但不修改现有数据。
  • 更新 Update ——允许修改,但不删除数据。
  • 删除 Delete ——允许删除数据。

这些授权类型中的每一种都称为特权 privilege。我们可以对数据库的指定部分(如关系或视图)授予用户全部、无或这些类型的特权的组合。

修改数据库模式的授权形式

  • 索引 Index ——允许创建和删除索引。
  • 资源 Resources ——允许创建新的关系。
  • 修改 Alteration ——允许在关系中添加或删除属性。
  • 删除 Drop ——允许删除关系。

Authorization Specification in SQL

grant 语句用于授予授权

grant <privilege list> on <relation or view > to <user list>

为:

  • a user-id
  • Public,它允许所有有效用户获得授予的特权
  • A role

Example:

  • grant  select on  department to Amit,  Satoshi
    

在视图上授予特权并不意味着在底层关系上授予任何特权。

特权授予者必须已经拥有对指定项的特权(或者是数据库管理员)。


Privileges in SQL

选择 select:允许对关系进行读访问,或者使用视图进行查询

  • Example:授权用户U1、U2 和 U3 选择 select 教员关系:

    grant select on instructor to U1, U2, U3
    

插入 insert:插入元组的能力

更新 update:使用SQL update 语句进行更新的能力

删除 delete:删除元组的能力

所有特权 all privileges:用作所有允许的特权的缩写形式


Revoking Authorization in SQL

revoke 语句用于撤销授权:

revoke <privilege list> on <relation or view> from <user list>

Example:

revoke select on student from U1, U2, U3

可以是 all,用来撤销被撤销者可能拥有的所有特权。

如果<revoke -list>包含 public,则除了显式授予的权限外,所有用户都将失去权限。

如果同一用户被不同的授予者授予了两次相同的权限,那么该用户在被撤销后可以保留该权限。

依赖于被撤销特权的所有特权也将被撤销。


Roles

角色 role 是区分不同用户的一种方法,这些用户可以访问/更新数据库中的内容。

要创建一个角色,我们使用:

create a role <name>

Example:

  •  create role instructor
    

创建角色后,我们可以使用以下命令为角色分配“users”:

  • grant  <role> to <users>
    

Roles Example

create role instructor;
grant instructor to Amit;

权限可以授予角色:

  • grant select on takes to instructor
    

角色可以授予用户,也可以授予其他角色

  • create role teaching_assistant
    
  • grant teaching_assistant to instructor
    
    • 讲师继承助教的所有特权

角色链

  • create role dean;
    
  • grant instructor to dean;
    
  • grant dean to Satoshi;
    

Authorization on Views

create view geo_instructor as
(select *from instructorwhere dept_name = 'Geology');
grant select on geo_instructor to geo_staff

假设一个geo_staff成员出了问题

  • select * from geo_instructor
    

如果

  • geo_staffinstructor 没有权限?
  • 视图创建者对 instructor 没有某些权限?

Other Authorization Features

引用 refrences 特权创建外键

  • grant reference (dept_name) on department to Mariano;
    
  • 为什么需要这样做?

转让特权

  • grant select on department to Amit with grant option;
    
  • revoke select on department from Amit, Satoshi cascade;
    
  • revoke select on department from Amit, Satoshi restrict;
    
  • And more!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络:网络层 - 路由选择协议

计算机网络&#xff1a;网络层 - 路由选择协议 路由器的结构路由选择协议概述自治系统 AS内部网关协议路由信息协议 RIP距离向量算法RIP报文格式收敛问题 开放最短路径优先 OSPF基本工作原理自治系统分区 外部网关协议BGP-4 路由器的结构 如图所示&#xff0c;路由器被分为路由…

PostgreSQL的学习心得和知识总结(一百四十五)|深入理解PostgreSQL数据库之ShowTransactionState的使用及父子事务有限状态机

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

mac怎么压缩pdf文件,苹果电脑怎么压缩pdf文件大小

在当今数字化时代&#xff0c;PDF文件已成为广泛使用的文档格式之一。然而&#xff0c;PDF 文件可能会因其包含的图像、图形和其他元素而导致文件较大&#xff0c;这可能会影响文件的传输、存储和共享。因此&#xff0c;对 PDF 文件进行压缩以减小其文件大小是很有必要的。今天…

【机器学习 复习】第3章 K-近邻算法

一、概念 1.K-近邻算法&#xff1a;也叫KNN 分类 算法&#xff0c;其中的N是 邻近邻居NearestNeighbor的首字母。 &#xff08;1&#xff09;其中K是特征值&#xff0c;就是选择离某个预测的值&#xff08;例如预测的是苹果&#xff0c;就找个苹果&#xff09;最近的几个值&am…

OCC异常处理机制理解

1.目的 异常处理提供了一种将控制权从正在执行的程序中的给定点转移到与先前执行的另一点关联的异常处理程序的方法。在各种错误条件下引发异常&#xff0c;该异常会中断其正常执行并将控制权传递给捕获此异常的处理程序&#xff0c;以保护软件质量。OCC作为开源的几何算法库&…

CV预测:快速使用DenseNet神经网络

AI预测相关目录 AI预测流程&#xff0c;包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…

如何使用nginx部署https网站(亲测可行)

公司本来有网站sqlynx.com是http运行的&#xff0c;但因为产品出海&#xff0c;基本上都要求使用https&#xff0c;但又需要兼容已有的http服务&#xff0c;所以我自己尝试做了一次https的部署&#xff0c;目前是正常可用的。 目录 步骤 1&#xff1a;安装 Nginx 步骤 2&…

国产24位I2S输入+192kHz立体声DAC音频数模转换器CJC4344

CJC4344是一款立体声数模转换芯片&#xff0c;内含插值滤波器、multi bit数模转换器、输出模拟滤波器。CJC4344系列支持大部分的音频数据格式。CJC4344基于一个带线性模拟低通滤波器的四阶multi-bitΔ-Σ调制器&#xff0c;而且本芯片可以通过检测信号频率和主时钟频率&#xf…

vi/vim使用命令

你是否在编辑文件时以为键盘坏了&#xff0c;为什么不能删除呢&#xff0c;为什么不能敲代码呢&#xff0c;当你初识vi&#xff0c;会觉得这个东西设计很难用&#xff0c;这篇教程带你熟练得用上这款经典的工具&#xff0c;当你熟练了这款工具就会真正体会到高效率打码 Vi 是在…

南京邮电大学计算机网络实验二(网络路由器配置RIP协议)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验步骤四、实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;五、报告资源 一、 实验目的和要求 掌握思科路由器的运行过程&#xff0c;掌握思科路由器的硬件连线与接口&#xff0c;掌…

模式分解的概念(下)-无损连接分解的与保持函数依赖分解的定义和判断、损失分解

一、无损连接分解 1、定义 2、检验一个分解是否是无损连接分解的算法 输入与输出 输入&#xff1a; 关系模式R&#xff08;U&#xff0c;F&#xff09;&#xff0c;F是最小函数依赖集 R上的一个分解 输出&#xff1a; 判断分解是否为无损连接分解 &#xff08;1&#x…

15-JS封装:入口函数

目录 1 模块化的基本结构 2 编写封装里的jQuery函数 2.1 对象本身上添加css方法 2.2 对象原型上添加css方法 2.3 自定义构造函数 2.4 优化1-伪数组 2.5 优化2-原型链 2.6 简化代码 需求&#xff1a;给页面中所有的div设置字体颜色为红色 jQuery封装&#xff1a;$("…

1. zookeeper分布式协调者

zookeeper分布协调者 一、zookeeper介绍1、软件设计架构1.1 单体架构1.2 SOA架构/分布式1.3 微服务架构 二、zookeeper角色1、角色2、选举机制3、znode类型 三、zookeeper集群部署1、环境规划2、安装jdk3、安装配置zookeeper3.1 安装zookeeper3.2 编辑配置文件3.3 创建myid文件…

基于深度学习视觉算法的多模型文件融合检测系统设计与实现及优化(工人姿态检测+安全帽佩戴检测系统)

1,融合pose.pt(姿态检测)+(安全帽佩戴检测)效果图 实时检测优化后FPS可达20+ 2,原理介绍 YOLOv5是目前应用广泛的目标检测算法之一,其主要结构分为两个部分:骨干网络和检测头。 输入(Input): YOLOv5的输入是一张RGB图像,它可以具有不同的分辨率,但通常为416x416或5…

《精通嵌入式Linux编程》——解锁嵌入式Linux开发的无限可能

文章目录 &#x1f4d1;前言一、书籍概览与作者风采二、内容详解与特色亮点2.1 嵌入式Linux基础与入门2.2 系统编程与内核探索2.3 驱动开发与实战演练2.4 内存管理与性能优化2.5 系统调试与性能提升2.6 综合项目实践与案例分析 三、书籍价值与应用展望 &#x1f4d1;前言 在当今…

基于java+springboot+vue实现的便利店信息管理系统(文末源码+Lw)239

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本华府便利店信息管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的…

WebSocket实现消息实时通知

参考文档&#xff1a;万字长文&#xff0c;一篇吃透WebSocket&#xff1a;概念、原理、易错常识、动手实践、WebSocket 教程 1 背景 有一个需求&#xff0c;需要实现实时通信的功能&#xff0c;如果有新消息&#xff0c;后端会主动发送请求告知前端有新消息&#xff0c;需要前…

Day 44 Ansible自动化运维

Ansible自动化运维 几种常用运维工具比较 ​ Puppet ​ —基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱ruby ​ SaltStack ​ —基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YAML,使得配置脚本更简单 ​ Ansible ​ —基于 …

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求&#xff1a; 校验码描述 校验码计算范围包含包头标识、消息头和消息体&#xff0c;校验算法采用 TCP 和校验&#xff0c;具体规则如下。 将待校验的所有数据分为 16 位的字&#xff08;大端序&#xff09;&#xff0c;如果总长度为奇数个字节&#…

测试的基础知识大全【测试概念、分类、模型、流程、测试用例书写、用例设计、Bug、基础功能测试实战】

测试基础笔记 Day01阶段⽬标⼀、测试介绍⼆、测试常⽤分类2.1 阶段划分单元测试集成测试系统测试验收测试 2.2 代码可⻅度划分⿊盒测试&#xff1a;主要针对功能&#xff08;阶段划分->系统测试&#xff09;灰盒测试&#xff1a;针对接⼝测试&#xff08;阶段划分->集成测…