- 博客(26)
- 收藏
- 关注
原创 redis缓存击穿雪崩穿透问题和解决方案
用户查询到一个根本不存在的数据 ,,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没办法构建缓存数据,来服务后续的请求。那么当有大量这样的请求到来时,数据库的压力骤增,这就是的问题。
2026-07-25 20:52:44
189
原创 GMP调度模型和GC垃圾回收机制解析
Go语言在处理并发问题上相比较其他语言具有优势,这背后离不开go runtime的运行机制。Go 并没有绕开操作系统,代码程序最终仍要借助操作系统线程在CPU上执行,内存也仍然来自操作系统。Go是在语言代码与操作系统之间增加一层runtime,由它统一管理并发任务和内存生命周期。本文针对Go 运行时如何管理 goroutine和内存为主线,给大家讲解一下go语言的GMP 调度模型与 GC 垃圾回收等核心机制。
2026-07-17 22:45:19
367
原创 Ollama部署和LLama Factory框架安装教程
Ollama 可以理解成一个本地大模型运行平台,把已经训练好的模型下载到电脑上,然后在本机运行起来,我们可以直接调用。Ollama 会负责下载模型、加载模型、启动推理服务,并在本地提供 API。
2026-06-27 21:46:09
246
1
原创 Eino 从链式编排到智能体:Chain、Graph、Tool 与 ReAct
上一篇文章主要围绕 RAG 展开,从 ChatModel、Prompt、Embedding、Indexer、Retriever、Transformer 这些组件入手,理解了一个最小 RAG 系统是怎么把外部知识交给大模型使用的。继续往后学习 Eino 时,会发现只会调用模型还不够。真实的人工智能应用通常不是一个简单的“输入问题 -> 模型回答”流程,而是需要把多个步骤组织起来:有些任务要按顺序执行,有些任务要根据输入走不同分支,有些任务要在节点之间传递状态,有些任务还需要调用外部工具。
2026-06-21 18:43:09
263
原创 知识库系统的内容资产闭环怎么设计
这周在做知识库文档的开发链路, 一开始很容易把功能想简单:用户上传一个文件,后端保存起来,数据库记一条记录,然后返回成功。这个思路在网盘、附件系统里没问题,但放到知识库系统里就不够了。所以这周我主要围绕一个问题做设计:一个文件从上传开始,到变成可检索、可编辑、可重建索引的知识资产,中间到底应该拆成哪些状态和边界?
2026-06-14 15:36:46
397
原创 从零理解 RAG:从模型调用到向量检索
最近在学习Eino这类 AI 应用开发框架, 刚开始只是跑一些简单 demo,比如调用大模型、流式输出、使用Prompt模板。往后学习自然接触到Embedding、Indexer、Retriever、Transform这些概念。这些组件单独看都不复杂,但如果把它们串起来,其实就是一个最小RAG应用的核心流程。这篇文章不是从理论角度完整介绍RAG,而是基于我学习Eino的几个小demo,回顾一下自己是如何一步步理解 RAG 的。第一: RAG 的重点不只是大模型。
2026-05-31 17:18:23
298
原创 Redis ZSet:底层设计与实践
Zset虽然功能强大,但在实际使用中也藏着不少问题与限制:大 key 风险:单个 ZSet 存储千万级数据时,内存、查询延迟、迁移成本都会上升score 精度:score 是双精度浮点数,业务上建议优先使用整数,例如积分、毫秒时间戳、秒级时间戳原子性:查询后删除这类组合操作在并发场景下容易重复消费,需要 Lua 脚本或事务数据角色:ZSet 更适合做排序索引、缓存、队列辅助结构,核心业务数据仍建议落数据库Zset的魅力可以用两句话概括:高效排序与范围查询的完美结合,动态高频场景的理想选择。
2026-05-23 20:34:10
412
原创 Nginx实战部署与踩坑总结 附带详细配置教程
聊起高性能 Web 服务器,Nginx 几乎是绕不开的骨干。最近我们帮学院部署开发项目学习到了Nginx的使用, 既然要实战部署,那咱们就以最经典的 Vue 3 + Golang (Gin) 架构为例。这种架构下,Nginx 不再单单只是一个工具,而是连接前后端的核心管家。Nginx的主要作用有三个: 1. 充当web服务器 2. 反向代理 3. 负载均衡。
2026-04-25 21:34:15
530
2
原创 GORM基础入门使用教程
ORM是一种编程技术,针对各类语言,ORM框架可以将数据库表和代码中的类(结构体)建立映射,从而支持开发者通过操作对象完成对数据库的CURD。ORM的三大核心思想数据库表和类(结构体)映射。表中列字段和类(结构体)属性映射。对象操作转换为SQL语句。三大核心思想实际就是对应了数据库的三个核心模块:表结构、列结构、SQLORM框架的优点避免手写SQL语句,提高开发效率。规避了手写SQL语句容易出错的问题。支持多种数据库,代码具有移植性。ORM框架的缺点。
2026-04-06 19:14:47
445
原创 for-range的常见用法解析和踩坑点
下面函数会输出什么A:函数没有打印,正常退出B:遍历 nil 切片,函数会触发 panicC:函数打印 nil,然后退出D:函数没有打印,永远阻塞A:函数没有打印,直接退出B:函数打印 hi 后退出C:函数打印 hi 后阻塞D:函数触发 panic下面的函数能否正常结束?
2026-03-12 20:22:49
426
原创 关于gin框架的设计哲学以及项目优势
最近完成了前后端的一个web项目, 我们后端技术用的是gin+gorm, 整个过程也是边做边学, 本文是一些个人学习实践总结, 也当做一张笔记, 便于日后回顾。Gin 是一个用 Go 语言编写的高性能 Web 框架。它以其简洁的 API 和出色的性能而闻名,非常适合构建 RESTful API 和 Web 应用。Gin 的设计目标是提供一种快速、灵活且易于使用的方式来处理 HTTP 请求和响应。高性能:Gin 使用了httprouter作为其路由引擎,这使得它在处理路由时非常高效。
2026-03-03 21:07:25
473
原创 Golang web工作原理详解
其实我们可以完全不用ServerMux, 因为 http.ListenAndServe()的第二个参数就是Handler, 可以传入任意实现ServerHTTP的对象, 包括自定义路由器。w.Write([]byte("用户列表..."))} else {// 启动。
2026-01-20 10:18:24
922
2
原创 Web 中的 Cookie 与 Session:状态管理的核心机制
Cookie 是一种客户端机制,把用户数据保存在客户端,由服务器通过 HTTP 响应头 Set-Cookie 发送给浏览器,浏览器将其保存在本地(如内存或磁盘)之后,每当向同一域名发起请求时,浏览器会自动在请求头中附带对应的 Cookie。Session(会话)是一种服务器端机制,简而言之就是在服务器上保存用户操作的历史信息。虽然 HTTP 本身无状态,但通过 Session,服务器可以记住某个用户的一系列操作。尽管 HTTP 协议本身是无状态的,但通过。
2025-12-21 16:42:01
693
1
原创 从底层到应用:理解 TCP、UDP 和 HTTP 的关系
TCP (Transmission Control Protocol): 传输控制协议, 是一种有状态协议, 是计算机网络中一种面向连接的、可靠的、基于字节流的协议。TCP (Transmission Control Protocol): 传输控制协议, 是一种有状态协议, 是计算机网络中一种面向连接的、可靠的、基于字节流的协议。HTTP (HyperText Transfer Protocol): 超文本传输协议, 是一种无状态协议, 用于在客户端与服务器之间传输数据的协议。
2025-12-14 10:25:15
906
原创 图论算法入门: 掌握DFS和BFS的遍历思路
图论算法这一章节内容还是很多内容的, 目前我也是在学习过程中, 写篇博客来梳理下这两种常见的遍历方式, 同时也要多写几道题目多加练习, 后续再更新一些深度的图论算法, 包括岛屿问题, 最短路径, 最小生成树, 强连通分量, dijkstra等等问题, 一起加油。执行BFS: 不断从队列取出节点, 访问其所有未访问的邻居节点, 并入队和标记。如果该节点未被访问, 说明发现一个新的连通分量, 计数+1并加入队列。若未访问, 发现未访问节点, 计数+1。数组, 用来记录每个节点是否被访问过。
2025-11-23 16:23:08
964
原创 Golang后端: Docker多阶段构建详解与部署完整指南
这周正式完成了go进阶终端简易版聊天室项目, 现在需要把后端代码部署到docker容器中运行起来, 于是写下这篇博客记录一下部署过程以及一些error。
2025-11-16 12:51:19
1179
原创 深入理解Stream消费者组工作模式
这周在对终端网络聊天室项目进行实现异步消息队列功能的时候, 要利用到redis来实现消息持久化。针对实现消息对列功能redis提供的类型有列表List, 发布订阅PubSub以及stream流, 其中List结构也可以作为一个消息队列来实现数据持久化, 但是存在消息丢失, 只支持单消费者模式等缺陷;而PubSub虽然采用发布订阅模式, 支持多生产多消费模型, 却不支持数据持久化, 同时也无法避免消息丢失和队列溢出的缺点。
2025-11-09 11:43:18
1132
1
原创 为github添加SSH-Key配置的保姆级教程
今天在完成项目的功能模块代码想要推送至github时,再次报错:这个问题不止一次出现了,网络老是出现问题,所以我索性直接配置了本机ssh-key公钥, 省的以后频繁出现网络或者验证问题。特性HTTPSSSH协议与端口使用https://协议,标准端口443。使用ssh://协议,标准端口22。身份验证方式用户名和密码/令牌 (Token)。旧方式:直接使用 GitHub 账号密码(已弃用)。现在强制使用 Personal Access Token (PAT) 或密码。
2025-11-02 10:02:44
1378
原创 初识Redis与基础命令笔记
Redis是一种键值型的NoSQL数据库,这里有两个关键字键值型NoSQL其中键值型是指Redis中存储的数据都是以Key-Value键值对的形式存储,而Value的形式多种多样,可以使字符串、数值甚至json而NoSQL则是相对于传统关系型数据库而言,有很大差异的一种数据库SQLNOSQL数据结构结构化 (Structured)非结构化 (Unstructured/Semi-structured)数据关联关联的 (Relational)无关联的 (Non-relational)查询方式。
2025-10-18 21:22:39
731
原创 彻底搞懂二叉树三种遍历方式: 递归与迭代的完整实现
目录 一. 二叉树基础知识三种遍历方式对比二. 前序遍历三. 中序遍历四. 后序遍历五. 总结 二叉树是是最重要的数据结构之一, 也是递归思想的最佳载体, 而遍历是操作二叉树的基石。更重要的是, 掌握它们的递归与迭代写法, 有助于提升我们的代码能力, 更能深入理解“递归本质是栈”这一核心思想。本文将使用go语言实现三种遍历的递归与迭代TreeNode 结构定义三种遍历方式对比 遍历方式 访问顺序 典型应用 前序遍历
2025-10-12 16:32:58
992
原创 关于mysql三大范式设计的理解
要求:每个字段不可再分, 且每行数据都是唯一的学生ID姓名选修课程联系方式1001张三数学, 英语, 物理138xxxx,1002李四化学, 生物139xxxx1003王五数学, 计算机无法根据准确查询信息, 比如根据课程信息查询对应学生姓名添加新数据时繁琐, 而且数据更新易出错学生ID姓名选修课程联系方式1001张三数学138xxxx1001李四英语1001王五数学NUll。
2025-10-05 16:11:16
956
原创 常用数据库SQl语句整理
DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限。
2025-09-27 20:49:45
722
原创 关于channel的设计原理与实现
本周由我负责我们后端小组的技术分享会,我选择了go语言中的channel管道作为技术点来为大家进行讲解,重点为channel的底层结构,缓冲机制和发送接收操作.
2025-09-21 16:31:01
971
原创 go语言进阶学习分享
尽管Go语言不支持传统的类继承,但通过结构体(struct)的组合与嵌入,它提供了一种灵活的方式来实现代码复用和扩展。一个接口(A)可以继承多个别的接口(B,C), 这时要实现A接口, 也必须要实现B,C接口的所有方法。的核心目的就是强制将缓冲区中所有暂存的数据,立即写入到底层的 I/O 目标(即你打开的文件)中。对于公有的结构体的某些字段为私有(小写), 可以通过自定义Get, Set方法来实现公共访问。:只要实现了接口的所有方法,无论接收者是值还是指针类型,都可以认为该类型实现了接口。
2025-08-02 21:13:24
1097
原创 初识Go语言及学习分享
映射(map)是go中内置的一种数据结构, 同java中的HashMap, 可以通过键值对键key获取对应的值value。), delete是一个内置函数,如果key存在,就删除该key-value,如果key不存在则不操作,但是也不会报错。Switch-case分支, Switch后面跟条件表达式, 得出的结果一次与case比较, 比对成功分支结束。如果字符串没有特殊字符, 仍然可以使用" "表示;如果我们需要删除map的所有key, 没有一个专门的方法一次删除, 可以遍历一下key,逐个删除。
2025-06-08 16:48:50
1195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅