自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

繁星的博客

分享只是

  • 博客(44)
  • 收藏
  • 关注

原创 linux进程概念

首先是看参数nr_active总共有多少个还正在运行的进程,如果==0,那么就会触发活动队列和过期队列交换swap(&active,&expired)的事件,如果>0,那么此时就会从struct task_struct* queue[140],1.先是查看bitmap[5]里面非空队列,找到了返回queue的下标,此时就能快速找到,不用一个一个遍历,然后这个就是优先级最高的队列,之后选择队列的第一个进程进行运行(给cpu调度),时间片耗尽之后,放入过期队列。

2026-06-14 13:36:46 229

原创 自动化构建-make/Makefile

会写makefile是一个很重要的能力makefile的作用:自动化构建项目。

2026-06-07 14:05:54 198

原创 LangChain 工具调用机制:从工具定义到完整调用闭环

a: int = Field(..., description="第一个整数")b: int = Field(..., description="第二个整数")"""两数相加。"""这个工具的参数结构,由 AddInput 这个类来描述Field(…这个字段是必填项,没有默认值这种方式的好处是参数描述更完整。城市日期用户 ID课程 ID查询类型分页数量这时候用Pydantic会更清晰。

2026-06-04 15:16:19 200

原创 LangChain 初探:模型调用、链式编排与运行机制

本文摘要介绍了LangChain框架的核心概念和使用方法: LangChain基础:通过组件化设计将AI开发流程分解为可串联的模块,形成输入→组件1→组件2→输出链式结构。 模型调用示例: 演示使用ChatDeepSeek调用大模型的完整流程 解析模型返回的AIMessage对象结构,包含内容、元数据和token用量等信息 链式结构: 三种构建方式:管道符|、RunnableSequence和pipe方法 实现组件自动衔接,前序输出作为后续输入 底层机制: Runnable接口标准化调用规范(invoke/

2026-06-03 20:48:06 229

原创 Git 远程协作:代码在云端与本地之间流转

之前的操作都是在本地玩耍,现在我们进阶到远程对比项HTTPSSSH地址形式是否需要提前配置不需要需要配置 SSH 公钥clone 是否方便最方便第一次稍微麻烦push 时认证可能要账号、密码、token配好 key 后更方便适合场景新手快速 clone长期开发推荐分类命令作用注意点克隆远程仓库git clone <HTTPS仓库地址>使用 HTTPS 地址把远程仓库克隆到本地HTTPS 克隆比较简单,直接复制地址即可克隆远程仓库git clone <SSH仓库地址>

2026-06-02 21:44:15 251

原创 Git 入门之道:从分支演化到协同开发

本文介绍了Git分支的基本概念和使用方法。主要内容包括:1)分支是提交的时间线,master是主分支;2)HEAD指针指向当前分支,master指向最新提交;3)常用的分支操作命令,如创建、切换、合并、删除分支;4)使用git stash临时保存和恢复工作区修改;5)提供了分支操作的命令速查表,涵盖查看、创建、合并、删除等常见场景。文章通过具体命令示例解释了分支的工作原理和操作方法,强调HEAD和分支指针的指向关系,并提供了实用的命令组合建议。

2026-06-02 20:56:38 198

原创 Git 入门之道:从版本流转到基础操作

Git 本质上就是版本控制系统Git 可以管理电脑上的大部分文件,比如:其中,文本文件git可以知道你到底改了哪一行?而,二进制文件git大概知道你的文件的大小的变化.1.创建文件夹首先在;linux机器里面创建一个文件夹gitcode2.git init进入文件夹,紧接着对git进行初始化3.配置用户名和邮箱有俩方式,一个是给当前仓库配置,还有一个是给全局配置我的理解就是,如果你在当前仓库配置了用户名和邮箱,那么就用这个,如果你配置了全局,这个时候就用就近的.就近原则局部创建与查看全局

2026-05-31 17:45:47 325

原创 【项目】boost搜索引擎(一)

既然全网搜索太大,那我们可以退一步,做一个简单的搜索引擎,也就是 站内搜索。只搜索某一个网站或某一批固定文档里的内容。比如 C++ 学习中常用的 cplusplus.com 或者类似标准文档网站,它们内部就支持搜索。你搜索 string,它会返回和 C++ STL、容器、字符串相关的结果。对比项全网搜索站内搜索搜索范围整个互联网某个网站 / 某批文档数据量极大相对较小内容相关性很杂更垂直技术难度极高适合学习和项目实践示例百度、搜狗、360。

2026-05-28 15:03:45 522

原创 Mysql数据类型

在前面,我们已经学会建库、建表,也写过不少 create table 语句,但是之前虽然“用过类型”,其实并没有正式讲过类型本身。1.列为什么一定要带类型2.不同类型到底差在哪3.类型在数据库里到底起什么作用。我们之前学的建库、建表,操作的都是结构,不是表里的具体数据内容,所以它们属于DDL(数据定义语言)。而在建表时,列不仅有“列名”,还一定有“类型”。

2026-05-28 13:43:28 389

原创 Python语法(三)

Python列表和元组是两种重要的序列容器。列表是可变的,支持增删改操作;元组不可变,创建后内容固定。列表通过方括号[]创建,支持下标访问(从0开始)、负数下标(倒序访问)和切片操作(前闭后开区间)。常用操作包括:遍历元素(for循环)、添加元素(append/insert)、查找元素(in/index)。切片还支持步长参数,可实现隔取或反转列表。列表越界访问会报错,但切片越界通常返回空列表。这些特性使列表成为处理批量数据的理想选择,而元组则适用于需要数据不可变的场景。

2026-05-24 22:08:51 367

原创 Python基础语法(二)

前面我们总结了一部分关于Python的基础语法,并且和C++与之先关的语法进行了对比,我们其实发现一个特点,各个语言的设计是有相似性的…,接下来我们继续学习有关Python的语法.def 函数名(形参列表) : 函数体 return 返回值Python 的 return 比 C++ 灵活得多:逻辑分离: 好的函数应该只负责逻辑计算,不负责用户交互(如 print)。这样你的函数才能被复用到 GUI、网络或文件等各种场景中。多返回值: Python 支持一次返回多个值,用逗号分隔第一层:变量住在哪。

2026-05-22 19:53:25 385

原创 Coze(一)

这个 AI 助手到底是“自己思考着干活”,还是“按固定流程干活”,还是“多个助手分工合作”。一个总秘书自己安排全部事情 单 Agent 自主规划模式一个客服按固定话术一步步问 单 Agent 对话流模式一个专家委员会多人分工讨论 多 Agents 模式这三种,就是 Coze 里的三类模式。

2026-05-07 16:58:52 433

原创 【AI】Langchain(一)

1.from langchain_deepseek import ChatDeepSeek:表示从langchain_deepseek 这个包里面调用ChatDeepSeek这个类2.model="deepseek-chat"表示你要选择哪个模型(2)定义消息SystemMessage(content="请帮我把英文翻译成中文"),SystemMessage(系统命令,给模型限制):它通常作为消息序列里的第一条消息,用来规定 AI 后面整体的行为。HumanMessage:对模型所说的话。

2026-04-22 23:04:59 413

原创 【AI】LangChain:LLM 应用开发的核心框架

像这种多步骤流程,LangChain 很适合,因为它本来就是围绕“组件组合”来设计的。你可以自由替换某一层,比如:模型换成别家向量库换掉输出格式改成 JSONAgent 换一套工具调用逻辑系统整体不至于推倒重来。所以它特别适合那种 需求复杂、流程多变、需要不断试方案 的项目。

2026-04-22 17:29:25 452

原创 【AI】LangChain与LangGraph展望

AI时代编程范式变革:Vibe Coding的机遇与挑战 随着AI代码助手的普及,Vibe Coding(氛围编程)成为新兴范式,开发者通过自然语言描述需求,由AI生成代码,工作重心转向需求表达、结果验证和架构把控。这种方式降低了开发门槛,但存在明显局限:AI生成的代码可能缺乏可维护性、架构合理性或安全性,且受限于上下文长度和知识时效性,易产生“幻觉”。开发者需具备系统设计、代码审查和问题定义能力,才能有效驾驭AI工具。 Vibe Coding并非替代传统编程,而是放大开发者价值——AI擅长快速原型和重复性

2026-04-17 22:55:19 388

原创 Mysql 表的操作

本文介绍了MySQL表的基本操作,主要包括表的创建、查看和修改三部分内容。在创建表时,重点讲解了CREATE TABLE语法及参数解释,强调建表前需先选库,表名应体现业务含义,字段需定义名称和类型。通过users表示例展示了具体建表语句和字段设计原则。查看表结构部分说明了如何确认当前数据库、查看表列表及表详细结构,详细解释了desc命令输出的各列含义。修改表部分简要说明了实际开发中可能遇到的表结构调整需求。文章整体采用类比方式(如库类比文件夹、表类比文件)帮助理解,并穿插实用提示,强调表操作的核心在于对字段

2026-04-08 16:03:44 347

原创 Docker(一)

Docker 是一个容器化平台,用于将应用及其依赖打包成一个独立的运行单元,以此来实现通过一次的构建,到处运行。namespace就是资源隔离机制进程(PID)文件系统(mount)网络(net)主机名(UTS)用户(user)IPC。

2026-04-02 17:14:50 410 1

原创 Python基础语法(一)

Python在定义数据类型的时候不需要显式指定,而是在赋值时自动确定的。

2026-03-27 17:25:45 254

原创 【项目】基于SDK实现的智能聊天助手(使用api接入ChatGPT )------(三)

本文介绍了如何接入ChatGPT API,主要包括两个部分:模型初始化和API参数设置。在模型初始化中,需要配置API密钥和端点地址,并提供模型名称和描述。ChatGPT API支持两种接口:传统的Chat Completions API和新的Responses API,后者支持多模态交互。文章详细说明了请求参数(如模型名称、消息列表、温度值等)和请求头设置,并提供了C++代码示例展示如何构建请求体、发送消息并处理响应。两种API的主要区别在于定位、输入输出形式、多模态支持和适用场景等方面。

2026-01-03 11:52:49 971

原创 【项目】基于SDK实现的智能聊天助手(使用api接入deepseek)------(二)

初始化模型检测模型是否有效发送消息给模型获取模型名称获取模型描述public://1. 初始化模型//2. 检测模型是否有效//3. 发送消息给模型//1-全量返回//2-流式返回//4. 获取模型名称//5. 获取模型描述protected://模型是否有效//url。

2025-12-26 13:21:51 666

原创 【Mysql】数据库的操作

备份的原理其实就是它备份的不是数据本身,而是**“重建这个库的所有历史 SQL 语句”**,使用 source 命令引入备份文件,本质是把历史 SQL 重新在服务器跑一遍,实现数据复现。它不是在“拷贝文件”,而是通过 SQL 协议连接数据库,查出所有表结构和数据,然后生成对应的 CREATE TABLE 和 INSERT 语句。注意:大写的 P 是端口(Port),小写的 p 是密码(Password)。优点:在恢复数据时,你不需要手动去 CREATE 一个空库,直接 source 脚本就行。

2025-12-18 22:15:47 656

原创 【Mysql】数据库基础

数据库基本理解

2025-12-10 15:55:01 760

原创 【C++】脚手架学习笔记 gflags与 gtest

Google GFlags是一个C++命令行参数处理库,通过DEFINE宏定义全局变量式参数,支持类型安全解析和配置文件读取。GTest是Google的C++单元测试框架,提供TEST/TEST_F宏组织测试用例,支持全局测试环境配置。GFlags使用示例展示了参数定义、解析和跨文件访问,GTest演示了基本测试用例和全局测试环境的生命周期管理。两者都是Google开源工具链的重要组成部分,分别用于程序参数配置和单元测试场景。

2025-12-05 17:04:52 753

原创 CMake快速上手

CMake简明指南 CMake是跨平台的C/C++构建工具,相比传统Makefile具有显著优势。本文介绍了CMake的安装、与Makefile的对比,并通过实例演示了基本用法: 安装:Linux系统通常自带CMake,可通过snap install cmake --classic升级版本 对比:CMake支持跨平台、依赖管理更智能,适合中大型项目;Makefile则更适合简单项目 实例:创建main.cpp和CMakeLists.txt后,执行cmake .和make即可完成构建 优势:CMake语法简洁

2025-11-30 20:54:11 440

原创 【C++项目】基于设计模式的同步异步日志系统(前置基础知识)

文章摘要 日志系统是程序开发中不可或缺的基础设施,主要用于调试定位、生产环境回溯、性能监控和安全审计。日志系统分为同步和异步两种实现方式:同步日志简单可靠但性能低,适合小型系统;异步日志通过后台线程批量写入,性能高但可能丢失部分日志。C++中可变参数模板提供了类型安全的日志接口实现方式。设计日志系统时需遵循SOLID设计原则,特别是单一职责和开闭原则,以提高代码可维护性和扩展性。合理的日志系统设计能显著提升软件的可观测性和问题诊断效率。

2025-10-27 17:58:35 766

原创 【C++11】智能指针使用学习笔记

本章是关于智能指针的基础使用和相关知识

2025-10-21 13:02:47 808

原创 【C++】异常--学习笔记

本文章介绍了C++11的异常

2025-10-08 15:04:56 780

原创 C++11学习笔记

本文章介绍了我在学习C++11的笔记和个人部分理解

2025-10-05 19:49:17 1033

原创 【项目】高并发内存池---TCMalloc (google-perftools)(二)

本章介绍了threadcache原理和如何编写

2025-09-11 10:58:22 1117 2

原创 protobuf的接口的基本使用方法

本章节主要说明了一些protobuf接口的使用方法,帮助初学者更快上手protobuf

2025-09-09 16:27:24 848 1

原创 【项目】高并发内存池---TCMalloc (google-perftools)(一)

这个项目是用来实现一个高并发的内存池,它的原型是Google的一个开源项目tcmalloc—Thread-Caching Malloc(全称),就是线程缓存的malloc,实现了高效的多线程内存管理,这个项目可以替代系统的malloc,free。当然原项目十分复杂,我们只需实现一个mini版本的高性能内存池就行,用于学习与感悟!!!首先我们需要浅浅了解一下池化技术。

2025-09-05 11:42:21 925 1

原创 【算法笔记】双指针

双指针主要是使用数组下标来解决相关问题,我们如果遇到数组划分,分块的问题,就可以尝试使用双指针来解决问题1.题目描述2.解答题目的意思是只要是非零元素都要放在左边,0全部放在右边,且非零元素的相对顺序不能变化,很明显的数组划分,我们可以使用双指针来解决问题。我们可以定义两个数组下标,dest = -1,cur = 0,,然后使用cur来遍历这个数组。最后总结思路:cur从前向后遍历过程中:1.遇到0,cur++2.遇到非0,swap(dest+1,cur);dest++;cur++;详

2025-09-04 19:08:21 341

原创 ProtoBuf基础使用方法

在学习protobuf之前,我们首先要了解序列化这个概念,序列化就是把内存里的对象或数据结构转成一串可存储或传输的字节序列,等需要时再把这串字节还原成原来的对象(这个过程叫反序列化)。其本质就是:对象 ↔ 字节流的编码与解码。概念:让结构化的数据序列化方法,除了ProtoBuf,其实还有很多其他方法,比如JSON,XML等等。特点:1.语言无关、平台⽆关:即 ProtoBuf ⽀持 Java、C++、Python 等多种语⾔,支持多个平台。2.高效:即⽐ XML 更⼩、更快、更为简单。

2025-09-02 11:07:44 628

原创 【C++】二叉搜索树key_value的简单模拟实现

本文介绍了二叉搜索树(BST)的进阶实现——键值对(key-value)版本的BST。文章在单key实现的基础上,通过增加模板参数V来扩展功能,使每个节点包含key和value两个成员。主要内容包括:1)框架搭建,定义BSTnode结构体和BST类;2)构造函数、拷贝构造函数和析构函数的实现;3)插入、查找和删除等核心操作;4)中序遍历方法用于有序打印数据。其中重点展示了如何通过修改模板参数和节点结构来实现key-value存储,同时保留了BST的基本特性。文章还提供了完整的代码实现,可供读者参考和测试使用

2025-05-27 21:09:38 450 1

原创 【C++】map与set的使用

本文介绍了C++中的关联式容器set、multiset、map和multimap。与序列式容器不同,关联式容器具有非线性数据结构,内部元素之间存在紧密关联。文章详细讲解了它们的常用构造方式、增删查接口及特性区别:set自动去重,multiset允许冗余;map不允许重复key,支持[]访问,而multimap允许key冗余且不支持[]。这些容器底层均为红黑树实现,查询效率为O(logN),迭代遍历采用中序遍历保证有序性。通过对比分析,帮助开发者根据场景选择合适的关联容器。

2025-05-27 16:17:36 1036

原创 【C++】简单二叉搜索树key的模拟实现

本文介绍了二叉搜索树(BST)的基本概念、性能分析和实现方法。二叉搜索树是一种有序二叉树,具有左子树值小于等于根节点、右子树值大于等于根节点的特性。文章分析了BST的最优和最差时间复杂度,比较了与二分查找的优缺点。详细讲解了BST的插入、查找、删除等核心操作的实现逻辑,重点阐述了删除操作中四种不同情况的处理方式,包括左右子树为空、单子树为空和双子树存在时的替换法删除策略。最后给出了完整的C++实现代码框架,展示了BST节点的结构定义和主要操作函数。

2025-05-25 17:02:03 596

原创 网络的基础概念之揭秘网络协议栈:从OSI到TCP/IP的演进

负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、 帧同步(就是说从网线上检测到什么信号算作新帧的开始)、 冲突检测(如果检测到冲突就自动重发)、 数据差错校验等工作. 有以太网、 令牌环网, 无线 LAN 等标准. 交换机(Switch)工作在数据链路层.需要注意的是其实在网络角度, OSI 定的协议 7 层模型其实非常完善, 但是在实际操作的过程中, 会话层、 表示层是不可能接入到操作系统中的, 所以在工程实践中, 最终落地的是 5 层协议。网络通信的本质特征是主机间的距离扩大。

2025-05-25 10:24:06 748

原创 【C++】继承 学习笔记

继承是面向对象编程中实现代码复用的重要机制。通过继承,可以在保留原有类特性的基础上进行扩展,添加新的成员函数和成员变量。扩展后产生的新类称为子类(或派生类),而被继承的原始类则称为父类(或基类)。假如我们定义了一个类person,在此基础上定义student类进行公有继承继承方式一共有三种继承方式基类private成员在派⽣类中⽆论以什么⽅式继承都是不可⻅的。这⾥的不可⻅是指基类的私有成员还是被继承到了派⽣类对象中,但是语法上限制派⽣类对象不管在类⾥⾯还是类外⾯都不能去访问它。基类private成员在

2025-05-24 16:52:15 1093

原创 Mysql 基本操作之表的基本操作

在上一章,我们已经了解到了数据库的基本操作,在此基础上,我们可以进一步学习一个数据库中表的基本操作。

2025-05-19 20:35:48 406

原创 Mysql 基本操作之库的增删查改

然而,数据库名、表名和列名的大小写敏感性取决于操作系统的文件系统。在Windows上,这些名称通常不区分大小写,而在Linux和Unix系统上,它们区分大小写。在linux,这些数据库是存在/var/lib/mysql这个目录里面的。创建两个数据库d1,d2,字符集都是utf8,但是校验规则分别是。数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。在数据库里面创建表,分别插入啊A,a,B,b,C,b.修改数据库主要指的是对修改数据库的字符集和校验规则。注意:不要随意删除数据库,慎重!

2025-05-13 20:38:57 484

空空如也

空空如也

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

TA关注的人

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