自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并发模式(Patterns):Worker Pool 与 Pipeline 模式实现

模式适用场景核心组件任务数量巨大,需要控制并发度,防止资源耗尽。Pipeline数据流处理(ETL),步骤之间解耦。Fan-Out/In某个处理步骤是性能瓶颈,需要并行加速。Merge 函数, WaitGroup。

2026-01-22 23:25:48 865

原创 原子操作(Atomic):比锁更快的并发控制

Atomic 是指令级的:比操作系统级的 Mutex 快得多,没有上下文切换。CAS 是核心:它是实现无锁算法(Lock-Free)的基础。:非常适合“读多写少”的配置更新场景。对齐陷阱:在 32 位系统上操作 64 位原子变量要小心内存地址对齐。

2026-01-22 23:20:54 585

原创 Sync 包全解:Mutex、RWMutex 与 WaitGroup 的底层原理与最佳实践

正常模式保证吞吐量,饥饿模式保证不饿死。Go 在这两者之间实现了动态平衡。

2026-01-20 16:44:15 1016

原创 Context 详解:如何在微服务链路中传递取消信号与超时控制

Context 是 Go 并发编程的神经系统。控制流:通过Done()channel 广播取消信号,底层利用childrenmap 实现级联取消。数据流:通过Value()传递请求元数据,底层是链表查找,注意性能。生命周期必须配合使用。

2026-01-20 16:37:45 1010

原创 Channel 的源码剖析:锁、环形缓冲区与等待队列

Channel 并不是魔法,它是由锁环形数组双向链表和运行时调度组合而成的精巧结构。锁:保证了并发安全,所有操作需加锁。环形缓冲区:解耦了发送方和接收方,提供了异步能力。等待队列:实现了阻塞和唤醒机制,利用gopark让出 CPU。直接拷贝:优化了无缓冲/拥堵场景下的传输效率,绕过缓冲区。理解了这些,你就明白了为什么 Rob Pike 说“通过通信来共享内存”——因为 Channel 底层帮你把“共享内存”(buf)和“锁”(lock)都封装好了,让你在业务逻辑层可以写出线性的、无竞态的代码。

2026-01-19 14:05:16 939

原创 三色标记法与混合写屏障:Go GC 垃圾回收全流程解析

"The best GC is the one you don't notice." —— Go GC 的演进史,就是一部与 STW (Stop The World) 的抗争史。在 C/C++ 中,程序员拥有对内存的绝对控制权,但也背负了手动管理的沉重枷锁。。提到 GC,很多人的第一反应是:“会卡顿”、“STW(世界暂停)”。确实,在 Go 1.0 时代,GC 极其粗糙,STW 时间甚至高达几百毫秒,简直是线上服务的噩梦。但到了 Go 1.8 之后,STW 通常被控制在。它是怎么做到的?从简单的。

2026-01-19 13:59:40 755

原创 基于思维链 (CoT) 数据合成的垂直领域模型蒸馏实践

为了避免模型能力发散,我们需要限定任务边界。以下脚本用于批量生成贴近真实业务的 Pandas 处理需求。# 配置 DeepSeek 客户端# 定义核心主题,限定业务范围seeds = ["Pandas 数据清洗:缺失值与异常值处理","多表关联:Merge, Join 与 Concat 的复杂场景","时间序列处理:Resample, Rolling Window","文本数据清洗:正则提取与向量化操作","大数据量处理:Chunk读取与内存优化"

2026-01-16 16:18:54 425

原创 Go 内存分配器(TCMalloc):栈与堆的分配策略

malloc申请,free释放。一旦手抖,要么内存泄露导致 OOM,要么野指针导致 Core Dump。Go 语言引入了自动垃圾回收(GC),解放了我们的双手。但这份便利并非没有代价——。频繁的堆内存分配会直接触发高频 GC,导致 CPU 飙升、STW(Stop The World)时间变长。很多 Go 开发者有这样的困惑:为什么简单的结构体传递有时候很快,有时候却导致频繁 GC?Go 的内存分配器真的只是简单地找 OS 要内存吗?今天,我们将深入 Go 的。

2026-01-16 10:14:31 1033 2

原创 深入理解 GMP 模型:Go 高并发的基石

GMP 模型是 Go 语言最引以为傲的设计之一,也是其高并发能力的基石。G:轻量级任务,状态保存者。P:本地资源包,实现无锁队列,隔离了 M 和 G。M:系统线程,执行者,被复用。调度哲学复用低延迟公平:全局队列轮询, 抢占式调度。

2026-01-16 10:10:05 631

原创 Map 的底层实现

结构体只有一个字段:为了通过指针运算隐藏布局,实现Key/Value 分离存储,消除 Padding,节省内存。TopHash 的存在:既是哈希缓存(加速查找),又是状态机(标记搬迁状态)。扩容的 X/Y 分裂:利用哈希值的一位二进制差异,高效地将数据分流。迭代器的回源:在时空错乱的扩容期间,通过“计算归属地”来保证数据遍历的唯一性。

2026-01-15 09:27:23 529

原创 基于 Pydantic + LLM 的结构化数据提取

在非结构化数据处理(ETL)领域,正则表达式(Regex)长期占据统治地位,但其脆弱性在面对复杂的自然语言时暴露无遗。本文将深入探讨一种“Schema-First”的 AI 编程范式:利用结合的类型系统,构建具备思维链推理(CoT)自动纠错(Self-Healing)能力的结构化数据提取引擎。

2026-01-15 08:58:12 616

原创 基于 Python + MCP + LLM 手搓智能服务器运维助手

为我们提供了一种标准化的方式来连接 LLM 和本地基础设施,而 Python 则是连接这一切的胶水。这种“手搓”的方案虽然前期代码量稍大,但它赋予了开发者最大的自由度——你可以在任何地方运行它,无论是树莓派、本地笔记本,还是云服务器,这才是真正的“应用落地”。未来,我们可以引入 LangGraph 来管理更复杂的状态,或者让多个 MCP Agent 互相协作,真正实现无人值守的 AIOps。

2026-01-14 16:47:10 757

原创 For range 循环中的指针坑

特性Go < 1.22Go 1.22+变量作用域整个循环 (Per-loop)每次迭代 (Per-iteration)内存地址所有迭代共享同一个地址每次迭代有独立地址闭包捕获捕获的是引用,全是最后的值捕获的是当次迭代的值最佳实践需要v := v直接使用。

2026-01-14 11:30:45 1018

原创 Defer 的执行时机与参数快照

Go语言中defer关键字的行为机制解析:1) return语句实际分为三步:返回值赋值→执行defer→返回指令;2) 修改返回值必须使用具名返回值,匿名返回值会被创建临时变量;3) defer参数在注册时立即求值(快照机制),而闭包会捕获变量引用;4) Go1.14优化后defer性能损耗可忽略,应优先考虑代码可读性。理解这些特性可避免常见陷阱,正确实现资源清理和错误处理。

2026-01-14 11:26:57 1003

原创 接口(Interface)的 Nil 陷阱

Go 的接口是一个带类型的容器。一个空的盒子(Type=nil, Value=nil) 才是nil。一个装着空气的品牌盒子不是nil。

2026-01-13 15:57:18 1124

原创 切片(Slice)的扩容黑魔法

理解切片本质是避免生产环境Bug和OOM的关键。

2026-01-13 15:52:11 1012

原创 Go 语言的“反叛”——为什么少即是多?

作为一名从 Python 或 Java 转向 Go 的开发者,你初遇 Go 时的第一反应可能是:“这也太简陋了吧?在现代编程语言拼命往自己的口袋里装“语法糖”、“泛型”、“Lambda 表达式”和“注解”的时代,Go 却像个特立独行的“反叛者”。它诞生于 2007 年的 Google,那是 C++ 构建时间长达 45 分钟的年代。Rob Pike 和 Ken Thompson 厌倦了复杂的特性堆砌,决定设计一种的语言。Go 的核心哲学是。它不是为了“编程”而生,而是为了**“软件工程”**而生。

2026-01-12 16:01:03 580

原创 DeepSeek :提示词工程 (Prompt Engineering) —— 人机交互时代的“新编程语言”

本文探讨了如何通过优化Prompt(提示词)来充分发挥AI模型(如DeepSeek或GPT)的潜力。

2026-01-12 14:58:36 759

原创 DeepSeek :基于 Schema 推理与自愈机制的智能 ETL

本文提出了一种基于DeepSeek的智能ETL架构,通过认知驱动替代传统规则驱动,解决非结构化数据处理难题。。这种架构可广泛应用于日志解析、简历处理、合同提取等多种非结构化数据转换场

2026-01-12 14:44:05 855

原创 DeepSeek :基于 AST 与 AI 的遗留系统“手术刀”式治理方案

本文探讨了基于AST分析与AI技术的遗留系统自动化重构方案。通过AST和radon库扫描高复杂度代码(如圈复杂度>10的函数),结合DeepSeek进行精准重构,采用策略模式等设计模式解耦代码。为确保安全重构,提出GoldenMaster测试策略:先记录旧代码输入输出快照,重构后验证结果一致性。方案还支持Go语言依赖注入重构和自动生成解释性注释。这套AST扫描+安全测试+AI重构的流水线,实现了从问题定位到安全改造的自动化治理流程,显著降低遗留系统重构风险。

2026-01-10 12:17:57 1242 1

原创 构建基于 DeepEval 的 LLM 自动化评估流水线

本文介绍如何利用DeepSeek-V3和DeepEval框架构建AI系统的自动化评估体系,解决"凭感觉开发"的问题。通过自动生成测试集(让AI阅读文档并自建题目)、配置DeepSeek作为评判模型(成本仅为GPT-4的1/50),实现三维度评估(忠实度、相关性、检索精准度)。文章提供实战代码示例,包括测试脚本编写、超参数自动优化方法,并建议集成到CI/CD流程,确保每次代码提交自动触发质量检测,形成可靠的"AI质量防火墙"。(149字)

2026-01-10 11:54:50 431

原创 DeepSeek :使用 Unsloth + LoRA 微调模型

通过 SFT,可以不再受限于 DeepSeek 原始的能力,而是可以改造模型,使其成为自己想要的助手。

2026-01-09 10:29:12 1054

原创 DeepSeek-R1 + LangGraph :搭建多智能体协作系统

首先,我们要定义 Agent 可以调用的 Python 函数。import os# 1. 写文件工具@tool"""将代码写入指定路径。如果目录不存在会自动创建。"""import subprocess import os from langchain_core . tools import tool # 1. 写文件工具 @tool def write_file(filepath : str , content : str) : """将代码写入指定路径。如果目录不存在会自动创建。

2026-01-09 10:02:19 1220

原创 DeepSeek-R1 实战:数据分析

利用 DeepSeek-R1 的深度推理能力来处理复杂的表关联(JOIN)逻辑,并实现错误自愈和安全防护

2026-01-09 09:42:43 1100

原创 拒绝幻觉!DeepSeek-R1 + LangChain + Rerank 构建高精度本地知识库

使用Deepseek部署更高精度的本地化模型并搭建自己的agent

2026-01-08 11:31:12 794

原创 DeepSeek API 深度解析:从流式输出、Function Calling 到构建拥有“手脚”的 AI 应用

如何使用Python从Deepseek开放的api接口中搭建属于自己的agent

2026-01-08 11:06:03 919

原创 GO语言实现AES-CFB加密

各种导入用于提供不同功能,如 AES 算法、CFB 模式、Base64 编码等。package encrypt: 定义该文件属于 encrypt 包。

2024-10-28 11:11:16 536 1

原创 简道云数据推送到个人服务器

2.选择函数,根据简道云给出的示例数据结构中有一个op,op对应的值就是操作,该函数将其解析出来选择对应的函数执行。4.添加方法函数,该函数用于表单执行创建新增数据时,将数据插入到数据库中。1.验证函数,该函数主要用来和简道云完成身份的验证,判断是否为恶意访问。3.数据解析函数,该函数用来解析简道云发送的数据。

2024-08-12 16:33:06 813

原创 使用go语言来完成复杂excel表的导出导入

根据表的特性设计代码提取每一列的数据插入到数据库中,在这里为了确保插入时表的完整性需要使用数据库的事务,我还在这里添加了检查数据是否重复的报错功能,来确保数据行列中不会出现重复数据。首先我们先设计一个页面处理器,也就是一个前端页面用来上传要处理的excel文件,注意这里应该是可以处理多个Sheet,代码如下图。这段代码的主要作用就是用户在前端点击按钮之后,接收一个excel文件。接收文件之后,就进行处理。首先就是先从上传的excel文件中获取所有的Sheet,然后再进行数据库的连接,

2024-06-26 10:18:16 1095 1

原创 C语言输入三个整数,按从小到大的顺序输出。指针处理

本题是C语言的基础题,如果使用前面我们所学的其他语句应该很好解决,只是一个逆序问题,但是本题要求指针处理,那么问题就稍稍有点难度了。需要很好的掌握指针变量的定义形式那么该题代码如下:如果输入8,15,3运行结果为:该题的中心主要就是要理解指针,尤其是*和&两个符号的使用,以及如何声明函数和编写函数。不过该题难度不算太大,如果对指针很不熟悉,可以先了解指针的符号用法,以及如何和数...

2019-11-17 17:28:48 29467 5

原创 C语言 给出年月日,计算该日是该年的第几天,函数

该题我有两个想法第一就是正常做,不使用函数代码如下就是利用了前面的选择结构使用if语句简单的写出了这个程序但是后面学了函数,就可以使用函数来做这个题目不过我对函数的使用还是非常不熟练以后还得练习...

2019-11-12 23:13:07 5167 1

原创 C语言 输入十个学生,五门课的成绩,求每个学生,每门课的平均成绩,并求出最高成绩

题目如下:输入10个学生5门课的成绩,分别用函数实现下列功能:(1)计算每个学生的平均分(2)计算每门课的平均分(3)找出所有50个分数中最高的分数所对应的学生和课程首先分析该题,至少要声明三个函数(虽然最后我声明了四个),求每个学生的平均分需要一个函数,每门课平均分需要一个函数,以及找出所有50个分数中最高分数所对应的学生和课程也需要一个函数。我先声明函数,再定义了一个二维数组。第一...

2019-11-10 18:06:58 15814 3

原创 简单输出整数

刚刚开始学习C语言,在PTA的第一道题就被难住了我在浏览题后给出了答案,代码如下此段代码在编译器上运行无任何问题,函数正常调用,但是在PTA上提交后却出现了如下错误:a.c:18:5: error: redefinition of ‘main’int main ()^~~~a.c:4:5: note: previous definition of ‘main’ was herein...

2019-11-07 23:54:16 1848 3

空空如也

空空如也

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

TA关注的人

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