- 博客(75)
- 收藏
- 关注
原创 cpp从0实现ai sdk :Kimi AI:超长文本处理专家
Kimi AI助手是由月之暗面(Moonshot AI)开发的国产人工智能模型,具有超长上下文处理能力(支持数十万字文本分析)、多模态理解等功能。本文介绍了如何通过轨迹流动API调用Kimi模型,包括初始化配置、参数设置、请求构建等关键步骤。文章详细讲解了非流式消息发送的实现过程,包括JSON请求体构建、HTTP客户端初始化、响应解析等代码实现,并提供了API测试截图和参数说明。Kimi模型在长文本处理、深度分析方面表现突出,是国内首个实现多模态的大模型之一。
2026-05-15 21:04:55
341
原创 LLMProvider 基类的实现
本文介绍了构建LLMProvider基类的关键要素,包括API Key和Endpoint的获取方式,以及大模型请求的基本结构。文章详细讲解了JSON格式在网络通信中的重要性,并提出了必要的接口函数设计,强调虚析构函数的重要性。同时科普了大模型(LLM)的基本概念、发展历史和与大众认知AI的区别,还解释了temperature和Top-K这两个影响文本生成的重要参数。最后指出LLM本质上是强大的语言预测器而非具有意识的智能体。
2026-05-11 15:11:51
412
原创 4月29日:智能指针和c++内存分布
本文主要讨论了C++智能指针和内存管理的核心概念。在智能指针部分,重点分析了unique_ptr的特性(禁止拷贝构造和赋值,支持移动语义)及其与auto_ptr的区别(避免悬空指针和双重释放问题)。同时讲解了shared_ptr的引用计数机制和weak_ptr的观察者模式,特别强调了weak_ptr解决循环引用的关键作用。关于内存布局,修正了原有图示的错误,详细说明了栈空间(存储局部变量和函数调用信息)、堆空间(动态内存分配)、内存映射区(加载动态库)、bss段(未初始化数据)、data段(已初始化数据)、
2026-04-30 14:06:54
385
原创 【c++与Linux进阶】线程篇 -互斥锁
多线程并发访问共享资源时会出现竞态条件问题,如抢票程序中多个线程同时修改票数导致数据混乱。本文通过一个抢票示例展示了线程安全问题,分析了问题根源在于判断和执行被分割的"check-then-act"模式。引入互斥锁(pthread_mutex)作为解决方案,通过加锁和解锁操作保护临界区,确保同一时间只有一个线程访问共享资源。同时讨论了正确使用互斥锁的要点:临界区的范围确定、及时释放锁避免死锁、避免持有锁时执行耗时操作等。最终给出线程安全的抢票程序实现,展示了多线程编程中互斥锁的正确使用方
2026-03-13 14:33:05
732
29
原创 【c++与Linux进阶】线程的控制和封装
本文探讨了线程的核心特性与控制方法。首先分析了线程的轻量级特性,包括共享地址空间、独立调度单位等特点,并通过对比表格展示了线程切换比进程切换更高效的原因。其次,重点讨论了线程栈资源的独立性及其必要性,解释了为何每个线程需要独立栈空间以确保安全执行。随后介绍了线程分离(detach)机制,通过代码示例展示了如何正确使用pthread_detach避免资源泄漏。最后,文章展示了C++标准库的线程使用方法,并提供了一个封装pthread接口的类设计示例,包括线程创建、分离和命名等功能的实现思路。全文从底层原理到实
2026-03-12 15:31:40
242
13
原创 【c++与Linux进阶】轻量化进程与虚拟地址和页表
本文介绍了Linux线程的基本概念及其与Windows线程的差异。主要内容包括: 线程定义:线程是进程内的执行分支,共享进程资源,Linux使用task_struct管理线程,线程是CPU调度的基本单位。 平台对比: Linux采用"轻量级进程"设计,复用进程结构体task_struct Windows严格区分进程(EPROCESS)和线程(ETHREAD)结构体 Linux线程创建开销小,Windows线程创建开销大 Linux线程特点: 线程间通信快速(共享全局变量) 线程崩溃会导致
2026-03-11 09:35:45
422
8
原创 【C++与Linux进阶】详解信号的捕获:内核态和用户态的转换
本文介绍了Linux系统中的软中断、用户态和内核态的概念。软中断是通过软件触发的中断机制,系统调用(如open、write)就是典型的软中断,会触发CPU从用户态切换到内核态执行内核服务。内核态拥有更高的CPU特权级别,可以执行敏感操作,而用户态则受限。文章详细分析了系统调用的执行流程:通过中断指令进入内核态,查表跳转到对应系统调用函数,执行完毕后再返回用户态。最后对比了用户态和内核态在权限、内存访问等方面的核心差异。
2026-03-09 10:24:18
358
原创 【C++与Linux进阶】信号的处理和Linux系统的调度
Linux信号处理与系统运行机制 摘要 本文介绍了Linux信号处理机制和系统运行原理。主要内容包括: 信号捕捉:使用signal和sigaction函数设置信号处理方式(忽略/自定义),并通过示例代码演示信号屏蔽与处理过程。 内核态与用户态:分析信号处理的底层机制,涉及进程在用户态和内核态间的切换,以及中断驱动的系统调度。 中断与调度:阐述硬件中断(如I/O)和时间中断对Linux调度的核心作用,说明系统如何通过中断实现进程切换和资源管理。 文章结合代码示例与理论分析,帮助理解Linux信号处理的实现原理
2026-03-07 20:07:45
518
原创 【C++与Linux基础】进程间信号的保存(适合新手学习)
本文介绍了Linux信号处理的相关概念,包括信号递达、未决和阻塞状态的区别。重点讲解了内核中三个关键表格:阻塞位图(block)、未决信号集(pending)和处理函数表(handler)的作用及相互关系。通过sigset_t信号集类型及其操作函数(sigprocmask、sigpending等),用户可以控制信号的阻塞状态和查看未决信号。最后通过示例代码验证了信号阻塞机制,展示了如何通过编程方式控制信号处理流程,为深入理解Linux信号机制奠定了基础。
2026-03-07 15:05:44
358
1
原创 【C++与Linux基础】进程间的信号
本文摘要: 本文介绍了Linux系统中信号的基本概念与应用。通过实验代码演示了信号处理函数的使用方法,验证了Ctrl+C发送的是2号信号(SIGINT)。测试发现9号(SIGKILL)和19号(SIGSTOP)信号不可被自定义捕获,这是操作系统的保护机制。文章对比了信号与信号量的区别,前者用于进程间异步通知,后者用于资源同步控制。最后介绍了kill系统调用的基本用法。通过实践展示了信号在Linux进程通信中的重要作用。(149字)
2026-03-05 16:37:37
423
原创 【C++与Linux基础】进程池的基础理解:
本文介绍了Linux进程池的概念与实现。进程池是一种预先创建并管理一组工作进程的技术,相比临时创建进程,它能降低开销、控制并发数量、简化编程模型并实现负载均衡。文章通过代码示例展示了一个简单的进程池实现,包含管道创建、子进程工作函数等核心逻辑。进程池通过复用进程资源,提高了系统性能和稳定性。
2026-02-09 19:04:02
1064
26
原创 【C++与Linux基础】进程间通讯方式:匿名管道
本文介绍了Linux下进程间通信(IPC)的一种重要方式——匿名管道。首先解释了进程间通信的必要性,包括数据共享、任务协作和进程管理等方面。接着详细阐述了匿名管道的实现原理,通过父进程和子进程共享文件描述符的方式建立通信通道。文章还提供了具体的代码示例,演示如何使用pipe()系统调用创建管道,并通过父子进程分别进行读写操作实现进程间通信。最后展示了实际运行结果,验证了匿名管道在Linux进程间通信中的有效性。
2026-02-08 15:44:07
714
10
原创 【c++与Linux基础】文件篇(5)- 文件管理系统:
本文介绍了Linux系统中缓冲区的概念及其重要作用,通过分析系统调用与用户态缓冲的关系,阐述了缓冲区如何提高I/O效率。文章首先解释了缓冲区的本质是内存中的临时存储空间,然后详细说明了Linux内核通过页缓存优化磁盘I/O的机制,以及C语言标准库为何也要实现自己的缓冲区来减少系统调用开销。最后,作者演示了如何封装实现类似fwrite和fopen的函数接口,包括定义自定义的FILE结构体、实现缓冲区刷新策略等核心功能。通过代码示例展示了用户态缓冲区的具体实现方法。
2026-02-03 15:46:17
850
27
原创 【C++与Linux基础】进程如何打开磁盘文件:从open()到文件描述符的奇妙旅程(更多源码讲解)
本文深入剖析Linux内核中open()系统调用的完整执行流程,通过源码分析揭示从用户态到内核态的完整调用链。文章详细讲解路径解析、文件描述符分配、核心数据结构协作等关键机制,涵盖七个关键阶段:系统调用入口、参数解析、fd分配、路径解析、file结构创建、fd与file关联、返回用户态。通过分析task_struct、files_struct、fdtable、struct file等核心数据结构的关系,帮助读者全面理解Linux文件系统底层原理,特别是dentry cache和inode cache如何加速
2026-02-01 21:30:00
1322
29
原创 【C++与Linux基础】文件篇(8)磁盘文件系统:从块、分区到inode与ext2
本文摘要:文章深入探讨了Linux磁盘文件系统的管理机制。首先引入块(4KB)、分区和inode等核心概念,详细解释了文件系统如何通过逻辑块(LBA)管理物理扇区。重点剖析了ext2文件系统的结构,包括数据块(Data Blocks)、inode表、块位图等组件及其协同工作原理。其中inode作为文件元数据核心,记录了文件属性和数据块指针;位图机制则高效管理存储空间分配。文章还介绍了超级块(Super Block)和组描述符表(GDT)的备份恢复机制,并通过实验展示了如何查看文件inode信息。这些机制共同
2026-02-01 16:34:57
1394
9
原创 【c++与Linux基础】文件篇(4)虚拟文件系统VFS
本文深入探讨了Linux"一切皆文件"的设计思想及其底层实现机制。首先解释了Linux将硬件设备、进程通信等资源抽象为文件的优势,通过统一接口(open/read/write等)简化系统开发。随后重点剖析了虚拟文件系统(VFS)的核心架构,包括四大核心对象:超级块(super_block)、索引节点(inode)、目录项(dentry)和文件对象(file)。文章特别分析了VFS如何通过类似C++多态的机制实现统一接口,使用file_operations结构体中的函数指针实现不同文件系统
2026-01-31 15:50:33
947
28
原创 【C++与Linux基础】文件篇(3)-fd的本质和minishell的重定向功能
本文主要介绍了Linux文件描述符(fd)的底层原理和重定向的实现。首先讲解了fd本质是进程打开文件数组的下标,以及其"最小可用"的分配特性。通过代码示例演示了关闭标准输出后,新打开文件会占用fd=1的位置,实现输出重定向的效果。然后详细解析了dup2系统调用的使用方法,通过将文件描述符复制到标准输出实现重定向功能。最后提到将利用这些知识完善minishell,使其支持输入输出重定向功能。文章通过图示和代码示例帮助理解Linux文件系统的底层机制。
2026-01-31 10:46:14
1076
19
原创 【C++与Linux】文件篇(2)- 文件操作的系统接口详解
本文继续深入研究Linux的文件,又语言层面继续深入系统层面,详细的讲解open,close,write,read 还有三个基本的文件描述符
2026-01-28 17:36:46
1136
35
原创 【Linux基础】操作系统下的进程与虚拟内存的关系
这篇文章通过生动比喻和实例,系统性地解释了进程、操作系统内核和虚拟内存三个核心概念在Linux中的协同工作原理。✅ 核心逻辑:进程作为执行单元拥有独立的虚拟内存空间,内核通过系统调用、调度器和页表统一管理这些进程和物理资源,而虚拟内存利用页表映射、按需加载和写时复制等机制,为进程提供隔离、安全且看似无限的内存空间。✅ 关键比喻:进程是工人,虚拟内存是私人办公室,内核是总指挥,页表是地址簿,调度器是时间管理员,MMU是翻译官。
2026-01-27 17:32:13
872
8
原创 【C++与Linux基础】进程篇 - 改进Shell,完成内建命令
本文改进了上一篇文字shell不能使用内嵌命令,详细介绍了外部命令和内嵌命令。介绍了不同函数的作用和实现效果。最后代码已近绑定
2026-01-26 20:18:12
1043
1
原创 【C++与Linux 基础】进程篇 -还在怕进程控制?带你用C++手写一个简易Shell
本文介绍了如何使用C++实现一个简单的Linux Shell。首先讲解了Shell的概念及其作用,即作为用户与内核之间的"翻译官"。接着重点介绍了exec系列函数的功能和用法,包括execl、execv和execvp等,通过示例代码演示了如何利用这些函数实现命令执行功能。文章为初学者提供了一个从零开始构建Shell的基础框架,帮助理解Linux系统中Shell的工作原理。
2026-01-25 21:43:51
773
18
原创 【C++11进阶】拒绝程序崩溃!带你轻松搞定C++异常处理
本文专为C++初学者设计,通俗易懂地讲解了C++异常处理机制。文章从C语言错误码处理的痛点切入,引出`try-catch-throw`三大关键字,详细演示了异常的抛出、捕获流程以及栈展开原理。同时,介绍了C++标准库异常体系(`std::exception`),并重点分析了异常处理中的常见陷阱,如资源泄漏和析构函数抛异常的问题,帮助读者编写更健壮的代码。
2026-01-17 16:51:53
688
20
原创 【c++进阶】再谈虚函数
本文深入C++底层,从编译器视角解析虚函数与多态的实现原理。文章详细阐述了虚表指针(vptr)与虚函数表(vtable)的内存布局、动态绑定的查找过程,解释了为何多态会增加对象大小。同时,深入分析了虚拟析构函数的必要性、纯虚函数的应用场景,并指出了构造函数中调用虚函数及默认参数绑定等常见开发陷阱,适合C++初中级开发者进阶阅读。
2026-01-13 21:11:29
972
12
原创 【c++进阶】c++11下类的新变化以及Lambda函数和封装器
本文主要讲述了c++11的新的默认成员函数,有哪些,你知道吗?后面详细了解释了lambda函数和function和bind函数封装器
2026-01-13 14:32:44
1031
19
原创 【c++进阶】c++11的魔法:从模板到可变模板.
详细介绍了什么是可变模板参数,为什么是c++11现代化的体现。引出了emplace接口系列,希望大家元旦快乐
2025-12-31 16:56:30
1106
38
原创 算法【c++】二叉树搜索树转换成排序双向链表
本文介绍如何将二叉搜索树转换为排序的双向链表。题目要求不创建新节点,只能调整原树节点指针指向。通过中序遍历实现转换,利用递归方法在遍历过程中处理指针指向,使左指针指向前驱、右指针指向后继。关键步骤包括定义prev指针记录前驱节点,递归处理左子树后调整当前节点指针,再处理右子树。最终返回链表头节点(即树的最左节点)。该方法时间复杂度O(n),空间复杂度O(1)。代码示例展示了完整的实现过程,通过递归和指针调整完成树到链表的转换。
2025-12-26 19:52:46
705
13
原创 【c++进阶】从C++98到C++11的奇妙旅程(故事科普版)
这篇文章通过 **"老程序员老王"与"年轻程序员小李"的对比故事**,以 **处理100万条日志** 为具体场景,生动展现了C++98与C++11在STL使用上的巨大差异。文章采用 **问题驱动+代码对比** 的方式,从智能指针(内存管理)、unordered_map(性能)、emplace(效率)、lambda(简洁性)、范围for(易用性)等核心维度,循序渐进地揭示C++11如何让代码量减少75%、运行速度提升5倍、且杜绝内存泄漏。通过老王从 **质疑→困惑→实践→顿悟** 的情感曲线,将枯燥的技术升级
2025-12-24 17:34:32
923
18
原创 【c++进阶】c++11的左右值
C++11 通过引入右值引用和移动语义,从根本上解决了 C++98 中因深拷贝带来的性能瓶颈。配合编译器的 RVO/NRVO 优化以及 C++17 的强制 Copy Elision,对象传递和返回的效率得到了质的飞跃。同时,值类别的细化、引用折叠和完美转发机制,为编写高效、通用的泛型代码提供了坚实的基础。
2025-12-24 17:13:38
1125
12
原创 大语言模型的巧用:
想象一下:你不再需要逐行编写代码,不再需要记忆复杂的语法,甚至不需要完全理解程序如何工作。你只需要清晰描述你想要什么,AI就会为你生成可运行的代码。这就是Vibe Coding的核心——用自然语言编程。卡帕斯提这样描述他的体验:“我称之为一种新的编程方式——vibe coding,就是完全沉浸在感觉中,拥抱指数级提升,忘记代码本身的存在。”[1] 他在开发过程中“几乎不再碰键盘”,只需不断对AI说出想要的效果,让AI编写代码并调整。
2025-12-18 17:04:45
1173
38
原创 【c++进阶】在c++11之前的编译器的努力
关注我,学习c++不迷路:个人主页:爱装代码的小瓶子专栏如下:后续会更新更多有趣的小知识,关注我带你遨游知识世界期待你的关注。1998年C++标准发布后,标准委员会陷入了长达8年的"沉睡"。在这期间,编译器厂商面临一个尴尬的问题:“标准说可以这样做,但没说必须怎么做,也没说不能怎么做…”于是,各编译器厂商开始"自由发挥",导致C++代码在不同编译器间几乎无法移植。GCC (GNU Compiler Collection)Visual C++ (MSVC)Clang/LLVMGCC 2.95(1999)
2025-12-17 17:35:27
771
11
原创 【cpp进阶】c++11的新特性(概述版)
C++11是C++历史上最重要的更新,它通过移动语义、智能指针、Lambda、自动类型推导等特性,让C++在保持C级性能的同时,获得了Rust/Python级的生产力,实现了语言的现代化重生。这就是C++11的故事——一个关于性能、安全、生产力三者兼得的传奇。
2025-12-17 17:16:57
976
8
原创 【C++进阶】手撕 STL 源码:用红黑树封装实现 Map 和 Set
本文介绍如何通过改造红黑树模板,使其能同时支持Map和Set的实现。关键点在于: 引入KeyOfT仿函数,从存储类型T中提取键值K 红黑树模板参数调整为<K, T, KeyOfT> Set直接存储K,Map存储pair<K,V> 通过迭代器封装控制元素的可修改性 最终实现一套RBTree底座衍生出Map和Set两种容器,体现了STL中泛型编程的精妙设计。
2025-12-16 16:32:12
727
6
原创 【c++知识铺子】map和set的底层-红黑树
红黑树不仅是数据结构,更是工程智慧的结晶。它教会我们在复杂系统中寻找简单有效的约束,在严格与灵活之间找到平衡点。掌握红黑树,不仅掌握了一种数据结构,更掌握了一种系统设计思想
2025-12-10 20:34:21
1170
26
原创 【c++知识铺子】最后一块拼图-多态
C++多态是指同一接口表现出不同行为的特性,分为编译时多态(通过函数重载和模板实现)和运行时多态(通过虚函数和继承实现,利用虚函数表指针动态绑定实际调用的函数)
2025-12-05 17:22:10
1260
20
原创 【cpp知识铺子】map和set的前身-二叉搜索树
二叉搜索树的学习是后面map和set的基础,也是未来后面的AVL树和红黑树的学习打上坚固的基础。希望这篇文章对你的学习有帮助
2025-12-02 16:41:07
965
27
原创 【初识AI】大模型和LangChain?
本文介绍了大语言模型的基础架构与主流应用框架。首先解析了Transformer架构的核心组成(编码器/解码器)及其自注意力机制原理。随后详细说明了LangChain框架的工作流程,包括数据加载、文本分割、嵌入生成等关键步骤。文章对比分析了豆包、DeepSeek、Qwen和智普等主流大模型的特点与应用场景,并提供了API调用示例。最后阐述了智能Agent的自主性、学习能力等核心特性及其应用前景。全文配有架构图和工作流程图,适合AI初学者系统了解大模型技术体系。
2025-11-24 20:07:52
1313
21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅