自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 收藏
  • 关注

原创 Langchain核心组件---文本向量

本文介绍了LangChain中的文本向量化核心组件,重点讲解了嵌入(Embedding)的概念及其应用。嵌入通过将文本转换为数值向量(如OpenAI的3072维向量),使计算机能够理解语义信息。文章阐述了向量空间中的相似性度量方法(余弦相似度、欧氏距离),并列举了嵌入模型在语义搜索、RAG、推荐系统等场景的应用。同时详细说明了LangChain中OpenAIEmbeddings类的使用方法,包括embed_documents()和embed_query()两个核心API的区别及实际代码示例,展示了如何将Ma

2026-07-25 23:26:17 356

原创 Langchain核心组件---文档加载器

本文介绍了LangChain的核心组件之一——文档加载器(Document loaders),重点围绕RAG(检索增强生成)技术展开。RAG通过结合大语言模型的语义理解能力与本地/私有知识库检索,解决了传统AI搜索无法获取实时或私有数据的问题。文章详细阐述了RAG的完整流程,包括离线数据处理(文档加载、文本分割、向量化存储)和在线检索(语义搜索、结果生成),并通过租房项目Q&A的代码示例展示了实际应用效果。最后介绍了LangChain的基础文档类Document,说明其包含文本内容(page_content

2026-07-22 19:12:25 157

原创 Langchain核心组件--提示词模板

摘要: LangChain的提示词模板(Prompt Template)是其核心组件之一,用于动态生成大语言模型(LLM)的请求内容。它通过占位符实现可复用性,分离提示词结构与数据,提升一致性和维护性。 字符串模板:通过PromptTemplate类定义模板(如"Translate into {language}"),运行时填充变量生成完整提示词。 聊天消息模板:ChatPromptTemplate支持构建包含系统、用户消息的模板(如翻译任务),结合StrOutputParser可链式调用模型输出结果。 消

2026-07-22 19:08:43 215

原创 Langchain核心组件---消息

本文摘要主要介绍了LangChain框架中的消息组件及其在聊天模型交互中的应用。文章首先阐述了消息在聊天模型中的作用,包括消息角色(系统、用户、助理、工具)、内容格式和元数据。接着详细说明了LangChain提供的统一消息格式(SystemMessage、HumanMessage、AIMessage等),这些格式可跨不同模型提供商使用。文章还演示了如何通过缓存历史消息实现多轮对话功能,并指出在旧版LangChain中可通过RunnableWithMessageHistory类来管理聊天历史记录。整体而言,该

2026-07-22 19:01:58 211

原创 Langchain学习---大模型具有的四个核心能力

主要聚焦大模型具备的四个核心能力:1.模型定义 2.工具调用 3.结构化输出 4.流式输出!

2026-07-20 21:56:40 242

原创 AI Agent 设计模式:ReAct 深度解析

AI Agent设计模式:ReAct解析摘要 ReAct模式(Reasoning+Acting)由普林斯顿大学与Google联合提出,通过交替推理与行动解决纯推理导致幻觉和纯行动无法纠偏的问题。其核心是三步闭环循环:Thought(分析现状)→ Action(调用工具)→ Observation(获取结果),最终输出Final Answer。实现关键在于系统提示词而非模型微调,提示词严格规定输出格式和工具调用规则。典型实现包含70行左右Python代码,通过循环调用大模型、解析输出、执行工具并将结果反馈给模

2026-06-12 22:48:30 355 5

原创 部署OpenClaw

本文档提供了在Ubuntu 22.04系统(ARM64/X86_64)上部署OpenClaw Linux环境的完整指南,主要内容包括: 前置依赖安装:基础环境和Node.js 22的安装 两种安装方式:官方一键安装和NPM全局安装 初始化配置流程:模型选择、插件安装、权限设置等关键步骤 飞书机器人专项配置:扫码授权和通讯规则 日常启停操作和常见问题解决方案 特别提醒ARM架构下避免安装brew依赖 完整的卸载清理方法 文档强调轻量化部署,跳过不兼容的依赖项,确保在Linux命令行环境下稳定运行。

2026-06-12 22:40:08 264

原创 FFmpeg视频录制

本文介绍了使用FFmpeg库进行视频采集、转码和编码输出的完整流程。首先概述了FFmpeg的核心组件(libavcodec、libavformat等),然后详细说明了从设备初始化、参数设置、解码器准备到编码输出的关键步骤。重点包括:通过avdevice_register_all注册设备,使用avformat_open_input打开摄像头输入,配置解码器和H.264编码器参数,利用sws_getContext进行图像格式转换,最后通过主循环实现读取、解码、转换、编码和写入MP4文件的全过程。整个过程展示了F

2026-03-24 15:33:28 357

原创 spdlog框架的安装与使用

spdlog日志库封装与使用 本文介绍了spdlog日志库的安装、基本使用和二次封装方法。

2025-08-18 22:54:32 594

原创 gflags框架安装与使用

本文介绍了gflags框架的安装与使用方法。安装只需执行sudo apt-get install libgflags-dev命令。使用步骤包括:1)包含头文件并定义参数(字符串、整型、布尔型);2)解析命令行参数;3)通过FLAGS_前缀访问参数值。文章展示了如何通过命令行参数或配置文件来覆盖默认参数值,并提供了对应的Makefile编译命令。gflags框架简化了命令行参数处理,支持运行时动态修改参数配置。

2025-08-18 22:08:23 298

原创 Xshell远程连接Ubuntu 24.04.2 LTS虚拟机

Xshell远程连接Ubuntu 24.04.2 LTS虚拟机

2025-08-12 21:07:08 409

原创 【仿muduo库实现并发服务器】LoopThreadPool模块

我们要避免那么线程创建之后,但是我们的eventloop,还没有被实例化之前就去获取loop的操作,这样的获取是会出问题,就是一个空了对不对所以要给它同步管理起来,也就是说你获取loop的时候,必须是它loop已经那么实例化完了才可以之间的,你如果没有实例化完那就不让你获取。比如在执行各种操作的时候,进行事件监控的时候,它就会绑定到我们eventloop对应的线程里边去,要进行某些操作的时候也是把任务压入到我们对eventloop,它的任务队列里边。而我们的从属react呢?

2025-07-01 23:05:50 1132

原创 【仿muduo库实现并发服务器】Acceptor模块

还要注意监听套接字的读事件监听不能放在构造函数中执行,因为会存在刚创建好监听套接字连接,并且启动了读事件监控,同时读事件也就绪了,调用读事件回调函数,获取新连接,但是这个时候服务器对新连接的操作回调函数还没有设置进去,监听套接字的读事件回调函数就只会获取新连接,然后调用空的回调函数,什么都不干。因为channel初始化时是需要两个参数一个是绑定的eventloop,一个是对应的套接字,而想要获取套接字,就必须要先创建套接字,创建套接字连接只能在函数体中进行,那这样channel就无法初始化了。

2025-07-01 23:05:16 1093

原创 【仿muduo库实现并发服务器】Connection模块

不过有一个注意点,就是Send()函数,将服务器处理完的数据放入到用户态的发送缓冲区中,这个外界传入的data数据可能是一个临时的数据,而Send函数只是将发送操作压入到任务队列中,有可能没有被立刻执行,所以当真正执行时,存储这个data数据的空间已经被释放了,就无法再去访问了,所以在Send()函数还没有将操作压入到任务队列中时,先将这个空间的数据拷贝出来,用一个buffer对象存储,然后传入传入给SendInLoop,SendInLoop访问的就是buffer一个拷贝对象。然后直接真正的释放连接。

2025-07-01 23:04:45 974

原创 【仿muduo库实现并发服务器】eventloop模块

不需要每次都一次一次的加锁访问任务队列,我们只需要加锁一次,然后定义一个临时的任务队列,将原来的任务队列中的任务全部交换到临时的中去,当全部取出来就可以解锁了。作用:如果别的线程要执行当前的线程中的conn的对象的函数的时候,是不会执行的,因为会涉及到安全问题,所以就需要吧他执行的任务放到这个任务队列中去,让当前线程自己执行。因为如果别的线程要执行当前的线程中的conn的对象的函数的时候,是不会执行的,因为会涉及到安全问题,所以就需要吧他执行的任务放到这个任务队列中去,让当前线程自己执行。

2025-07-01 23:04:06 1267

原创 【仿muduo库实现并发服务器】Poller模块

就绪的信息有哪个文件描述符的什么事件就绪了,光有这些信息是没有用的,因为对于描述符的channel对象不知道什么事件就绪啊,只有channel对象才能知道就绪后该怎么操作。所以需要将该描述符的什么事件就绪信息设置进对应的channel对象中(通过描述符在哈希表中映射找到channel对象),这样channel对象才能知道它就绪了什么事件,并且可以进行对应的处理,2.当事件就绪时,就绪的事件信息就会保存在struct epoll_event 结构体数据中,保存的信息有就绪的描述符fd,就绪的事件。

2025-07-01 23:00:35 873

原创 【仿muduo库实现并发服务器】Channel模块

实现Channel模块,主要是对连接进行事件管理,主要管理这个连接监控了什么事件,以及事件就绪之后该如何处理等操作。

2025-07-01 22:58:46 1084

原创 【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素

使用正则表达式提取HTTP元素

2025-06-02 16:02:37 811

原创 【仿muduo库实现并发服务器】实现时间轮定时器

【仿muduo库实现并发服务器】实现时间轮定时器

2025-05-30 20:20:50 1350

原创 【高级IO】多路转接之单线程Reactor

本篇实现多路转接之单线程Reactor

2025-05-09 14:10:55 1282

原创 【高级IO】多路转接之Epoll

本篇介绍Epoll的工作原理以及接口,实现Epoll服务器

2025-05-07 15:50:44 1307

原创 【高级IO】多路转接之select

IO的本质是什么?如何实现高效的IO?本篇实现多路转接之select

2025-05-06 20:38:20 1119

原创 【Linux网络编程十一】网络原理之数据链路层

本篇总结数据链路层的工作原理以及相关知识:MAC帧和ARP协议

2025-05-06 16:21:35 789

原创 【Linux网络编程十】网络原理之IP协议【网络层】

本文介绍网络层的IP协议相关内容,谈路由问题与分片问题,运营商在网络中的作用是什么,NAT技术等

2025-04-21 19:43:00 1011

原创 【MySQL】Ubuntu下C++连接MySQL

本篇总结在Ubuntu下使用C++连接MySQL

2025-04-18 20:00:01 1307

原创 【Linux网络编程九】网络原理之TCP协议【传输层】

TCP是面向连接,可靠的网络协议,可靠性主要由确认应答,流量控制,滑动窗口,超时重传,拥塞控制,连接管理,序号与确认序号等策略保证。TCP在保证可靠性的同时还在效率上做了努力,使用快重传,捎带应答,延迟应答等策略提高效率。TCP通过三次握手建立连接,四次挥手断开连接。

2025-04-03 14:58:40 892

原创 【Linux网络编程八】实现最简单Http服务器(基于Tcp套接字)【应用层】

实现一个最简单的Http服务器,分析Http服务器是如何工作的,理解Http协议。

2024-09-04 12:24:24 1384

原创 【Linux网络编程七】网络序列化和反序列化(网络版本计算器)

【Linux网络编程七】网络序列化和反序列化(网络版本计算器):本篇重点:自定义协议和序列化反序列化。以网络版本计算器为例子来理解协议定制的诸多细节问题。理解序列化和反序列化间的套路。

2024-03-15 17:43:09 1284

原创 【Linux网络编程六】服务器守护进程化Daemon

【Linux网络编程六】服务器守护进程化Daemon

2024-02-16 16:48:36 865

原创 【Linux网络编程五】Tcp套接字编程(四个版本服务器编写)

【Linux网络编程四】Tcp套接字编程(四个版本服务器编写):本篇重点:四个服务器版本:单进程版本,多进程版本,多线程版本,线程池版本。以及更多细节问题。带你学会如何使用Tcp套接字编程。

2024-02-16 16:04:29 1551 1

原创 【Linux网络编程四】Udp套接字编程网络应用场景

【Linux网络编程三】Udp套接字编程网络应用场景:场景一远程控制命令;场景二:Linux与Windows通信;场景三:简单聊天

2024-02-04 19:06:46 1501 1

原创 【Linux网络编程三】Udp套接字编程(简易版服务器)

【Linux网络编程三】Udp套接字编程(简易版服务器)本篇重点:UDP网络编程步骤:①创建套接字②绑定网络信息③接发消息;服务器端和客户端绑定细节,以及代码实现。

2024-02-02 18:34:40 1308 1

原创 【Linux网络编程二】网络基础2(网络框架)

【Linux网络编程二】网络基础2(网络框架)本篇重点:①跨网络如何通信②网络通信的本质③端口号④TCP/UDP协议⑤通用网络接口⑥网络字节序

2024-02-01 18:43:21 1131 1

原创 【Linux网络编程一】网络基础1(网络框架)

【Linux网络编程一】网络基础(网络框架)重点:①什么是协议②协议分层③操作系统与网络协议栈关系④局域网下如何通信⑤以太网下如何通信⑥交换机作用

2024-01-31 22:18:14 1180 1

原创 【Linux系统编程三十】线程池实现

【Linux系统编程三十】线程池实现,本篇重点线程池的原理以及代码实现,以及在类内创建线程的细节。

2024-01-23 12:46:17 909

原创 【Linux系统编程二十九】基于信号量的环形队列生产消费模型

【Linux系统编程二十九】基于信号量的环形队列生产消费模型,本篇重点,理解使用信号量,在环形队列生产消费模型中,信号量维持的是生产和消费者之间的同步与互斥关系,而加锁维护的是生产者和生产者,消费者和消费者之间的互斥关系。理解这层概念就能真正的理解基于信号量的环形队列生产模型!

2024-01-21 21:53:41 1069

原创 【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型)

【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型):重点:条件变量(原理,接口),321原则,真正理解生产消费模型,伪唤醒。

2024-01-21 15:16:55 1058

原创 【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)

【Linux系统编程二十七】:本文主要总结什么是互斥,为什么要互斥,以及互斥如何实现,主要原因是因为多线程并发访问共享资源,会造成数据不一致问题。介绍互斥锁的概念和相关接口使用,锁的应用场景,探讨同步场景下又该如何解决以及死锁问题。

2024-01-09 18:18:41 1210

原创 【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)

【Linux系统编程二十六】:本篇总结Linux下线程库中如何控制线程,理解线程控制块都是在线程库中被统一管理起来,线程tid的本质就是TCB在共享区里的起始地址。熟悉掌握线程的创建,退出,等待等操作,了解线程的一些特性:独立栈,局部存储,可分离线程等。

2024-01-03 19:38:59 1236 1

原创 【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)

【Linux系统编程二十五】:本篇知识点诸多,建议反复理解。线程是进程的一个执行分支,执行粒度比进程要细,如何理解?进程是系统资源分配的基本实体,而线程是系统的调度单位。如何理解?线程要比进程更轻量化,又该如何理解?页表是如何完成从虚拟地址到物理地址的映射的?什么是轻量级进程?

2023-12-29 18:52:24 1367

链表带环问题解决策略及想法

链表刷题必备

2023-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除