Chromium Windows 沙箱深度解析:类型套餐、动态微调与底层机制

ArkClaw如何重构AI Agent使用范式:从手搓部署到人机协作流水线 AI Agent 是一种能自主规划、调用工具并执行任务的智能体,其核心原理在于将大语言模型与外部能力(如搜索、代码执行、API调用)通过结构化协议动态协同。技术价值在于降低人类认知负荷,将重复性操作转化为可配置、可审计、可复用的工作流。典型应用场景包括自动化内容生产、智能办公助手、垂直领域知识引擎等。随着 OpenClaw 等本地框架普及,‘部署门槛高’与‘使用门槛更高’的矛盾日益凸显;而 ArkClaw 通过环境即服务(EaaS)、能力即插件(Skill-as-Service)和预算即套餐(Quota-a 阅读详情

面向多进程浏览器安全架构 / AI Agent 沙箱设计。基于 Chromium 148 系代码。


引言:Chromium 沙箱在防什么

Chromium 的安全不是单一机制,而是两层叠加:

  1. OS 级沙箱(sandbox/win/src + sandbox/policy):限制子进程能调用哪些 Win32/NT API、能碰哪些内核对象。
  2. 逻辑级站点隔离(Site Isolation + ProcessLock):限制渲染进程被攻破后能读到哪些跨站内存。

前者防「逃逸到操作系统」;后者防 Spectre 类同进程侧信道。本文聚焦 Windows 沙箱,后者只在文末点一句边界。

对 AI Agent 沙箱最有价值的映射是:

Broker 定策略 → 子进程高权限启动 → warmup → 不可逆降权 → 敏感 syscall 走 Broker 白名单


一、策略怎么配:定 vs 动

Chromium 不是每个子进程从零算策略,而是:

类型套餐(定) + Feature/命令行/Delegate(动)

配置流水线:

否是GetSandboxType()GenerateConfigForSandboxedProcess()DisableDefaultPolicy?默认 Token / Job / Integrity跳过默认 Token类型分支 Renderer/GPU/Network...Feature / 命令行delegate->InitializeConfig()PreSpawnChild() Embedder 最后一刀Freeze → Policy 缓存 by SandboxTag

Policy 缓存: 同 GetSandboxTag()(如 renderer-jitless!kRenderer)共享一份 frozen config,不是每个进程重算。


二、共用默认策略(除非 DisableDefaultPolicy())

所有走 GenerateConfigForSandboxedProcess() 的子进程,默认都会叠下面四块。

2.1 两类 Mitigation:先宽后严

批次何时生效典型项

Pre-startup

CreateProcess 时写入 PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY

DEP、SEHOP、Extension Point Disable、Bottom-up ASLR

Post-startup(delayed)

子进程 LowerToken() 之后

FORCE_MS_SIGNED_BINS、部分 Dynamic Code Disable

Renderer 启动要加载 ICU、DWrite、V8 等,限制开太早会 init 失败,所以 warmup 完成后再在 LowerToken() 里锁死。

Pre-startup 要点
Mitigation原理防什么

DEP

数据页不可执行(NX)

栈/堆溢出直接跑 shellcode

ASLR 系列

栈/堆随机化;禁远程/低完整性 DLL

ROP、DLL 劫持

Extension Point Disable

关 AppInit_DLLs、全局 Hook 等

杀软/输入法注入、hook ntdll

SEHOP

校验 SEH 链(主要 32-bit)

经典栈溢出利用链

HEAP_TERMINATE

堆损坏即终止

UAF/堆破坏窗口

NONSYSTEM_FONT_DISABLE

禁非系统目录字体

字体解析漏洞、GDI 面

RESTRICT_INDIRECT_BRANCH_PREDICTION

限制间接分支预测

Spectre v2 类

KTM / FSCTL_DISABLED

限制内核事务、文件系统控制码

缩小 NT/驱动触达面

Post-startup 要点
Mitigation原理防什么

DLL_SEARCH_ORDER

System32 优先等安全搜索顺序

当前目录 DLL 劫持

FORCE_MS_SIGNED_BINS

只允许 MS 签名 DLL

降权后第三方注入

DYNAMIC_CODE_DISABLE

禁止 RW→RX(W^X)

无 JIT 进程的 ROP 落地

STRICT_HANDLE_CHECKS

无效句柄即崩溃

UAF 句柄利用

全局动态开关:--allow-third-party-modules 会关掉 MS signed bins;kWinSboxStrictHandleChecks 开严格句柄检查。


2.2 双 Token:启动宽、运行严

Chromium 用两个 token 创建子进程(PolicyBase::MakeTokens()):

CreateProcessAsUserW( lockdown_token ) // Primary = 最终身份

SetThreadToken( impersonation_token ) // 主线程暂时更高权限

… warmup …

LowerToken() → RevertToSelf() // 回到 lockdown

Initial (USER_RESTRICTED_SAME_ACCESS)Lockdown (USER_LOCKDOWN)

Restricting SID

All

NULL(几乎什么都访问不了)

Deny-Only

None

所有 group

Privilege

保留

全删

用途

读注册表、加载系统 DLL、ICU/DWrite init

永久身份;文件/注册表等走 Broker IPC

SetLockdownDefaultDacl() 还会收紧 token 默认 DACL,让进程自己创建的对象也不宽放。

Integrity: 启动 Low → LowerToken() 后 Untrusted。MIC 是写隔离层:低完整性不能写高完整性对象,token 有洞时仍多挡一层。


2.3 Job Object:kLockdown

Job 管进程组生命周期 + UI/资源,不是 ACL 模型。

限制目的

KILL_ON_JOB_CLOSE

Browser 退出 → 子进程全杀

ACTIVE_PROCESS_LIMIT = 1

防 sandbox 内再 fork

DIE_ON_UNHANDLED_EXCEPTION

异常即死

UILIMIT_HANDLES / CLIPBOARD / GLOBALATOMS

与用户桌面 GUI 隔离

内存上限

防单进程吃光内存(Renderer ~1TB,GPU 8–64GB)


2.4 AddGenericConfig:问题 DLL 卸载

Broker 扫描自身已加载模块,命中 blocklist(蓝牙、广告、RelevantKnowledge 等)则 AddDllToUnload。子进程在 main/CRT 之前,Interception Agent 执行 INTERCEPTION_UNLOAD_MODULE。

目的不是防高级 exploit,而是防第三方注入在 DllMain 里崩进程或破坏 sandbox hook。


2.5 Alternate Winstation

默认 Desktop::kAlternateWinstation:Broker 建独立 Window Station + Desktop,Renderer 不在 WinSta0\Default。

  • 与用户窗口、剪贴板、广播消息隔离
  • 配合 Job UILIMIT_DESKTOP
  • Desktop integrity 降到 ≤ 子进程 integrity

GPU 故意不用 alternate desktop(否则 GL/UI 死锁)。


2.6 五层防御一览

Mitigation → exploit 难写、难稳定

Token LOCKDOWN → OS 对象默认全拒,走 Broker IPC

MIC Untrusted → 写隔离

Job kLockdown → 进程树 / UI / 内存

Alternate WinSta + DLL Unload → GUI 隔离、注入剔除

不防 Spectre 读同进程跨站数据——那是 Site Isolation 的事。


三、全局动态开关

来源效果

--no-sandbox / Browser 带此开关

整进程不 sandbox

--allow-third-party-modules

不启用 FORCE_MS_SIGNED_BINS

kWinSboxStrictHandleChecks

严格句柄检查

Delegate

CetCompatible()、RestrictCoreSharing()、GetSecurityAttributeName()

UseDirectWrite() 影响字体 mitigation

最后统一:delegate->InitializeConfig() → PreSpawnChild()。


四、各进程类型:定 + 动

4.1 Browser

定动

不 sandbox,当 Broker

InitializeSandboxInfo 对自身 ratchet down(DEP 等)

SpawnTargetAsync、策略编译、IPC 裁决

无子进程 Delegate


4.2 Renderer(kRenderer)— 最严

定: 完整默认策略;Win32k lockdown(upstream);关 kKsecDD;Job 内存 64-bit 最高 ~1TB;kWinSboxZeroAppShim 清 PEB shim。

动:

来源内容

命令行

--no-sandbox;--javascript-flags=--jitless → 禁动态代码

Feature

kRendererAppContainer + LowBox SID

Delegate

Tag:renderer / renderer-jitless / renderer-pdfium;AddBaseHandleClosePolicy;SetFilterEnvironment;jitless → DYNAMIC_CODE_DISABLE;CetCompatible()(有 JIT 关 CET);RestrictCoreSharing();PreSpawnChild()

跳过 Win32k lockdown;AllowWindowsFontsDir() 只读 %WINDIR%\Fonts;字体走 DWrite proxy 或 no-sandbox 时 GDI。


4.3 GPU(kGpu)— 中等

定: DisableDefaultPolicy();仍走通用 Mitigation;SetLockdownDefaultDacl + AddRestrictingRandomSid;Job 内存 8–64GB。

动:

来源内容

命令行

--disable-gpu-sandbox → kNoSandbox

Delegate

Token → USER_LIMITED(不能 LOCKDOWN,D3D/OpenGL 会挂);Job kLimitedUser + UI 例外;不用 alternate desktop;Integrity Low(winlogon 时 delayed);unload cmsetac.dll


4.4 Network(Utility 子类型)— LPAC 路线

定: 通用 Mitigation + DYNAMIC_CODE_DISABLE;Job kLockdown;LPAC profile cr.sb.net + SHA1(exe path);InternetClient、PrivateNetwork 等 capability。

动:

来源内容

Delegate

DisableDefaultPolicy() → USER_UNPROTECTED;NetworkInitializeConfig;GetAppContainerId() = exe path

Feature

kWinSboxNetworkServiceSandboxIsLPAC

其他

未 sandbox 仍进 Job(ShouldUnsandboxedRunInJob)

Network 用 AppContainer/LPAC 替代 Restricted Token,靠 capability SID 白名单给网络权限。


4.5 Utility 默认(kUtility)

定: 同 Renderer 基线,但无 Renderer 专属 Win32k/ksec;默认允许动态代码(Utility 里跑 V8/wasm)。

动: --utility-sub-type 决定实际子类型;Tag utility!<sandbox_type>;PreSpawnChild()、AddDelegateData 传 preload 库等。


4.6 Service / ServiceWithJit

定: 默认策略 + Win32k lockdown;kService 额外 DYNAMIC_CODE_DISABLE;SetFilterEnvironment(true)。

动: kServiceWithJit → CetCompatible() = false。


4.7 其他 Utility 子类型(速查)

子类型定(差异)动

Audio

禁用默认策略;Token → USER_RESTRICTED_NON_ADMIN

AudioInitializeConfig

IconReader

+ DYNAMIC_CODE_DISABLE

自定义 Token/Integrity

PrintBackend

Delegate 自定义 Token

PrintBackendInitializeConfig

PrintCompositor

可选 LPAC

kPrintCompositorLPAC

MediaFoundationCdm

LPAC + Job kInteractive(spawn mfpmp.exe)

USER_UNPROTECTED

ProxyResolver

LPAC

USER_UNPROTECTED

OnDeviceModelExecution

类似 GPU Token + LPAC

exe path 作 AC id

XR Compositing

几乎不 sandbox

专用 config

ScreenAI / SpeechRecognition

各自定制

允许第三方模块


五、Renderer 启动到进沙箱:调用链

Browser: RenderProcessHostImpl

→ SandboxWin::StartSandboxedProcess()

→ GenerateConfigForSandboxedProcess() + Delegate::InitializeConfig()

→ SpawnTargetAsync()

→ MakeTokens() + InitJob()

→ CreateProcessAsUserW(CREATE_SUSPENDED) + SetThreadToken(impersonation)

→ InitProcess() // 注入 Interception + Policy 到 shared memory

→ ResumeThread

Renderer: RendererMain()

→ PlatformInitialize() // ICU、DWrite 等(仍较高权限)

→ RenderThreadImpl 构造

→ EnableSandbox()

→ TargetServices::LowerToken()

→ RevertToSelf + 降 Integrity + CloseHandles + delayed Mitigation

任一步失败 → TerminateProcess(SBOX_FATAL_*),fail-closed。


六、与 Site Isolation 的边界

机制防什么

OS 沙箱

被控后读文件、提权、碰桌面、加载恶意 DLL

Site Isolation

被控后读其他站点同进程内存(Spectre)

Desktop 默认 --site-per-process:不同站点不同 Renderer;Browser 侧 ProcessLock + CanAccessDataForOrigin() 在 IPC 层再拦一道。


七、fork 两点

  1. Renderer 不做 Win32k lockdown(USE_HACK)。
  2. PDF 等可通过 AllowWindowsFontsDir() 只读系统字体目录。

主路径记忆:Renderer 最严 → GPU 中等 → Network 走 LPAC → Browser 不 sandbox → Utility 看 sub-type。


八、下一层:NT Interception

Token/Job 默认「全拒」后,文件、注册表等按需放行靠第三道门:

  • 子进程 NtCreateFile 等被 hook → CrossCall IPC → Broker PolicyEngine 判 Allow/Deny
  • 规则来自 filesystem_policy、process_thread_policy 等,编译进 shared memory

这是 Chromium 区别于「只做 token 裁剪」的核心:默认拒绝 + Broker 白名单。


结语

Chromium Windows 沙箱的设计哲学可以概括为:

  1. 类型套餐保证可维护、可缓存、可审计;
  2. Delegate/Feature 在固定框架内做最小差异化;
  3. 双 Token + delayed Mitigation 平衡 init 与安全;
  4. Token + Job + Mitigation + Interception 纵深叠加;
  5. OS 沙箱与 Site Isolation 分工明确,不互相替代。

若你在设计 AI Agent 沙箱,最值得照搬的是 Broker 白名单 IPC 和 不可逆降权时机,而不是简单套一个 Docker 或 seccomp 就完事。


代码路径:sandbox/policy/win/sandbox_win.cc、sandbox/win/src/{broker_services,target_services,job,restricted_token}.cc、content/browser/*/sandboxed_process_launcher_delegate*.cc。

KimiClaw:3分钟上手的云原生AI智能体实战指南 AI智能体(AI Agent)作为大模型落地的关键范式,正从研究概念走向日常生产力工具。其核心原理在于任务规划、工具调用与长期记忆的闭环协同,技术价值体现在降低人工重复劳动、实现跨平台自动化与个性化知识管理。典型应用场景包括企业工作流集成(如飞书/微博接入)、定时信息聚合(如早报生成)、垂直领域监控(如股票异动预警)等。KimiClaw通过云原生架构屏蔽CUDA、vLLM、RAG等底层复杂性,结合专为Agent优化的K2.5 Thinking模型,让非技术人员也能零代码部署可靠智能体——这正是AI普惠从‘能 阅读详情

相关推荐

一文带你看懂SAP-HANA的基本架构与原理

创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥。

丷江南南的博客 5070

让 AI 查订单、查库存、发消息:Spring AI 自定义工具(Tool)实战与工具描述工程

本文详解Spring AI 2.0中如何将Spring Bean方法通过@Tool注解暴露为AI可调用工具,核心在于“描述工程”——工具名需见名知义,描述要具体清晰,参数须注明格式与范围。强调错误应返回结果而非抛异常,敏感操作需人工兜底。针对海量工具场景,推荐使用检索式注册。结合实战案例与踩坑指南,提供从注册、描述到容错的完整方法论,助力高效构建可信赖的AI工具链。

weixin_43128865的博客 287

从AMBA到USB:手把手教你评估和选择Synopsys DesignWare里的免费商用IP

本文详细介绍了如何评估和选择Synopsys DesignWare中的免费商用IP,从AMBA到USB等关键模块。通过技术参数核对、验证环境评估和集成注意事项,帮助工程师高效利用这些经过硅验证的商业级IP,提升SoC设计效率。文章还探讨了免费IP与付费IP的边界策略,避免常见陷阱。

weixin_42683394的博客 292

工厂设备接MES为什么慢:协议识别与点表配置自动化的技术拆解

工业现场设备接 MES 的周期主要消耗在协议识别与点表配置。本文拆解这条链路的四层结构,给出点表映射的数据模型、两种部署架构的对比,以及可直接落地的三项验收口径与校验代码。适合工控集成、MES 实施、设备联网方向的工程师。

emfuture的博客 353

Redis Lua引擎UAF漏洞CVE-2025-49844深度剖析与复现实践

内存安全是软件系统稳定性的基石,其核心原理在于确保程序对内存的访问始终处于合法、受控的状态。在C/C++等手动管理内存的语言中,Use-After-Free(释放后使用)是一种典型的高危内存安全漏洞,它源于已释放的内存区域仍被程序指针引用,导致数据混乱或程序崩溃。这类漏洞的技术价值在于其往往能突破高级语言的安全边界,直接威胁进程本身,危害等级极高,常见于数据库、浏览器等核心基础设施。在Redis这样的高性能内存数据库中,其内置的Lua脚本引擎为复杂操作提供了强大支持,但同时也引入了沙箱环境下的复杂内存对象生

weixin_42530732的博客 365

Windows下TensorRT+YOLOv11部署避坑指南:从CUDA配置到模型加密全流程

本文详细解析了在Windows平台部署YOLOv11与TensorRT的全流程,重点涵盖从CUDA环境配置、工程编译适配到模型加密保护的实战指南。基于wang-xinyu的tensorrtx仓库,提供了详细的版本选择、编译问题修复方案,并深入探讨了如何对TensorRT引擎进行加密,以实现高效且安全的端到端部署。

vscode5coder的博客 449

list

的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。个元素,必须从已知的位置。

xie0510_的博客 232

R语言实战:Scheirer–Ray–Hare检验在非正态重复测量数据分析中的应用

本文详细介绍了当重复测量数据不满足正态分布假设时,如何利用R语言中的Scheirer–Ray–Hare检验进行数据分析。该检验作为非参数方法,无需数据服从正态分布或方差齐性,适用于分析组间差异、时间效应及其交互作用。文章通过实战案例,从环境搭建、数据准备、检验执行到结果解读与可视化,提供了完整的操作指南,帮助研究者有效处理心理学、医学等领域的复杂实验数据。

salt9的博客 780

向 excel、word、pdf 三种文档中占位符插入数据

【代码】向 excel、word、pdf 三种文档中占位符插入数据。

weixin_45934659的博客 27

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 450

详解卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。

qq_25762497的博客 25万+

C++ STL 反向迭代器:从源码框架到适配器实现

在 C++ STL 中,反向迭代器(reverse_iterator)是一个很典型的设计案例:它本身并不直接持有容器数据,而是通过封装一个正向迭代器,把「前进」变成「后退」,从而让同一个容器既能正序遍历,也能逆序遍历。本文从 SGI-STL 3.0 的源码框架出发,梳理反向迭代器的设计思路,再手写一个通用的迭代器适配器,并在vector和list中完成适配与测试。在 SGI-STL 3.0 中,反向迭代器的核心源码位于。反向迭代器是一个适配器,各个容器再基于它适配出自己的反向迭代器类型。下面截取list。

Godbro的博客 223

YOLO11-Seg优化:卷积变体系列篇 | 动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023

动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLO11-Seg,与C3k2结合实现二次创新

会AI的学姐 368

[C++]:7.STL:list

好久不见,firdawn小课堂又和大家见面啦。今天我们要学习的内容是list容器,list也是一种常用的数据结构。下面是本章的思维导图,那么让我们开始学习吧!自定义的list,由三个结构构成。分别是链表的最小组成单位,也就是链表节点。以及迭代器类和list类其实要特别说明的是, List的迭代器,它不是单纯的指针,因为我们如果对指针直接进行解引用操作的话,我们得到的是这个节点,而不是节点里面存储的值并且我们对这个指针加加,得到的也不是下一个节点的地址,而是所在节点的下一个单位的地址。

2301_80817679的博客 166

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

RT-Thread 5.4.0 完整版架构剖析(下):IPC、时钟、内存、设备与组件

从 IPC 全量、时钟与定时器、内存管理,到设备框架、组件层、软件包机制、移植裁剪与速查表,补齐 RT-Thread 5.4.0 完整版的下半张地图。

180

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

CMake 多目录工程实战:静态库与动态库的完整构建示例

本文通过一个完整CMake项目示例,展示了如何构建静态库(math)与动态库(sort),并分别在test1、test2中链接使用。项目结构清晰,顶层CMakeLists.txt统一管理变量,各子目录独立配置编译规则。通过add_library生成库,link_directories和link_libraries实现链接,最终完成构建与验证。重点区分了静态库(打包进可执行文件)与动态库(运行时加载)的差异,适用于实际工程化开发与面试准备。

2303_77004089的博客 107

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

第2讲:提示注入攻击——原理与防御

提示注入是攻击者通过恶意指令绕过AI系统规则的安全威胁,分为直接注入(如覆盖指令、角色扮演越狱)和间接注入(藏于文档或搜索结果中)。防御需三重机制:检测(识别高危模式与多轮诱导)、加固(设置优先级、随机分隔符、锁定输出)、净化(清除控制字符、编码、截断超长输入)。结合上下文分析与多模态处理,可有效防范编码绕过、过度净化等陷阱。核心理念:防御需检测、加固、净化联动,筑牢AI应用安全防线。

sandaoliuge的博客 244

CompletableFuture 实战:异步任务编排、异常处理、超时与线程池边界

本文以用户主页接口为例,详解 CompletableFuture 在异步任务编排中的实战应用。通过并行执行用户资料、订单与推荐数据查询,显著降低耗时。重点剖析了默认线程池风险、任务组合方式(如 allOf 与 thenApply)、异常处理机制、超时控制及上下文传递问题。强调应为阻塞 I/O 任务自定义线程池,避免占用 commonPool,并通过 completedFuture 灵活处理可选分支。最终实现高效、可控的异步编排,兼顾性能与稳定性。

此人很懒,什么都没有写~~ 346

TypeError: must be str, not list

【代码】TypeError: must be str, not list。

Forerunner and Successor 先駆者と後継者 32

Python 开发的实践:从数据结构选型到框架决策

规模多大?决定用list还是set,Pandas 还是 Polars。瓶颈在哪?I/O 密集用异步,CPU 密集用进程/自由线程,内存受限用列式与惰性执行。代价是什么?消除手动维护窗口的出错面,TaskGroup消除失败任务不被取消的泄漏,消除 N+1,Protocol消除为类型约束而引入的继承层级——每个选择都在消除某类代价,同时也引入新的约束。能回答这三个问题,比记住更多 API 更有用。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

weixin_45809780的博客 362

CMake 实战指南:从基础语法到静态库/动态库制作与链接

本文系统介绍了CMake的基本用法,涵盖注释、变量定义、C++标准设置、可执行文件输出路径配置、文件查找及头文件引入。重点讲解了如何通过add_library创建静态库与动态库,并结合include_directories和target_link_libraries实现依赖管理。内容实用,适合作为CMake入门与项目构建参考。

2303_77004089的博客 201

2026 GEO工具实测:竞品分析的技术判断方法是什么?

GEO竞品分析需确保四要素对齐:问题集、平台、时间与口径。数据采集方式(API或爬虫)影响准确性,可通过抽测对比验证。关键在于验证原始数据一致性,偏差超20%即存疑。对比口径应透明,支持自定义问题池并分维度(平台、品类)分析,避免片面结论。唯有技术严谨,数据才可决策赋能。

2603_96364115的博客 71

HarmonyOS ArkUI 分页列表防重:游标推进、重复项合并与刷新隔离

长列表里“到底了”不总意味着下一页成功:列表底部事件可能在初次布局时就触发,网络重试可能重复返回上一页,用户下拉刷新时旧分页请求也可能最后才回来。若每次回调都直接 append,页面会出现重复卡片、顺序回跳,甚至刷新后的新结果又被旧结果覆盖。这类问题的关键不是多加一个isLoading,而是让分页请求有明确身份:它属于哪个查询代次、请求哪个游标、当前是否已有同游标请求在途。响应只有通过这些核对,才能按稳定 ID 合并并推进游标。本文用应用侧纯逻辑模型说明这个边界;

2401_84996024的博客 317

从零开始的C++生活——第七讲——02

关于迭代器,由于你要进行操作符重载,所以我选择封装一个迭代器类,从底层的角度思考,你拿到任意一个类型的迭代器一般都是要访问迭代器所指向的空间的成员,所以我们其实应该拿到迭代器所指向节点的值,因此这也是一个模板类,而且,我们要对迭代器的解引用操作符和->操作符进行重载,重载即是分别拿到对应的值以及对应值的地址,除此之外,在遍历过程中我们需要对迭代器进行比较,因此需要重载==!增加的模板参数一个传T的引用,一个传T的地址,而const类型的迭代器则是传const T&和const T*。

dshswra的博客 69

数据结构 数组与链表 内存与缓存

存储数组的内存空间是连续的存储链表的内存空间不是连续的链表在初始化后,仍可以在程序运行过程中对其长度进行调整,因此也称“动态数据结构”。数组在初始化后长度不可变,因此也称“静态数据结构”。值得注意的是,数组可通过重新分配内存实现长度变化,从而具备一定的“动态性”。,在算法中直接被使用。一个二进制位即为1 比特。现代计算机 CPU 通常将 1 字节作为最小寻址内存单元。。先将原码转换为反码,并在反码下计算 ,最后将结果从反码转换回原码,则可得到正确结果。

2503_94205631的博客 220

InnoDB 页结构详解:页类型、页头页尾、数据行与页目录

InnoDB以页为最小管理单元,页大小16KB,最大支持64TB表空间(2³²页×16KB)。页结构统一为三段式:页头(38B)、页体、页尾(8B),页头含校验和、LSN、页号及类型,页尾存副本用于防页断裂。数据页(INDEX页)布局包括页头、哨兵记录(Infimum/Supremum)、用户数据区、空闲区与页目录。记录由额外信息(变长字段列表、NULL位图、记录头)与真实数据组成,通过next_record形成单向链表。页目录实现二分查找,提升查询效率。页间通过双向链表(同层)与B+Tree父子关系连接,

bksczm的博客 717
上一篇: 从浏览器内核升级到 AI Agent 沙箱设计:一名 C++ 开发者的安全架构进阶之路
下一篇: Windows DLL 劫持:原理、手法与 Chromium 的应对
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ปรัชญา แค้วคำมูล

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值