学习日记
文章平均质量分 77
爱吃芒果的蘑菇
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++之WebSocket初体验
本文对比了Socket和WebSocket的技术差异:Socket是操作系统提供的底层网络通信API,支持TCP/UDP协议,需要开发者手动处理连接状态和数据边界;而WebSocket是基于TCP的应用层协议,通过HTTP握手升级实现全双工通信,内置帧机制和心跳检测,更适合实时通信场景。文章还提供了一个基于WebSocket++的C++实现示例,演示了WebSocket服务器的搭建和测试流程,展示了其在消息回显功能上的应用。通过具体代码实践,帮助开发者理解WebSocket相比传统Socket在高层次通信协原创 2025-10-16 11:39:35 · 1129 阅读 · 0 评论 -
C++手撕无锁线程池
文章摘要:本文探讨了如何实现一个高性能的无锁线程池,通过引入Vyukov MPMC无锁队列来替代传统基于mutex的线程池,减少锁竞争带来的性能损耗。文章详细介绍了MPMC队列的设计原理、线程池的工作流程以及关键实现细节,包括原子操作、缓存行对齐、自旋退避策略等优化技术。最后通过基础测试、竞态条件测试和高并发压力测试验证了无锁线程池的性能优势。相比传统线程池,该方案在CPU密集场景下具有更高的吞吐量和更低的延迟。原创 2025-10-15 10:33:18 · 959 阅读 · 0 评论 -
C++手撕TCP连接管理器
本文介绍了一个基于C++11的TCP连接管理器实现,支持服务端监听、客户端连接、异步数据收发和连接生命周期管理。核心功能包括:封装socket API实现服务端监听和客户端连接;使用独立线程处理每个连接的数据接收;提供线程安全的连接管理容器;支持回调机制处理连接状态和数据收发。实现采用现代C++特性如智能指针、lambda表达式和标准线程库,并通过互斥锁保证线程安全。文章详细展示了关键代码片段,包括连接建立、数据收发和错误处理逻辑,并提供了一个完整的测试用例验证功能。该项目已开源在GitHub,可作为网络编原创 2025-09-24 00:12:18 · 1136 阅读 · 0 评论 -
从零开始的Agent学习(三)-增加文档阅读功能
本文介绍了为AI Agent添加文档读取功能的设计与实现。功能支持三种路径读取方式:单一文件、文件夹和模糊匹配。核心实现包括:1) 单一文件读取,支持10MB大小限制和扩展名检查;2) 文件夹遍历读取,限制10个文件;3) 通配符模式匹配,限制5个文件。所有读取内容拼接后返回给大模型,并统一封装为Tool工具链接口。该功能支持多种文本格式(txt、md、代码文件等),为后续知识库扩展和信息保存提供了基础工具支持。原创 2025-08-23 15:41:56 · 493 阅读 · 0 评论 -
C++手撕LRU
LRU缓存实现解析 LRU(最近最少使用)是一种常见的缓存淘汰策略,通过优先淘汰最久未被访问的数据来管理有限缓存空间。其核心实现采用"哈希表+双向链表"结构: 双向链表:维护数据访问顺序,头部为最近使用(MRU)数据,尾部为最久未用(LRU)数据 哈希表:提供O(1)时间复杂度的数据查找,存储键到链表节点的映射 主要操作包括: get操作:若命中则移动节点到链表头部 put操作:若已存在更新值并移动;若不存在且缓存满则先删除尾部节点 该实现保证get和put操作的时间复杂度均为O(1),原创 2025-08-21 23:10:09 · 495 阅读 · 0 评论 -
从零开始的Agent学习(二)-增加文档输出功能
本文介绍了如何为聊天机器人增加文档导出功能。通过创建一个DocumentExporter类,实现了将对话内容导出为Markdown格式文件的功能。该工具可以自动生成包含标题、元数据和生成时间等信息的结构化文档,并支持自定义输出路径。作者使用LangChain框架的Tool类将导出功能封装成可被大模型调用的工具,并详细说明了工具的输入格式和使用场景。最后还提供了完整的实现代码和测试示例,为后续扩展文件查看等功能奠定了基础。原创 2025-08-21 18:18:07 · 539 阅读 · 0 评论 -
从零开始的ReAct Agent尝试
本文介绍了如何用Python实现一个简易的ReAct(推理+行动)智能体(Agent)。作者选用通义千问大模型作为核心,通过OpenAI接口调用,构建了一个能够执行数学计算的智能代理。文章详细讲解了环境配置、Agent类实现、工具函数设计(如计算器功能)以及提示词工程等关键环节。通过5轮对话循环机制,该智能体能够解析用户问题、执行计算动作并返回结果。示例演示了智能体如何正确处理"4*7+3"这类数学表达式,展示了ReAct框架"思考-行动-观察"的运作流程。这为初学者原创 2025-08-11 13:22:48 · 849 阅读 · 0 评论 -
C++手撕基于ID3算法的决策树
本文介绍了基于ID3算法的决策树实现方法。决策树是一种监督学习算法,通过信息增益选择最优特征进行分裂,构建树形分类模型。文章详细阐述了关键概念:信息熵衡量数据混乱度,条件熵表示按特征划分后的平均熵,信息增益反映特征对分类的贡献度。决策树类封装了构建过程,包含计算熵、信息增益和选择最佳特征等方法。构建过程递归进行:先计算初始熵,选择信息增益最大的特征作为节点,按特征值划分数据集,直至满足终止条件(样本同属一类或无更多特征)。代码实现了熵计算、信息增益评估和递归建树等核心功能。原创 2025-08-03 12:48:18 · 1281 阅读 · 0 评论 -
C++手撕简单KNN
本文讲述了机器学习新手小H初次尝试KNN算法的经历。面对LD交代的任务,零基础的小H通过自学选择了K近邻算法,理解其"物以类聚"的核心思想及实现步骤(计算距离、确定K值、投票决策)。小H用Python实现了数据预处理(归一化、降采样)和模型训练,但测试准确率仅60%,分析可能是维度灾难导致。随后又用C++实现了KNN算法,虽然任务失败,但认识到机器学习需要掌握数据清洗、模型选择和参数调优等知识。文章展现了新手探索机器学习的过程与遇到的典型问题。原创 2025-07-31 21:37:58 · 380 阅读 · 0 评论 -
Python读取获取波形图波谷/波峰
使用python ,在波形图中取出波谷/波峰的范围原创 2025-07-30 22:44:48 · 757 阅读 · 0 评论 -
C++实现单层时间轮
利用C++实现单层时间轮DEMO,提供所有代码和部分测试原创 2025-07-18 22:17:23 · 778 阅读 · 0 评论 -
QT 多线程 管理串口
关于QT多线程管理串口和读取数据原创 2025-07-13 23:20:14 · 312 阅读 · 0 评论 -
「TJOI2015」弦论
题意:对于一个给定长度为 N 的字符串,求它的第 K 小子串。字典序第k大子串:对应SAM中字典序第k大的路径。原创 2024-03-31 19:49:16 · 369 阅读 · 0 评论 -
部分扩展KMP(Z函数)练习
部分扩展KMP(Z函数)练习原创 2024-02-04 23:08:57 · 412 阅读 · 0 评论 -
MySQl
1原创 2023-03-18 08:57:09 · 113 阅读 · 0 评论 -
Java学习日记-反射&动态代理
反射允许对封装类的字段,方法和构造函数的信息进行编程访问。(成员变量、成员方法、构造方法)原创 2023-03-10 01:00:56 · 141 阅读 · 0 评论 -
Java学习日记——网络编程
Java学习日记——网络编程原创 2023-03-07 16:44:07 · 149 阅读 · 0 评论 -
Java学习日记——多线程&JUC
Java学习日记——多线程&JUC原创 2023-03-03 21:21:18 · 140 阅读 · 0 评论 -
Java学习日记-IO流
io流原创 2023-02-26 16:26:45 · 284 阅读 · 0 评论 -
Java学习日记-异常&File
异常&File原创 2023-02-18 10:09:09 · 109 阅读 · 0 评论 -
Java学习日记3-集合相关
数据结构原创 2023-02-13 16:29:17 · 169 阅读 · 0 评论 -
java学习日记-常用API
无原创 2023-02-04 11:11:55 · 140 阅读 · 0 评论 -
java学习日记2
java学习日记2原创 2023-01-22 22:52:21 · 138 阅读 · 0 评论 -
Java学习日记
java学习日记原创 2023-01-15 16:32:13 · 106 阅读 · 0 评论
分享