- 博客(1174)
- 资源 (15)
- 问答 (1)
- 收藏
- 关注
原创 C++网络编程之kqueue初步介绍
kqueue是BSD系统(如FreeBSD、macOS)提供的高效事件通知机制,支持文件描述符、文件系统、信号、定时器等多类事件的就绪监听。其核心接口kevent可批量注册与等待事件,减少系统调用。通过struct kevent定义事件,使用EV_SET宏初始化,支持水平触发与边沿触发(配合EV_CLEAR)。过滤器类型丰富,涵盖I/O、进程、文件变化等,适用于高性能网络服务与系统监控。但仅限于BSD及macOS平台,不适用于Linux或Windows。
2026-10-23 10:49:36
8
1
原创 计算机原理—如何高效的操作文件
本文系统分析了文件操作的三层架构(应用层、系统层、硬件层),强调通过减少系统调用、优化访问模式、合理利用缓存与异步IO提升性能。重点指出页缓存、预读、零拷贝(如sendfile)、fsync控制及硬件特性(如NVMe并行性)对效率的关键影响。结合C++示例,展示了高效文件操作实践,包括批量写入、顺序访问提示、数据同步策略与资源管理,最终建议通过监控IOPS、延迟等指标进行调优,实现性能与可靠性的平衡。
2026-10-22 10:33:07
135
原创 计算机原理—内存优化的设计
本文从内存优化的本质出发,系统性地梳理了其核心目标——提升内存利用率与读写效率,并从技术技巧、用户层、系统层及混合优化四个层面构建分层设计框架。通过批量化、分组化、连续化三大策略,揭示了优化手段的共性规律。强调内存优化需跳出细节,立足全局,综合运用多层级方法,实现高效、可持续的系统级优化。
2026-10-21 10:30:22
197
原创 c++20新功能—std::atomic中的wait和notify
C++20引入std::atomic::wait、notify_one和notify_all,实现原子值变化的轻量级阻塞等待机制,适用于状态机、事件通知等场景。其核心是基于原子值比较的等待与唤醒,避免“通知早于等待”问题,但需注意:不自动保护共享数据,仍需同步手段。支持内存序控制,notify无内存序参数,同步依赖store与load的配合。相比条件变量,无需互斥量、不支持超时,但更高效且适合简单状态切换。使用时需循环检查状态,防范假唤醒与ABA问题,必要时结合版本号。二者可互补使用。
2026-10-20 10:15:10
419
原创 c++编程实践—全局变量的加载和初始化顺序
本文深入剖析C++静态初始化顺序问题(SIOF),揭示跨编译单元全局变量初始化顺序不确定的根源。基于Linux平台,阐明加载(自上而下)与初始化(自下而上)的分离机制,强调“加载≠初始化”的关键认知。通过分析主程序与动态库、模块间等典型场景,指出零初始化与动态初始化的本质差异,警示构造函数依赖引发未定义行为的风险。结合dlopen动态加载特性,提出设计控制、常量初始化、局部静态变量、依赖注入等实用解决方案,最终强调:唯有显式管理初始化顺序,方能从根本上规避SIOF问题。
2026-10-19 11:45:31
193
原创 AI和大模型—Agent常见架构
本文系统梳理了Agent开发的核心架构体系,从早期单体架构到多Agent协同,涵盖决策控制、工作流编排与分布式协作等主流模式。重点分析ReAct、Plan-and-Execute、Reflexion、Router+Skills、Blackboard及Graph Workflow等典型架构的适用场景与优劣。强调:Agent架构无绝对优劣,需结合具体需求、可控性与复杂度权衡选择。核心在于理解其本质——以大模型为引擎的智能任务执行系统,并借鉴软件工程经验,灵活应对快速迭代的技术变革。
2026-10-18 09:24:44
187
原创 并行编程实战—CUDA中的Tile编程之七内存的原子操作
本文介绍了CUDA Tile编程中原子操作的核心概念与应用。原子操作确保内存更新不可分割,保障多线程环境下数据安全,依赖硬件支持。在Tile中,原子操作分为块内(如atomic_add)和块间(如跨块累加)两种场景,通过ct.atomic_add等接口实现,支持按位运算、比较交换等操作。代码示例展示了如何在块内和跨块场景下使用原子操作进行高效、安全的并行计算,凸显其在高性能计算中的关键作用。
2026-10-18 09:21:48
166
原创 AI和大模型—矩阵相似
矩阵相似本质是同一线性变换在不同基下的矩阵表示,核心在于理解“变换不变性”。通过相似变换 $P^{-1}AP = B$,可实现坐标系转换,保持特征值、迹、行列式等不变。在大模型中,它解释了状态空间换基、注意力机制的坐标自由度、权重重参数化及图神经网络节点重编号等现象,助力模型压缩、可解释性与并行计算。其关键价值在于揭示:不同参数表达可等价,只要线性变换本质未变。
2026-10-17 10:16:29
74
1
原创 跟我学c++中级篇—c++17中的pmr
C++17引入的PMR(多态内存资源)机制,通过memory_resource抽象基类与polymorphic_allocator实现运行时动态内存分配管理,支持细粒度内存控制、跨平台共享及模块间接口统一。其核心优势在于类型擦除带来的灵活性,允许容器在运行时指定分配器,如monotonic_buffer_resource用于批量分配、pool_resource优化小对象复用。开发者可通过自定义资源或标准资源实现高效内存管理,结合RAII确保资源安全释放,适用于高性能、嵌入式及复杂内存策略场景。
2026-10-16 09:28:46
452
原创 c++编程实践—内存分配器的使用
本文介绍了内存分配器在实际应用中的三种主要方式:直接使用、封装使用和C++17的pmr多态内存资源。直接使用适用于局部场景,但存在兼容性风险;封装使用通过自定义分配器或对象包装提升灵活性与安全性,尤其适合容器和智能指针;pmr则实现运行时动态替换内存管理策略,解耦分配逻辑与类型。文中强调了tcmalloc新旧API不可混用,且推荐结合具体场景选择合适方案,以高效利用内存资源。
2026-10-15 10:34:26
567
1
原创 c++20新功能—std::osyncstream
多线程中使用std::cout输出易出现行混杂,因<<操作非原子。C++20引入std::osyncstream解决此问题,通过本地缓冲与原子提交机制实现线程安全输出。其内容在emit()或析构时一次性写入底层流,避免混乱。但需注意:不保证单次<<原子性、必须显式调用emit()、避免跨域使用、慎用于高频日志及自定义流。std::endl才触发刷新,\n不触发。适用场景为低频日志,非万能解药,需结合实际谨慎使用。
2026-10-14 13:11:24
187
原创 c++编程实践—thread_local变量的应用
thread_local在实际的开发中,一般程序员用的不多。但在某些场景下,可能有意想不到的作用。但在使用它前,要仔细想一下,thread_local是否是必须的?是否真正提高了效率?是否完全可以被其它替代?只有明白这一系列的关键因素,并掌握前面的细节后,才能够真正的大胆应用thread_local。c++灵活性是给胆大心细的开发者提供锋利的刀,而不是给楞头青提供自杀的匕首。
2026-10-13 10:38:23
182
4
原创 AI和大模型—大模型的Grokking
Grokking是大模型训练中的“顿悟”现象:模型在训练损失已收敛、验证性能长期停滞后,突然实现泛化能力跃升。它揭示了学习的非线性本质——从记忆到抽象的相变过程,体现为表征压缩与双回路竞争。这一现象挑战传统早停策略,表明持续训练可激发深层推理能力,对大模型训练具有重要启示:泛化非线性积累,而需时间触发质变。
2026-10-12 12:43:06
230
1
原创 linux系统—如何处理core文件的生成
程序崩溃是开发中常见问题,尤其在Linux平台需通过Core Dump进行调试。关键步骤包括:启用ulimit -c unlimited、确认core_pattern设置(如Apport或systemd-coredump)、检查生成路径权限与磁盘空间,并处理.crash文件解包。不同发行版工具各异(如coredumpctl list),需结合环境配置。核心在于掌握GDB等工具并积累经验,同时善用AI辅助分析,提升定位效率。
2026-10-11 11:32:43
211
原创 计算机原理—damon冷热内存和自动化识别
Linux 7.1引入的DAMON(Data Access MONitor)框架,通过轻量级、可扩展的冷热内存识别机制,实现从被动回收到主动分层管理的转变。其基于区域采样与自适应调控,精准监控内存访问频率,开销低于0.1%,支持DRAM与CXL/PMEM异构内存分层,自动迁移热/冷页,提升内存利用率与系统性能。结合DAMOS策略,可实现页面换出、大页优化、LRU调优等自动化操作,广泛应用于数据库、虚拟化与AI推理场景,显著降低OOM风险,是内存管理向智能化演进的关键突破。
2026-10-11 11:23:22
242
原创 c++编程实践—中文字符的处理
C++处理中文需统一使用UTF-8编码,避免跨平台兼容问题。从源文件、编译到运行时均应保持编码一致,推荐使用u8"..."字面量(C++17起)或std::u8string(C++20)。注意std::string仅存字节,需约定为UTF-8;禁止按字节截取汉字。编译时配置-finput-charset=UTF-8(GCC/Clang)或/utf-8(MSVC),并用CMake统一管理。文件读写以二进制模式操作,路径转换需适配平台(如Windows用UTF-16),终端环境应设为UTF-8。
2026-10-09 11:44:50
183
2
原创 c++编程实践—堆和栈越界调试
内存越界是C/C++开发中的经典难题,栈与堆的越界表现差异显著:栈越界易引发即时崩溃,尤其在启用栈保护时可快速定位;堆越界则常具滞后性,可能延迟至后续操作才触发,错误信息复杂且难以追踪。通过gdb分析core dump,结合bt full、p $_siginfo.si_addr等命令,可有效定位崩溃根源。实例显示,堆越界、野指针、双重释放、非法释放等问题均可能导致严重后果。掌握调试策略与工具使用,是解决此类问题的关键。
2026-10-08 10:23:45
832
原创 计算机原理—Btrfs文件系统
Btrfs作为基于写时复制(CoW)的现代文件系统,相较传统EXT/XFS在数据校验、快照、压缩、子卷及多设备管理等方面实现显著升级,具备高扩展性与集成化优势。然而,其性能短板如写放大、小文件处理慢、碎片化及RAID5/6稳定性问题,限制了在核心数据库等高性能场景的应用。尽管在桌面、NAS和AI开发中表现优异,且获主流发行版支持,但元数据风险、恢复困难与兼容性挑战仍需通过持续优化与生产验证来克服。Btrfs代表了文件系统演进方向,但全面普及尚待时日。
2026-10-07 09:29:56
191
1
原创 AI和大模型—循环深度技术
GPT-6的循环深度技术通过参数共享的循环迭代,在不增加参数量的前提下提升推理深度,实现“以时间换深度”。其核心在于预处理、循环模块与输出层的协同,支持多跳推理与潜在空间思考,显著降低内存占用并增强抽象推理能力。相比外部的循环工程,它聚焦模型内部计算优化,提升效率但带来不可控风险。该技术标志着大模型向模块化、专业化演进,体现软件工程化趋势,虽存训练稳定性与监管挑战,却为高效隐式推理提供新范式。
2026-10-06 14:34:41
254
原创 计算机原理—exFAT文件系统分析
本文概述文件系统作为操作系统基石的作用,介绍其核心功能及Windows、Linux、MacOS主流文件系统。重点分析exFAT的诞生背景与优势:突破FAT32容量限制,支持大文件与跨平台兼容,专为闪存设备优化,广泛应用于U盘安装系统、高清影音传输、多系统开发及智能设备固件等领域。虽存在老旧设备兼容问题,但凭借高效性与通用性,已成为现代数据交换的重要标准。
2026-10-05 10:26:05
196
1
原创 AI和大模型—JEV模型
JEV模型由前OpenAI研究员Diogo Almeida开发,基于“系统一”思维,聚焦快速决策而非文本生成。其核心优势在于输出范围固定、并行采样与RLCD训练,实现毫秒级响应、低延迟与低成本。相比传统大模型,JEV无幻觉、不自回归,适用于路由、评分等结构化决策场景,但仅限预设选项,不具备规划与记忆能力。它并非替代大模型,而是与其互补,在特定领域实现高效、可靠的智能决策,推动AI向更专业化、轻量化方向发展。
2026-10-04 10:15:49
265
1
原创 AI和大模型—codex的应用
总之,使用Codex是一个需要循徐渐进的过程。先学会处理简单的本地任务处理如阅读和分析项目;其次再进行基础的项目修改和迭代;直到最后完成复杂的任务。在此基础上,在进行更高级的Codex应用,综合实现达到中大型项目的开发和处理。会使用各种工具和规则、Skills的编写等。这就需要开发者自身不断的应用Codex,在实践中不断的总结经验并结合自身的项目特点提炼出适合于自身的一套Codex的开发能力。
2026-10-03 10:38:05
181
原创 计算机原理—Intel FRED中断优化
Intel推出FRED(灵活返回与事件交付)架构,旨在替代传统中断/异常处理机制。通过四类事件分级栈与原子化返回指令ERETS/ERETU,实现低延迟、安全的事件处理,消除特权级切换开销,提升性能(如io_uring测试中达2倍提升)。其统一模型简化内核开发,增强可扩展性与安全性。虽当前硬件支持有限(如AMD预计2026年),但Linux已初步适配,生态正逐步构建,标志着中断处理向高效、简洁演进的新方向。
2026-10-02 08:55:55
208
1
原创 AI和大模型—张量计算
张量是高维空间中的数据表示,可统一标量、向量、矩阵等概念。在大模型中,文本经Token化后转化为高维向量,通过张量形式组织,实现多维数据的高效处理。核心运算为矩阵乘法与累加,支撑注意力机制与多层网络的正反向传播。张量计算加速了神经网络、NLP及图像处理中的参数优化与梯度更新,是大模型底层运行的关键技术。
2026-10-01 09:31:40
155
1
原创 大数据处理—数据库数据仓库数据湖
大数据并非单一技术,而是多种技术的整合。从早期文件型数据库到关系型数据库,再到为分离分析与交易而生的数据仓库,逐步演进。面对海量非结构化数据,数据湖以低成本、高灵活性存储原始数据应运而生。为融合二者优势,湖仓一体兴起,实现数据湖的低成本存储与数据仓库的高效管理。整个发展脉络体现了数据保存、治理与价值挖掘的演进逻辑,是大数据技术体系的基础。
2026-09-30 09:26:30
290
原创 计算机原理—内存分配库mimalloc分析
mimalloc v3通过页级分片、多链表设计与Page Map机制,实现高性能内存管理。其核心在于将空闲链表按page分片,结合本地、跨线程释放链表,降低争用;采用Arena管理虚拟地址,支持延迟回收与快速释放。通过分离元数据、优化跨线程共享与页面回收策略,显著提升局部性、可扩展性与内存利用率,特别适用于高并发、中小对象场景。
2026-09-29 11:00:12
794
原创 Linux系统—数据删除的应对机制
删库跑路后数据恢复取决于多种因素,如文件系统类型、硬件(机械盘优于固态盘)、是否启用TRIM、删除后是否写入新数据等。Linux中rm -rf删除的文件在未被覆盖前仍可能恢复,关键在于立即停止操作、保持现场,通过只读挂载、LVM快照或磁盘镜像等方式降低风险。利用extundelete、debugfs等工具可尝试恢复,但成功率受日志、进程占用、文件加密等因素影响。预防胜于治疗:应建立删除审核机制、使用安全删除工具、定期备份,并结合快照与异地备份构建可靠的数据防护体系。
2026-09-28 10:43:29
201
2
原创 AI和大模型—维度的处理
本文系统阐述了矩阵降维在大模型中的核心作用,重点解析低秩矩阵与满秩矩阵的差异,引入奇异值分解(SVD)理论:任何矩阵可分解为多个秩为1矩阵之和,按重要性保留前几项即可实现高效降维与数据压缩。结合低秩矩阵分解(LRMF),该方法广泛应用于图像压缩、主成分分析及大模型参数优化(如LoRA)。相较精确但计算昂贵的SVD,LRMF更适用于稀疏、海量数据场景,是实现大模型高效微调的关键技术。理解矩阵降维机制,对掌握大模型底层原理至关重要。
2026-09-27 10:04:41
175
1
原创 AI和大模型—向量数据库
向量数据库通过将图片等非结构化数据转化为高维向量,实现基于语义相似度的高效检索,解决了传统数据库无法按内容查找图片的难题。它利用HNSW、IVF-PQ等近似最近邻算法,在精度与速度间平衡,支持毫秒级响应。广泛应用于AI中的RAG、推荐系统、多模态搜索等领域,弥补大模型“幻觉”问题。虽不能替代传统数据库,但作为新兴技术,正推动智能应用发展,其在整合性、更新维护等方面仍有提升空间。
2026-09-26 16:33:12
211
3
原创 AI和大模型—导数和积分
在很早以前学习线性代数时,就发现这东西太枯燥了。学了就忘。直到看到了西电的那本从几何角度学线代后的书籍后,才豁然开朗。每个人的学习的潜质不同,但每个人都要善于找到自己学习的突破点。不能拘泥于教材或学校提供的机制一种情况。打仗要防止思想僵化和教条主义,学习更是如此!
2026-09-25 09:57:46
287
4
原创 c++编程实践—为什么需要静态库
静态库在Linux平台中通过打包目标文件实现代码复用与模块化,具备编译期确定性、依赖清晰、部署简便、安全性高等优势,适用于嵌入式、高性能计算、工具类应用及单文件分发场景。其支持链接优化,便于测试与维护,但存在可执行文件体积大、更新需重编译、无法运行时替换等问题。尽管如此,静态库仍因其稳定性和可控性,在特定场景下不可或缺,且常与动态库协同使用以兼顾灵活性与性能。
2026-09-24 11:03:48
151
原创 计算机原理—内存分配器的分析
本文分析了主流内存分配器(ptmalloc、jemalloc、TCMalloc、mimalloc、Scudo等)在服务端、桌面及安全场景下的性能与适用性,强调无通用最优解。提出“全局通用+局部专用”组合策略,结合吞吐量、延迟、碎片、安全防护等维度综合评估。重点推荐根据场景选择:高并发用jemalloc/TCMalloc,内存敏感用mimalloc,安全优先用Scudo或hardened_malloc,同时提醒避免盲目替换,需验证兼容性与实际负载表现。
2026-09-23 11:21:37
669
1
原创 c++编程实践—为什么需要动态库
动态库通过运行时加载与共享,实现模块解耦、并行开发与二进制交付,提升系统灵活性与可维护性。其在设计、开发、部署等多维度具备显著优势,如支持插件架构、按需加载、版本独立更新及多进程共享,广泛应用于算法封装、硬件驱动适配、多数据库支持等场景。然而,也面临ABI兼容、版本管理、路径安全及性能开销等挑战,需谨慎设计与管理。总体而言,动态库是应对复杂系统需求、优化资源利用的必然选择。
2026-09-22 11:11:31
87
原创 c++编程实践—条件变量的正确使用
条件变量是多线程同步的重要机制,尤其在生产者-消费者场景中有效避免轮询开销。其核心问题包括假唤醒、丢失信号与死锁,其中假唤醒需通过循环判断或谓词机制防范。C语言中需手动使用while循环配合pthread_cond_wait,C++11起推荐使用std::condition_variable结合谓词(如cv.wait(lock, []{return ready;})),可自动处理假唤醒,提升安全性和简洁性。建议开发者优先采用带谓词的C++方式,确保线程安全。
2026-09-21 10:11:59
383
2
原创 AI和大模型—归一化
归一化是深度学习中稳定训练的关键技术,通过调整激活值分布缓解梯度消失/爆炸、提升收敛速度与精度。从早期的LRN到BN、LN、RMSNorm,再到专为大模型设计的QK-Norm、DeepNorm等,归一化机制不断演进,适应不同架构需求。当前大模型普遍采用RMSNorm或LayerNorm,兼顾效率与稳定性。未来趋势向“无归一化”范式发展,探索自适应、可学习的归一化方式,如AdaLN、FiLM等,以实现更灵活高效的模型训练。
2026-09-20 10:40:12
333
原创 AI和大模型—生产级别的Memory设计
本文探讨了生产级Agent记忆系统的设计思路,指出传统RAG向量库在精确匹配与状态管理上的局限。针对数据安全、状态控制与流程复用三大核心需求,提出分层架构:通过缓存层实现短期记忆,状态管理层结合KV数据库与摘要机制保障状态一致性,数据层采用MVC模式实现敏感数据脱敏与可控访问。最终构建可复用、可扩展的智能记忆体系,强调将传统软件设计经验与大模型特性融合,方能实现高效可靠的生产级应用。
2026-09-19 09:42:11
223
2
原创 AI和大模型—矩阵浅析
矩阵是AI与大模型的基础数学工具,可从数表、线性方程组系数、函数、几何变换、坐标系描述及张量等多个维度理解。它不仅是数值的排列,更是线性映射的载体,广泛应用于旋转、缩放、应力分析等场景。掌握矩阵的本质有助于深入理解算法底层逻辑,但应用层面可根据需求选择掌握深度。
2026-09-19 09:38:16
258
原创 计算机原理—静态变量的存储和初始化
C++静态变量分为静态存储期与初始化机制两部分。静态变量存于.data(已初始化)或.bss(未初始化)段,程序启动时分配,结束时回收。.bss不占文件体积,运行时零初始化;.data则占用实际空间。初始化分编译期(常量/零初始化)与运行时(动态初始化),后者存在跨翻译单元初始化顺序问题(SIOF)。局部静态变量自C++11起线程安全,首次调用时延迟初始化,存储仍属静态区。其设计体现灵活性,也增加了理解复杂性。
2026-09-18 10:08:38
177
1
原创 并行编程实战—TensorRT安装及测试
本文记录了在Anaconda环境下安装与配置TensorRT 11.2.1.2的过程,重点解决CUDA 13.2兼容性问题。通过conda调整频道优先级并使用cuda-python==13.2.0成功验证CUDA运行时版本为13020,确认显卡为RTX PRO 4000(23GB显存)。结合Pillow、ONNX等依赖,完成环境搭建,并通过完整验证脚本确认TensorRT及CUDA功能正常,为后续推理部署奠定基础。
2026-09-17 10:38:31
110
原创 计算机原理—线程的组成单元
线程是系统调度的最小单元,其动态运行依赖于用户态与内核态的静态组成。用户态包含线程栈、TEB/TLS、同步对象;内核态则有内核栈、TCB、上下文寄存器、共享页表等。二者通过系统调用、中断、上下文切换及同步机制交互。尽管线程切换成本较高,但因共享进程页表,内存管理开销小。掌握线程的静态结构,方能理解其动态调度本质,是实现高效多线程开发的基础。
2026-09-17 10:29:14
137
大数阶乘算法的一个例子
2018-10-06
AndroidStudio使用NDK生成静态库的方法?
2015-08-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅