Oracle审计

审计是监控选定的用户数据库操作的过程

审计的目的:

  1. 调查可疑的数据库活动:
    • 审计可以帮助检测和跟踪潜在的 security breaches、未授权的访问尝试或其他异常行为。
    • 通过分析审计日志,可以确定可疑活动的来源、时间、频率和影响。
  2. 收集特定数据库活动的信息:
    • 审计可以提供关于数据库操作的详细记录,包括谁在何时进行了哪些操作。
    • 这些信息对于合规性报告、性能分析、用户行为分析等都是非常有用的。
      审计可以通过以下方式进行:
  • 按会话审计
    • 监控特定会话的所有操作,从会话开始到结束。
    • 这有助于跟踪单个用户或进程在一段时间内的所有活动。
  • 按访问审计
    • 监控对特定数据库对象(如表、视图、存储过程等)的访问。
    • 这有助于了解哪些用户或角色正在访问或尝试访问特定的数据或资源。
      在实施审计时,可以考虑以下因素:
  • 审计级别:可以设置不同的审计级别,从粗略的概览到详细的记录。
  • 审计策略:定义哪些操作应该被审计,例如,只审计失败的登录尝试或所有数据修改操作。
  • 审计日志:审计记录通常存储在审计日志中,这些日志需要被保护以防篡改,并且应该有适当的备份和监控措施。
  • 合规性:在某些行业,如金融和医疗,审计是法律或法规要求的,用于确保数据的安全和合规性。
    数据库管理系统(如 Oracle, MySQL, SQL Server 等)通常提供内置的审计功能,可以配置以满足特定的审计需求。

标准审计的详细信息

在数据库审计中,标准审计是一种常用的审计类型,它用于监控和记录数据库中的各种活动。以下是标准审计的详细信息:

标准审计的类型和用途
  • SQL 语句审计:可以审计特定的 SQL 语句,如 SELECT、INSERT、UPDATE、DELETE 等。
  • 权限审计:监控权限的授予和撤销,例如系统权限或对象权限。
  • 模式审计:审计对特定数据库模式的访问和操作。
  • 对象审计:审计对特定数据库对象的访问,如表、视图、序列等。
  • 网络和多层活动审计:监控数据库的网络连接和多层应用程序访问。
标准审计记录的存储位置
  • SYS.AUD$ 系统表:标准审计记录可以写入 SYS.AUD$ 系统表。可以通过查询数据字典视图 DBA_AUDIT_TRAIL 来查看这个表的内容。此外,DBA_COMMON_AUDIT_TRAIL 视图结合了标准审计和细粒度审计的日志记录。
  • 操作系统文件:除了将审计跟踪写入操作系统文件格式外,还可以将其写入 XML 格式。这可以通过管理操作系统的审计跟踪来实现。
控制 AUDIT_TRAIL 初始化参数

要控制标准审计跟踪记录的写入方式,需要设置 AUDIT_TRAIL 初始化参数。以下是一些常见的 AUDIT_TRAIL 参数设置:

  • NONE:不记录审计信息。
  • OS:将审计记录写入操作系统文件。
  • DB:将审计记录写入数据库的 SYS.AUD$ 表。
  • XML:将审计记录写入 XML 格式的操作系统文件。
  • EXTENDED:与 DB 相同,但包含更详细的信息。
  • VERBOSE:与 OS 相同,但包含更详细的信息。
    通常在数据库管理文档中会描述 AUDIT_TRAIL 参数的详细设置,包括它们的作用和如何配置。
    通过正确配置 AUDIT_TRAIL 参数,数据库管理员可以确保审计记录按照组织的安全政策和合规性要求进行记录和存储。这对于事后分析、安全审查和合规性报告都是非常重要的。

管理员审计

管理员审计是一种特殊的审计类型,用于监控具有最高系统权限的用户的活动,如数据库的系统管理员(用户 SYS)以及那些使用 SYSDBA 或 SYSOPER 权限连接的用户。以下是如何在 UNIX 和 Windows 系统上实施管理员审计的概述:

UNIX 系统上的管理员审计
  • syslog 审计跟踪:在 UNIX 系统上,可以使用 syslog 审计跟踪来监控系统管理员的活动。syslog 是一种审计跟踪目的地,类似于操作系统文件、XML 格式文件和数据库表。
  • 初始化参数设置
    • AUDIT_SYS_OPERATIONS:此参数用于启用或禁用管理员审计。将其设置为 TRUE 时,系统管理员的活动将被记录在包含审计跟踪的操作系统文件中。
    • AUDIT_SYSLOG_LEVEL:当 AUDIT_TRAIL 参数设置为 os 时,此参数用于将 SYS 和标准的操作系统审计记录写入系统审计日志,使用 syslog 实用程序。
Windows 系统上的管理员审计
  • Windows 事件日志:在 Windows 系统上,系统管理员的活动被记录在 Windows 事件日志中,与其他类型的活动一起。
  • 初始化参数设置
    • AUDIT_SYS_OPERATIONS:同样适用于 Windows,启用此参数将记录系统管理员的活动。
    • 在 Windows 上,通常不需要 AUDIT_SYSLOG_LEVEL 参数,因为 Windows 使用事件日志而不是 syslog。
      以下是如何设置这些初始化参数的示例:
-- 启用管理员审计,记录到操作系统文件
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
-- 在 UNIX 系统上,设置 AUDIT_SYSLOG_LEVEL
ALTER SYSTEM SET AUDIT_SYSLOG_LEVEL=audit_level SCOPE=SPFILE;

在上述 ALTER SYSTEM 命令中,audit_level 应该被替换为适当的 syslog 级别,例如 LOG_ALERTLOG_CRIT
通过配置这些参数,组织可以确保对具有最高权限的用户进行适当的监控,以防止未授权的活动或潜在的滥用行为,并符合内部政策和外部法规的要求。


定义审计

定义审计内容是实施有效审计策略的关键步骤。

定义审计内容
  1. 用户
    • 确定哪些用户的活动需要被审计,例如,可以审计所有用户或仅审计具有特定权限的用户。
  2. 语句
    • 选择要审计的 SQL 语句类型,如 SELECT、INSERT、UPDATE、DELETE 等。
    • 可以审计所有语句或仅审计对特定数据的操作语句。
  3. 对象
    • 确定需要审计的数据库对象,如特定的表、视图、序列或存储过程。
  4. 语句执行
    • 决定是审计所有语句执行,还是只审计成功的或失败的语句执行。
    • 成功的语句执行:审计那些没有错误地完成的语句。
    • 不成功的语句执行:审计那些由于错误(如权限不足、违反约束等)而未能完成的语句。
    • 两者:审计所有语句执行,无论成功与否。
管理审计跟踪
  1. 监控审计跟踪的增长
    • 定期检查审计跟踪文件或表的大小,确保它们不会消耗过多的存储空间。
    • 实施策略来归档旧的审计记录,以便为新的审计数据腾出空间。
  2. 保护审计跟踪免受未授权访问
    • 确保审计跟踪文件或表的安全,只允许授权用户访问。
    • 审计跟踪的访问权限应该与普通数据库对象的权限分开管理。
    • 对审计跟踪实施加密,以保护敏感信息。
    • 定期审查审计跟踪的访问日志,以检测任何未授权的访问尝试。
      通过明确地定义审计内容并有效地管理审计跟踪,组织可以确保其数据库的安全性、合规性和可审核性。这也有助于在发生安全事件时快速响应和调查。

查看审计结果

-- 显示当前登录数据库的用户
SQL> show user;
USER is "SYS"
-- 显示与数据库审计相关的参数及其值
SQL> show parameter audit;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
auditfiledest string ?/rdbms/audit  -- 审计跟踪文件的默认目录位置
-- ? 是一个占位符,它代表数据库的根目录。在实际路径中,? 会被替换为数据库的实际安装路径
auditsysoperations boolean TRUE      -- 是否审计具有 SYSDBA、SYSOPER 和 SYSASM 权限的操作
audittrail string DB                 -- 审计跟踪的类型,DB 表示审计记录写入数据库系统表
transactionauditing boolean TRUE     -- 是否启用事务审计,记录事务级别的详细信息

ls -ltr # 按时间顺序排序,最新的在最下边

按照不同的类别对审计功能进行分类

默认审计类别:
  • 实例启动和实例关闭:
    • 这些操作是默认被审计的,因为它们涉及到数据库的整体运行状态和安全。每当数据库实例启动或关闭时,这些事件都会被记录在审计日志中。
  • 管理员权限:
    • 使用管理员权限(如 SYSDBA、SYSOPER)的操作默认是审计的。这包括对数据库进行维护、配置更改或执行其他需要高级权限的任务。
数据库审计:
  • 由 DBA 启用:
    • 数据库审计功能通常由数据库管理员(DBA)配置和启用。DBA 可以设置审计策略,决定哪些用户操作需要被审计。
  • 无法记录列值:
    • 标准的数据库审计通常不记录被审计操作影响的特定列的值。它主要记录操作的发生,如用户尝试登录、执行特定命令等,但不包括数据的具体内容。
基于值或应用审计:
  • 通过代码实现:
    • 值基于审计或应用审计通常需要通过编写额外的代码(如触发器或应用程序逻辑)来实现。这些代码会在特定的数据更改事件发生时执行,并记录相关信息。
  • 可以记录列值:
    • 与标准数据库审计不同,值基于审计可以记录特定列的值。这对于跟踪对敏感数据的更改非常有用。
  • 用于跟踪表的变化:
    • 值基于审计常用于监控和记录对数据库表中特定列的更改。例如,可以审计对包含个人身份信息(PII)或财务数据的列的任何修改。
      通过这些审计类别,组织可以确保对数据库的敏感操作和数据进行适当的监控,从而维护数据的安全性和合规性。

审计流程

在这里插入图片描述

-- 显示所有与审计相关的初始化参数的当前值
SQL> SHOW PARAMETER audit
-- 将审计跟踪的设置更改为 db,审计记录将被写入数据库的审计系统表中
SQL> ALTER SYSTEM SET audittraildb;
-- 指定更改将被写入服务器参数文件(SPFILE),更改在数据库重启后仍然有效
SQL> ALTER SYSTEM SET audittraildb SCOPESPFILE;
-- 立即关闭数据库实例,以便审计跟踪设置更改生效
SQL> SHUTDOWN IMMEDIATE
-- 启动数据库实例
SQL> STARTUP
-- 计算审计记录表 aud 中的记录数
SQL> SELECT COUNT(*) FROM aud;
-- 启动对用户 U1 的会话活动的审计
SQL> AUDIT SESSION BY U1;
-- 以用户 U1 身份连接到数据库
SQL> CONN U1/yuhang123
-- 以 SYSDBA 权限连接到数据库
SQL> CONN /AS SYSDBA
-- 再次计算 aud 表中的记录数,以查看是否有新的审计记录
SQL> SELECT COUNT(*) FROM aud;
-- 从 dbaaudittrail 视图中选择用户名、时间戳(格式化为日期和时间)和动作名称
SQL> SELECT username, to_char(timestamp, 'dd-mm-yyyy hh24:mi:ss') AS timestamp, actionname FROM dbaaudittrail;
-- 显示所有与审计相关的初始化参数的当前值
SQL> SHOW PARAMETER AUDIT
-- 计算数据库内部审计记录表 AUD 中的记录数
SQL> SELECT COUNT(*) FROM AUD;
-- 启用对用户 U1 的会话活动的审计,U1 登录时将产生审计记录
SQL> AUDIT SESSION BY U1;
-- 以用户 U1 身份连接到数据库,这将触发审计记录的创建
SQL> CONN U1/BBK12345
-- 以 SYSDBA 权限连接到数据库
SQL> CONN /AS SYSDBA
-- 再次计算 AUD 表中的记录数,以查看是否有新的审计记录
SQL> SELECT COUNT(*) FROM AUD;
-- 描述 DBAAUDITTRAIL 视图的结构,显示其列和数据类型
SQL> DESC DBAAUDITTRAIL
-- 从 DBAAUDITTRAIL 视图中选择用户名、时间戳和动作名称
SQL> SELECT USERNAME, TIMESTAMP, ACTIONNAME FROM DBAAUDITTRAIL;
-- 停止对用户 U1 的会话活动的审计
SQL> NOAUDIT SESSION BY U1;

审计选项

审计级别影响
语句审计特定 SQL 语句或影响特定类型数据库对象的语句组。 例如,AUDIT TABLE 审计 CREATE TABLE、TRUNCATE TABLE、COMMENT ON TABLE 和 DELETE [ FROM] TABLE 语句。
权限审计由指定系统权限授权的 SQL 语句。例如,AUDIT CREATE ANY TRIGGER 审计使用 CREATE ANY TRIGGER 系统权限发布的语句。
对象审计特定对象上的特定语句,例如 HR.EMPLOYEES 表上的 ALTER TABLE。
网络审计审计网络协议中的意外错误或网络层中的内部错误。
  1. 启用和禁用数据库审计
    • 通过设置 AUDITTRAIL 初始化参数来启用或禁用数据库审计。
    • AUDITTRAIL 可以设置为 TRUEDB(审计记录写入数据库审计跟踪),OS(审计记录写入操作系统审计跟踪),或 FALSENONE(禁用审计)。
  2. 审计记录的生成
    • 审计记录的生成与用户的事务是独立的,即使事务被回滚,审计记录仍然保留。
    • 审计记录在语句的执行阶段生成,解析阶段的语法错误不会产生审计记录。
  3. 审计选项的设置
    • 使用 AUDIT 命令设置特定的审计选项,包括审计哪些命令、用户、对象或权限。
    • 可以指定是为每次事件发生还是每个会话生成一次审计记录。
    • 使用 NOAUDIT 命令可以关闭不再需要的审计选项。
审计选项及正确命令:
  1. 语句审计:
  • 这会审计特定的 SQL 语句,而不考虑它们影响的对象。
  • 正确命令示例:
  • AUDIT ALTER SYSTEM; (这将审计任何用户执行的任何 ALTER SYSTEM 语句。)
  1. 权限审计:
  • 这会审计系统权限的授予或撤销。
  • 正确命令示例:
  • AUDIT CREATE ANY TABLE; (这将审计任何用户创建任何表的权限授予。)
  1. 模式对象审计:
  • 这会审计对特定模式对象的特定操作。
  • 正确命令示例:
  • AUDIT SELECT ON emi.orders; (这将审计对 emi.orders 表的任何 SELECT 操作。)
细粒度审计(Fine-grained Auditing)

细粒度审计提供了基于数据内容的访问监控。以下是细粒度审计的主要特点和操作步骤:

  • 基于内容的监控:细粒度审计允许监控对数据的访问,特别是当访问涉及到特定内容时,比如特定值或条件。
  • 使用 DBMS_FGA 包:细粒度审计是通过数据库中的 DBMS_FGA PL/SQL 包来实现的。
  • 创建审计策略:数据库管理员(DBA)可以使用 DBMS_FGA 包在目标表上创建一个审计策略。
  • 审计事件记录:当查询块返回的任何行满足审计条件时,审计事件条目将被插入到审计跟踪中。这些条目包括用户名、SQL 文本、绑定变量、策略名称、会话 ID、时间戳和其他属性。
禁用审计(Disabling Auditing)
  • 使用 NOAUDIT 语句:要停止通过 AUDIT 命令启用的审计,可以使用 NOAUDIT 语句。
  • 注意事项
    • NOAUDIT 语句将撤销之前 AUDIT 语句的效果。
    • NOAUDIT 语句必须与之前的 AUDIT 语句具有相同的语法,并且只撤销该特定语句的效果。
    • 如果一个 AUDIT 语句(语句 A)为特定用户启用了审计,而另一个 AUDIT 语句(语句 B)为所有用户启用了审计,那么一个用于禁用所有用户审计的 NOAUDIT 语句将撤销语句 B 的效果,但语句 A 仍然有效,并继续审计该语句指定的用户。
      简而言之,细粒度审计允许数据库管理员精确地监控和记录对特定数据的访问,而禁用审计则是用来停止已经设置的审计操作。
审计用户SYS
  • 提供额外的安全级别:审计用户SYS可以增加数据库的安全性,尤其是在用户SYS账户被广泛使用的数据库中。
  • 设置 AUDIT_SYS_OPERATIONS 为 True:要从Oracle9i数据库第2版开始,对用户SYS的所有命令进行审计,需要将静态参数 AUDIT_SYS_OPERATIONS 设置为 True。
不审计用户SYS
  • 设置 AUDIT_SYS_OPERATIONS 为 False:这是默认值。如果将 AUDIT_SYS_OPERATIONS 设置为 False,则用户SYS的审计级别将保持与之前版本相同。
审计用户SYS的具体内容
  • 审计的命令:当 AUDIT_SYS_OPERATIONS 设置为 True 时,审计将包括实例启动和关闭操作,以及使用管理员权限连接到数据库的命令。
  • 审计文件的记录和位置:用户SYS的审计记录存储在操作系统审计文件中,该文件的位置由参数 AUDIT_FILE_DEST 确定。
  • 审计文件的监控:由于审计文件和Oracle跟踪文件一样会随着时间增长,因此需要定期监控。
总结

对用户SYS进行审计是一种增强数据库安全性的方法,尤其是对于那些广泛使用SYS账户的数据库。通过设置 AUDIT_SYS_OPERATIONS 参数,可以决定是否对SYS执行的所有命令进行审计。如果启用审计,审计记录将存储在由 AUDIT_FILE_DEST 参数指定的操作系统的审计文件中,并且需要定期检查该文件的大小和内容。

关于审计的视图

获取审计信息

要获取关于审计的配置信息,可以查询以下数据字典视图:

  • ALL_DEF_AUDIT_OPTS: 显示默认的审计选项,包括对特定用户或角色的审计设置。
  • DBA_STMT_AUDIT_OPTS: 显示语句审计选项,包括哪些SQL语句被审计。
  • DBA_PRIV_AUDIT_OPTS: 显示权限审计选项,包括哪些系统权限的授予和回收被审计。
  • DBA_OBJ_AUDIT_OPTS: 显示模式对象审计选项,包括哪些数据库对象(如表、视图、过程等)上的操作被审计。
获取审计记录信息

要获取审计记录,可以查询以下数据字典视图:

  • DBA_AUDIT_TRAIL: 显示所有审计跟踪条目,这是最全面的视图,包含了所有类型的审计记录。
  • DBA_AUDIT_EXISTS: 显示与 AUDIT EXISTSAUDIT NOT EXISTS 相关的记录,这些记录涉及到特定条件的存在性检查。
  • DBA_AUDIT_OBJECT: 显示与模式对象相关的审计记录,例如对表或视图的操作。
  • DBA_AUDIT_SESSION: 显示所有连接和断开连接的记录,这些记录可以用来跟踪用户登录和注销数据库的情况。
  • DBA_AUDIT_STATEMENT: 显示语句审计记录,包括被审计的SQL语句的执行情况。
审计跟踪表和预定义视图
  • 数据库审计跟踪 (SYS.AUD$): 在每个Oracle数据库的字典中,有一个单一的表用于存储审计跟踪信息。
  • 预定义视图: 数据库管理员(DBA)创建了一些预定义视图来简化审计记录的查询。上述列出的视图就是其中的一部分,它们提供了对审计跟踪表(SYS.AUD$)中的数据的不同视角。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Appium(四)

一、app页面元素定位 1、通过id定位元素: resrouce-id2、通过ClassName定位:classname3、通过AccessibilityId定位:content-desc4、通过AndroidUiAutomator定位5、通过xpath定位xpath、id、class、accessibility id、android uiautomatorUI AutomatorUI自…

AUTOSAR OS模块详解(三) Alarm

AUTOSAR OS模块详解(三) Alarm 本文主要介绍AUTOSAR OS的Alarm,并对基于英飞凌Aurix TC3XX系列芯片的Vector Microsar代码和配置进行部分讲解。 文章目录 AUTOSAR OS模块详解(三) Alarm1 简介2 功能介绍2.1 触发原理2.2 工作类型2.3 Alarm启动方式2.4 Alarm配置2.5…

【0x04】HCI_Connection_Request事件详解

目录 一、事件概述 二、事件格式及参数 2.1. HCI_Connection_Request 事件格式 2.2. BD_ADDR 2.3. Class_Of_Device 2.4. Link_Type 三、主机响应 3.1. ACL链接类型 3.2. SCO或eSCO链接类型 四、应用场景 4.1. 设备配对场景 4.2. 蓝牙文件传输场景 4.3. 蓝牙物联网…

洛谷题目:P2742 [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包 题解 (本题较难)

题目传送门:P2742 [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 另:由于一些文章的疏忽,导致一些错别字,代码错误,公式错误导致大家的理解和误导,…

Qt中的按钮组:QPushButton、QToolButton、QRadioButton和QCheckBox使用方法(详细图文教程)

💪 图像算法工程师,专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 &a…

2025-1-21 SUCTF 2025 crypto signin

今年充满期待,上线一看两道题,一道看名字应该是跟环相关的,估计做不出来,还有一道签到题,没做出来,遗憾下线 文章目录 signin signin from Crypto.Util.number import * from secret import flagbit_lengt…

C语言之图像文件的属性

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 图像文件属性提取系统设计与实现 目录 设计题目设计内容系统分析总体设计详细设计程序实现…

【Linux】华为服务器使用U盘安装统信操作系统

目录 一、准备工作 1.1 下载UOS官方系统 1.2制作启动U盘 1.3 服务器智能管理系统iBMC 二、iBMC设置U盘启动 一、准备工作 1.1 下载UOS官方系统 服务器CPU的架构是x86-64还是aarch64),地址:统信UOS生态社区 - 打造操作系统创…

macOS如何进入 Application Support 目录(cd: string not in pwd: Application)

错误信息 cd: string not in pwd: Application 表示在当前目录下找不到名为 Application Support 的目录。可能的原因如下: 拼写错误或路径错误:确保你输入的目录名称正确。目录名称是区分大小写的,因此请确保使用正确的大小写。正确的目录名…

python麻辣香锅菜品推荐

1.推荐算法概述 推荐算法出现得很早,最早的推荐系统是卡耐基梅隆大学推出的Web Watcher浏览器导航系统,可以根据当的搜索目标和用户信息,突出显示对用户有用的超链接。斯坦福大学则推出了个性化推荐系统LIRA.AT&T实验室于1997年提出基于协作过滤的个性化推荐系统…

利用大型语言模型在量化投资中实现自动化策略

“Automate Strategy Finding with LLM in Quant investment” 论文地址:https://arxiv.org/pdf/2409.06289 摘要 这个新提出的量化股票投资框架,利用大型语言模型(LLMs)与多智能体系统相结合的方法,通过LLMs从包括数…

JAVA:Spring Boot 实现责任链模式处理订单流程的技术指南

1、简述 在复杂的业务系统中,订单流程往往需要一系列的操作,比如验证订单、检查库存、处理支付、更新订单状态等。责任链模式(Chain of Responsibility)可以帮助我们将这些处理步骤分开,并且以链式方式处理每一个操作…

(开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台

1 项目简介(开源地址在文章结尾) 系统旨在为了帮助鸟类爱好者、学者、动物保护协会等群体更好的了解和保护鸟类动物。用户群体可以通过平台采集野外鸟类的保护动物照片和视频,甄别分类、实况分析鸟类保护动物,与全世界各地的用户&…

算法专题(三):二分查找

本篇还是像之前一样,以举例子的形式向大家讲解!每道题的题目均是传送门!点击跳转对应题! 目录 一、二分查找 1.1 题目 1.2 思路 1.3 代码实现 总结(模版) 朴素版: 二、在排序数组中查找…

C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况

目录 说明 效果 模型 项目 代码 下载 参考 C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况 说明 地址:https://github.com/RapidAI/RapidUnDistort 修正文档扭曲/模糊/阴影等情况,使用onnx模型简单轻量部署&#xff0c…

Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)

本文讲了如何在Excel中抠图头像,换背景色。 1,如何在Excel中抠图头像,换背景色 大家都知道在PS中可以很容易抠图头像,换背景色,其实Excel中也可以抠简单的图,换背景色。 ※所用头像图片为百度搜索&#x…

吴恩达深度学习——神经网络介绍

文章内容来自BV11H4y1F7uH,仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集,横轴为房子大小,纵轴为房子…

xctf-comment(Intruder,git恢复,SQL注入,Hex解码)

这题是2018年网鼎杯真题,考察 Burp Suite 的 Intruder 模块去找用户密码,使用 githacker 恢复代码(githack不行),代码审计发现SQL二次注入,尝试SQL注入读取文件内容,读取的是/home/www/.bash_hi…

分布式系统通信解决方案:Netty 与 Protobuf 高效应用

分布式系统通信解决方案:Netty 与 Protobuf 高效应用 一、引言 在现代网络编程中,数据的编解码是系统设计的一个核心问题,特别是在高并发和低延迟的应用场景中,如何高效地序列化和传输数据对于系统的性能至关重要。随着分布式系…

C++《AVL树》

在之前的学习当中我们已经了解了二叉搜索树,并且我们知道二叉搜索树的查找效率是无法满足我们的要求,当二叉树为左或者右斜树查找的效率就很低下了,那么这本篇当中我们就要来学习对二叉搜索树进行优化的二叉树——AVL树。在此会先来了解AVL树…