[CISSP] [8] 安全模型,设计和能力的原则
开源软件(Open Source Software, OSS)
优点:
-
透明性高
开源软件的源代码对公众开放,安全专家和用户可以检查其实现,验证是否存在安全隐患。 -
社区驱动的漏洞发现
有大量开发者和安全研究人员参与代码审查,可以更快发现和修复漏洞。 -
可定制性强
用户可以根据自身需求修改源代码,更好地满足特定的安全策略或需求。 -
降低供应链信任风险
用户可以自行构建和验证软件,降低对第三方厂商的完全信任需求。
缺点:
-
不保证质量与维护
开源项目的维护可能不稳定,开发者流动性大,一些项目存在无维护风险。 -
缺乏正式支持
与商业闭源软件相比,开源软件通常缺少标准化的技术支持服务。 -
可能被篡改
如果使用未验证的来源或构建方式,容易被插入恶意代码。
闭源软件(Closed Source Software)
优点:
-
官方支持和维护
通常由厂商提供正式的技术支持和长期维护,适合企业级使用。 -
统一的安全控制策略
安全更新由厂商集中发布,便于一致性管理。 -
商业责任保障
商业合同中可纳入安全责任、补丁及时性等约定。
缺点:
-
不可审查源码
安全研究人员无法查看其内部实现,需完全信任厂商。 -
潜在后门风险
若厂商不遵守安全开发流程,可能存在隐性漏洞或后门,用户难以发现。 -
依赖供应商
安全修复速度依赖厂商响应速度,可能导致滞后风险。
“默认安全配置”(Secure Defaults 或 Default Secure Configuration)是 CISSP 第八章中一个非常重要的安全设计原则,在实际系统设计、安全架构和产品评估中经常被考查。
默认安全配置(Secure Defaults)
定义:
默认安全配置是指系统或软件在初始安装或部署时,应该采用最安全的默认设置,即:
- 默认开启必要的安全机制
- 默认关闭不必要的服务或功能
- 默认使用强加密和身份验证配置
为什么重要:
-
减少人为错误风险
很多安全事件是因为管理员未及时关闭默认账户、开放端口、或禁用不安全功能。 -
提升初始安全性
即使用户未手动配置,系统也应默认提供一定程度的防护。 -
防止“即装即漏洞”
若默认配置不安全,如默认密码“admin/admin”,系统在未配置前即存在风险。
安全配置的关键要素:
项目 | 安全默认做法 |
---|---|
用户账户 | 禁用或删除默认账户,强制创建新账户 |
密码策略 | 默认启用强密码策略(复杂度、长度、过期) |
服务 | 默认关闭非必要服务和端口 |
权限 | 默认使用最小权限原则 |
网络访问 | 默认限制外部访问(如关闭公网接口) |
加密 | 默认启用加密(如 HTTPS、TLS 1.2 以上) |
日志记录 | 默认启用审计和日志功能 |
“失效安全”(Fail-Safe 或 Fail-Secure)也是 CISSP 第八章中的核心安全设计原则之一,主要强调在系统出现故障或异常情况下,应该优先保证系统安全性,而不是可用性。
失效安全(Fail-Safe / Fail-Secure)
定义:
失效安全是一种安全设计策略,指的是当系统发生故障、异常、或组件失效时,系统应自动切换到最安全的状态,防止进一步的破坏或未经授权的访问。
两种常见形式:
类型 | 说明 | 示例 |
---|---|---|
Fail-Safe | 失效后默认拒绝访问,优先保护数据和资源 | 门禁系统断电后门上锁 |
Fail-Open | 失效后默认允许访问,优先保持可用性 | 防火系统失效时默认开放网络通信 |
注意:Fail-Open 在某些高可用场景下可接受,但不推荐用于高安全性系统。
实例解析:
-
门禁系统
- Fail-Safe:断电后门锁上,防止未授权人员进入(安全优先)
- Fail-Open:断电后门打开,方便疏散(生命安全优先)
-
防火墙或入侵检测系统
- Fail-Safe:系统异常时自动封锁外部流量(防止攻击)
- Fail-Open:系统异常时继续放行流量(可用性优先,但存在风险)
与其他原则的关系:
- 与默认安全配置类似,失效安全强调“在最坏情况下仍然默认保护系统”。
- 与最小权限原则配合使用可以有效减少失效造成的攻击面。
- 属于系统弹性设计中的核心部分。
KISS 原则(Keep It Simple, Stupid)是 CISSP 安全架构设计中一个非常经典且重要的原则,中文常翻译为“保持简单,傻瓜式设计”或“保持简单,别搞复杂”。
KISS 原则(Keep It Simple, Stupid)
定义:
KISS 原则主张在系统设计中应尽可能保持结构、流程和实现的简洁明了,因为复杂性是安全的敌人。
- 简洁的系统更容易理解、维护和审查
- 简洁的代码更少出错,更不容易隐藏漏洞
- 简洁的架构更容易验证和实施安全控制
KISS 在信息安全中的应用:
场景 | KISS 实现方式 |
---|---|
安全架构设计 | 只引入必要的组件,避免过度堆叠技术层 |
访问控制系统 | 使用清晰的权限层级模型,避免嵌套混乱 |
加密方案 | 使用标准、成熟算法,避免自创复杂加密逻辑 |
审计和日志系统 | 结构清晰,便于分析,不堆砌无用数据 |
编码实践 | 代码模块化、无冗余逻辑、接口清晰 |
“分段防火墙”通常指的是在网络架构中结合网络分段(Segmentation)技术部署的防火墙策略,用于实现不同网络区域之间的安全隔离和访问控制。这是企业级安全设计中的核心组件,尤其是在 分区/分段/分控(Zone/Segment/Control) 的模型中非常常见。
分段防火墙(ISFW)
定义:
分段防火墙(Segmented Firewall) 是指在网络被分为多个逻辑或物理子网(如 VLAN、子网、DMZ、用户区域、服务器区域等)之后,在这些子网之间部署的防火墙,以控制跨分段流量的通信权限。
它的目标是:
- 最小化信任,阻止不必要的通信路径
- 隔离关键资产,减小攻击面
- 增强访问控制粒度,使策略更灵活且有针对性
常见部署场景
区域 | 分段目标 | 防火墙策略示例 |
---|---|---|
用户网络 ↔ 服务器区 | 阻止用户直接访问核心数据库 | 限制端口,仅允许业务流量(如 443) |
办公网 ↔ 生产网络 | 控制横向访问 | 拒绝大多数流量,仅允许特定管理连接 |
DMZ ↔ 内部网络 | 防止攻击者通过 DMZ 入侵内部 | 从内网发起访问可控,DMZ 不可主动连接内网 |
分布式数据中心 ↔ 云端 | 精细化访问控制 | 按应用、服务、身份分段 |
多因子身份认证(MFA)
定义:
MFA 是指用户在访问系统时,必须提供两个或以上“不同类型”的认证因子,以增强身份验证的安全性。
认证因子类别
类型 | 描述 | 示例 |
---|---|---|
知道的东西 | Something you know | 密码、PIN码、安全问题 |
拥有的东西 | Something you have | 手机、硬件令牌、短信验证码 |
属于你的 | Something you are | 指纹、面部识别、虹膜、声音 |
MFA 必须来自至少两个不同类别,例如密码(知道)+ 手机验证码(拥有)
MFA 与其他认证方式的对比
认证方式 | 安全性 | 便捷性 | 是否推荐用于敏感系统 |
---|---|---|---|
单因素认证(如密码) | 低 | 高 | 否 |
双因素认证(2FA) | 中 | 中 | 是 |
多因素认证(MFA) | 高 | 适中 | 是(强烈推荐) |
常见 MFA 实施方式
- TOTP(时间同步一次性密码):如 Google Authenticator、Authy
- 短信验证码 / 邮件验证码(不推荐,容易被拦截)
- 推送确认:如 Microsoft Authenticator、Duo
- 硬件令牌:如 YubiKey、RSA SecureID
- 生物识别:指纹、人脸、声纹等
- 基于 FIDO2/WebAuthn 的无密码认证:逐步替代传统 MFA 的方向
身份和访问管理(IAM)
IAM(Identity and Access Management) 是指一组用于标识用户身份、验证身份真实性、分配访问权限,并管理这些权限的技术、策略和流程。
IAM 的核心组成模块
模块 | 描述 |
---|---|
身份识别(Identification) | 唯一标识用户或实体(如用户名、ID) |
身份验证(Authentication) | 验证用户是否为其声称的身份(如密码、生物识别、MFA) |
授权(Authorization) | 决定用户是否有权限访问特定资源(如访问控制模型) |
审计与监控(Accountability) | 记录和追踪用户行为,确保用户对其行为负责(如日志、审计) |
访问控制模型
IAM 的授权过程依赖于访问控制模型:
模型 | 描述 | 示例 |
---|---|---|
DAC(自主访问控制) | 资源所有者决定谁可以访问 | Windows 文件权限 |
MAC(强制访问控制) | 基于标签/等级进行严格控制 | 军事系统、安全级别访问 |
RBAC(基于角色的访问控制) | 根据用户角色授予权限 | HR 有查看员工资料权限 |
ABAC(基于属性的访问控制) | 基于用户、资源、环境等属性灵活授权 | “若用户是经理且时间是工作日” |
PBAC(基于策略的访问控制) | 基于策略语言进行动态授权 | 用于云平台、微服务 |
常见 IAM 技术组件
组件/技术 | 功能 |
---|---|
SSO(单点登录) | 用户登录一次即可访问多个系统 |
LDAP | 目录服务,常用于存储用户账户信息 |
Active Directory(AD) | 微软的目录服务和身份管理平台 |
Federation(身份联合) | 在组织之间共享认证凭证(如 SAML, OAuth) |
IAM 平台 | 如 Okta、Ping Identity、Azure AD 等 |
气隙(Air Gap)
定义:
气隙是一种将计算机系统或网络物理隔离的安全策略,即该系统与其他系统(如互联网或企业内网)之间没有任何物理或逻辑连接。
简而言之:断网运行,完全隔离。
气隙的主要目的
目的 | 说明 |
---|---|
防止远程攻击 | 没有网络接口就无法从远程攻击 |
保护敏感数据 | 如国家秘密、军事情报、金融核心数据等 |
防止数据泄露 | 无法通过网络传输数据,阻止外泄通道 |
增强物理安全控制 | 必须物理访问设备,增加攻击成本 |
典型应用场景
行业 / 场景 | 说明 |
---|---|
军事系统 | 高机密作战系统、情报分析终端 |
国家基础设施(ICS/SCADA) | 电力、水利、核电控制系统 |
金融行业 | 清算核心系统、风控引擎 |
科研机构 / 实验室 | 保密研究项目、加密研究 |
加密钱包 / 冷钱包 | 数字货币私钥存储于“气隙”设备中 |
如何实现气隙隔离
控制点 | 措施示例 |
---|---|
网络连接 | 禁用网卡、无线网、蓝牙、USB 网卡等 |
物理接口 | 禁用 USB、光驱、SD 卡槽,使用封条或胶封 |
操作系统 | 禁用自动运行、日志审计强化 |
数据转移控制 | 严格使用加密介质(如特定 U 盘,需审批) |
气隙系统的风险与挑战
虽然气隙安全性强,但并非不可突破,且存在管理挑战:
风险类别 | 说明 |
---|---|
“跨气隙攻击” | 攻击者通过 USB、恶意外设、甚至电磁波、声音传播信息等手段绕过气隙 |
操作繁琐 | 需要手动传输文件,效率低 |
更新困难 | 系统补丁、安全策略无法自动同步,需人工操作 |
依赖人为控制 | 安全策略靠制度+人为执行,容易被忽视或违反 |
真实案例:
- Stuxnet 病毒:成功感染了伊朗核设施气隙控制系统,通过 USB 间接入侵
隐私设计(PbD)
定义:
隐私设计(Privacy by Design,PbD) 是由安娜·卡瓦科(Ann Cavoukian)提出的隐私保护框架,旨在将隐私考虑嵌入到产品和服务的设计中,从规划阶段开始就保护用户隐私。
该原则强调通过以下方式实现隐私保护:
- 从一开始就设计隐私:隐私保护应是设计的一部分,而不是附加的安全措施。
- 默认隐私设置:系统默认配置应最大程度地保护个人隐私。
- 将隐私视为一种隐性权利:尊重和保障用户隐私。
PbD 的七个核心原则
PbD 的核心原则包括以下七个:
原则 | 描述 |
---|---|
1. 积极隐私(Proactive not Reactive) | 隐私保护应是主动设计,而非事后补救。我们应预测隐私风险并采取措施应对。 |
2. 隐私作为默认设置(Privacy as the Default Setting) | 在没有明确选择时,系统默认应最大化保护隐私,确保最小的数据收集。 |
3. 隐私设计完整性(Privacy by Design) | 隐私应在技术设计、流程和程序中集成,而不是附加的。 |
4. 完整的功能性(Full Functionality — Positive-Sum, not Zero-Sum) | 隐私保护与其他功能(如安全性、可用性)应协调,互不妥协。 |
5. 安全性(End-to-End Security — Full Lifecycle Protection) | 在整个生命周期中保护个人数据,包括存储、传输和删除。 |
6. 可视化和可控性(Visibility and Transparency) | 用户应有明确的隐私政策,并且他们应能清楚地看到隐私设置和数据使用情况。 |
7. 用户的隐私权(Respect for User Privacy) | 给用户充分控制个人数据的权利,并以透明、尊重的方式处理数据。 |
PbD 的实施方式
实施Privacy by Design时,可以采取以下措施来确保隐私得到保护:
1. 数据最小化(Data Minimization)
- 仅收集和处理必要的数据。
- 使用数据匿名化、加密等方法,减少存储敏感数据的风险。
2. 数据加密与安全存储
- 对所有存储的个人数据进行加密,确保数据在传输过程中也保持加密。
- 利用 端到端加密(E2EE) 确保数据在整个生命周期中始终受到保护。
3. 强制执行最小权限原则
- 设计和部署系统时,确保最小权限访问,即用户和员工只应访问其工作所需的数据。
4. 透明度和用户控制
- 提供用户清晰、透明的隐私政策,让用户能够方便地管理和查看他们的数据。
- 提供隐私控制面板,让用户可以轻松地更新偏好设置或删除数据。
5. 增强审计和日志记录
- 对所有访问、修改、删除数据的操作进行审计和日志记录,确保可以追踪隐私违规行为。
6. 应急响应与合规性监控
- 确保系统设计中包括了隐私保护事件的快速响应机制。
- 定期审查隐私合规性和数据保护措施,确保其符合GDPR等法规要求。
TCB(可信任计算基)
定义:
TCB(Trusted Computing Base) 是指实现安全功能的所有硬件、固件和软件组件的集合,构成了一个系统的“可信任”部分。它保证了系统的安全性,例如防止恶意软件的入侵、数据泄露等。
TCB 可以看作是实现系统安全策略的最小可信组件集,任何一个不可信的部分都会削弱系统的整体安全性。
TCB 的核心组成部分
1. 硬件
- CPU:负责处理指令和控制系统的核心部分。
- 内存:存储数据和程序,确保数据不会被未经授权访问。
- 硬件安全模块(HSM):专门用于加密操作的硬件,用于密钥管理、身份验证等。
固件
- BIOS/UEFI:在操作系统启动之前负责加载操作系统和管理硬件资源的程序。可信的固件对于启动过程中保护系统至关重要。
- 引导程序(Bootloader):启动操作系统时加载和验证系统核心(内核)。
操作系统和核心服务
- 内核(Kernel):操作系统的核心,控制系统的资源和调度任务。内核中的漏洞或不安全代码可能直接影响 TCB 的安全性。
- 安全模块:包括认证、加密、访问控制等子系统,用于确保系统的完整性和保密性。
认证和安全协议
- 用户身份验证:例如多因素认证(MFA),密码学算法等安全协议。
- 加密服务:确保数据传输和存储中的机密性。
TCB 的目标与作用
1. 保护机密性
- TCB 保障数据、信息和资源不被未经授权的访问。
2. 防止篡改与攻击
- 通过验证代码的完整性,防止恶意软件的注入与篡改。
3. 实现可验证性
- 可信任计算基确保每个组件都经过验证,保证操作系统或应用程序在预期的安全环境中运行。
4. 增强系统可信度
- 确保计算机系统的功能运行不受攻击,并且在面临外部威胁时能够提供安全性保障。
可信计算与 TCB 的关系
可信计算(Trusted Computing)是一个广泛的概念,它包括一系列技术、协议和标准,旨在通过硬件、软件和操作系统的共同协作来增强计算环境的安全性。TCB 是可信计算的基础,它是系统可信计算环境的核心。
1. TCB 与 TPM
- TPM(Trusted Platform Module) 是一个硬件安全模块,它是实现可信计算和保护 TCB 的关键组件。TPM 可用于生成和存储加密密钥,提供硬件级的安全性。
2. TCB 与 Attestation
- Attestation(认证) 是确保计算机系统的安全性和可信性的一种方法。通过 Attestation,可以验证系统是否在受信任的环境中运行。TCB 是这种认证的基础。
TCB 的评估和管理
TCB 的安全性与完整性对整个计算环境的可信度至关重要。以下是评估和管理 TCB 的常见方法:
1. 最小化 TCB 规模
- 为了降低攻击面,确保 TCB 仅包含最基本、最必要的组件,避免不必要的模块增加系统复杂性和潜在风险。
2. 安全审计与验证
- 对 TCB 组件进行定期的安全审计和验证,检查是否存在漏洞或不符合安全标准的组件。
3. 及时补丁和更新
- TCB 组件(包括硬件、固件、操作系统)必须及时应用安全补丁和更新,以防范已知的攻击和漏洞。
4. 完整性保护
- 使用技术(如加密哈希、签名验证等)确保 TCB 组件在整个生命周期中保持完整性,防止篡改。
Meltdown 和 Spectre 是两种影响现代处理器架构的严重安全漏洞,它们利用了硬件层面的缺陷,可以使攻击者在不应有权限的情况下访问内存内容。它们暴露了处理器的预测执行特性,并被认为是现代计算机系统安全的重大威胁。下面我们来详细介绍这两种漏洞,以及它们对内存保护和计算安全的影响。
Meltdown(熔断)
1. 概述
- Meltdown 是在 2018 年 1 月发现的一个安全漏洞,影响了几乎所有的Intel处理器。它利用了出错执行(Out-of-Order Execution)和内存隔离的设计缺陷,使得攻击者能够绕过系统的内存保护机制,直接访问操作系统内核空间的敏感数据。
2. 漏洞原理
- Meltdown 漏洞通过绕过操作系统和硬件的内存保护机制,使得攻击者能够访问受保护的内核内存。攻击者能够通过合法的用户进程代码,利用处理器的推测执行特性,访问并窃取其他进程的数据。
- 推测执行:当处理器遇到可能会阻塞的指令时,它会预测指令的结果并继续执行,以提高性能。如果推测执行的结果是错误的,处理器会丢弃结果。然而,即使错误的推测执行结果被丢弃,处理器会在缓存中保留这些信息。
- 攻击者可以通过缓存侧信道攻击,读取这些被丢弃的数据。
3. 影响
- Meltdown 主要影响 Intel 处理器,尤其是2008年之后的处理器系列(包括部分Core、Xeon、Atom等)。AMD 处理器和大多数ARM 处理器不受影响。
- 攻击者能够从应用程序层(例如浏览器或恶意代码)绕过内存隔离访问内核级别的敏感数据,包括密码、加密密钥等。
4. 防御措施
- 操作系统修复:许多操作系统(如 Linux、Windows)发布了内核隔离补丁,以保护内核空间的内存不被普通用户空间进程访问。这通过修改操作系统内核的页面表(page tables)和虚拟内存管理来实现。
- 硬件修复:新发布的处理器版本加入了硬件支持,用于修复 Meltdown 漏洞。
Spectre(幽灵)
1. 概述
- Spectre 是与 Meltdown 同时发现的另一个漏洞,影响了几乎所有现代的处理器(包括 Intel、AMD 和 ARM)。它通过推测执行漏洞,允许攻击者读取不应被访问的内存内容,包括其他进程的数据。
2. 漏洞原理
- Spectre 漏洞利用了处理器的分支预测机制。分支预测是现代处理器中用于提高指令执行效率的技术,通过预测程序代码中的条件跳转(例如 if/else)来提前执行指令。
- Spectre 利用分支预测中的不正确预测,迫使处理器执行不应该执行的指令,进而在缓存中泄露数据。虽然错误的预测执行会被丢弃,但数据仍然可能通过缓存侧信道被攻击者读取。
3. 影响
- Spectre 攻击不仅影响 Intel 处理器,还影响其他厂商的处理器,包括 AMD 和 ARM 处理器。
- Spectre 的漏洞比 Meltdown 更为广泛,因为它影响所有使用预测执行技术的处理器。它不依赖于操作系统层面的漏洞,而是通过物理硬件层面的问题进行攻击。
4. 防御措施
- 操作系统补丁:操作系统和应用程序必须进行代码更新以防止 Spectre 攻击,尤其是禁用或修补分支预测功能。具体的解决方法包括对不可信的分支预测进行限制和延迟执行。
- 硬件改进:部分新的处理器引入了硬件级别的分支预测修复,通过改变预测执行和缓存机制来减少攻击面。
相关文章:
[CISSP] [8] 安全模型,设计和能力的原则
开源软件(Open Source Software, OSS) 优点: 透明性高 开源软件的源代码对公众开放,安全专家和用户可以检查其实现,验证是否存在安全隐患。 社区驱动的漏洞发现 有大量开发者和安全研究人员参与代码审查,…...
docker使用
最近为了打vulhub也是搞了好久的docker,搞了半天搞得我头大,结果还是没能成功,不知道为什么起shiro550靶场总是报139的错误,在网上搜了半天也没有解决,有没有师傅救一下喵QaQ 安装就不说了喵,安装完记得换…...
phpexcel导出下拉框,超过255字符不显示的问题处理
用php生成excel模板,并设置下拉框的选项。如果选项太多,可能导致下拉框不显示的问题。下面会给出示例,以及解决方案,支持生成包含大量数据的下拉框。 // $info 为下拉框的数数据,[男,女,保密] function exportDataSel…...
【重构谷粒商城12】npm快速入门
重构谷粒商城12:npm快速入门 前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶…...
【Pandas】pandas DataFrame bool
Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型DataFrame.infer_objects([copy])用于尝试…...
Django 在同一域名下使用 NGINX 服务器运行 Django 和 WordPress
在本文中,我们将介绍如何使用 NGINX 服务器在同一域名下同时运行 Django 和 WordPress。我们将使用反向代理和URL重写来实现这一目标。 1. 安装和配置 NGINX 首先,我们需要在服务器上安装并配置 NGINX。请根据您的操作系统类型和版本的要求,…...
LeetCode Hot100 刷题笔记(2)—— 子串、普通数组、矩阵
目录 前言 一、子串 1. 和为 K 的子数组 2. 滑动窗口最大值 3. 最小覆盖子串 二、普通数组 4. 最大子数组和 5. 合并区间 6. 轮转数组 7. 除自身以外数组的乘积 8. 缺失的第一个正数 三、矩阵 9. 矩阵置零 10. 螺旋矩阵 11. 旋转图像 12. 搜索二维矩阵 II 前言 一、子串&#…...
游戏引擎学习第213天
回顾并为今天的工作做准备 今天我们将继续在调试界面上进行一些编码工作。我们已经完成了很多内容,并且昨天完成了与游戏的集成,主要是在两个系统之间统一了用户界面。 今天的目标是进入调试界面,进一步整理并完善它,以便我们能…...
使用 Django 构建 Web 应用程序:症状检测 - 分步指南
使用 Django 构建 Web 应用程序:症状检测 - 分步指南 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 使用 Django 构建 Web 应用程序:症状检测 - 分步指南先决条件第 1 步:设置 …...
oracle将varchar2 转为clob类型存储。 oracle不支持直接使用sql,将 varchar2 到clob的类型转换,需要下面操作
将一个现有表中的 VARCHAR2 列数据迁移到一个 CLOB 列的过程。以下是对每一步操作的说明: 1. 添加一个新的 CLOB 类型列 首先,向表中添加一个新的 CLOB 类型的列。这个列将用来存储原本的 VARCHAR2 数据。 ALTER TABLE your_table ADD (new_column CL…...
React 之 Redux 第三十一节 useDispatch() 和 useSelector()使用以及详细案例
使用 Redux 实现购物车案例 由于 redux 5.0 已经将 createStore 废弃,我们需要先将 reduxjs/toolkit 安装一下; yarn add reduxjs/toolkit// 或者 npm install reduxjs/toolkit使用 vite 创建 React 项目时候 配置路径别名 : // 第一种写法…...
RHCSA Linux系统 vim 编辑器
1.使用 vi/vim 编辑文件 [rootlocalhost ~]# vim /etc/passwd 默认进入命令模式 2.命令模式下的常用快捷键 (1) 光标跳转快捷键 (2)复制、粘贴、删除 3.编辑模式 4.末行模式 (1)查找关键字替换 (2&…...
ABAP小白开发操作手册+(十)验证和替代——下
目录 一、前言 二、替代步骤详解 1、新建替换 2、新建步骤 3、创建先决条件 4、补充替换 5、ZRGGBS000 三、传输请求 四、DEBUG 一、前言 本章内容分为上下两篇,包括验证和替代, 上篇:验证步骤、传输验证请求、DEBUG 下篇…...
鸿蒙小案例---心情日记
效果演示 代码实现 import { router, window } from kit.ArkUIEntry Component struct Index {async aboutToAppear(): Promise<void> {let w await window.getLastWindow(getContext())w.setWindowSystemBarProperties({statusBarColor: #00C6C3,statusBarContentColo…...
一种单脉冲雷达多通道解卷积前视成像方法【论文阅读】
一种单脉冲雷达多通道解卷积前视成像方法-李悦丽-2007 1. 论文的研究目标与实际意义1.1 研究目标1.2 实际问题与产业意义2. 论文提出的思路、方法及模型2.1 多通道解卷积(MCD)技术的核心思想2.1.1 数学模型与公式推导2.1.2 针对单脉冲雷达的改进2.2 方法与传统技术的对比3. 实…...
React中使用dnd-kit实现拖拽排序
使用dnd-kit实现拖拽排序 效果展示 实现源码 安装依赖 dad-kit github地址 yarn add dnd-kit/core dnd-kit/sortable dnd-kit/utilities dnd-kit/modifiers这几个包的作用 dnd-kit/core:核心库,提供基本的拖拽功能。dnd-kit/sortable:扩…...
深度学习总结(3)
数据批量的概念 通常来说,深度学习中所有数据张量的第一个轴(也就是轴0,因为索引从0开始)都是样本轴[samples axis,有时也叫样本维度(samples dimension)]。深度学习模型不会一次性处理整个…...
Android Studio Narwhal | 2025.1.1新功能
Android Studio 中的 Gemini 支持多模式图像附件 现在,您可以在 Android Studio 中将图像直接附加到 Gemini 提示中。您可以即时获取复杂技术图表的洞察,或使用设计模型生成相应的代码框架。这种将视觉环境无缝集成到 AI 辅助工作流程中的设计方式&…...
XML语法指南——从入门到精通
1、引言 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它被设计为具有自我描述性且易于理解。本文将全面介绍XML的语法规则,包括元素、属性、命名规则、转义字符等核心概念。 2、XML文档基本结构 一个完整的XML文档…...
利用高阶函数实现AOP
如大家所熟悉的,AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计、安全控制、异常处理等。 把这些功能抽离出来之后,再通过“动态织入”的方式掺…...
原生SSE实现AI智能问答+Vue3前端打字机流效果
实现流程: 1.用户点击按钮从右侧展开抽屉(drawer),打开模拟对话框 2.用户输入问题,点击提问按钮,创建一个SSE实例请求后端数据,由于SSE是单向流,所以每提一个问题都需要先把之前的实…...
windows11下pytorch(cpu)安装
先装anaconda 见最下方 Pytorch 官网:PyTorch 找到下图(不要求版本一样)(我的电脑是集显(有navdia的装gpu),装cpu) 查看已有环境列表 创建环境 conda create –n 虚拟环境名字(…...
C++【string类】(一)
string类 1.为什么要学string?2.标准库类型的string类2.1 string类的构造2.2string类的析构2.3读写string类2.4string类的赋值重载2.5string的遍历 1.为什么要学string? 在C语言中字符出串是以‘/0’结尾的一些字符的结合,为了操作方便&…...
yarn:error Error: certificate has expiredERR_OSSL_EVP_UNSUPPORTED解决
yarn:error Error: certificate has expired 报错 error Error: certificate has expiredat TLSSocket.onConnectSecure (node:_tls_wrap:1679:34)at TLSSocket.emit (node:events:519:28)at TLSSocket._finishInit (node:_tls_wrap:1078:8)at ssl.onhandshakedon…...
Git Cherry-pick:核心命令、实践详解
Git Cherry-pick:核心命令、实践详解 一、Cherry-pick 1. 简介 在多分支协作开发中,我们常常只想把某个分支上的单个或若干次提交,合并到另一个分支,而不需要合并整个分支。Git 提供的 cherry-pick 命令,正是为此而…...
ffmpeg播放音视频流程
文章目录 🎬 FFmpeg 解码播放流程概览(以音视频文件为例)1️⃣ 创建结构体2️⃣ 打开音视频文件3️⃣ 查找解码器并打开解码器4️⃣ 循环读取数据包(Packet)5️⃣ 解码成帧(Frame)6️⃣ 播放 / …...
OSPF的数据报文格式【复习篇】
OSPF协议是跨层封装的协议(跨四层封装),直接将应用层的数据封装在网络层协议之后,IP协议包中协议号字段对应的数值为89 OSPF的头部信息: 所有的数据共有的信息字段 字段名描述版本当前OSPF进程使用的版本(…...
Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-04)
文章目录 每日一句正能量第4章 Spark SQL结构化数据文件处理章节概要4.4 RDD转换DataFrame4.4.1 反射机制推断Schema4.4.2 编程方式定义Schema 每日一句正能量 一个人若想拥有聪明才智,便需要不断地学习积累。 第4章 Spark SQL结构化数据文件处理 章节概要 在很多情…...
设计模式 --- 状态模式
状态模式是一种行为型设计模式,允许对象在内部状态改变时动态改变其行为,使对象的行为看起来像是改变了。该模式通过将状态逻辑拆分为独立类,消除复杂的条件分支语句,提升代码的可维护性和扩展性。 状态模式的…...
将外网下载的 Docker 镜像拷贝到内网运行
将外网下载的 Docker 镜像拷贝到内网运行,可以通过以下步骤实现: 一、在有外网访问权限的机器上操作 下载镜像 使用docker pull命令下载所需的镜像。例如,如果你需要下载一个名为nginx的镜像,可以运行以下命令:docke…...
Seq2Seq - GRU补充讲解
nn.GRU 是 PyTorch 中实现门控循环单元(Gated Recurrent Unit, GRU)的模块。GRU 是一种循环神经网络(RNN)的变体,用于处理序列数据,能够更好地捕捉长距离依赖关系。 ⭐重点掌握输入输出部分输入张量&#…...
从0到1构建工具站 - day6 (在线编程工具-docker)
从0到1构建工具站 网页在线编程工具构建(php、go、python)搜集其他在线编程网站构建php8运行环境Dockerfiledocker-compose.yaml 构建python运行环境Dockerfiledocker-compose.yml 核心调用python的docker-sdk包执行命令执行文件流程执行命令流程pythonp…...
C++面向对象编程优化实战:破解性能瓶颈,提升应用效率
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle…...
JavaWeb 课堂笔记 —— 06 Maven
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
【Linux】网络层协议 IP
网络层协议 IP 一. 基本概念二. IP 协议格式三. 网段划分 (重点)1. 传统方法2. 子网掩码 四. 特殊 IP 地址五. IP 地址的数量限制六. 私有 IP 地址和公网 IP 地址七. 运营商1. 基本网络情况2. 全球网络情况 八. 路由九. IP 报文的分片和组装 网络层:在复杂的网络环境…...
嵌入式系统中如何构建事件响应架构
在复杂的嵌入式系统中,串口、BLE、定时器、中断等多种事件源并存,如何高效地统一调度这些异步事件,是系统稳定性和可维护性的关键。本文将结合 BLE 系统架构的经验,讲解如何构建一个通用的事件响应架构。 🧩 一、什么是事件响应架构? 事件响应架构(Event-Driven Archi…...
Flutter报错:Warning: CocoaPods is installed but broken
最近在做Flutter开发,在跑iOS的时候报错: 结论:CocoaPods安装有问题 解决办法: 先卸载本地CocoaPods,然后重新安装 查看当前版本 gem list | grep cocoapods执行卸载 sudo gem uninstall cocoapods直到 which -a…...
JdbcTemplate基本使用
JdbcTemplate概述 它是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和MbernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的…...
地图服务热点追踪:创新赋能,领航出行与生活
在数字化时代,地图服务早已超越了传统的导航范畴,成为智能出行、生活服务乃至应急救援等多领域的关键支撑。近期,地图服务领域热点不断,从技术创新到应用拓展,每一次突破都在重塑我们与世界交互的方式。本文将深入剖析…...
Flutter Invalid constant value.
0x00 问题 参数传入变量,报错! 代码 const Padding(padding: EdgeInsets.all(20),child: GradientProgressIndicator(value: _progress), ),_progress 参数报错:Invalid constant value. 0x01 原因 这种情况,多发生于ÿ…...
网络基础-路由技术和交换技术以及其各个协议
四、路由技术和交换技术 4.1路由技术 静态与动态协议的关系: 1,静态路由:由网络管理员手工填写的路由信息。 2,动态路由:所有路由器运行相同路由协议,之后,通过路由器之间的沟通,协…...
替换jeecg图标
替换jeecg图标 ant-design-vue-jeecg/src/components/tools/Logo.vue <!-- <img v-else src"~/assets/logo.svg" alt"logo">-->...
C#里使用WPF的MaterialDesignThemes
先要下载下面的包: <?xml version="1.0" encoding="utf-8"?> <packages><package id="MaterialDesignColors" version="5.2.1" targetFramework="net48" /><package id="MaterialDesignTheme…...
四六级听力考试播音系统:构建播放控制智能化、发射系统双备份、发射功率有冗余、安全稳定可靠的英语四六级听力播音系统使用环境
四六级听力考试播音系统:构建播放控制智能化、发射系统双备份、发射功率有冗余、安全稳定可靠的英语四六级听力播音系统使用环境 北京海特伟业科技有限公司任洪卓于2025年4月9日发布 传统的四六级听力考试播音系统往往存在信号不稳定、容易受干扰、无发射备份、无功率冗余、更…...
JavaScript性能优化(下)
1. 使用适当的算法和逻辑 JavaScript性能优化是一个复杂而重要的话题,尤其是在构建大型应用时。通过使用适当的算法和逻辑,可以显著提高代码的效率和响应速度。以下是一些关键策略和实践,用于优化JavaScript性能: 1.1. 采用适当…...
优先级队列的应用
第一题: 题解思路: 1、建立降序的优先级队列(底层是通过大堆来实现); 2、取最大的两个数来相减得到的结果再加入到优先级队列中(优先级队列会自动的排序); 3、返回队列的头部或者0即可; 题解代…...
从 macos 切换到 windows 上安装的工具类软件
起因 用了很多年的macos, 已经习惯了macos上的操作, 期望能在windows上获得类似的体验, 于是花了一些时间来找windows上相对应的软件. 截图软件 snipaste windows和macos都有的软件, 截图非常好用 文件同步软件 oneDrive: 尝试了不同的同步软件, 还是微软在各…...
探索原生JS的力量:自定义实现类似于React的useState功能
1.写在前面 本方案特别适合希望在历史遗留的原生JavaScript项目中实现简单轻量级数据驱动机制的开发者。无需引入任何框架或第三方库,即可按照此方法封装出类似于React中useState的功能,轻松为项目添加状态管理能力,既保持了项目的轻量性&am…...
Android系统深度定制:源码级拦截adb install的完整解决方案
一、需求背景与技术挑战 在Android 12.0系统定制开发中,我们面临一个关键需求:需要实现设备级应用安装管控,要求彻底禁用adb install安装方式。这种管控需要满足以下技术指标: 系统级全局拦截,覆盖所有adb install安装…...
基于大模型的非阵发性室性心动过速风险预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 国内外研究现状 二、非阵发性室性心动过速概述 2.1 定义与分类 2.2 发病机制 2.3 临床症状与诊断方法 三、大模型在预测中的应用原理 3.1 大模型简介 3.2 数据收集与预处理 3.3 模型训练与优化 3.4 预测原理与…...