- 博客(31)
- 收藏
- 关注
原创 Go 入门基础:类型、变量与运算符
本文系统介绍Go语言基本代码元素,涵盖变量、常量、类型、运算符等核心概念,通过随机数统计示例解析程序执行流程。重点强调读代码应关注数据存储与操作逻辑,指出常见易错点如随机数范围、赋值与比较区别及换行规范。同时详解关键字与标识符区别,命名规则与导出机制,并介绍空标识符在多返回值中的应用,帮助初学者建立清晰的编程认知。
2026-10-14 23:30:55
356
原创 网络库Socket类详解
这篇技术文章通过电话机的比喻,讲解了C++网络编程中Socket类的实现原理。文章首先将网络通信类比为打电话的过程,分解为创建套接字、绑定地址、监听连接等步骤。然后分层介绍了Socket类在网络程序中的基础地位,详细解析了其核心成员和关键方法:包括创建/销毁套接字的RAII机制、绑定IP端口、监听连接、非阻塞模式设置、数据收发等核心功能。文章特别强调了错误处理和资源管理的重要性,并通过服务器启动流程的完整示例,展示了各个方法如何协同工作。整体采用生活化比喻+代码示例的方式,使复杂的网络编程概念变得通俗易懂。
2026-08-14 12:36:40
323
原创 网络库Buffer类详解
本文介绍了网络编程中缓冲区的核心概念与设计原理。缓冲区作为数据中转站,解决了TCP粘包/半包问题,能暂存接收的零散数据并缓存待发送数据。文章解析了一个典型Buffer类的内存布局(分头部空闲区、可读数据区和尾部空闲区)及其关键功能:通过读写偏移管理数据、空间动态调整、提供预读/预留写入等操作,并展示了其在网络通信中的实际应用场景(接收数据时的暂存组装和发送数据时的分批传输)。理解缓冲区设计是掌握高性能网络编程的重要基础。
2026-08-14 12:28:57
343
原创 大白话拆解AI黑话!从LLM到Agent,一篇扫盲无压力
有没有一种感觉:现在刷技术文章、看AI项目、聊行业趋势,满屏都是 LLM、Token、上下文、RAG、Agent、幻觉……每个词都似懂非懂,搜完解释看完就忘,想用的时候依旧一头雾水。其实所有AI名词,根本不是什么高深玄学,而是一套从底层模型、基础规则,到上层应用的完整逻辑链。今天这篇文章,是作者学习之后将这些名词用大白话、分层拆解、搭配通俗案例,带你从零吃透AI核心基础概念。全程无枯燥公式,普通人也能一次性看懂、记住、用得上。LLM 全称,中文叫大语言模型,大家平时说的 “大模型” 就是它。
2026-05-23 22:57:22
589
8
原创 提示词工程核心编写技巧:从零掌握高效 AI 交互,告别 AI 答非所问!
很多人用AI都有一个误区:觉得AI“笨、听不懂话、回答很水”。但真相从来不是AI不行,而是你不会“指挥”AI。AI就像一个能力超强、但毫无主动意识的万能员工,你说的话越模糊、越随意,它交付的结果就越拉胯;你给的规则越清晰、套路越精准,它输出的内容就越专业、越贴合需求。提示词工程,说白了就是一套驯服AI的高效沟通话术。不需要高深技术,只要掌握几套通用技巧,就能告别“答非所问、内容空洞、格式混乱”的尴尬。
2026-05-23 22:40:54
338
5
原创 LangChain 结构化输出详解:彻底告别大模型文本手动解析
本文介绍 LangChain 结构化输出的核心用法,解决了传统大模型文本输出解析成本高、稳定性差、业务对接难的问题。重点讲解with_structured_output() API,支持 Pydantic、TypedDict、JSON Schema 三种格式,通过代码示例演示了输出结构定义、嵌套类型实现,以及信息提取、工具调用等企业级场景应用,让大模型结果可直接被程序使用,告别繁琐文本解析。
2026-05-17 10:15:01
799
2
原创 一文吃透 LangChain 流式输出:同步、异步、LCEL 链式穿透全解析
本文介绍了LangChain中流式输出的核心概念和应用。流式输出允许实时传输数据,而非流式输出则需等待全部数据处理完毕。LangChain提供两种流式接口:同步stream()和异步astream(),分别适用于简单脚本和后台服务。通过LCEL链式调用和StrOutputParser解析器,流式能力可自动穿透各组件,将结构化消息转为纯文本碎片输出。流式输出是LangChain开发的重要基础能力,能实现实时可视化的大模型交互,为构建对话应用、智能问答等提供支持。
2026-05-17 10:07:01
531
1
原创 【Linux】多线程同步与互斥机制详解:从互斥锁到条件变量与信号量
本文介绍了多线程编程中的线程互斥与同步机制。首先通过共享变量访问问题引出临界区概念,讲解使用互斥量(pthread_mutex)保护临界区的方法,包括初始化、加锁解锁操作。随后针对生产者-消费者模型中的线程协调问题,引入条件变量(pthread_cond)实现高效等待通知机制。文章还讨论了POSIX信号量的使用,展示了如何通过信号量实现环形队列的生产者-消费者模型。重点强调了对共享资源的保护、线程间的协调配合,以及不同同步原语的适用场景和使用要点。
2025-10-27 22:18:10
848
2
原创 【Linux】 一文读懂 Linux 线程:本质、实现与进程的差异
摘要: 线程是进程内的执行流,共享进程资源但拥有私有栈和程序计数器。Linux将线程实现为轻量级进程(LWP),复用进程结构并共享虚拟地址空间。分页机制通过页表映射虚拟与物理内存,多级页表优化了内存管理。线程切换比进程快,因其共享地址空间(无需切换CR3寄存器)且仅需保存少量执行状态(如寄存器),避免了TLB清空等开销。这一优势使多线程并发效率高于多进程。
2025-09-22 22:14:37
804
原创 【Linux】从进程池架构看匿名管道:阻塞机制、文件描述符管理与通信可靠性
主要用于具有亲缘关系的进程之间传递数据。它是连接两个进程的单向字节流通道,遵循“
2025-09-09 18:02:07
923
原创 【Linux】命名管道 FIFO 全解析:创建、读写、权限控制,一篇搞定跨进程数据传递
我们通过组织一个拷贝文件的程序了解了命名管道的工作原理以及如何使用命名管道处理进程间通信问题,对命名管道有了深刻的理解。本节内容主要对进程间通信的方式:管道之一的命名管道进行了学习。共同进步!
2025-09-09 18:00:10
1186
原创 【Linux】深入理解Linux系统中进程相关概念
本文介绍了Linux操作系统中进程管理的基础知识。主要内容包括:1)进程概念与描述,进程通过PCB(task_struct)组织;2)进程创建机制,fork()函数实现父子进程共享代码,采用写时拷贝技术优化资源分配;3)Linux进程状态及转换关系;4)僵尸进程与孤儿进程的产生机制及处理方式;5)进程优先级和nice值调整方法;6)进程切换的基本原理和调度队列结构。文章通过代码示例和状态转换图,系统性地讲解了进程在操作系统中的运行机制和管理方法,为深入学习进程控制提供了基础铺垫。
2025-08-27 18:39:43
1045
原创 【Linux】从0到1掌握进程控制:终止、等待与替换的核心逻辑
本文介绍了Linux系统下进程控制的核心知识,包括进程终止、进程等待和进程替换三大部分。进程终止分为正常退出和异常退出,详细对比了exit()和_exit()函数的区别;进程等待部分讲解了wait()和waitpid()函数的使用方法,区分了阻塞等待与非阻塞等待的实现方式;最后介绍了进程替换的exec系列函数,说明其执行原理和不同变体的适用场景。这些知识为后续实现自定义shell程序奠定了基础,是Linux系统编程的重要基础内容。
2025-08-27 18:39:07
838
原创 【C++】STL——Stack&Queue(容器适配器)
本文介绍了C++中的容器适配器,重点讲解了stack、queue和priority_queue的实现原理及使用方法。stack和queue是基于其他容器(如deque)封装的适配器,遵循LIFO和FIFO原则;priority_queue是基于堆结构的优先队列。文章还分析了deque作为底层容器的优势,并提供了这些适配器的模拟实现代码。最后解释了适配器设计模式的概念,说明stack和queue通过封装底层容器接口实现特定功能。
2025-08-05 19:01:41
868
原创 【Linux】Ext系列文件系统
前面我为大家讲解了在Linux环境下文件的操作以及文件缓存区的知识。本节紧接着学习文件系统的相关知识。文件系统有很多,本文介绍的是主要是Linux系统下Ext系列文件系统。
2025-08-01 14:49:27
953
原创 【Linux】基础IO
引言:在Linux下,一切皆文件。在linux基础IO中,如果只学习文件操作停留在语言,对文件的本质难以理解,所以我们要站在系统的角度理解文件,对文件深刻理解。本文重点介绍C文件IO文件相关操作,认识文件相关系统调用接口,文件描述符并理解重定向,理解文件和内核文件缓冲区。
2025-08-01 14:49:23
915
原创 C++基础---vector
public://类型别名private:C++中,vector是一个模板,实现用的是三个指针,和string相似本质都是一个顺序表,所以操作功能的实现基本相似。
2025-07-12 22:27:41
656
原创 C++ 类和对象
类的实例称为对象,一个类可以创建多个对象。类中封装的成员变量称为属性,用来描述类的特征,成员函数称为方法,用来描述类的行为。
2025-05-24 23:25:23
678
2
原创 C++模板初阶
class 类模板名// 类内成员定义// 类模版public:_size = 0;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误,具体原因后面会讲// 扩容++_size;
2025-05-18 22:13:59
1077
原创 内存分布与管理
如果申请的是内置类型的空间,new 和 malloc,delete 和 free 基本类似,不同的地方是:new/delete 申请和释放的是单个元素的空间,new [] 和 delete [] 申请的是连续空间。6. 申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理释放。:调用operator new函数申请空间,在申请的空间上执行构造函数,完成对象的构造。
2025-05-18 16:27:52
879
原创 C++ 入门基础
C++中namespace的定义只能在全局中,还可以嵌套定义。在多文件编程中,多个同名的namespace空间视为一个namespace。例:C++标准库都放在名字叫std(standard)的命名空间中。
2025-05-10 10:33:17
864
原创 数据结构--二叉树(BinaryTree)
本次向大家介绍了树及其二叉树,并且介绍了一些二叉树的基本操作,主要对二叉树链式结构进行了详细的介绍,后续还会有关于二叉树的题目讲解,敬请期待!
2025-04-17 13:39:39
854
原创 库函数(2)
strncpy函数的作用是将源字符串的前 num 个字符复制到目标字符串。有人可能会疑惑strncpy函数和strcpy有啥区别,如你所见,strncpy函数多了一个参数num,它的作用就是限定复制的内容长度,而strcpy复制的内容碰到'\0'才停止,这样子strncpy函数相比strcpy可以更好的避免缓存区溢出的风险。这里输出结果是7,而不是8,是因为在这个字符串函数中字符串‘H'索引是0而不是1,这是因为字符串是由字符数组组成的,并且字符串的索引是基于 零(即从 0 开始的索引)来排列的。
2024-12-04 18:08:59
571
原创 库函数(1)
本篇介绍了字符函数和一些比较重要的字符串函数,还有许多字符串函数,本片只介绍了比较常用的几个,如果你感兴趣的话,可以去C语言官网上查询学习,也可以通过MSDN库函数查询工具进行学习。在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些可以对字符或字符串操作的函数。这个我写的自定义函数中的循环中执行语句在条件判断时就执行了,写一句空语句把这个循环补充完整,assert断言函数在前面的文章中介绍过,感兴趣的可以去看看。
2024-12-03 23:05:33
803
原创 C语言学习之指针(2)
第二种,指针-指针(一般两个指向的都是数组):a.绝对值,是指针指向和指针指向之间的元素个数,b.前提条件是2个指针指向用的是同一空间,注意计算的是相差元素数,并不是字节数。四. 说完指针数组,还有一个容易搞混的概念叫做数组指针,数组指针是指向的数组的指针,本质是指针,而指针数组本质是数组,两者容易搞混,需要特别记忆。三. 接下来说指针数组,顾名思义,指针数组应该就是存放了若干个指针的数组,每一个元素都是一个指针,存放地址,可以指向一块区域。例如,可以用它来存储多个字符串(字符串本质上是字符数组的指针)。
2024-11-15 17:19:16
486
原创 C语言学习之指针(1)
第二,指针类型决定指针向前向后+1、-1的大小(还是访问权限)(int *p,p+n(相当于+上n×sizeof(int)),指针p指向的类型是整型所以每次加减都是int所占的字节大小)。第三,指针还和数组有关,数组名本质上是指向数组首元素的指针,通过指针操作数组元素,可以更灵活地处理数组,尤其是处理数组中的动态数据时。不要看指针这么多好处,就随便用,使用指针时还是有许多的挑战,错误的使用指针会造成很坏的影响,在错误使用时,错误的指针操作可能导致内存泄漏、程序崩溃、未定义行为等问题。野指针的成因都有什么。
2024-11-10 22:18:39
305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅