Hexo博客更新日志及踩坑经验总结
Hexo博客更新日志及踩坑经验总结博客功能
基本的Blog文章更新
博客文章的分类、标签、归档
Blog界面优化
本地搜索博客功能
留言功能(有点问题QAQ待完善)
侧边栏时钟
音乐🎵功能,可以播放网易云的歌单啦
解决上线后icon不显示的问题
增加了看板娘(其实是可爱的小男生)
SEO优化
页脚徽标
字体样式修改
滚动的副标题
一些于我有用的博主文章 我的Blog美化日记——Hexo+Butterfly | Guo Le’s Blog
如何在Hexo博客Butterfly主题开启Aplayer和“音乐”页面
hexo-butterfly魔改记录大全 | Black Flies (yyyzyyyz.cn)
欢迎来到舜桀BB的秘密基地!
欢迎来到舜桀BB的秘密基地呀!在这里你会看到我的日常分享,你也可以通过留言功能与我交流。希望你我都能在这个复杂的世界找到一份专属于自己的喜乐!
Python知识库
collectionsdefaultdictPython 的 defaultdict 是 collections 模块中的一个非常有用的容器,它是对内置字典(dict)的一种增强,用于在访问不存在的键时自动创建默认值,避免抛出 KeyError。
基本语法from collections import defaultdictd = defaultdict(default_factory)
default_factory 是一个可调用对象(通常是类型,如 int、list、set 等),当访问不存在的键时,defaultdict 会自动调用它来生成该键的默认值。
使用示例使用 list 作为默认工厂from collections import defaultdictd = defaultdict(list)d['a'].append(1)d['a'].append(2)d['b'].append(3)print(d) # 输出: defaultdict(<class 'list'>, & ...
LeetCode-哈希表
哈希表的基本概念什么是哈希表(Hash Table)?哈希表是一种 根据“键(Key)”快速查找“值(Value)” 的数据结构。它内部通常使用 数组 + 哈希函数 实现:
键(key):用来唯一标识一个值,比如身份证号、用户名等;
值(value):对应于键的存储内容;
哈希函数:将键映射为数组索引(通常是整数);
冲突解决:如果两个键映射到了同一个位置,需要处理冲突,Python中的字典使用了链地址法(开链法)解决。
Python 中的哈希结构Python 中内置了两种最常用的哈希结构:
dict(字典):键值对的存储
set(集合):只存储键(不重复)
例如:
# 字典d = {'apple': 3, 'banana': 5}print(d['apple']) # 输出 3# 集合s = set([1, 2, 3])print(2 in s) # 输出 True
它们的**查找、插入、删除的平均时间复杂度都是 O(1)**,这就是哈希表非常高效的原因。
哈希表的常见用途在 LeetCod ...
Git命令清单
初始化或克隆项目本地初始化用于新建一个本地 Git 仓库。
git init
在当前目录下生成 .git 文件夹,标志项目已启用版本控制。
适用场景:从零开始开发本地项目。
克隆远程仓库用于从远程服务器(如 GitHub)下载已有的项目代码及历史记录。
git clone <远程仓库地址>
会创建一个目录,自动初始化 Git 仓库并检出默认分支的最新内容。
适用场景:参与已有项目协作开发。
基本配置(首次使用 Git 时设置)设置用户名和邮箱Git 使用这两个字段标记你的提交者身份。
git config --global user.name "你的名字"git config --global user.email "你的邮箱"
加上 --global 表示作用于当前用户所有仓库。
查看配置信息git config --list
查看当前 Git 配置项(包括用户名、邮箱、编辑器等)。
文件的变更与提交查看当前状态git status
显示工作目录和暂存区的差异:哪些文件被修改、哪些文件未被追踪、哪些已 ...
使用 LangGraph 来构建 SQL Agent
如何构建一个可以回答有关 SQL 数据库问题的 Agent 呢?
从高层次来看,SQL Agent 需要执行下面的步骤:
从数据库中获取可用的表
确定哪些表与问题相关
获取相关表的架构(schemas)
根据问题和架构中的信息生成查询
使用 LLM 仔细检查查询中是否存在常见错误
执行查询并返回结果
纠正数据库引擎发现的错误,直到查询成功
根据结果制定应对措施
设置安装依赖项pip install -U langgraph langchain_community "langchain[openai]"
选择 LLMfrom langchain_community.chat_models.tongyi import ChatTongyillm = ChatTongyi(model='qwen-plus', api_key=api_key)
配置数据库需要创建一个数据库用于交互。创建一个 SQLite 数据库。SQLite 是一个轻量级数据库,易于设置和使用。我们将加载该chinook数据库,它是一个代表数字媒体商店的示例数据库。
impor ...
LeetCode 0994 - 腐烂的橘子
LeetCode
📖 题目描述
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:
值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。
示例 1:
输入:grid = [[2,1,1],[1,1,0],[0,1,1]]
输出:4示例 2:
输入:grid = [[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。示例 3:
输入:grid = [[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。
核心问题:如何在每分钟内模拟腐烂橘子的传播过程,并判断所有新鲜橘子是否都能在有限时间内被腐烂,如果可以则返回所需的最小分钟数,否则返回 -1。
💡 解题思路🔎 思路概览(一句话总结)使用多源广度优先搜索(BFS)从所有腐烂橘子同时开始扩散, ...
从 0 到 1 构建 LangGraph 对话系统:多节点持久化与前端实时渲染实践
为什么写这篇文章?市面上很多 AI 对话系统 Demo 代码长这样:
history = [{"role": "user", "content": question}]response = llm.chat(history)
但当项目走进实际业务场景时,这套逻辑会立即崩溃,原因包括:
用户输入不是单轮,而是多轮多流程
模型不是直接回答,而是分阶段决策:分析 → 拆解 → 生成 → 查询
模型输出不再是一个回复,而是多个节点逐步产出
用户随时刷新页面,需要可恢复的上下文与历史
于是,一个简单的问答系统,需要演进为:
多用户 + 多会话 + 多轮交互 + 多节点流图 + 状态持久化 + 前端可视化还原
本文将基于 LangGraph 构建一个支持上述功能的企业级对话系统,实现以下目标:
✅ 每轮对话可分为多个执行步骤✅ 每一步执行结果可落库并展示✅ 流式反馈进度,前端实时渲染✅ 数据可恢复,还原历史对话
技术栈与架构简介核心组件
技术
用途
LangGraph
定义每轮对话流程,支持多节点
...