- 博客(230)
- 收藏
- 关注
原创 NumPy 基础学习笔记(可跟着手敲一遍学习)
产生原因:Python 原生 里的每个元素都是独立的 Python 对象,存在类型不统一、指针跳转、逐元素循环等开销,处理大规模数值数据时性能很差;同时 本身不支持矩阵运算、广播、聚合统计等数值计算语义,写起来繁琐。NumPy 提供了 这种连续存储、类型统一的数组结构,底层用 C 实现向量化运算,从而同时解决了"慢"和"不好写"两个问题。应用场景:科学计算、数据分析、机器学习/深度学习中的矩阵与张量运算、图像处理(图像本质是二维/三维数组)、信号处理、统计计算等,几乎所有涉及大批量数值运算的场景都会用
2026-09-21 17:44:04
72
原创 在 Ubuntu / Linux 上轻量安装 LaTeX:TinyTeX 使用记录
这条命令是"边下边执行",不会在本地留下安装脚本文件;脚本内部真正的下载目标是 GitHub 上的 TinyTeX 发行包,下载到临时目录解压后自动清理,你不需要手动管理任何中间文件。比起动辄几个 GB、还要 sudo 权限的完整 TeX Live,对于只是偶尔编译一下简历、论文的场景,是更轻量、更可控的选择。如果只是偶尔编译一份简历、一篇小论文,没必要为此装一整套重家伙。加过 PATH,记得也去把那一行删掉,避免留一条指向空目录的死路径。(缺什么装什么,这里是我自己编译简历用到的一批)
2026-09-04 22:59:31
381
原创 Miniforge 安装与使用指南(下载、选择、校验、安装与基础使用)
无论你用 Miniforge、Miniconda 还是 Anaconda Distribution,conda 都可以通过。这是一个很小的文本文件,里面存放对应安装包的 sha256 值,用于下载后校验文件是否损坏或被篡改。但在开始配置前,建议先做一个最短的判断:你当前的 PowerShell 是否已经识别。的定位是“社区版的精简 conda 安装器”,它之所以默认指向。区域里,会看到不同操作系统与架构的安装包,以及对应的。二者通常是同一个安装器的“不同文件名”,可通过页面上的。
2026-08-22 17:55:38
391
原创 Python 环境与依赖管理讲解:pip、venv、uv、conda,以及 Anaconda/Miniconda/Miniforge/conda-forge/mamba
pip:PyPI 的标准装包工具。venv:Python 自带的隔离环境工具。uv:PyPI 世界的现代项目/依赖/虚拟环境工具(更一体化的工作流)。conda:conda 生态的包管理 + 环境管理工具,擅长二进制依赖。mamba:与 conda 命令兼容的高速实现(且现代 conda 已默认使用 libmamba 求解器)。:科学计算全家桶发行版(预装很多包)。Miniconda:Anaconda 公司提供的精简安装器(通常默认偏向 defaults)。Miniforge。
2026-08-22 16:48:48
316
原创 RAG 优化方案汇总介绍
这一部分的目标不是“把效果做到最好”,而是把 RAG 的端到端流程跑通,并建立一个可复现 baseline。你应带走的记忆点:RAG 的主干是“离线索引 + 在线问答”两段闭环任何优化都必须能定位到流程插槽(chunk/query/retrieve/context/generate)先有 baseline,才有资格谈提升与代价这部分在 RAG 里管的是“证据形态”:你在离线阶段把 chunk 做得越可检索、可引用、可组合,在线阶段越省力。chunk size 解决的是粗粒度权衡语义边界与。
2026-08-12 22:25:43
300
原创 Claude Code 核心设计学习记录
最核心一句话:Agent Loop = “调用模型 → 工具执行 → 结果回注 → 继续/停止”。它解决的关键产品问题:把聊天变成可执行闭环,把验证纳入流程,并用错误回注实现自我修正。你应带走的记忆点:A 工具协议、B 消息历史=状态、C 停止条件、D 错误=数据、E 验证闭环。模型在多轮“读→改→跑→再改”后,不再请求工具,输出最终总结。工具系统既是“能力面”(能做什么),也是“治理面”(能否安全可靠地做)。
2026-08-12 18:01:27
170
原创 LangChain RAG 各模块设计原理和衔接方式拆解(Loader, Splitter, Embeddings, VectorStore, Retriever, Prompt, LLM, ...)
自定义 Loader 的目标非常明确:把特定业务数据变成。:放入希望被检索、被模型阅读的内容(尽量干净、语义完整)metadata:放入希望用于定位、引用、过滤、权限控制的字段(例如来源、页码、章节、业务标签、访问级别等)只要遵守这个输出契约,自定义 Loader 就能接入同一条 RAG 流水线,并与现有模块组合使用。每个输出Document仍然只有两类核心信息::切出来的 chunk 文本metadata:继承或补充的来源/属性信息只要输出仍然满足。
2026-07-16 23:01:59
397
原创 Python 递归:入门+实践
所以尾递归在 Python 中不会减少内存占用,但它是一种极好的编程思维,且在支持 TCO 的语言(如 Scala)中极其重要。(比如遍历一个包含未知层级子文件夹的文件系统,或者解析嵌套的 JSON),循环就会变得极其复杂,需要维护多个栈或队列。:递归结构不变,但缓存让“同一个子问题”只算一次,从指数级降到线性。观察控制台输出的调用顺序,体会“层层深入,再层层返回”的过程。当面对层级未知的嵌套列表时,循环几乎无能为力,而递归轻松搞定。:创建一个包含 5 层嵌套的列表,用上面的函数求和,验证结果。
2026-07-07 10:51:15
210
原创 python lambda 入门+实战
假设你需要对一个列表中的数字进行平方处理。使用传统的def# 😩 传统做法:为了一个简单操作,专门定义了一个函数痛点总结:代码冗余:为了一个只用一次的简单逻辑,必须写def、函数名、return,代码不够紧凑。命名污染:如果到处都是这种一次性函数,命名空间会变得非常杂乱。逻辑分散:函数定义和函数使用的地方隔得很远,阅读代码时需要上下跳转。当对复杂对象(如字典、元组)排序时,key参数是lambda最闪耀的舞台。# ✅ 按字典中的 score 字段降序排序print(f"
2026-07-04 18:54:30
234
原创 Python typing 入门+实战
当你想写一个通用的容器(如栈、队列),希望它能保持内部元素的类型一致性时,使用。即使你传错了类型,代码依然能跑,只是 IDE 和 mypy 会报错。函数,在调用处获取返回值后,观察 IDE 是否提示你需要先进行。当函数作为参数传递(回调函数)时,如何描述它的签名?当你从旧代码迁移,或者确实无法确定类型时,可以使用。的对象),并且它必须满足指定的入参与返回类型”。函数,确保传入的回调函数不接受参数且返回布尔值。是所有类型的基类,但类型检查器不允许你随意调用。当类型定义过于复杂时,给它起个名字,提高可读性。
2026-07-04 17:40:04
227
原创 Python collections 入门+实战
实现一个“最近5次搜索记录”的功能,连续添加8条记录,验证旧的记录是否被自动淘汰。的子类,专门用于哈希对象计数。它不仅能统计,还提供了丰富的数学运算。当你需要一个字典,且访问不存在的键时希望自动创建默认值,当你需要一个轻量级不可变对象,但又不想定义完整的类时,将多个字典合并为一个逻辑视图,查找时按顺序搜索,如果你的机器很快,可把。来记录用户的操作历史,但当你需要频繁在。访问一个不存在的键会“顺便创建该键”。,用它同时记录每个类别的数量和成员名。分别统计两段文本的词频,然后用。方法获取 Top 3 的单词。
2026-07-04 10:14:07
533
原创 Python *args 和 **kwargs 入门+实战
在函数定义中,它把多余的位置参数打包成 tuple;:运行上面的代码,然后尝试传入 0 个参数、1 个参数、10 个参数,观察。因为 Python 需要明确知道哪些参数是位置的、哪些是关键字的。放在关键字参数后面,Python 就无法判断一个传入的值到底该给。函数,将传入的关键字参数拼接成 SQL WHERE 子句(如。:这个特性让你可以强制调用者使用可读性更高的关键字传参,避免。同理,在定义时打包为 dict,在调用时解包为关键字参数。函数,验证三个参数都不能用关键字传入。之前的普通参数,会被强制变为。
2026-06-25 21:12:47
356
原创 Python TypedDict 讲解
TypedDict允许你像定义类一样,精确描述字典必须包含哪些键、每个键是什么类型。它本质上是一个静态类型提示,运行时它依然是个普通的dict。name: str# ✅ 结构清晰,IDE 完美提示print(user_data["name"]) # IDE 明确知道这是 str,提供字符串方法提示🧪动手验证 1:分别运行传统dict和TypedDict版本。在 IDE 中输入,观察弹出的键名提示列表;尝试故意拼错一个键名,观察 IDE 是否给出波浪线警告。
2026-06-25 20:36:47
305
原创 Python dataclass 从入门到实战
dataclass装饰器会在编译期自动生成__init____repr____eq__等方法。@dataclassname: strage: intemail: str = "" # 默认值直接写在字段上# ✅ 自动获得 __init__, __repr__, __eq__🧪动手验证 1:分别运行传统类和 dataclass 版本。尝试修改字段名或新增字段,对比两种方式的改动量。
2026-06-25 01:02:49
263
原创 Pydantic v2 实战笔记:字段校验、模型校验与环境变量配置
你给某个字段“挂”了一段函数,Pydantic 在创建模型时会自动调用它。清洗/标准化输入:返回一个“处理后的值”,这个值才会最终赋给字段(例如去空格、大小写统一)。拦截非法输入:如果在校验器里,Pydantic 会把它包装成,模型不会创建成功。在这里的意义是:字段校验发生在构造模型的过程中,校验函数以“类方法”的签名被调用(第一个参数是cls),因此不依赖实例self。(你也可以把它理解为:还没拿到完整的Order(...)实例之前,就需要先把每个字段的值校验/清洗好。
2026-06-24 22:57:50
519
1
原创 我学会了怎么写类,但到底什么时候该用类?
多组同类对象 + 数据与行为绑定 + 需要封装/扩展/生命周期 → 用类;无状态小工具 → 用函数;临时拼数据 → 用 dict/tuple。
2026-06-24 18:57:24
151
原创 一篇讲透 Python 类的底层逻辑:对象与引用、类对象与实例对象、self、继承/super、类方法与静态方法、property 与特殊方法等
(说明书对象)里共享一份:你可以把它理解成“打招呼的规则/处理数据的规则”。你可以在交互终端里用下面这段代码验证:实例属性确实是写进某个具体实例(u1)自己的数据区(常见可观察的是。适合:不需要访问实例数据、也不需要访问类数据的“工具函数”(纯计算/格式化/简单校验等)。(提示:这里的“内存一块地方”是帮助你建立直觉的模型,不讨论具体内存布局与地址细节。(可选的最小自证)下面这几行更贴“类方法/静态方法”的区别:类方法会自动拿到。对象=内存里的一块“东西”(你可以理解为“新找一块地方放它”)。
2026-06-24 15:04:45
192
原创 LeetCode 707:设计链表(单链表 + dummy 虚拟头节点 + size)
以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。你可以选择使用单链表或者双链表,设计并实现自己的链表。,不需要对“删除头节点 / 头部插入”写额外特判。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。
2026-06-22 11:12:29
228
原创 RAG 系统化学习教程(含查询改写、混合检索、重排序、上下文增强与评估闭环)
在线阶段通常包含:Query →Query 改写(可选) → 检索(向量 + 可选 BM25)→重排序(可选) →上下文增强(可选) → Prompt 组装 → LLM 生成 →后处理(可选)FAISS/Milvus/Chroma/Weaviate 等本质差异在:规模、过滤、混合检索、运维成本、索引更新策略。关键点是:数据要“可更新”,并且能追踪到来源(后面做引用与评估会用到)。没有评估,你很难判断“是检索的问题还是生成的问题”。“检索”解决的是“找回来候选”,重排序解决的是“候选里谁最相关”。
2026-06-22 10:39:25
1053
原创 RAG 系统化学习教程(含查询改写、混合检索、重排序、上下文增强与评估闭环)
在线阶段通常包含:Query →Query 改写(可选) → 检索(向量 + 可选 BM25)→重排序(可选) →上下文增强(可选) → Prompt 组装 → LLM 生成 →后处理(可选)FAISS/Milvus/Chroma/Weaviate 等本质差异在:规模、过滤、混合检索、运维成本、索引更新策略。关键点是:数据要“可更新”,并且能追踪到来源(后面做引用与评估会用到)。没有评估,你很难判断“是检索的问题还是生成的问题”。“检索”解决的是“找回来候选”,重排序解决的是“候选里谁最相关”。
2026-06-21 22:10:56
407
原创 深挖 Python 共享引用:从内存绑定看懂 Python 底层设计逻辑
对象(object):运行时的一块数据实体,带类型信息(例如intstrlist都是对象)。容器(container):能装其他对象的对象,例如:list:顺序容器tuple:顺序容器(不可变)dict:映射容器(key→value)set:集合容器(去重)容器之所以关键,是因为它可以装任意类型对象Python 的变量名不存任何数据本体,只是引用/绑定到对象。复用同一个可变对象的引用 + 原地修改;而像a = [1,3]这种写法通常是在新建一个新的容器对象。
2026-06-17 11:22:52
310
原创 VSCode / Cursor 中 LaTeX Workshop 的 settings.json 配置:编译与 SyncTeX 跳转
"tools": [},"tools": ["bibtex","pdflatex"},"tools": [},"tools": ["xelatex","bibtex","xelatex","xelatex"recipes用来定义“编译方案”。每个 recipe 可以调用一个或多个 tool。:推荐默认方案,自动处理多次编译、参考文献和交叉引用。:传统 BibTeX 编译流程。:使用latexmk调用xelatex。:传统编译流程。
2026-05-04 11:02:58
728
原创 Origin 2025b 中英文界面切换脚本
运行前先关闭 Origin,然后双击对应脚本。看到“操作成功完成”后,重新打开 Origin,界面语言就会切换。Origin 2025b 的界面语言可以通过修改当前用户注册表实现。脚本可以放在任意位置,不需要放在 Origin 安装目录,也不需要管理员权限。暂停窗口,方便查看是否显示“操作成功完成”。关闭命令回显,让窗口输出更简洁。向当前用户注册表写入语言设置。
2026-05-03 22:35:46
2516
3
原创 kind 集群拉取镜像失败时的 4 种解决方案
因为删的是 Pod,不是 Deployment,所以 Deployment 会自动补出新的 Pod。如果当前环境必须通过代理出网,那么可以直接给 kind 节点里的。为了便于直接复现,先统一本文后面使用的文件名和目录结构。这通常是 kind 节点容器访问宿主机时使用的网关地址。,而要写容器能够访问到的宿主机地址或可达代理地址。把下面命令里的代理地址替换成实际可用地址,比如。所以代理最好监听到宿主机可被容器访问的地址。这里的代理地址不要直接写宿主机的。这是最稳、最适合临时救场的方案。
2026-04-08 18:29:01
881
原创 Docker 入门学习笔记 07:用一个多服务案例真正理解 Docker Compose
这些内容能解决“一个服务怎么跑”。而这正是微服务、本地开发环境和依赖服务联调中最常见的场景。
2026-04-07 22:14:51
445
原创 Docker 入门学习笔记 06:用一个可复现的 Python 项目真正理解 Dockerfile
前面已经学过怎么拉镜像、启动容器、看日志、传环境变量和挂载目录;为了让案例更贴近常见 Python 场景,这里使用一个很小的数据分析示例。numpypandas之所以还能画图,是因为pandas的.plot()底层仍然依赖matplotlib。所以依赖里保留matplotlib,但不再额外写numpy逻辑。这样镜像通常会比三包版本更轻一些。
2026-04-07 22:14:18
278
6
原创 Docker 入门学习笔记 04:环境变量到底在做什么,为什么很多容器都依赖它
程序启动时能够读取的一组键值对配置。自己监听哪个端口连接哪个数据库使用什么运行模式所以环境变量并不是 Docker 发明的。它本来就是操作系统和程序运行时里非常常见的一种配置方式。在启动容器时,把这些变量传给容器里的进程。
2026-04-07 22:13:00
347
原创 Docker 入门学习笔记 01:它到底解决了什么问题,镜像和容器又是什么
镜像,英文叫Image。基础运行环境应用代码依赖启动命令定义镜像本身并不是“正在运行的程序”,它更像是一个可供启动的模板。镜像像安装包镜像也像模板但更准确地说,镜像是一个用来创建容器的静态对象。容器,英文叫Container。容器是由镜像启动出来的运行实例。镜像是静态的容器是动态的如果镜像只是“准备好的一套运行模板”,那么容器就是“这套模板真正跑起来之后的实例”。它已经被创建出来了它可能正在运行,也可能运行完退出了它和镜像不是一回事。
2026-04-07 22:11:20
581
原创 Docker 配置镜像源后仍然 `pull` 失败:问题、原因与解决方案
如果 Docker 已配置镜像源,但普通用户执行当前用户保存的 Docker Hub 认证信息干扰了 pull 流程。先确认镜像源已生效临时移走做验证如果确认相关,再按需重新。
2026-04-07 00:49:06
575
1
原创 Ubuntu 系统 Docker + Docker Compose 完整安装教程
安装最新版本:无需特定依赖要求时,可直接获取最新特性与安全补丁。安装指定版本:在对环境兼容性要求较高、尤其是生产环境时,可选择特定版本。镜像加速器配置:国内网络环境下拉取镜像会更稳定、更快速。卸载与数据清理:提供从系统中彻底移除 Docker 及其数据的方式,便于重新配置或节省资源。常见问题处理:针对国内访问缓慢、权限等问题进行了说明。
2026-04-06 18:54:01
2446
1
原创 FRP 安全内网穿透配置:TCP 与 STCP 两种安全 SSH 穿透方案
通过上述步骤,您可以在 A(本地 Windows)、B(中转服务器 CentOS)和内网目标服务器(C / D 等 Ubuntu)之间配置 FRP,实现内网穿透和服务的远程访问。同时,指南中提供了完整的删除操作,确保您能够在需要时彻底移除 FRP 配置。请在配置过程中注意安全性,合理设置防火墙和安全组,保障系统的安全运行。
2026-03-29 17:22:18
1096
原创 Cursor Remote-SSH 安装失败排障:远端下载超时 + `base64 -D` 不兼容
放一个临时兼容脚本,完成后可按文末回滚恢复。用普通 SSH 登录远端后执行。用完可删除该脚本恢复原状,不会改动。作为参数兼容层,并清理。
2026-03-10 23:19:00
408
原创 无sudo权限远程连接Ubuntu服务器安装TeX Live实操记录(适配VS Code+LaTeX Workshop,含路径选择与卸载方案)
按照上述步骤操作,即可实现VS Code(或Cursor)远程连接Ubuntu服务器点击编译LaTeX文档,体验与本地安装一致,完美适配无sudo、多人共用账号的Ubuntu远程使用场景。
2026-01-28 12:07:02
1057
原创 Git Commit Message 规范:写出清晰、可维护的提交记录
如果在组会上汇报,你会说“我改了什么部分”?都会自动加载模板,引导你写出规范提交。—— 那就是你的 scope!
2025-10-23 19:34:24
2054
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅