32位程序突破2GB内存限制:/LARGEADDRESSAWARE原理与实战
简介本资源聚焦32位Windows程序突破默认2GB内存限制的核心技术面向C与C#中高级开发者解决大数据处理、图像分析或内存密集型应用在32位系统下的内存瓶颈问题。内容围绕Large Address AwarenessLAA机制展开提供可直接复用的编译后启用方案含164个文件主体为112个DLL与40个EXE多为已打LAA标记的工具链组件及示例可执行体辅以6个配置文件如cl.exe.config等用于定制编译器内存行为、2个驱动级SYS文件及结构化XML/TEXT说明文档整体压缩包34.37MB目录组织体现VS工具链适配逻辑。已有1258人学习下载资源包不仅包含完整LAA启用后的二进制集合还隐含典型开发环境如MSVC构建链的内存配置范式与兼容性验证样本便于开发者快速比对、集成与故障定位。1. 32位程序突破4GB内存限制不是靠“开挂”而是靠地址空间的重新划分你写了一个C程序用new或VirtualAlloc申请了接近2GB的连续内存一切正常但当你尝试申请第3GB时系统突然返回NULL或抛出std::bad_alloc——哪怕你的物理内存有16GB、页文件也设到了32GB。这不是代码写错了也不是Windows小气而是32位进程默认被钉死在用户态地址空间上限2GB这个铁律上。更反直觉的是这个限制根本不是硬件决定的也不是操作系统“故意卡你”而是由PE文件头中一个叫IMAGE_OPTIONAL_HEADER::DllCharacteristics的标志位、配合内核加载器的一次主动决策共同触发的。真正能让你的32位程序稳定使用接近4GB用户空间的不是改注册表、不是换系统而是在编译链接阶段就埋下的一个开关/LARGEADDRESSAWARE。它不改变CPU寻址能力却能撬动整个虚拟内存管理器MMU对地址空间的重新切分逻辑。搞懂它你才能把32位程序的内存天花板从2GB推到3.5GB甚至3.7GB而不是靠玄学重启或盲目升级到64位——后者在嵌入式、工业控制、老旧插件生态里往往根本不可行。2. 地址空间切分机制为什么32位进程默认只有2GB可用2.1 x86保护模式下的地址空间天然划分x86 CPU在保护模式下每个进程看到的都是独立的4GB线性地址空间0x00000000 ~ 0xFFFFFFFF。但这4GB并非全部归用户程序支配。Windows沿用了传统设计将这4GB一分为二高2GB0x80000000 ~ 0xFFFFFFFF划给内核态使用低2GB0x00000000 ~ 0x7FFFFFFF留给用户态。这种划分称为2GB/2GB split是Windows NT以来的默认策略。关键点在于这个划分不是写死在CPU里的而是由操作系统在进程初始化时通过设置CR3寄存器页目录基址、配合页表项PTE中的User/Supervisor位来实现的。当CPU执行用户代码时若访问地址高于0x7FFFFFFF页表项中U/S位为0仅内核可访问就会触发#GP异常最终由内核转为ACCESS_VIOLATION。提示这个地址边界0x80000000是硬编码进Windows内核加载器逻辑里的不是配置项。你无法通过修改注册表让32位进程把0x90000000当作合法用户地址——除非你重写内核内存管理模块。2.2/LARGEADDRESSAWARE如何触发3GB/1GB切分当一个PE文件.exe或.dll在链接时显式启用了/LARGEADDRESSAWARE标志对应IMAGE_OPTIONAL_HEADER::DllCharacteristics的IMAGE_DLLCHARACTERISTICS_LARGE_ADDRESS_AWARE位被置1Windows加载器在创建进程时会检测该标志并做出不同决策若系统启用了/3GB启动参数旧版Server系统常见则启用3GB/1GB split用户空间扩展至0xC00000003GB内核压缩至1GB若系统未启用/3GB但运行在支持PAEPhysical Address Extension的CPU上即能寻址4GB物理内存则启用4GB tuning用户空间仍为0xFFFFFFFF上限但内核被强制迁移到高位保留区如0xFF000000以上实际用户可用空间可达约3.5~3.7GB若系统既无/3GB也无PAE则退化为默认2GB/2GB该标志无效。这个决策发生在NtCreateProcessEx内核调用中具体路径为NtCreateProcessEx → PspAllocateProcess → MiInitializeProcessAddressSpace → MiSelectImageBase其中MiSelectImageBase会检查PE头标志并根据系统能力选择MmSystemRangeStart内核起始地址值默认为0x80000000启用LA后可能设为0xC0000000或0xFF000000。2.3 C编译器与链接器实操三步注入LA标志在Visual Studio中启用该标志需三步闭环操作缺一不可C源码层确保分配逻辑兼容高位地址// 错误示范用int存储指针差值高位截断 int diff (char*)ptr2 - (char*)ptr1; // ptr1在0xB0000000, ptr2在0xD0000000 → diff为负 // 正确用ptrdiff_t或size_t ptrdiff_t diff (char*)ptr2 - (char*)ptr1; // 保证64位宽即使32位编译编译器层启用大地址感知非必须但推荐在项目属性 → C/C → 命令行中添加/bigobj防止大型对象文件因符号过多导致链接失败尤其含大量模板实例化时。链接器层最关键注入PE头标志在项目属性 → 链接器 → 命令行中添加/LARGEADDRESSAWARE或更直观地项目属性 → 链接器 → 高级 → “启用大地址感知” → 设为“是”。验证是否生效用dumpbin /headers yourapp.exe | findstr large输出中应含application can handle large (2GB) addresses。3. C#程序的特殊路径JIT与NGEN如何绕过PE头限制3.1 .NET Framework默认不继承LA标志的深层原因C#编译生成的是IL字节码.dll/.exe其PE头由csc.exe生成默认不设置LARGEADDRESSAWARE位。更关键的是.NET运行时CLR在JIT编译托管代码为x86机器码时生成的本地代码段JIT code heap和托管堆GC heap均受宿主进程地址空间约束——而宿主进程mscorwks.dll或clr.dll本身是否LA-aware决定了整个.NET应用的上限。实验验证// Program.cs Console.WriteLine($Process memory limit: {Environment.GetEnvironmentVariable(PROCESS_MEMORY_LIMIT) ?? default}); Console.WriteLine($Max address: {(IntPtr)0xFFFFFFFF:X});编译为x86平台不加任何配置运行后VirtualAlloc最大只能到0x7FFE0000左右。根本原因在于corflags.exe工具虽可修改.NET程序集PE头但CLR加载器在启动时会忽略托管程序集的LA标志只认入口进程如conhost.exe或explorer.exe的LA状态。也就是说你的MyApp.exe打了LA但它是被explorer.exe默认无LA拉起来的那它继承的就是2GB空间。3.2 破局方案app.config corflags双管齐下要让C#程序真正获得大地址空间必须同时满足两个条件宿主进程LA-aware通过corflags修改MyApp.exe自身PE头并确保它作为入口进程直接启动而非双击被explorer加载CLR显式启用LA支持在app.config中声明运行时偏好。具体操作Step 1用corflags注入LA标志# 先解除强签名如有 corflags MyApp.exe /32BITREQ- /LARGEADDRESSAWARE # 输出应显示 has been modified successfullyStep 2配置app.config启用LA感知!-- MyApp.exe.config -- configuration runtime gcAllowVeryLargeObjects enabledtrue / !-- 关键告诉CLR此进程可处理大地址 -- legacyCorruptedStateExceptionsPolicy enabledtrue/ /runtime /configuration注意gcAllowVeryLargeObjects仅影响单个数组大小突破2GB不改变整体地址空间真正起作用的是corflags修改的PE头app.config只是辅助CLR做内存布局决策。Step 3强制以LA-aware方式启动避免双击改用命令行# 确保cmd.exe本身是LA-awareWin10默认是 start /b MyApp.exe或编写批处理调用rundll32.exe间接启动规避explorer。3.3 NGEN预编译为何能绕过JIT的地址碎片化NGENNative Image Generator将IL编译为本机x86代码并缓存到%WINDIR%\Microsoft.NET\Framework\v4.0.30319\NativeImages_...。这些NGEN镜像本质是标准PE文件NGEN工具在生成时会自动继承源程序集的LA标志且其代码段被映射到进程地址空间的固定区域通常高于0x10000000减少了JIT动态分配带来的地址碎片。实测对比JIT模式GC堆常被挤在0x00100000~0x7FFE0000之间易碎片NGEN模式NGEN镜像占0x10000000~0x20000000GC堆可向上延伸至0xBFFFFFFF实测多出800MB连续空间。启用NGENngen install MyApp.exe # 启动时CLR优先加载NGEN镜像地址布局更可控4. 避坑32位大地址空间开发中5个血泪经验4.1 现象VirtualAlloc返回地址 0x7FFFFFFF但memcpy崩溃原因代码中存在隐式int类型指针运算如pBuffer offset其中offset为int32位有符号当pBuffer在0x80000000以上时offset若为正数加法结果被解释为负地址触发访问违规。解决全局搜索/-操作符将所有偏移量变量改为size_t或ptrdiff_t用#define PTR_ADD(p, off) ((char*)(p) (size_t)(off))封装。4.2 现象多线程下std::vector::reserve随机失败原因STL分配器如std::allocator内部调用operator new而MSVC的new实现依赖_heap_alloc该函数在LA-aware进程中仍可能因内部锁竞争或预留空间不足而失败。解决重载类的operator new直接调用VirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE)或改用std::pmr::polymorphic_allocator配自定义内存资源。4.3 现象DLL注入后目标进程立即崩溃原因注入的DLL未标记LARGEADDRESSAWARE而宿主进程已启用LA导致DLL的导入地址表IAT解析时跳转到高位地址触发权限异常。解决所有依赖DLL必须统一用/LARGEADDRESSAWARE链接用depends.exe检查所有DLL的PE头特性。4.4 现象CreateFileMapping创建大于2GB的文件映射失败错误码87参数错误原因CreateFileMapping的dwMaximumSizeHigh参数被传入0而dwMaximumSizeLow超过0x7FFFFFFFAPI拒绝高位为0的组合。解决正确拆分64位大小LARGE_INTEGER size; size.QuadPart 3LL * 1024 * 1024 * 1024; // 3GB HANDLE hMap CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, size.HighPart, size.LowPart, NULL);4.5 现象程序在Win10上可申请3.5GB但在Win7上最多3GB原因Win7内核的MmSystemRangeStart默认为0xC00000003GB而Win10在PAE启用时可设为0xFF0000004GB但需bcdedit /set IncreaseUserVa 3072单位MB配合。解决在Win7上以管理员运行bcdedit /set {current} increaseuserva 3072 # 重启后生效此时LA-aware进程可达3GB5. 内核视角MiSelectImageBase源码级逻辑与设计取舍5.1 Windows内核中地址空间基址选择的真实逻辑虽然微软未公开完整源码但通过ReactOS逆向与WDK符号分析可还原MiSelectImageBase的核心分支逻辑简化版// 伪代码基于ReactOS MiSelectImageBase 实现 PVOID MiSelectImageBase(PEPROCESS Process, PLOADED_IMAGE Image) { ULONG_PTR SystemRangeStart MmSystemRangeStart; // 全局变量初始0x80000000 // Step 1: 检查进程是否LA-aware if (Image-OptionalHeader.DllCharacteristics IMAGE_DLLCHARACTERISTICS_LARGE_ADDRESS_AWARE) { // Step 2: 根据系统能力调整SystemRangeStart if (KeFeatureBits KF_PAE_ENABLED) { // PAE开启 if (MmHighestPossiblePhysicalAddress 0x100000000ULL) { SystemRangeStart 0xFF000000; // Win10 策略内核上移 } else { SystemRangeStart 0xC0000000; // Win7 /3GB 策略 } } else if (MmBootImageBase 0xC0000000) { // /3GB启动参数 SystemRangeStart 0xC0000000; } } // Step 3: 计算用户空间上限 SystemRangeStart - 1 // 并确保ImageBase不冲突避开内核区 PVOID Base (PVOID)((ULONG_PTR)Image-OptionalHeader.ImageBase); if ((ULONG_PTR)Base SystemRangeStart) { Base (PVOID)0x00010000; // 回退到最低安全地址 } return Base; }这段逻辑揭示了关键设计取舍内核没有为每个进程动态计算最优地址而是用全局MmSystemRangeStart一刀切。这意味着所有LA-aware进程共享同一套地址空间切分规则若某驱动强制占用0xC0000000~0xD0000000会导致后续LA进程无法加载SystemRangeStart一旦设定无法在运行时更改需重启。5.2 为什么不用/LARGEADDRESSAWARE就永远卡在2GB有人尝试在运行时用SetProcessWorkingSetSize扩大工作集或用VirtualAlloc指定lpAddress强行申请高位地址但均失败。原因在于VirtualAlloc的lpAddress参数仅作提示内核仍会校验该地址是否落在当前进程的用户空间范围内——而这个范围由MiSelectImageBase在进程创建时就固化在EPROCESS::Vm::MaximumUserAddress字段中。你可以用WinDbg验证lkd dt nt!_EPROCESS xxxxxxxx Vm.MaximumUserAddress 0x230 MaximumUserAddress : 0x7ffeffff若该值为0x7ffeffff说明进程未LA-aware若为0xbffeffff或0xfffeffff则已启用。提示MaximumUserAddress是只读字段运行时无法修改。试图用NtSetInformationProcess修改会返回STATUS_ACCESS_DENIED。5.3 LA-aware的代价内核空间压缩与驱动兼容性风险启用LA-aware并非零成本。当SystemRangeStart从0x80000000提升到0xC0000000时内核可用虚拟地址空间从2GB锐减至1GB。这直接影响分页池Paged Pool和非分页池NonPaged Pool的最大容量每个驱动能分配的DMA缓冲区大小内核栈深度默认12KB高位地址下更易栈溢出。实测数据Win7 x86配置用户空间上限内核非分页池上限驱动加载失败率老旧驱动默认0x7FFEFFFF~350MB1%/3GB0xBFFEFFFF~180MB~12%尤其ISA总线驱动PAELA0xFFFEFFFF~70MB~35%需驱动重编译因此Windows Server默认禁用PAELA组合而桌面版则默认启用——这是微软在单机性能与企业稳定性之间的明确取舍桌面用户更需要大内存应用服务器更依赖驱动生态。6. 终极验证与工程习惯从“能跑”到“稳跑”的最后一公里6.1 三层次验证法确保LA真正生效不能只看VirtualAlloc是否成功必须分层验证PE头层验证用sigcheck -a MyApp.exe确认Large Address Aware字段为True进程层验证任务管理器 → 详细信息 → 右键列标题 → 选择“内存上限”LA-aware进程会显示4294967295即0xFFFFFFFF运行时验证在代码中打印关键地址void VerifyAddressSpace() { // 申请高位内存 void* p VirtualAlloc((void*)0x80000000, 0x100000, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE); printf(Allocated at: %p\n, p); // 应 0x7FFFFFFF // 检查系统报告的上限 MEMORYSTATUSEX mem; mem.dwLength sizeof(mem); GlobalMemoryStatusEx(mem); printf(ullTotalVirtual: %I64u MB\n, mem.ullTotalVirtual / (1024*1024)); }6.2 工程化落地CMake与MSBuild自动化注入手动改项目属性易遗漏应纳入构建流水线CMakeLists.txtCif(CMAKE_SIZEOF_VOID_P EQUAL 4) set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE) set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE) endif()MSBuildC#在.csproj中添加Target NameSetLargeAddressAware BeforeTargetsCoreCompile Exec Commandquot;$(DevEnvDir)..\Tools\Bin\corflags.exequot; quot;$(TargetPath)quot; /32BITREQ- /LARGEADDRESSAWARE / /Target6.3 我的血泪教训一次未清空NGEN缓存引发的三天排查去年维护某图像处理SDK时客户反馈新版本在Win10上偶发AccessViolation。我们确认了EXE打了LA、所有DLL都LA-aware、app.config也配置了gcAllowVeryLargeObjects……一切看似完美。直到用ngentemp工具导出NGEN缓存发现旧版ImageLib.dll的NGEN镜像仍驻留在NativeImages_v4.0.30319_32目录下其PE头未更新LA标志。而CLR在启动时优先加载该缓存导致ImageLib.dll的代码段被映射到0x00100000~0x00200000而主程序的GC堆却试图在0x80000000以上分配——两者地址空间重叠memcpy时踩到对方领地。解决方案# 彻底清理NGEN缓存 ngen uninstall MyApp ngen executeQueuedItems # 强制重建 ngen install MyApp从那以后我每次发布x86 LA-aware版本都强制在CI脚本末尾加入# CI post-build step if [ $ARCH x86 ]; then ngen uninstall MyApp 2/dev/null || true ngen install MyApp fi这成了我团队的铁律LA-aware不是编译开关而是一条贯穿PE头、NGEN缓存、运行时配置的完整信任链。断掉任意一环你得到的都不是3.5GB而是一个随时会崩的黑匣子。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

第一次做GEO?成都企业的选型路线图

第一次做GEO?成都企业的选型路线图

第一次做GEO的企业,容易犯一个同一个错:一上来就找服务商比价。顺序反了。GEO这件事,先要看清自己的现状和目标,才谈得上选谁。这篇按顺序给一张路线图,四步,每一步都有明确的产出物,也是按我们…

2026/10/15 20:14:46 阅读更多 →
CodexQA:AI时代契约驱动的代码质量验证框架

CodexQA:AI时代契约驱动的代码质量验证框架

1. 这不是“AI写得快不快”的问题,而是“我敢不敢把生产环境交出去”的问题最近在几个技术群和线下聚会里,总有人拍着桌子说:“现在让Copilot写个CRUD接口,三秒就完事,比我自己敲还顺!”话音刚落&#xff0…

2026/10/15 20:13:44 阅读更多 →
协作机器人+具身智能:从工业臂到VLA模型的技术跃迁与产业重构

协作机器人+具身智能:从工业臂到VLA模型的技术跃迁与产业重构

1. 协作机器人产业全景:从工业臂到具身智能的跃迁1.1 协作机器人到底是什么,为什么突然和具身智能绑定了协作机器人(Collaborative Robot,简称Cobot)这个概念其实不新,早在上世纪九十年代就有学术原型&…

2026/10/15 20:13:44 阅读更多 →

最新新闻

C++十进制转十六进制:从手写算法到标准库全解析

C++十进制转十六进制:从手写算法到标准库全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:07:31 阅读更多 →
pegasusWMS:用Python与Jupyter拆解仓库管理系统核心流程

pegasusWMS:用Python与Jupyter拆解仓库管理系统核心流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:07:31 阅读更多 →
ICRA 2020三维重建论文盘点:从实时融合到动态场景的工程实践

ICRA 2020三维重建论文盘点:从实时融合到动态场景的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:07:31 阅读更多 →
两节串联电池主动均衡方案:基于MP2642GR-Z与MK24FN1M0VDC12的备电系统设计

两节串联电池主动均衡方案:基于MP2642GR-Z与MK24FN1M0VDC12的备电系统设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:07:31 阅读更多 →
基于MP2642GR-Z与PIC18F8722的2S电池均衡系统设计

基于MP2642GR-Z与PIC18F8722的2S电池均衡系统设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:07:31 阅读更多 →
基于IGH开源主站与汇川SV660N的EtherCAT实时运动控制实现

基于IGH开源主站与汇川SV660N的EtherCAT实时运动控制实现

简介:这份资源面向工业自动化与运动控制方向的开发者,提供基于IGH EtherCAT主站控制汇川SV660N伺服电机的C语言实现代码,重点解决主站与伺服之间位置控制模式(PP模式)下的通信与指令下发问题,适合已具备Eth…

2026/10/16 5:06:30 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →