学习黑客BitLocker与TPM详解
BitLocker与TPM详解:数据加密的坚固堡垒 🔐🛡️
学习目标:掌握BitLocker加密原理、TPM工作机制及其配置方法,提升数据安全防护水平
1. 数据保护的最后防线:BitLocker与TPM简介 💼
在当今世界,设备丢失或被盗已成为数据泄露的主要风险之一。Windows BitLocker驱动器加密技术与可信平台模块(TPM)的结合,为敏感数据提供了一道强大的防护屏障,即使硬盘被物理移除,数据仍然安全无虞。
BitLocker和TPM为什么如此重要?
- 防止未授权访问存储设备中的数据 🚫
- 保护系统免受离线攻击和冷启动攻击 ❄️
- 确保设备丢失不会导致数据泄露 📱
- 满足各种行业合规性要求(如GDPR、HIPAA) 📑
- 为远程办公和移动办公提供必要保障 🏢
🔍 生活类比: 如果把您的电脑比作一座房子,BitLocker就像是将整座房子罩在一个隐形保护罩内,而TPM则是这个保护罩的智能控制中心,它会自动检查是否是合法主人在试图进入,无需您每次都输入复杂密钥。
2. BitLocker加密技术揭秘 🔑
2.1 BitLocker的发展历程
BitLocker并非一蹴而就,而是经过多年演进:
2.2 BitLocker的工作原理
BitLocker采用高级加密标准(AES)加密算法,默认使用128位或256位密钥加密整个驱动器。
加密与解密流程:
2.3 BitLocker加密模式
BitLocker提供多种加密模式以适应不同需求:
加密模式 | 描述 | 安全级别 | 适用场景 |
---|---|---|---|
完全磁盘加密 | 加密整个驱动器,包括所有文件和系统文件 | ★★★★★ | 高敏感度数据环境 |
已使用空间加密 | 仅加密已存储数据的部分,新数据写入时加密 | ★★★★☆ | 快速部署、旧系统升级 |
卷加密 | 仅加密选定的驱动器或分区 | ★★★☆☆ | 需分离数据的环境 |
💡 思考一下: 在你的工作或个人环境中,哪些数据最需要BitLocker保护?这些数据存在哪些风险?
3. TPM深度解析:可信计算的基石 🔐
3.1 什么是TPM?
TPM(可信平台模块)是一个专用的硬件安全芯片,设计用于存储加密密钥和执行安全关键操作。
TPM的核心功能:
- 安全存储加密密钥和敏感信息
- 生成、存储和限制密码学密钥的使用
- 远程验证平台状态的完整性
- 防止暴力破解和硬件级别攻击
3.2 TPM的技术规格
TPM有不同的版本,目前主流是TPM 2.0:
特性 | TPM 1.2 | TPM 2.0 |
---|---|---|
算法支持 | 主要支持RSA和SHA-1 | 支持更广泛算法(RSA、ECC、SHA-256等) |
安全级别 | 良好,但有已知弱点 | 显著增强,更灵活的加密选项 |
固件可更新性 | 有限 | 改进的更新机制 |
多平台支持 | 有限 | 更广泛的平台兼容性 |
对BitLocker支持 | 基本支持 | 增强功能,更高安全性 |
加密性能 | 较慢 | 显著提升 |
⚠️ 技术注意: Windows 11要求TPM 2.0作为最低系统要求,而Windows 10可以使用TPM 1.2。检查TPM状态是确保系统兼容性的重要步骤。
3.3 如何验证TPM状态
在配置BitLocker前,应先确认TPM状态:
- 按下
Win + R
,输入tpm.msc
并回车 - 在TPM管理控制台中查看"TPM状态信息"
- 确认TPM已启用并激活
- 如果看到"这台电脑上没有可用的TPM",可能需要在BIOS中启用TPM
4. BitLocker与TPM的协同工作机制 ⚙️
4.1 系统启动验证流程
BitLocker与TPM的结合创建了一个强大的安全启动链:
4.2 衡量系统完整性
TPM使用一种称为"平台配置寄存器"(PCR)的机制来记录和验证系统状态:
- PCR0-7: 测量BIOS、启动设备和引导程序
- PCR8-15: 测量操作系统加载器和驱动程序
- PCR16+: 用于各种其他度量,如BIOS配置和调试状态
任何关键组件的更改(如BIOS更新、硬件变更)都会改变这些度量值,进而触发BitLocker恢复过程。
🔬 深入理解: 这种机制确保了"信任链"—从最初的硬件启动一直到操作系统加载的每个环节都经过验证,有效防止了引导级恶意软件和固件攻击。
5. BitLocker部署与配置指南 🛠️
5.1 启用BitLocker的前提条件
在开始配置BitLocker前,请确保:
✅ 系统满足最低要求(Windows 10/11专业版、企业版或教育版)
✅ TPM已启用并正常工作(最好是TPM 2.0)
✅ BIOS/UEFI已配置为安全启动模式
✅ 系统分区和主分区正确配置
✅ 所有关键Windows更新已安装
5.2 BitLocker配置步骤详解
步骤一:启用系统驱动器加密
- 搜索并打开"BitLocker驱动器加密"控制面板
- 选择系统驱动器(通常是C盘)旁的"启用BitLocker"
- 选择身份验证方法:
- TPM(仅TPM,无额外验证)
- TPM + PIN(推荐,增加安全层)
- TPM + USB启动密钥(物理密钥)
- 保存恢复密钥(多种方式:Microsoft账户、文件、打印)
- 选择加密空间(完全或仅已使用空间)
- 开始加密过程
步骤二:加密其他驱动器
- 在BitLocker控制面板中选择其他驱动器
- 点击"启用BitLocker"
- 选择解锁方法(密码或智能卡)
- 保存恢复密钥
- 开始加密过程
5.3 BitLocker配置最佳实践
✅ 建议配置:
- 使用TPM + PIN组合提供双因素认证
- 选择AES-256位加密以获得最高安全性
- 备份恢复密钥到Microsoft账户及物理介质
- 对所有包含敏感数据的驱动器启用BitLocker
- 配置自动解锁固定数据驱动器(在安全环境中)
❌ 避免的做法:
- 仅依赖TPM而不添加PIN或密码
- 将恢复密钥存储在加密设备上
- 对临时性或不重要的虚拟机使用BitLocker(性能消耗)
- 在没有备份恢复密钥的情况下启用BitLocker
📝 小测验: 以下哪种恢复密钥保存方式最不安全?
- 保存到Microsoft账户
- 打印一份纸质副本锁在保险箱中
- 保存到同一台电脑的其他分区
- 导出到USB驱动器并存放在安全位置
(正确答案:3️⃣ - 如果电脑被盗,这种方式无法保护恢复密钥)
6. 密钥管理与恢复策略 🗝️
6.1 BitLocker密钥类型详解
BitLocker使用多种密钥共同工作:
密钥类型 | 描述 | 用途 | 存储位置 |
---|---|---|---|
完全卷加密密钥(FVEK) | 用于加密驱动器的实际密钥 | 直接加密和解密数据 | 加密后存储在驱动器上 |
卷主密钥(VMK) | 用于加密FVEK的中间密钥 | 保护FVEK | 加密后存储在驱动器上 |
启动密钥 | 系统启动验证使用 | 启动过程验证 | TPM芯片内 |
恢复密钥 | 48位数字恢复密码 | 紧急恢复访问 | 用户指定位置(云端/物理) |
PIN码 | 用户自定义数字密码 | 提供额外的验证层 | 用户记忆或安全存储 |
6.2 恢复密钥管理策略
在企业环境中,恢复密钥管理至关重要:
- 集中管理:通过Active Directory和组策略
- 自动备份:配置自动备份到AD或Azure AD
- 过程文档化:建立密钥恢复的标准操作程序
- 定期演练:测试恢复过程,确保在紧急情况下可用
- 多级别存储:实施3-2-1备份策略(3份副本,2种介质,1份异地)
6.3 常见恢复场景
BitLocker可能在以下情况要求恢复密钥:
- 硬件变更:更换主板、添加新硬盘等
- BIOS/固件更新:变更关键系统组件
- TPM清除:TPM被重置或清除
- 多次PIN输入错误:超过预设的尝试次数
- 系统更新问题:某些Windows更新可能触发验证失败
💡 专业提示: 企业环境中,使用微软BitLocker管理和监控(MBAM)或Microsoft Endpoint Manager可以大大简化恢复过程和密钥管理。
7. 企业环境下的BitLocker部署考量 🏢
7.1 组策略配置
通过组策略可以集中管理BitLocker设置:
- 打开组策略编辑器(
gpedit.msc
) - 导航至:计算机配置 > 管理模板 > Windows组件 > BitLocker驱动器加密
- 配置关键策略,如:
- 启动前身份验证要求
- 加密方法和强度
- 恢复密钥保存位置
- 驱动器加密要求
7.2 大规模部署策略
在企业环境部署BitLocker的最佳实践:
✅ 规划阶段:
- 进行硬件清点,确认TPM兼容性
- 建立基准安全策略和例外处理流程
- 设计密钥管理和恢复架构
- 培训IT支持人员
✅ 实施阶段:
- 分阶段部署,先从低风险部门开始
- 使用脚本或管理工具自动化部署
- 实施静默加密,减少用户干预
- 监控加密进度和潜在问题
✅ 维护阶段:
- 定期审计合规性和例外情况
- 更新密钥恢复程序和文档
- 监控解密事件和恢复密钥使用
- 响应和调查异常模式
7.3 合规与监管考量
不同行业对加密有不同的合规要求:
行业/法规 | BitLocker要求 | 推荐配置 |
---|---|---|
医疗健康(HIPAA) | 加密所有包含PHI的设备 | TPM+PIN, 256位加密 |
金融(PCI DSS) | 加密支付卡数据 | TPM+强密码, 硬件验证 |
政府(FISMA) | 基于FIPS 140-2验证的加密 | 严格组策略,多因素保护 |
欧盟(GDPR) | 个人数据保护的技术措施 | 全盘加密,集中管理 |
🔬 深入思考: 为什么企业环境下往往需要更复杂的BitLocker配置,而不仅仅依赖默认设置?考虑合规性、可扩展性和可管理性的角度。
8. BitLocker安全性评估 🔍
8.1 BitLocker的安全优势
✅ 主要安全优势:
- 完整的预启动和启动保护链
- 基于硬件的密钥保护(TPM)
- 军事级别的加密算法(AES)
- 多层身份验证选项
- 与Windows身份验证系统集成
- 数据静态加密(Data-at-rest)保护
8.2 潜在风险与局限性
⚠️ 需要注意的局限:
- 不防护已启动系统的内存攻击
- 依赖TPM的固有安全性
- 冷启动攻击在某些情况下仍可能
- 用户可能不安全地存储恢复密钥
- 加密过程对旧硬件有性能影响
- 不提供数据传输加密(Data-in-transit)
8.3 BitLocker安全增强措施
要进一步增强BitLocker的安全性:
-
增强预启动认证:
- 启用TPM+PIN方式
- 配置较长的PIN码(建议8位以上)
- 启用高级启动选项保护
-
防止旁路攻击:
- 禁用休眠模式
- 启用启动前网络解锁(企业环境)
- 配置固件级密码保护
-
补充加密措施:
- 启用BitLocker加密之外的文件级加密
- 考虑组合使用EFS(加密文件系统)
- 针对高价值数据使用额外的应用级加密
⚠️ 安全警告: 即使使用BitLocker加密,也应避免在公共场所输入PIN码或密码,防止肩窥攻击。
9. 实用技巧与故障排除 💡
9.1 提高BitLocker性能
BitLocker会对系统性能产生一定影响,但可通过以下方式优化:
- 使用支持AES-NI指令集的现代CPU
- 考虑SSD而非HDD,现代SSD硬件加密更高效
- 在性能敏感的工作站上使用"仅已使用空间加密"
- 优化页面文件位置(如放置在非加密驱动器)
9.2 常见问题与解决方案
问题 | 可能原因 | 解决方案 |
---|---|---|
BitLocker启动时始终要求恢复密钥 | TPM度量更改或硬件变更 | 暂时恢复访问,然后暂停并重新启用BitLocker |
加密过程异常缓慢 | 硬盘问题或系统资源不足 | 关闭不必要程序,检查硬盘健康状况 |
"TPM不可用"错误 | TPM未启用或未初始化 | 在BIOS中启用TPM,或在tpm.msc中初始化 |
无法添加PIN保护 | 组策略限制或TPM版本问题 | 检查组策略设置和TPM兼容性 |
BitLocker自动挂起 | Windows更新或驱动程序更新 | 等待更新完成后,手动恢复BitLocker保护 |
9.3 常用命令行工具
BitLocker可通过PowerShell和manage-bde命令行工具进行管理:
# 检查所有驱动器的BitLocker状态
Get-BitLockerVolume# 启用C盘的BitLocker加密
Enable-BitLocker -MountPoint "C:" -EncryptionMethod XtsAes256 -UsedSpaceOnly -TpmAndPinProtector# 备份恢复密钥到文件
(Get-BitLockerVolume -MountPoint "C:").KeyProtector | Where-Object {$_.KeyProtectorType -eq "RecoveryPassword"} | Out-File "C:\BitLocker_Recovery_Key.txt"# 解锁已加密驱动器
Unlock-BitLocker -MountPoint "D:" -Password (ConvertTo-SecureString "YourPassword" -AsPlainText -Force)
🧪 实践练习: 使用PowerShell命令
Get-BitLockerVolume
检查你的系统中是否有驱动器已经启用了BitLocker,并观察其保护状态。
10. 案例分析:BitLocker实战场景 📊
10.1 案例一:企业设备丢失防护
场景:一名销售经理的笔记本电脑在商务旅行中被盗,电脑中包含客户资料和产品定价策略。
BitLocker防护效果:
- 设备硬盘已全盘加密,使用TPM+PIN保护
- 窃贼无法绕过预启动身份验证
- 即使拆卸硬盘安装在其他计算机中,数据仍保持加密状态
- 公司通过管理后台远程擦除设备,进一步确保数据安全
结果:尽管硬件资产损失,但没有数据泄露,避免了潜在的商业和声誉损失。
10.2 案例二:系统升级与恢复
场景:IT部门对公司管理层计算机执行BIOS固件更新,导致启动验证失败。
解决流程:
- 系统进入BitLocker恢复模式
- IT人员从集中式密钥管理系统检索恢复密钥
- 输入恢复密钥允许系统一次性启动
- 完成系统引导后暂停BitLocker保护
- 验证固件更新正确应用
- 重新启用BitLocker保护
- 新的系统度量值被记录在TPM中
学习要点:在进行可能影响系统度量的操作前,应暂停BitLocker保护。
11. BitLocker与TPM的未来展望 🔮
随着安全威胁和技术的不断发展,BitLocker和TPM也在持续演进:
- 集成虚拟化安全功能:更好地支持Hyper-V和虚拟TPM
- 与生物识别技术结合:指纹和面部识别与BitLocker整合
- 云端密钥管理增强:更强大的Azure集成和零信任模型
- 支持新一代硬件加密:包括后量子加密算法
- 自动修复和更强的恢复机制:减少用户干预需求
- 物联网设备加密支持:扩展到更多设备类型
🔮 前瞻思考: 随着量子计算的发展,当前的加密算法可能面临挑战。你认为Microsoft会如何演进BitLocker来应对这一威胁?
12. 总结与互动讨论 📝
12.1 关键知识回顾
- BitLocker是Windows的全盘加密技术,通过TPM硬件增强保护
- TPM芯片提供硬件级密钥保护和系统完整性验证
- 多种身份验证方式可组合使用,平衡安全性与便捷性
- 企业环境应建立完善的密钥管理和恢复策略
- BitLocker提供强大防护,但仍需结合其他安全措施
- 通过PowerShell和组策略可实现高级管理和自动化
12.2 实用行动清单
✓ 验证您的设备是否支持TPM并确认状态
✓ 根据数据敏感度评估BitLocker保护需求
✓ 为关键驱动器启用BitLocker,并选择适当的保护方式
✓ 安全备份恢复密钥(至少两种不同方式)
✓ 测试恢复流程,确保在紧急情况下可用
✓ 定期检查BitLocker状态和保护策略
12.3 互动讨论
- 在你的组织中,是否部署了BitLocker?实施过程中遇到了哪些挑战?
- 你认为TPM+PIN和TPM+USB密钥哪种方式更适合移动办公场景?为什么?
- 在数据保护策略中,BitLocker应该处于什么位置?它如何与其他安全措施协同工作?
- 对于没有TPM的旧设备,你会采取哪些替代加密方案来保护数据?
希望这篇文章帮助你更好地理解BitLocker与TPM的工作原理和配置方法!在数据泄露风险日益增加的今天,掌握这些知识对保护个人和企业数据至关重要。如有任何问题,欢迎在评论区讨论! 🔒💻
相关文章:
学习黑客BitLocker与TPM详解
BitLocker与TPM详解:数据加密的坚固堡垒 🔐🛡️ 学习目标:掌握BitLocker加密原理、TPM工作机制及其配置方法,提升数据安全防护水平 1. 数据保护的最后防线:BitLocker与TPM简介 💼 在当今世界&a…...
综合实验二之grub2密文加密
实验二、grub2密文加密 Grub2 密文加密的作用: 保护系统安全: 防止未经授权的用户在系统启动时进入 Grub2 菜单,通过修改启动参数来绕过系统的安全机制,进而访问或篡改系统文件和数据。例如,恶意用户可能试图通过修改启…...
【Java学习】Lambda表达式
目录 一、函数式匿名 1.环境确定 2.Lambda部分实现 二、函数式书写 Lambda表达式: 三、函数式接口 1.Consumer行为接口 1.1Lambda匿名实现(核心) 1.2创建使用全过程 1.2.1创建匿名子类实例 1.2.1.1环境确定 1.2.1.2匿名实现 1.2.2向上转型 1.2.3Lamb…...
精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联
精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联 在创业和数据分析的学习旅程中,我们持续探索不同商业模式的奥秘。今天,依旧怀揣着与大家共同进步的想法,深入研读《精益数据分析》…...
人工智能100问☞第21问:神经网络如何模拟人脑结构?
目录 一、通俗解释 二、专业解析 三、权威参考 神经网络通过分层连接的人工神经元模拟人脑结构,其中输入层接收信号(模拟树突接收信息),隐藏层通过权重调整(模拟突触可塑性)进行特征提取,输出层生成结果(类似轴突传递信号),并利用反向传播机制(类比生物神…...
Vue 3 实现转盘抽奖效果
🎡 使用 Vue 3 实现转盘抽奖效果 在移动端或营销活动中,转盘抽奖是一种非常常见的互动方式。本文基于 Vue 3 TypeScript 实现一个视觉炫酷、逻辑完整的转盘抽奖功能,并支持「指定奖品必中」的逻辑。 iShot_2025-05-12_11.31.27 ᾟ…...
Python 处理图像并生成 JSONL 元数据文件 - 灵活text版本
Python 处理图像并生成 JSONL 元数据文件 - 灵活text版本 flyfish import os import json import argparse from PIL import Image from xpinyin import Pinyinclass ImageConverter:def __init__(self, src_folder, dest_folder, target_size1024, output_format"JPEG&…...
LeRobot 项目部署运行逻辑(七)—— ACT 在 Mobile ALOHA 训练与部署
全部流程为:硬件配置 -> 环境安装 -> 遥操作数据采集 -> 数据集可视化 -> 策略训练 -> 策略评估 在之前的笔记中已经完成了绝大部分,最后再记录一下最后的训练部署,算是最简单的部分了 目录 1 ACT 训练 2 ALOHA 部署 3 更…...
【NextPilot日志移植】ULog
📚 ULog 日志系统详解 关键词:结构化日志、飞行数据记录、自描述格式、嵌入式系统、PX4、NextPilot 🧠 一、ULog 是什么? ULog(Universal Log) 是 PX4/NextPilot 飞控系统中使用的结构化日志格式ÿ…...
扩展:React 项目执行 yarn eject 后的 scripts 目录结构详解
扩展:React 项目执行 yarn eject 后的 scripts 目录结构详解 什么是 yarn eject?scripts 目录结构与说明各脚本说明说明 什么是 yarn eject? yarn eject 是 Create React App(简称 CRA)提供的一条命令,用于…...
Android11.0 framework第三方无源码APP读写断电后数据丢失问题解决
1.前言 在11.0中rom定制化开发中,在某些产品开发中,在某些情况下在App用FileOutputStream读写完毕后,突然断电 会出现写完的数据丢失的问题,接下来就需要分析下关于使用FileOutputStream读写数据的相关流程,来实现相关 功能 2.framework第三方无源码APP读写断电后数据丢…...
多样本整合Banksy空间聚类分析(Visium HD, Xenium, CosMx)
在空间数据分析中,传统的单细胞聚类算法,例如Seurat和Scanpy中的lovain和leiden等聚类算法,通常在处理空间数据时忽略了空间信息。然而,由于细胞状态受其周围细胞的影响,将转录组数据与细胞的空间信息结合起来进行聚类…...
【2025最新】Vm虚拟机中直接使用Ubuntu 免安装过程直接使用教程与下载
Ubuntu 是一个基于 Debian 的自由开源 Linux 操作系统,面向桌面、服务器和云计算平台广泛应用。 由英国公司 Canonical Ltd. 维护和发布,Ubuntu 强调易用性、安全性和稳定性,适合个人用户、开发者以及企业部署使用。 Ubuntu 默认使用 GNOME …...
【Leetcode】系列之206反转链表
反转链表 题目描述解决思路过程示例代码示例结果展示 总结 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 解决思路 next_node:临时存放当前指针指向下一个指针的变量;pre:存放空指针;curr࿱…...
图灵爬虫练习平台第十九题js逆向
题十九:法外狂徒 该题适合JS逆向学习的小伙伴练习,模拟国内某大型网站 数据加密设计,给大家练练手 还是先f12看看是什么加密,发现是 返回数据最后加密了 还是先堆栈分析一下,直接点进去 打上断点分析一下,…...
Ubuntu 22初始配置(root、ssh)
1.设置root密码 并启用root用户 sudo passwd root sudo passwd -u root 2.安装ssh apt install openssh-server systemctl enable --now ssh 3.支持root通过ssh登录 vim /etc/ssh/sshd_config 是sshd_config(服务端) 不是ssh_config(客户端) 最后增加一…...
css3响应式布局
css3响应式布局 响应式设计是现代网页开发的重要组成部分,它确保网页在不同的屏幕尺寸上都有良好的显示效果。 在CSS中,实现响应式布局是一种常用的技术,旨在使网页能够根据用户的设备和屏幕尺寸自动调整其布局和样式。这种技术对于确保网站…...
【DeepSeek问答记录】请结合实例,讲解一下pytorch的DataLoader的使用方法
PyTorch的DataLoader是数据加载的核心工具,可高效处理批量数据、并行加载和自动打乱。以下是一个结合实例的分步讲解: 1. 基础使用流程 import torch from torch.utils.data import Dataset, DataLoader# 自定义数据集类(必须实现__len__和…...
Codeforces Round 1024 (Div. 2)(A-D)
题面链接:Dashboard - Codeforces Round 1024 (Div. 2) - Codeforces A. Dinner Time 思路 一共n个数被分成n/p个区间,每个区间内的和是q,如果还有除构成区间外剩余的数那么就一定能构造,如果没有剩余就看所有区间的和是否等于…...
大语言模型强化学习双强:OpenRLHF与verl技术解析
引言 随着大语言模型(LLM)参数规模突破千亿级,如何高效完成基于人类反馈的强化学习(RLHF)训练成为行业焦点。OpenRLHF与verl作为开源社区两大标杆框架,分别以Ray分布式架构和HybridFlow混合控制器为核心&a…...
ARM Cortex-M3内核详解
目录 一、ARM Cortex-M3内核基本介绍 (一)基本介绍 (二)主要组成部分 (三)调试系统 二、ARM Cortex-M3内核的内核架构 三、ARM Cortex-M3内核的寄存器 四、ARM Cortex-M3内核的存储结构 五、ARM Co…...
关于高并发GIS数据处理的一点经验分享
1、背景介绍 笔者过去几年在参与某个大型央企的项目开发过程中,遇到了十分棘手的难题。其与我们平常接触的项目性质完全不同。在一般的项目中,客户一般只要求我们能够通过桌面软件对原始数据进行加工处理,将各类地理信息数据加工处理成地图/场景和工作空间,然后再将工作空…...
vue3+flask+sqlite前后端项目实战
基础环境安装 pycharm 下载地址: https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows vscode 下载地址 https://code.visualstudio.com/docs/?dvwin64user python 下载地址 https://www.python.org/downloads/windows/ Node.js(含npm…...
支付宝API-SKD-GO版
前言 支付宝api的sdk没有提供go版,这里自己封装了一个go版的sdk,有需要的朋友可以自取使用 支付宝 AliPay SDK for Go, 集成简单,功能完善,持续更新,支持公钥证书和普通公钥进行签名和验签。 安装 go get github.c…...
uniapp(微信小程序)>关于父子组件的样式传递问题(自定义组件样式穿透)
由于"微信小程序"存在【样式隔离机制】,且默认设置为isolated(启用样式隔离),因此这里给出以下两种解决方案: 注意: 这2种方案父子组件<style>标签不能添加"scoped" 1.CSS变量穿透(推荐: 此方案不受样…...
AI时代还需要目视解译吗?——目视解译详解
在遥感技术迅猛发展的今天,尽管计算机自动解译算法层出不穷,目视解译仍然保持着其基础性和权威性的地位。作为遥感信息提取的"黄金标准",目视解译凭借人类认知系统的独特优势,在多个专业领域持续发挥着不可替代的作用。…...
苹果电脑笔记本macos Mac安装mixly 米思齐软件详细指南
一、下载安装包 二、安装 1、解压下载的文件,然后将解压后文件夹中的中文名称部分删掉只保留英文名称,例如:mixly2.0-mac 2、将mixly2.0-mac文件夹移动到当前用户的Documents路径下,注意路径中不要有中文。 3、进入mixly2.0-mac文…...
slackware系统详解
Slackware 是最古老的活跃维护的 Linux 发行版之一,由 Patrick Volkerding 于 1993 年创建。它以简洁性、稳定性和遵循 Unix 哲学为核心理念,适合追求高度控制和手动配置的用户。以下是 Slackware 的详细介绍: 1. 核心特点 简洁性 (Simplici…...
力扣210(拓扑排序)
210. 课程表 II - 力扣(LeetCode) 这是一道拓扑排序的模板题。简单来说,给出一个有向图,把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此,拓扑排序也是图论中判断有向无环图…...
Promise/A+ 规范中文解读
一、简介 Promise/A 是一个开放、健全且通用的JavaScript Promise标准,由开发者制定并供开发者参考。其核心目标是定义then方法的行为,确保不同Promise实现的互操作性。规范聚焦于异步操作的最终结果交互机制,而非Promise的创建、解决或拒绝…...
多媒体预研
主要包含h265 av1 等各种 多媒体的具体应用 svac_plugin ZLMediaKit/ext-codec at master cyf88/ZLMediaKit D:\java\xiachu\otherzlm\ZLMediaKit> sip-client GB28181-Service/SipClient at master Washington-DC/GB28181-Service yolo Jackson-Tan/wvp_pro_yolo: 小…...
动态网站 LNMP
一、名词解释: LNMP: L : 代表 Linux 操作系统,为网站提供了可靠的运行环境N : 代表 Nginx,它是一款轻量级的高性能 Web 服务器,能够快速处理大量并 发连接,有效提升网站的访问速度和性能 M : 代表…...
【Leetcode刷题随笔】349. 两个数组的交集
1. 题目描述 给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。 示例1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 题目条件: 1 < nums1.length, nums2.length < 10…...
如何优雅的使用CMake中的FindPkgConfig模块
背景 如果你遇到下面的场景,那么FindPkgConfig模块可以用来解决我们引用上游库的问题。 上游库没有提供CMake的配置文件。CMake没有提供相应的查找模块,即Find<PackageName>.cmake的文件。上游库提供了pkg-config使用的.pc文件。 如果上面三个条…...
Docker Volumes
Docker Volumes 是 Docker 提供的一种机制,用于持久化存储容器数据。与容器的生命周期不同,Volumes 可以独立存在,即使容器被删除,数据仍然保留。以下是关于 Docker Volumes 的详细说明: 1. 为什么需要 Volumes&#…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取当前用户主目录(即:~波浪符号目录)?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
day23 机器学习管道 Pipeline
在机器学习中,数据预处理、特征提取、模型训练和评估等步骤通常是按顺序执行的。为了更高效地管理和复用这些步骤,我们可以使用 Pipeline(管道)来构建一个完整的机器学习流水线。本文将详细介绍 Pipeline 的基础概念,并…...
The Graph:区块链数据索引的技术架构与创新实践
作为Web3生态的核心基础设施,The Graph通过去中心化索引协议重塑了链上数据访问的范式。其技术设计不仅解决了传统区块链数据查询的效率瓶颈,还通过经济模型与多链兼容性构建了一个开放的开发者生态。本文从技术角度解析其架构、机制及创新实践。 一、技…...
nginx配置sse流传输问题:直到所有内容返回后才往下传输
一、禁用缓冲(如实时流传输): location /stream {proxy_buffering off; } 二、开启分块传输 location /your-path {proxy_chunked_transfer_encoding on; # 显式启用分块传输(默认已启用) }...
使用Daemonset部署日志收集守护进程
1.DaemonSet简介: 在Kubernetes(简称k8s)中,DaemonSet是一种控制器,用于确保集群中的每个(或部分)节点运行一个指定的Pod副本。DaemonSet非常适合需要全局部署、节点级运行的服务,如…...
在Mac环境下搭建Docker环境的全攻略
在Mac环境下搭建Docker环境的全攻略 在现代软件开发中,Docker已经成为不可或缺的工具之一。它不仅简化了应用的部署和管理,还极大地提升了开发效率。然而,在某些公司环境中,桌面版的Docker可能会被禁用,这给开发工作带…...
Go 语言 slice(切片) 的使用
序言 在许多开发语言中,动态数组是必不可少的一个组成部分。在实际的开发中很少会使用到数组,因为对于数组的大小大多数情况下我们是不能事先就确定好的,所以他不够灵活。动态数组通过提供自动扩容的机制,极大地提升了开发效率。这…...
C++ string比较、string随机访问、string字符插入、string数据删除
string的字符串进行比较,代码见下。 #include<iostream>using namespace std;int main() {// 1 comparestring s1 "aab";string t11 "aab";int r11 s1.compare(t11);cout << "1: " << r11 << endl;strin…...
web 自动化之 Unittest 应用:测试报告装饰器断言
文章目录 一、常见的第三方库结合 unittest 生产 html 格式测试报告1、HtmlTestRunner2、BeatifulReport 二、装饰器 unittest.skip 强制跳过&条件跳过三、unittest的常用断言方法 一、常见的第三方库结合 unittest 生产 html 格式测试报告 1、HtmlTestRunner 官网下载 …...
前端基础之《Vue(16)—Vue脚手架介绍》
一、脚手架环境 1、推荐windows10 Node vue/cli(webpack) 2、测试node安装成功 node -v npm -v 3、什么是脚手架 Vue CLI:CLI就是脚手架的意思 脚手架生成一套模板(入口文件、配置文件、目录结构) 4、常用的包管理器 npm:no…...
MySQL 事务(一)
文章目录 CURD不加控制,会有什么问题CURD满足什么属性,能解决上述问题?什么是事务为什么要有事务事务的版本支持了解事务的提交方式 事务常见操作方式研究并发场景事务的正常操作事务的非正常情况的案例结论事务操作的注意事项 CURD不加控制&…...
Dsp38335利用Bootloader实现在线升级的技术原理
1. Bootloader概述 Bootloader(引导加载程序)是嵌入式系统中负责在设备启动时加载和启动主程序的代码。它通常在系统的闪存或其他非易失性存储器中,并在系统上电时首先执行。Bootloader不仅完成启动操作,还能够提供后续的程序升级…...
【TVM 教程】microTVM PyTorch 教程
Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/ 作者:Mehrdad Hessar 该教程展示了如何使用 PyTorch 模型进行 microTVM 主机驱动的 AOT 编译。此教程可以在使用…...
利用D435i相机进行SLAM实现建图的关键环节-----Kalibr标定工具以及常见的问题调试
在SLAM系统中,相机标定是获取准确的空间信息和三维重建的关键步骤。对于Intel RealSense D435i这类双目相机,正确的内参和外参不仅能提高位姿估计精度,还能显著改善重建效果。本文将详细介绍如何使用Kalibr对D435i进行双目标定,并…...
old kali网站下载链接爬取-Kali linux 全部版本镜像下载--Index of /kali-images
Kali linux 全部版本镜像下载 目的 出于该网站不稳定原因,故爬取下载链接,以便网友下载老版本kali from bs4 import BeautifulSoup import requests from urllib.parse import urljoinbase_url "http://old.kali.org/kali-images/" visite…...