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

【数据库】七、数据库安全与保护

七、数据库安全与保护

文章目录

  • 七、数据库安全与保护
    • 安全性
    • 访问控制
    • 数据库安全性控制
      • 用户标识和鉴别
      • 存取控制
        • 自主存取控制(DAC)
          • 存取控制方法:授权与回收
            • GRANT授权
            • REVOKE回收
        • 强制存取控制(MAC)
    • MySQL的安全设置
      • 用户管理
        • 1.创建登录用户
        • 2.修改用户密码
        • 3.修改用户名
        • 4.删除用户
      • 权限管理
        • 1.授予权限grant
        • 2.撤销权限revoke
        • 小结:SQL灵活的授权机制
      • 角色管理
    • 备份与恢复
    • 审计

问题的提出:

数据库的一大特点是数据可以共享
数据共享必然带来数据库的安全性问题
数据库系统中的数据共享不能是无条件的共享

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏

系统安全保护措施是否有效是数据库系统主要的性能指标之一。

安全性

计算机系统存在技术安全、管理安全和政策法律三类安全性问题。

TCSEC/TDI 标准由安全策略、责任、保证和文档四个方面内容构成。


数据库的安全性是指保护数据库,防止不合法的使用,以免数据的泄露、更改或破坏。

数据库的安全性和完整性这两个概念听起来有些相似,有时容易混淆,但两者是完全不同的。

  1. 安全性:保护数据以防止非法用户故意造成的破坏,确保合法用户做其想做的整改。
  2. 完整性:保护数据以防止合法用户无意中造成的破坏,确保用户所做的事情是正确的。

两者不同的关键在于“合法”和“非法”及“故意”与“无意”。


数据库的不安全因素:

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

为了保护数据库,防止故意的破坏,可以从低到高的5个级别上设置各种安全措施。

  1. 物理控制
    计算机系统的机房和设备应加以保护,通过加锁或专门监护等防止系统场地被非法进入,从而进行物理破坏。
  2. 法律保护
    通过立法、规章制度防止授权用户以非法形式将其访问数据库的权限转授给非法者。
  3. 操作系统支持
    无论数据库系统是多么安全,操作系统的安全弱点均可能成为入侵数据库的手段,应防止未经授权的用户从操作系统处着手访问数据库。
  4. 网络管理
    由于大多数DBMS都允许用户通过网络进行远程访问,所以网络软件内部的安全性是很重要的。
  5. DBMS实现:
    DBMS安全机制的职责是检查用户的身份是否合法及使用数据库的权限是否正确。

计算机系统安全模型:

请添加图片描述

  • 系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
  • 数据库管理系统还要进行存取控制,只允许用户执行合法操作
  • 操作系统有自己的保护措施
  • 数据可以以密码形式存储到数据库中

数据库安全性控制的常用方法:

  1. 用户标识和鉴定
  2. 存取控制
  3. 视图
  4. 审计
  5. 数据加密

访问控制

  1. 用户账号管理
  2. 账户权限管理

数据库安全性控制

首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。

然后,在SQL处理层进行自主存取控制强制存取控制,进一步可以进行推理控制

还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。

用户标识和鉴别

用户身份鉴别(Identification & Authentication)

  • 系统提供的最外层安全保护措施
  • 用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)

用户标识和鉴别方法:

  1. 静态口令鉴别
    静态口令一般由用户自己设定,这些口令是静态不变的。
  2. 动态口令鉴别
    口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。
  3. 生物特征鉴别
    通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等。
  4. 智能卡鉴别
    智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。

存取控制

存取控制策略:

数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接触数据,这主要通过数据库系统的存取控制策略来实现。

存取控制机制组成:

  1. 定义用户权限,并将用户权限登记到数据字典中
    用户对某一数据对象的操作权力称为权限
    DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则。
  2. 合法权限检查
    用户发出存取数据库操作请求
    DBMS查找数据字典,进行合法权限检查。

用户权限定义合法权检查机制一起组成了数据库管理系统的存取控制子系统。


常用存取控制方法包括**自主存取控制(DAC)强制存取控制(MAC)**两种。

  1. 自主存取控制(Discretionary Access Control ,简称 DAC)
    用户对不同的数据对象有不同的存取权限
    不同的用户对同一对象也有不同的权限
    用户还可将其拥有的存取权限转授给其他用户
  2. 强制存取控制(Mandatory Access Control,简称 MAC)
    每一个数据对象被标以一定的密级
    每一个用户也被授予某一个级别的许可证
    对于任意一个对象,只有具有合法许可证的用户才可以存取
自主存取控制(DAC)

自主存取控制(DAC)的 SQL 语句包括 GRANTREVOKE 两个。

用户权限由数据对象操作类型两部分构成。

定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作

定义存取权限称为授权

权限类型:

自主存取控制的权限类型分为两种,即角色权限和数据库对象权限。

  1. 角色权限
    给角色授权,并为用户分配角色,用户的权限为其角色权限之和。角色权限由DBA授予。
  2. 数据库对象权限
    不同的数据库对象,可提供给用户不同的操作。该权限由DBA或该对象的所有者(Owner)授予用户。

img

存取控制方法:授权与回收

定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限成为授权。

GRANT授权
grant <> [,<>]...
on <对象类型> <对象名> [,<对象类型> <对象名>]...
to <用户> [,<用户>]...
[with grant option]

将对指定操作对象的指定操作权限授予指定的用户,发出该grant语句的可以是DBA,也可以是已经拥有该权限的用户。接收权限的用户可以是一个或多个具体用户,也可以是PUBLIC,即全体用户。指定WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限授权给其他用户.

grant all privileges
on table student,sc
to user1
with grant option;
REVOKE回收
revoke <> [,<>]...
on <对象类型> <对象名> [,<对象类型> <对象名>]...
from <用户> [,<用户>]...

cascade会级联:依次向下收回权限

revoke insert
on table student
from user1 cascade;

创建数据库模式的权限

create user <username>
[with] [dba|resource|connect]
强制存取控制(MAC)

自主存取能够通过授权机制有效地控制对敏感数据的存取,但它存在一个漏洞——一些别有用心的用户可以欺骗一个授权用户,采用一定的手段来获取敏感数据。

例如,领导Manager是客户单Customer关系的物主,他将“读”权限授予用户A,且A不能再将权限转授他人,其目的是让A审查客户信息,看有无错误。现在A自己另外创建一个新关系A_Customer,然后将自Customer读取的数据写入(即复制到)A_Customer。这样,A是A_Customer的物主,他可以做任何事情,包括再将其权限转授给任何其他用户。

存在这种漏洞的根源在于,自主存取控制机制仅以授权将用户(主体)与被存取数据对象(客体)关联,通过控制权限实现安全要求,对用户和数据对象本身未做任何安全性标注。强制存取控制就可以处理自主存取控制的这种漏洞。

强制存取控制(MAC):

  1. 保证更高程度的安全性
  2. 用户不能直接感知或进行控制
  3. 适用于对数据有严格而固定密级分类的部门
    • 军事部门
    • 政府部门

在强制存取控制中,数据库管理系统所管理的全部实体被分为主体客体两大类。

  • 主体是系统中的活动实体
    • 数据库管理系统所管理的实际用户
    • 代表用户的各进程
  • 客体是系统中的被动实体,受主体操纵
    • 文件、基本表、索引、视图

敏感度标记(Label)

对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)

敏感度标记分成若干级别:

  • 绝密(Top Secret,TS)
  • 机密(Secret,S)
  • 可信(Confidential,C)
  • 公开(Public,P)
  • TS>=S>=C>=P

主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)


强制存取控制规则:

  1. 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
  2. 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据都是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。

强制存取控制的优点是系统能执行“信息流控制”

【注意】这种方法在通用数据库系统中不是十分有用,它只在某些专用系统中有用,例如军事部门或政府部门。

MySQL的安全设置

MySQL安全设置用于实现“正确的人”能够“正确的访问”“正确的数据库资源”。

MySQL通过两个模块实现数据库资源的安全访问控制,即身份认证模块权限验证模块

  • 身份认证模块:用于实现数据库用户在某台登录主机的身份认证,只有通过身份认证的数据库用户才能登录主机并成功连接到MySQL服务器,继而向MySQL服务器发送MySQL命令或SQL语句;
  • 权限验证模块:用于验证MySQL账户是否有权执行该MySQL命令或SQL语句,确保“数据库资源”被真确地访问或者执行。

用户管理

1.创建登录用户

创建用户的语法形式如下:

CREATE USER 用户 [IDENTIFIED BY [PASSWORD] '密码'] [,用户 [IDENTIFIED BY [PASSWORD] '密码']];

【说明】:

  1. 用户的格式:用户名@主机名。其中,主机名指定了创建的用户使用MySQL连接的主机。另外,“%”表示一组主机,localhost表示本地主机。
  2. IDENTIFIED BY子句指定创建用户时的密码。如果密码是一个普通的字符串,则不需要使用PASSWORD关键字。
-- 【例12-1】创建用户tempuser,其口令为temp。
CREATE USER tempuser@localhost IDENTIFIED BY 'temp';

创建的新用户的详细信息自动保存在系统数据库mysql的user表中,执行如下SQL语句,可查看数据库服务器的用户信息。

USE mysql;
SELECT * FROM user;
2.修改用户密码

修改用户密码的语法形式如下:

SET PASSWORD FOR 用户= '新密码';-- 【例12-2】修改用户tempuser的密码为abc。
SET PASSWORD FOR tempuser@localhost='abc';
3.修改用户名

修改用户名的语法形式如下:

RENAME USER 旧用户名 To 新用户名 [ ,旧用户名 To 新用户名] [...]-- 【例12-3】修改普通用户tempuser的用户名为temp_U。
RENAME USER tempuser@localhost TO temp_U@localhost;
4.删除用户

使用DROP USER语句可删除一个或多个MySQL用户,并取消其权限。
其语法形式如下:

DROP USER 用户[,];-- 【例12-5】删除用户temp_U。
DROP USER temp_U@localhost;

权限管理

权限管理主要是对登录到MySQL服务器的数据库用户进行权限验证。所有用户的权限都存储在MySQL的权限表中。

合理的权限管理能够保证数据库系统的安全,不合理的权限设置会给数据库系统带来危害。

权限管理主要包括两个内容,即授予权限撤销权限

1.授予权限grant

GRANT语句的一般格式:

GRANT <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型> <对象名>]TO <用户>[,<用户>]...
[WITH GRANT OPTION];

语义:将对指定操作对象的指定操作权限授予指定的用户

发出GRANT:

  • 数据库管理员
  • 数据库对象创建者(即属主Owner)
  • 拥有该权限的用户

接受权限的用户:

  • 一个或多个具体用户
  • PUBLIC(即全体用户)

WITH GRANT OPTION子句:

  • 指定:可以再授予
  • 没有指定:不能传播

不允许循环授权

-- 【例】把查询Student表权限授给用户U1。
USE jwgl13;
CREATE USER U1@localhost IDENTIFIED BY '123456';
GRANT SELECT 
ON TABLE Student 
TO U1@localhost;#创建用户并授权后,为了使其生效,输入命令:
FLUSH PRIVILEGES;

2:

-- 【例】把对Student表的全部权限授予用户U2和U3。
USE jwgl13;
CREATE USER U2@localhost IDENTIFIED BY '123456';
CREATE USER U3@localhost IDENTIFIED BY '123456';GRANT ALL PRIVILEGES
ON TABLE Student
TO U2@localhost,U3@localhost;
FLUSH PRIVILEGES;
2.撤销权限revoke

授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回。

REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];

例:

-- 【例】把用户U1查询student表的权限收回。
REVOKE SELECT
ON TABLE student
FROM U1@localhost;-- 【例】把用户U4修改学生姓名的权限收回。
REVOKE UPDATE(Sname)
ON TABLE Student 
FROM U4@localhost;-- 【例】收回所有用户对表Score的查询权限。
REVOKE SELECT 
ON TABLE Score 
FROM PUBLIC;-- 【例】把用户U5对Score表的INSERT权限收回。
REVOKE INSERT 
ON TABLE Score
FROM U5@localhost;
小结:SQL灵活的授权机制

数据库管理员

拥有所有对象的所有权限
根据实际情况不同的权限授予不同的用户

用户

拥有自己建立的对象的全部的操作权限
可以使用GRANT,把权限授予其他用户

被授权的用户

如果具有“继续授权”的许可,可以把获得的权限再授予其他用户
所有授予出去的权力在必要时又都可用REVOKE语句收回。

角色管理

数据库角色:被命名的一组与数据库操作相关的权限。

  • 角色是权限的集合
  • 可以为一组具有相同权限的用户创建一个角色
  • 简化授权的过程

1.角色的创建

CREATE  ROLE  <角色名> 

2.给角色授权

 GRANT  <权限>[,<权限>]ON <对象类型>对象名  TO <角色>[,<角色>]

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

GRANT  <角色1>[,<角色2>]TO  <角色3>[,<用户1>][WITH ADMIN OPTION]
  • 该语句把角色授予某用户,或授予另一个角色;
  • 授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION;
  • 指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色。

一个角色的权限:直接授予这个角色的全部权限加上其他角色
授予这个角色的全部权限。

4.角色权限的收回

REVOKE <权限>[,<权限>]ON <对象类型> <对象名>
FROM <角色>[,<角色>]
  • 用户可以回收角色的权限,从而修改角色拥有的权限。
  • REVOKE执行者是角色的创建者
  • 拥有在这个(些)角色上的ADMIN OPTION

5.删除角色

语法形式如下:

DROP ROLE角色[,角色,];

-- 【例】通过角色来实现将一组权限授予一组用户。
-- 步骤如下:-- (1)首先创建一个角色 R1
USE jwgl13;
CREATE ROLE R1@localhost;
-- (2)然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限。
GRANT SELECT, UPDATE, INSERT 
ON TABLE Student 
TO R1@localhost;
-- (3)创建用户U_A、U_B、U_C
CREATE USER U_A@localhost IDENTIFIED BY '111111';
CREATE USER U_B@localhost IDENTIFIED BY '111111';
CREATE USER U_C@localhost IDENTIFIED BY '111111';
-- (4)将这个角色授予U_A、U_B、U_C,使他们具有角色R1所包含的全部权限。
GRANT R1@localhost
TO U_A@localhost,U_B@localhost,U_C@localhost;-- 验证角色是否正确分配,可使用SHOW GRANTS语句:
SHOW GRANTS FOR U_A@localhost 
USING R1@localhost;-- 注意:用户在使用角色权限前必须激活角色,命令形式如下:
SET GLOBAL activate_all_roles_on_login=ON;-- (5)可以一次性通过R1来回收U_A的这3个权限
REVOKE R1@localhost FROM U_A@localhost;

例2

-- 【例】角色的权限修改。
-- 使角色R1在原来的基础上增加了Student表的DELETE 权限。
GRANT DELETE 
ON TABLE Student
TO R1@localhost;-- 【例】收回R1的SELECT权限。
REVOKE SELECT 
ON TABLE Student
FROM R1@localhost; -- 【例】删除角色。
DROP ROLE R1@localhost; 

备份与恢复

导出一整个数据库:

C:\WINDOWS\system32> mysqldump -u 用户名 -p 数据库名 > 导出的文件名C:\WINDOWS\system32> mysqldump -u root -p user > d:\demo.sql

导出一张表:

C:\WINDOWS\system32> mysqldump -u 用户名 -p 数据库名 表名称 > 导出的文件名
C:\WINDOWS\system32> mysqldump -u root -p user user_1 > d\demo.sql

恢复:
数据的回复必须要先登录,登录成功后新建一个数据库,进入到指定的数据库中执行如下命令

mysql> Source 脚本目录(绝对路径)
mysql> Source C:\java\demo.sql

审计

  1. 审计功能把用户对数据库的所有操作自动记录下来放入审计日记中。DBA可以利用审计跟踪的信息,重现导致数据库出现现有状况的一系列事件,中出非法存取数据的人、时间和内容等。
  2. 审计通常是费时间和空间的,一般主要用于安全性要求较高的部门。
  3. 审计一般可以分为用户级审计和系统级审计。
  4. AUDIT语句用来设置审计功能,NOAUDIT用来取消审计功能。
audit alter,update
on student;noaudit all
on student;

相关文章:

【数据库】七、数据库安全与保护

七、数据库安全与保护 文章目录 七、数据库安全与保护安全性访问控制数据库安全性控制用户标识和鉴别存取控制自主存取控制(DAC)存取控制方法&#xff1a;授权与回收GRANT授权REVOKE回收 强制存取控制(MAC) MySQL的安全设置用户管理1.创建登录用户2.修改用户密码3.修改用户名4.…...

卡尔曼滤波-剔除异常值的影响

二郎在看论文的时候&#xff0c;发现了一个针对卡尔曼滤波过程中&#xff0c;测量向量出现误差导致滤波发散的处理方法。 该方法也可以扩展到其他问题中使用&#xff0c;所以二郎在这里写一下。 论文原文&#xff1a;https://www.mdpi.com/1424-8220/20/17/4710 论文翻译对应…...

Java程序之动物声音“模拟器”

题目&#xff1a; 设计一个“动物模拟器”&#xff0c;希望模拟器可以模拟许多动物的叫声和行为&#xff0c;要求如下&#xff1a; 编写接口Animal&#xff0c;该接口有两个抽象方法cry()和getAnimalName()&#xff0c;即要求实现该接口的各种具体的动物类给出自己的叫声和种类…...

jieba中文分词器的使用

Jieba 是一个中文分词的第三方库&#xff0c;主要用于对中文文本进行分词。分词是将文本分割成一个个词语的过程&#xff0c;这在中文文本处理中尤为重要&#xff0c;因为中文不像英文那样有明显的空格来分隔词语。Jieba 的分词算法可以实现精确分词、全模式分词和搜索引擎模式…...

【杂记-浅谈OSPF协议中的RouterDeadInterval】

OSPF协议中的RouterDeadInterval 一、RouterDeadInterval概述二、设置RouterDeadInterval三、RouterDeadInterval的重要性 一、RouterDeadInterval概述 RouterDeadInterval&#xff0c;即路由器死区间隔&#xff0c;它涉及到路由器如何在广播网络上发现和维护邻居关系。Router…...

Django 模版变量

1&#xff0c;模版变量作用 模板变量使用“{{ 变量名 }}” 来表示模板变量前后可以有空格&#xff0c;模板变量名称&#xff0c;可以由数字&#xff0c;字母&#xff0c;下划线组成&#xff0c;不能包含空格模板变量还支持列表&#xff0c;字典&#xff0c;对象 2&#xff0c;…...

【数据结构与算法】图的存储(邻接矩阵,邻接表)详解

图的邻接矩阵数据结构 typedef enum { NDG, DG, NDN, DN } GraphKind;using VRType int; using InfoType int;typedef struct ArcCell {VRType adj;InfoType *info; } Arc[N][N];struct MGraph {ElemType vexs[N];Arc arc;int vexnum, arcnum;GraphKind kind; };ArcCell 结构…...

【深度C++】之“类与结构体”

0. 抽象数据类型 类&#xff08;class&#xff09; 和结构体&#xff08;struct&#xff09; 都是C中的自定义数据类型&#xff0c;是使用C实现面向对象编程思想的起点。 类的基本思想是数据抽象&#xff08;data abstraction&#xff09; 和封装&#xff08;encapsulation&a…...

CTO的职责是什么?

看《架构思维》作者是这样讲的&#xff1a; CTO 到底是做什么的&#xff1f; 我当下的答案是&#xff1a;“CTO 就是一个从技术视角出发&#xff0c;为公司或者所在的部门做正确决策的 CEO。”怎么理解这句话呢&#xff1f;作为一个 CTO&#xff0c;其长期目标和决策优先级与…...

【GD32】从零开始学兆易创新32位微处理器——RTC实时时钟+日历例程

1 简介 RTC实时时钟顾名思义作用和墙上挂的时钟差不多&#xff0c;都是用于记录时间和日历&#xff0c;同时也有闹钟的功能。从硬件实现上来说&#xff0c;其实它就是一个特殊的计时器&#xff0c;它内部有一个32位的寄存器用于计时。RTC在低功耗应用中可以说相当重要&#xf…...

HTTP网络协议

1.HTTP &#xff08;1&#xff09;概念&#xff1a; Hyper Text Transfer Protocol&#xff0c;超文本传输协议规定了浏览器和服务器之间数据传输的规则。 &#xff08;2&#xff09;特点 基于TCP协议:面向连接&#xff0c;安全基于请求-响应模型的:一次请求对应一次响应HTTP协…...

Kubernetes相关生态

1、Prometheus、Metrics Server与Kubernetes监控体系 简介&#xff1a; Prometheus 项目与 Kubernetes 项目一样&#xff0c;也来自于 Google 的 Borg 体系&#xff0c;它的原型系统&#xff0c;叫作 BorgMon&#xff0c;是一个几乎与 Borg 同时诞生的内部监控系统 Pro…...

C语言入门4-函数和程序结构

函数举例 读取字符串&#xff0c;如果字符串中含有ould则输出该字符串&#xff0c;否则不输出。 #include <stdio.h>// 函数声明 int getLine(char s[], int lim); int strindex(char s[], char t[]);int main() {char t[] "ould"; // 要查找的目标子字符串…...

分行业二氧化碳排放数据

分行业二氧化碳排放量 资源名称&#xff1a;分行业二氧化碳排放量 数据来源&#xff1a;中国能源统计年鉴 时间范围&#xff1a;1995-2018年指标&#xff1a;八类能源和总量&#xff1a;煤炭、焦炭、原油、汽油、煤油、柴油、燃料油、天然气...

【OS基础】符合AUTOSAR标准的RTAOS-Alarms详解

目录 前言 正文 7.报警Alarms 7.1配置Alarms 7.1.1激活一个任务 7.1.2 设置一个事件 7.1.3报警回调Alarm Callback 7.1.4 增加计数器值 7.2设置Alarms 7.2.1 绝对Alarms 7.2.2 相对Alarm 7.3自启动Alarms 7.4 删除Alarms 7.5确认何时会发生Alarm 7.6非周期Alarm…...

基于Java的学生成绩管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S结构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 个人中…...

都2024年了,还有人不懂动态代理么?

文章目录 一、定义二、静态代理三、动态代理1. JDK代理1.1 JDK代理实现流程1.2 动态生成的类字节码 2. Cglib代理2.1 Cglib实现流程 四、总结 一、定义 静态代理和动态代理都反映了一个代理模式&#xff0c;代理模式是一种经典的设计模式&#xff0c;常用于为其他对象提供一种…...

ARM功耗管理框架之PPU

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理框架&#xff1f;SCP&#xff1f;PPU&#xff1f;LPI&#xff1f;之间的关系&#xff1f;如何配合&#xff1f; 目录 一、功耗管理框架中的PPU 二、PPU的结构与连接关系 三、PPU操作模式和电源模式及其之间的转…...

说说 SSL 的错误认识和不足之处

最近明月在学习折腾 LNMP 期间无意中建了一个 Typecho 的博客小站&#xff0c;近一周的折腾下来&#xff0c;收获真的不少&#xff0c;致使兴趣也越来越浓了&#xff0c;在升级 LNMP 的时候捎带手的给这个 Typecho 博客也启用了 SSL。并且开启了 memcached 和 OPcache 优化加速…...

Go语言day1

下载go语言的安装程序&#xff1a; All releases - The Go Programming Language 配置go语言的环境变量&#xff1a; 写第一个go语言 在E:\go_workspace当前窗口使用cmd命令: 输入 go run test.go...

【Python机器学习】利用t-SNE进行流形学习

虽然PCA通常是用于变换数据的首选方法&#xff0c;使你能够用散点图将其可视化&#xff0c;但这一方法的性质限制了其有效性。 有一类用于可视化的算法叫做流形学习算法&#xff0c;它允许进行更复杂的映射&#xff0c;通常也可以给出更好的可视化。其中特别有用的一个就是t-S…...

03 - matlab m_map地学绘图工具基础函数 - 设置坐标系(m_coord)

03 - matlab m_map地学绘图工具基础函数 - 设置坐标系&#xff08;m_coord&#xff09; 0. 引言1. m_proj使用方法2. 结语 0. 引言 上一篇介绍了m_proj函数用于初始化投影&#xff0c;本篇介绍的函数m_coord用于初始化地理坐标系或地磁坐标系&#xff0c;地理/地磁坐标系和投影…...

UEC++ 虚幻5第三人称射击游戏(一)

UEC 虚幻5第三人称射击游戏&#xff08;一&#xff09; 创建一个空白的C工程 人物角色基本移动 创建一个Character类添加一些虚幻商城中的基础动画 给角色类添加Camera与SPringArm组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "SpringArm")clas…...

java小代码(1)

代码 &#xff1a; 今日总结到此结束&#xff0c;拜拜&#xff01;...

SLAM ORB-SLAM2(27)词袋模型

SLAM ORB-SLAM2(27)词袋模型 1. 词袋模型1.1. 词汇树1.2. 逆向索引表1.3. 逆向索引表2. 词袋向量3. 匹配候选帧3.1. 找出和当前帧具有公共单词的所有关键帧3.2. 找出和当前帧最多公共单词的关键帧3.3. 剔除共享单词数较少的关键帧3.4. 计算关键帧的共视关键帧组的总得分3.5. …...

OpenAI 的 GPT-5:CTO米拉-穆拉提说,到 2026 年将实现博士级智能(Ph.D.-Level))

据首席技术官米拉-穆拉提&#xff08;Mira Murati&#xff09;介绍&#xff0c;GPT-5 是 OpenAI 人工智能的下一代进化产品&#xff0c;将于 2025 年底或 2026 年初在特定任务中实现博士级智能。 GPT-5 内部代号为 "Gobi "和 “Arrakis”&#xff0c;将是一个多模态…...

macbook配置adb环境和用adb操作安卓手机

&#xff08;参考&#xff1a;ADB工具包的安装与使用_adb工具箱-CSDN博客&#xff09; 第一步&#xff1a;从Android开发者网站下载Android SDK&#xff08;软件开发工具包&#xff09;。下载地址为&#xff1a; 第二步&#xff1a;解压下载的SDK压缩文件到某个目录中。 进入解…...

微软TTS最新模型,发布9种更真实的AI语音

很高兴与大家分享 Azure AI 语音翻译产品套件的两个重大更新&#xff1a; 视频翻译和增强的实时语音翻译 API。 视频翻译&#xff08;批量&#xff09; 今天&#xff0c;我们宣布推出视频翻译预览版&#xff0c;这是一项突破性的服务&#xff0c;旨在改变企业本地化视频内容…...

python爬虫 -爬取 json 格式数据

在Python中&#xff0c;爬取JSON格式的数据通常涉及到发送 HTTP请求到某个URL&#xff0c;并解析返回的JSON数据。以下是一个简单的示例&#xff0c;说明如何使用Python的requests库来爬取JSON格式的数据&#xff1a; 1. 首先&#xff0c;确保你已经安装了requests库。如果没…...

Pytorch(5)-----梯度计算

一、问题 如何使用Pytorch计算样本张量的基本梯度呢&#xff1f;考虑一个样本数据集&#xff0c;且有两个展示变量&#xff0c;在给定初始权重的基础上&#xff0c;如何在每次迭代中计算梯度呢&#xff1f; 二、如何运行 假设有x_data 和 y_data 列表&#xff0c;计算两个列表需…...

C#的膨胀之路:创新还是灭亡

开篇概述 C#&#xff0c;这门由微软推出的编程语言&#xff0c;自2000年诞生以来&#xff0c;以其简洁的语法、强大的功能和广泛的应用场景&#xff0c;赢得了我等程序员的热爱。它在.NET框架的加持下&#xff0c;展现出无与伦比的开发效率和性能。然而&#xff0c;随着时间的流…...

SpringBoot 过滤器和拦截器的区别

SpringBoot 过滤器和拦截器的区别 Spring拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;是Spring框架中用于处理请求的两种机制&#xff0c;虽然它们都可以在请求处理的不同阶段进行拦截和处理&#xff0c;但它们的工作原理和应用场景有所…...

协程执行顺序引发的问题

引言 在Golang中&#xff0c;因为协程执行的顺序是不固定的&#xff0c;如果不在代码里进行控制&#xff0c;可能就会导致预期外的输出。 本文通过分析一段代码的执行来介绍这种情况&#xff0c;以及可行的控制协程执行顺序的方法&#xff1a; sleep()waitGroup 实例分析 代…...

android webview调用js滚动到指定位置

一、activity import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.tencent.smtt.sdk.WebView import com.tencent.smtt.sdk.WebViewClientclass MainActivity : AppCompatActivity() {private lateinit var webView: WebViewoverride fun …...

WPF 深入理解一、基础知识介绍

基础知识 本系列文章是对个人 B站 up 微软系列技术教程 记录 视频地址 https://www.bilibili.com/video/BV1HC4y1b76v/?spm_id_from333.999.0.0&vd_source0748f94a553c71a2b0125078697617e3 winform 与 wpf 异同 1.winform 项目结构 编辑主要是在 Form1.cs(页面)&#…...

腾讯云点播ugc upload | lack signature 问题处理

我犯一个很傻的错误 参考腾讯云官方文档&#xff1a;云点播 Web 端上传 SDK-开发指南-文档中心-腾讯云 进行开发&#xff0c;但是却报错了&#xff0c;始终找不到问题&#xff0c;错误提示&#xff1a;ugc upload | lack signature&#xff0c;意思是缺少签名或者签名失败&…...

计算机视觉实验二:基于支持向量机和随机森林的分类(Part one: 编程实现基于支持向量机的人脸识别分类 )

目录 一、实验内容 二、实验目的 三、实验步骤 四、实验结果截图 五、实验完整代码 六、报错及解决方案 PS:实验的运行速度受电脑性能影响,如遇运行卡顿请耐心等待。 一、实验内容 编程实现基于支持向量机的人脸识别分类,基本功能包括:Labeled Faces in th…...

5.什么是C语言

什么是 C 语言? C语言是一种用于和计算机交流的高级语言, 它既具有高级语言的特点&#xff0c;又具有汇编语言的特点 非常接近自然语言程序的执行效率非常高 C语言是所有编程语言中的经典&#xff0c;很多高级语言都是从C语言中衍生出来的&#xff0c; 例如:C、C#、Object-C、…...

DINO-DETR

DINO-DETR DETR收敛慢的问题1. Contrastive DeNoising Training(对比方法降噪训练)2. Mixed Query Selection(混合查询选择方法对锚点进行初始化)3. Look Forward Twice(两次前向方法)==DINO模型的传播过程,以及部分模块的改进==DETR收敛慢的问题 PnP-DETR(ICCV 2021) 改进了…...

Representation RL:HarmonyDream: Task Harmonization Inside World Models

ICML2024 paper code Intro 基于状态表征的model-based强化学习方法一般需要学习状态转移模型以及奖励模型。现有方法都是将二者联合训练但普遍缺乏对如何平衡二者之间的比重进行研究。本文提出的HarmonyDream便是通过自动调整损失系数来维持任务间的和谐&#xff0c;即在世界…...

Centos7系统下Docker的安装与配置

文章目录 前言下载Docker安装yum库安装Docker启动和校验配置Docker镜像加速卸载Docker 前言 此博客的内容的为自己的学习笔记&#xff0c;如果需要更具体的内容&#xff0c;可查看Docker官网文档内容 注意&#xff1a;以下命令在root管理员用户下运行&#xff0c;如果在普通用…...

无人机校企合作

有没有想过&#xff0c;无人机和校企合作能碰撞出怎样的火花&#xff1f;&#x1f525;今天就来给大家揭秘一下这个神秘组合&#xff01; 无人机&#xff0c;作为现代科技的代表&#xff0c;已经渗透到我们生活的方方面面。而校企合作&#xff0c;更是推动科技创新、培养人才的…...

八爪鱼现金流-028,个人网站访问数据统计分析,解决方案

个人网站访问数据统计分析&#xff0c;解决方案 调研 结论&#xff1a;使用百度统计 步骤 1.注册百度统计 2.获取安装代码 3.在项目中&#xff0c;页面代码添加如下片段 <script>var _hmt _hmt || [];(function() {var hm document.createElement("script&…...

大厂面试官问我:布隆过滤器有不能扩容和删除的缺陷,有没有可以替代的数据结构呢?【后端八股文二:布隆过滤器八股文合集】

往期内容&#xff1a; 面试官问我&#xff1a;Redis处理点赞&#xff0c;如果瞬时涌入大量用户点赞&#xff08;千万级&#xff09;&#xff0c;应当如何进行处理&#xff1f;【后端八股文&#xff08;1&#xff09;】-CSDN博客 本文为【布隆过滤器八股文合集】初版&#xff0c…...

PHP米表域名出售管理源码带后台

源码介绍 html5米表源码PHP域名销售程序安装方法&#xff1a; 本站已测试,各项功能正常,功能易用,不复杂,非常适合个人米表使用 1、所有文件传至网站目录 2、浏览器执行http://你的访问网址/install 3、输入mysql帐号及密码信息&#xff0c;提交安装 源码截图 源码下载 …...

【开发12年码农教你】Android端简单易用的SPI框架-——-SPA

Service(priority 1) public class APrinterService implements IPrinterService { Override public void print() { System.out.println(“this is a printer service.”); } } 复制代码 B模块 —— BPrinterService Service(path“b_printer”, priority 2) public class…...

以太坊==MetaMask获取测试币最新网址

估算分数https://community.infura.io/t/unable-to-receive-sepolia-eth-from-faucet/7715 Gitcoin Passport 水龙头地址&#xff0c;填入自己的测试地址 水龙头项目地址 GitHub - pk910/PoWFaucet: Modularized faucet for EVM chains with different protection methods (…...

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器 语言 &#xff1a;Verilg HDL EDA工具&#xff1a;ISE、Vivado、Quartus II 军用FPGA软件 Verilog语言的编码准测之触发器、锁存器一、引言二、基本编程规范之触发器强制准则1---禁止在同一个 always 语句中混合使用有复位…...

智能汽车 UI 风格独具魅力

智能汽车 UI 风格独具魅力...

javafx例子笔记

文章目录 创建过程javafx独立版报错 Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError: <init> javafx是java gui工具。 一般会转换为exe&#xff0c;成为可交互的应用。 那么来个简单的例子吧。 先说明一点&#xff0c;javafx不…...

SQL面试题练习 —— 连续签到领金币

目录 1 题目2 建表语句3 题解 题目来源&#xff1a;百度。 1 题目 有用户签到记录表&#xff0c;t_coin_signin&#xff0c;记录用户当天是否完成签到&#xff0c;请计算出每个用户的每个月获得的金币数量&#xff1b; 签到领金币规则如下&#xff1a; 用户签到获得1金币&…...

利用Python破解隔壁家的WiFi密码

文章目录 1&#xff0c;破解思路1.1&#xff0c;假定邻居家的WiFi密码长度是8位&#xff0c;且仅由0-9这10个数字&#xff0c;a-z这26个小写字母&#xff0c;A-Z这26个大写字母组成1.2&#xff0c; 用python程序对0-9&#xff0c;a-z&#xff0c;A-Z这62个元素进行排列组合。1.…...

ISP IC/FPGA设计-第一部分-SC130GS摄像头分析(0)

1.介绍 SC130GS是一款国产的Global shutter CMOS图像传感器&#xff0c;最高支持1280Hx1024V240fps的传输速率&#xff1b;SC130GS有黑白和彩色款&#xff0c;作为ISP开发选择彩色的&#xff0c;有效像素窗口为1288Hx1032V&#xff0c;支持复杂的片上操作&#xff0c;选择他理…...

【AI大模型】跌倒监控与健康:技术实践及如何改变未来

文章目录 1. **背景与意义**2. **关键技术与方法**2.1 传感器数据融合2.2 深度学习模型2.3 行为模式识别2.4 预测与预防 3. **应用场景**3.1 老年人跌倒预警3.2 康复患者监测3.3 高风险职业防护 4. **实践案例**案例1&#xff1a;某老年社区的跌倒预警系统案例2&#xff1a;康复…...

在Java中使用机器学习算法的实际案例

在Java中使用机器学习算法的实际案例 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 机器学习作为人工智能的重要分支&#xff0c;正在被广泛应用于各个领域&…...

详细解释Redis的SET NX命令

详细解释Redis的SET NX命令 SET NX 命令是 Redis 中用于实现分布式锁的一个重要命令。它的语法和用法如下&#xff1a; SET key value NX [EX seconds | PX milliseconds]参数解释 key&#xff1a;要设置的键名。value&#xff1a;要设置的键值&#xff0c;通常用一个唯一标…...

来自90年前的首款银箭赛车,梅赛德斯-奔驰W25创造无数传奇

90年前,这款银色单座赛车奠定了“银箭”这个名称,至今仍适用于梅赛德斯-奔驰的赛车。梅赛德斯-奔驰W25于1934年6月3日在纽博格林的艾菲尔赛事中首次亮相,Manfred von Brauchitsch赢得比赛,创下平均时速122.5公里的新纪录。这是成功故事的开始,延续至今天的梅赛德斯-AMG Pe…...

美国电动汽车电力需求跃升至新高

盖世汽车讯 据外媒报道,随着美国电动汽车保有量的持续提升,此类车型的电力消耗也迎来了提升。2024年前两个月中,美国电动汽车的用电量同比跃升了50%以上。美国能源信息署发布的数据显示,今年前2个月,美国电动汽车总用电量为158万MWh,而2023年同期为104万MWh。与2023年同期…...

大模型“1元购”?AI公司加速奔向应用端“大航海时代”

自字节跳动发布豆包大模型&#xff0c;互联网大厂纷纷就位&#xff0c;击穿“地板价”的打法从C端向B端拓展。这也成为今年“618”最亮眼的价格战。 5月15日&#xff0c;字节跳动率先宣布豆包大模型已通过火山引擎开放给企业客户&#xff0c;大模型定价降至0.0008元/千Tokens&…...

基于GO 写的一款 GUI 工具,M3u8视频下载播放器-飞鸟视频助手

M3u8视频下载播放器-飞鸟视频助手 M3u8视频飞鸟视频助手使用m3u8下载m3u8 本地播放 软件下载地址m3u8嗅探 M3u8视频 M3u8视频格式是为网络视频播放设计&#xff0c;视频网站多数采用 m3u8格式。如腾讯&#xff0c;爱奇艺等网站。 m3u8和 mp4的区别&#xff1a; 一个 mp4是一个…...

kotlin基础之协程

Kotlin协程&#xff08;Coroutines&#xff09;是Kotlin提供的一种轻量级的线程模型&#xff0c;它允许我们以非阻塞的方式编写异步代码&#xff0c;而无需使用回调、线程或复杂的并发API。协程是一种用户态的轻量级线程&#xff0c;它可以在需要时挂起和恢复&#xff0c;从而有…...

用Spring Security快速实现 RABC模型案例

RABC模型通常是指“基于角色的访问控制”&#xff08;Role-Based Access Control&#xff0c;RBAC&#xff09;模型。这是一种广泛使用的访问控制机制&#xff0c;用于限制用户或系统对计算机或网络资源的访问。在RBAC模型中&#xff0c;权限与角色相关联&#xff0c;用户通过分…...