- 博客(42)
- 收藏
- 关注
原创 C++后端项目:统一大模型接入 SDK(四)
本文详细解析了AI调用中的HTTP请求处理流程,重点对比了DeepSeek和ChatGPT两种Provider的实现差异。
2026-05-21 17:40:27
515
原创 C++后端项目:统一大模型接入 SDK(三)
本文介绍了策略模式在AI项目中的应用,通过抽象基类LLMProvider定义统一接口,由DeepSeekProvider等子类实现不同AI厂商的调用逻辑。
2026-05-20 20:53:55
493
原创 C++后端项目:统一大模型接入 SDK(二)
本文介绍了C++后端项目的核心数据结构设计和日志系统实现。数据结构方面,重点讲解了Message、Session、Config及其子类APIConfig/OllamaConfig的设计思路,强调了虚析构函数在多态中的重要性。
2026-05-20 17:52:44
600
原创 C++后端项目:统一大模型接入 SDK(一)
本文介绍了一个用C++17开发的统一AI大模型SDK项目,旨在封装DeepSeek、ChatGPT和Gemini等主流AI模型的API接口。
2026-05-19 20:52:32
502
原创 计算机网络编程---手写TCP服务器(三)
三篇博客,我们从零走到一个生产级 TCP 服务器。阶段核心变化一句话第一篇搞懂 TCP API 地基第二篇多进程→孙子进程→多线程→线程池从串行到并发第三篇重连+翻译+守护进程让服务器真正上线核心知识点清单::一个监听,一个通信read 返回 0:不处理操作系统会杀进程setsockopt:开发阶段防止端口绑定失败文件描述符引用计数:父子进程关同一个 fd 不会互相影响孤儿进程:父进程先挂,子进程被 init 收养static 线程函数。
2026-05-18 18:06:29
592
原创 计算机网络编程———手写 TCP 服务器(一)搞懂网络编程核心 API
理解了 TCP 的三个核心 API:listen(插电话线)、accept(叫号)、read/write(对话)分清了两个文件描述符:listensock_(前台接待)只负责监听,sockfd(专属服务员)负责通信搞懂了一个最要命的坑:read 返回 0 必须处理,否则操作系统会杀进程单进程版一次只能服务一个客户端,后面的排队等到死。下一篇,我将尝试多进程、多线程、线程池等并发方案,让服务器真正能同时服务多个客户端。
2026-05-13 20:59:56
594
1
原创 计算机网络编程---UDP客户端与服务端
在网络编程的世界里,UDP(User Datagram Protocol,用户数据报协议)以其简洁高效的特性,在实时音视频传输、在线游戏、DNS查询等场景中占据着不可替代的地位。与TCP不同,UDP是无连接的、不可靠的传输协议,它不保证数据包的顺序和到达,但换来了更低的延迟和更小的开销。
2026-05-12 01:24:02
468
原创 计算机网络编程---系统调用到并发模型
Socket(套接字)是Linux网络编程的基石,它提供了一种统一的接口,让应用程序能够通过网络与远端进程通信,也能在同一台主机内进行进程间通信。正如Linux的哲学“一切皆文件”,Socket 本质上也是一种特殊的文件描述符。系统调用返回一个文件描述符,这个描述符关联着内核中的一套数据结构,包括发送缓冲区、接收缓冲区以及协议状态信息。:数据报套接字,基于UDP协议,提供无连接、不可靠的消息传输。:流式套接字,基于TCP协议,提供可靠、有序、面向连接的双向字节流。UDP是无连接的,不需要三次握手。
2026-05-10 23:52:38
553
原创 linux进程(下)
答案:fork 后父子进程共享同一份数据和代码,只有在写入时才复制一份。节省内存让 fork 执行更快避免不必要的拷贝答案子进程退出、父进程没 wait,就会变成僵尸进程危害:占用 PCB,造成内存泄漏解决:父进程调用 wait /waitpid 回收。
2026-04-17 21:12:30
448
原创 linux进程(上)
Linux 进程是后端开发、系统编程、高并发服务器的核心基石。无论是理解多线程模型,还是面试、考试,进程概念都是必须吃透的内容。这篇博客我们来一起学习研究将进程。
2026-04-17 00:44:46
391
原创 计算机网络编程---发展历程、两种协议、封装与分用
计算机之间只能传输光信号、电信号,用电压高低、频率强弱表示 0 和 1。只靠 0101 乱传,双方根本不知道对方在说什么。数据用什么格式什么时候开始发什么时候结束出错了怎么办这种双方必须遵守的约定,就是协议。发送数据时,数据从上层 → 下层传递。每经过一层,就加上该层的首部(Header),这个过程叫封装。应用层生成原始数据传输层加 TCP/UDP 头 → 变成段网络层加 IP 头 → 变成数据报链路层加帧头帧尾 → 变成帧最后变成 0/1 比特流,从物理层发送到网线上。首部长度。
2026-04-16 21:28:23
783
原创 Linux三大利器——GCC编译,Makefile自动化,GDB调试指南
本文介绍了Linux开发中的三大核心工具:GCC编译器、Makefile和GDB调试器。
2026-03-04 17:37:18
656
2
原创 Linux入门,指令与权限
Linux作为开源服务器操作系统,其核心在于掌握常用命令和文件权限管理。文章介绍了Linux的基本概念、目录结构以及20+实用命令(如ls、cd、rm等),重点解析了文件权限的rwx表示法和数字权限(如755)。同时阐述了用户/用户组机制和sudo临时提权功能,帮助初学者理解Linux权限体系。通过系统化讲解,让读者快速掌握Linux服务器管理的基本功,消除对命令行操作的恐惧心理。
2026-02-26 19:19:08
728
1
原创 [C++进阶]三大特性之一------继承
继承是代码复用的重要手段,是“代码复用”与“功能扩展”的结合。代码复用:无需重复编写基类中已有的成员,派生类直接继承并使用。功能扩展:派生类可以在继承的基础上添加新的成员,实现基类不具备的功能。行为重定义:派生类可以修改基类中成员函数的实现,使同一函数在不同类中有不同的表现(为多态奠定基础)。其价值是非常明确的,在大型项目开发中减少代码冗余:多个具有共性的类可以抽象出基类,将共性成员集中在基类中,派生类仅需要关注自身的特性。当共性逻辑需要修改时,只需修改基类代码,所有派生类。
2026-01-14 14:47:43
728
原创 [C++进阶]模板的进一步探索
本文探讨了C++模板编程中的非类型形参和模板特化两个重要概念。非类型形参允许在编译时确定常量值,通过示例展示了如何用其防止数组退化为指针。模板特化分为全特化和偏特化:全特化针对所有模板参数指定具体类型,偏特化则只特化部分参数。文章还分析了模板分离编译问题及解决方案,指出将模板声明和定义都放在头文件中可避免链接错误。这些技术能有效提升代码复用性和灵活性,是C++泛型编程的核心内容。
2026-01-13 08:30:00
1288
原创 [C++入门]类和对象下
本文总结了C++中类和对象的几个重要概念:1)初始化列表与构造函数的对比,强调初始化列表在const成员、引用成员等场景的必要性;2)static成员的特点,包括共享性、类外初始化和独立于对象存在;3)友元函数的概念及作用
2025-05-21 17:15:04
1225
1
原创 [C++入门]语言的求同存异!类和对象上
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类中成员的定义有两种方式可以直接声明定义全部放在类中也可以声明在头文件中,通过类名定义在类中,为了方便后期维护,小编推荐使用后者。
2025-05-11 07:30:00
988
原创 [C++入门]C++对C的优化篇
C++是在C语言的基础上由Bjarne Stroustrup博士于1982年引入并扩展了面向对象的概念而发明的新程序语言,旨在处理更复杂的程序问题。C++相较于C语言在多个方面进行了优化
2025-05-09 20:54:56
1033
原创 扑克牌的艺术——插入排序[数据结构与算法入门]
排序在生活中十分常见,我们不可避免的面对各种排序问题,常见排序方式呢大致有以下四种,今天小编和大家一起学习插入排序。
2025-05-08 07:45:00
902
原创 二叉树的实现与理解 [数据结构与算法入门]
这里根据深度优先搜索原则,先搜左边,如果找到某个左子树节点的值为x,返回左子树的指针,找不到去右子树接着找,还找不到则说明不存在,返回空指针。想要一个函数实现两个功能,就要在返回值下功夫,常规查找我们使用bool,这里我们使用树的结点指针接收,对查找到的返回值可以直接修改。每次递归后,子节点都会当成根节点向下递归,打印值在的位置,就是每个根的值的位置。依然是从根节点进入,逐层减1,当k的值变为1时,就递归到了所求层。申请一个节点存放数据,后续的左右子树还用不上,进行置空。
2025-05-04 22:39:42
957
原创 排队的智慧“队列”[数据结构与算法入门]
而对于栈,因为其先入先出的特点,我们要进行尾差头删,所以用链表来实现会更加的方便一些。我们用cur从头结点开始遍历,提前保存下一个节点然后将当前节点FREE掉,遍历结束后,将头尾指针置空,此时权限已经还给操作系统,再使用会出现野指针报错非法访问。本质就是链表的头删,但是在结构体中我们多定义了一个尾指针,所以当只剩一个数据,头尾都指向一个数据的时候,需要我们将尾指针也一并置空。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。出队列:进行删除操作的一端称为。
2025-04-25 14:59:09
461
1
原创 数据结构与算法入门_用C语言实现栈
首先我们将数据元素,栈顶指针,数组容量装在结构体里,对于一会进站出站的操作我们设置动态数组,根据需要调整数组大小,同时对结构体重命名,方便后续书写。核心关键点在于检查栈够不够用,我们将栈顶与数组数量进行对比,当相等时,说明栈满,利用realoc给数组扩容二倍。一道C语言时期的经典试题,在学习了栈之后,利用先入后出的特点是不是变得游刃有余了呢。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。利用判空进行断言,确保栈里有元素,随后通过top--实现精准删除。压栈:栈的插入操作叫做进栈。
2025-04-24 08:30:00
319
原创 一道题掌握链表!leetcode随机链表的复制【深度解析】
题目要求我们复制一个随机链表,每个节点除了指向下一个节点的指针,还有一个随机指针指向任意位置。而难点就在这里,复制的随机指针应该指向自己复制的新链表而不能指向原随机链表。
2025-04-23 02:00:31
409
1
原创 数据结构与算法入门_双向链表
之前的文章我们讲解了顺序表和单链表,这篇我们来一起研究一下双向链表作为链表的收尾双向链表也是一种链式数据结构,每个节点包含两个指针:前驱指针:指向当前节点的前一个节点后继指针:指向当前节点的后一个节点相比于单向链表,双向链表支持双向遍历,删除指定节点更高效,插入操作更灵活。但也有自己的缺点。每个节点多消耗一个指针的存储空间,操作逻辑更复杂,需同时维护两个指针。
2025-04-22 08:00:00
314
1
原创 数据结构与算法入门_链表OJ
cur走到之前记住的下一个节点,继续处理,循环往复。用cur逐个检查节点,每次循环,先记住当前节点的下一个节点next,防止断开后找不到路。如果当前节点值不是val: 不用删,prev跟上当前节点,cur继续往后走。让前一个节点直接跳过当前节点,删掉当前节点,cur移到下一个位置。把新头设为下一个节点,删掉当前节点,cur从新头重新开始检查。所有节点检查完,返回处理后的链表头,确保所有该删的节点都删了。所有节点处理完后,newhead就是反转后的新头,直接返回它。,请你反转链表,并返回反转后的链表。
2025-04-18 08:00:00
305
原创 数据结构与算法入门_单链表
这段代码像“倒着拼积木”,每次取最大的积木放在最后,直到所有积木拼完。既高效又优雅地解决了数组合并问题!以上就是本篇博客全部内容啦,有任何不足欢迎大家在评论区交流指正。
2025-04-17 08:00:00
986
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅