关于本笔记本笔记用于介绍 Tool(工具)在 Agent 中的作用、Tool 的四要素定义(函数本体、名称、描述、参数定义),以及不同风险等级的工具分类。
目录
一、Agent + Tool:两个角色怎么配合干活
二、Tool 到底是什么?光写函数不够?
三、Tool 的四要素
函数本体,真正干活的代码
name(名称),大模型的识别标签
description(描述),整个工具定义里最重要的字段
parameters(参数定义),告诉大模型怎么「填参数」
四、大模型怎么「认识」这些工具?
五、工具有哪些类型?风险从低到高
查询类(只读)
写入类(有副作用)
执行类(高风险)
AI 辅助类
总结
一、Agent + Tool:两个角色怎么配合干活在聊 Tool 之前,先把另一个容易混淆的概念说清楚: Agent 。
很多同学以为「Agent 就是更厉害的大模型」。这个理解偏了。 Agent 本质上是我们开发者写的一套程序 ,它不是更聪明的 AI,而是一个全程在线的「调度员」,负责在用户、大模型、工具之间协调任务、传递信息、推进流程。
用一个外卖平台来类比这 ...
关于本笔记本笔记用于介绍向量数据库的核心原理——为什么需要专门的向量数据库而非普通数据库做向量搜索,ANN 索引机制(HNSW),以及主流产品选型对比。
目录
一、先别急,普通数据库能不能存向量?
二、普通数据库为什么查不了向量?
三、向量数据库是什么
四、向量数据库怎么做到「又快又准」
图书馆的多级目录类比
五、主流向量数据库介绍
Chroma
Pinecone
Milvus
Weaviate
Qdrant
六、怎么选?
七、普通数据库 vs 向量数据库
总结
上一章 RAG 里,在介绍 RAG 工作阶段的时候,说把向量存进「向量数据库」,当时一带而过。
你可能当时就想问: 为什么要专门用向量数据库?MySQL 不能存吗?
这章就专门把这个问题讲清楚。
一、先别急,普通数据库能不能存向量?能存,但有个很大的问题。
普通数据库存向量没问题,向量本质上就是一串浮点数,MySQL 建个字段存下来完全没难度。
难的是 查 。
二、普通数据库为什么查不了向量?咱们先聊聊 MySQL 是怎么查数据的。
你写 SELECT * FROM users WHERE ...
关于本笔记本笔记用于介绍大模型(LLM)的核心概念,包括 Token、上下文窗口、对话角色结构等基础知识,帮助理解大模型的能力与局限。这是 AI Agent 开发的第一块基石。
目录
大模型是什么
Token:大模型读文字的方式
上下文窗口:大模型的”短期记忆”
大模型是”无状态”的,没有任何记忆
对话的角色结构:system、user、assistant
大模型能帮我们做什么
1. 听得懂人话,精准理解意图
2. 会逻辑思考,能拆解任务、做决策
3. 能生成符合要求的各类内容
4. 能看懂规则,严格按要求执行
大模型做不到什么
1. 没有执行能力,不能和外部世界交互
2. 知识有”保质期”,还容易瞎编
3. 上下文窗口有上限,记不住太长的内容
总结
大模型是什么我们平时说的「AI 对话」「AI 助手」,核心都是 大模型 ,英文叫 LLM (Large Language Model,大语言模型)。
用大白话讲,大模型就像 一个从小读了海量书、见识极广、逻辑又好的超级助理 。
它”大”在哪里?两点:
参数量大 :模型内部有数千亿个参数 ...
关于本笔记本文件介绍的是JVM垃圾回收的难点知识
目录
垃圾回收简介
回收判断
引用类型
回收算法
回收器/收集器
内存分配与回收策略
回收策略
内存分配
总结
垃圾回收简介垃圾回收(Garbage Collection, GC)是自动管理内存的一种机制,它负责自动释放不再被程序引用的对象所占用的内存,这种机制减少了内存泄漏和内存管理错误的可能性。垃圾回收可以通过多种方式触发,具体如下:
内存不足时:当JVM检测到堆内存不足,无法为新的对象分配内存时,会自动触发垃圾回收。
手动请求:虽然垃圾回收是自动的,开发者可以通过调用 System.gc() 或 Runtime.getRuntime().gc() 建议 JVM 进行垃圾回收。不过这只是一个建议,并不能保证立即执行。
JVM参数:启动 Java 应用时可以通过 JVM 参数来调整垃圾回收的行为,比如:-Xmx(最大堆大小)、-Xms(初始堆大小)等。
分代触发条件:不同区域达到各自的触发条件时也会引发 GC。例如 Eden 区空间不足时触发 Minor GC;老年代空间不足、或 Minor GC 后晋升对象无法放入老 ...
1. 前言学习笔记写多了,生活方面也不可落下。
在江西,很多普通的一天,都是从“拌粉 + 瓦罐汤”开始的。它不贵,不精致,甚至看起来有点朴素,但就是很能安抚人。
这篇不是“探店排行榜”,更像一个本地人视角的美食小记:写我吃到的味道,也写这些味道背后的小县城气息。
2. 目录
我最常吃的几样江西味道
为什么拌粉和瓦罐汤这么搭
外地朋友来江西,我会怎么带着吃
一周早餐小时间线
相关阅读与资料
3. 我最常吃的几样江西味道
3.1 南昌拌粉拌粉绝对是我刻在日常里的 “效率型早餐”,出餐快、味道直接,一口下去香辣开胃,整个人瞬间清醒。
我自己最常见的搭配是:米粉 + 萝卜丁 + 花生米 + 一点点辣椒酱。早上赶课时,几分钟就能解决一顿热乎早餐。
3.2 瓦罐汤瓦罐汤的感觉和拌粉完全不一样。它是慢的,是温吞的,喝第一口时会先闻到香,再感觉到整个人被热气接住。
常见的肉饼汤、排骨汤都很稳,和拌粉一起吃,正好把“辣”和“润”平衡起来。
3.3 白糖糕白糖糕算是“快乐加餐”。外层有一点酥,里面糯,甜度不算张扬,下午嘴馋时来一块,心情会莫名好起来。
3.4 辣椒炒肉(正餐)这道菜第一次吃会觉得香 ...
1. 关于本笔记本文件介绍的是 SSL / TLS 以及 TLS 握手相关知识。
2. 目录
SSL / TLS 以及 SSL / TLS 握手的概念
TLS 握手过程中发生了什么
TLS 握手过程中的一些重要概念
数字证书
数字签名
证书链
密码规范和密码组合
TLS 握手详细过程
总结
3. 内容SSL / TLS 以及 SSL / TLS 握手的概念
SSL 和 TLS 协议可以为通信双方提供识别和认证通道,从而保证通信的机密性和数据完整性。
TLS 协议是从 Netscape SSL 3.0 协议演变而来的,不过这两种协议并不兼容。SSL 已经逐渐被 TLS 取代,所以下文就以 TLS 指代安全层。
TLS 握手是启动 HTTPS 通信的过程,类似于 TCP 建立连接时的三次握手。
在 TLS 握手过程中,通信双方交换消息以相互验证、相互确认,并确立它们所要使用的加密算法以及会话密钥(用于对称加密的密钥)。
可以说,TLS 握手是 HTTPS 通信的基础部分。
TLS 握手过程中发生了什么
TLS 握手的目的是建立安全连接,通信双方主要完 ...
1. 关于本笔记本文件介绍的是类字节码的难点知识
2. 目录
多语言编译为字节码在JVM运行
Java字节码文件
Class文件的结构属性
例子
字节码详细信息
常量池
方法集合
总结
多语言编译为字节码在JVM运行
计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码。这个编译后的java代码,就是本文要介绍的java字节码。
为什么jvm不能直接运行java代码呢,这是因为在cpu层面看来计算机中所有的操作都是一个个指令的运行汇集而成的,java是高级语言,只有人类才能理解其逻辑,计算机是无法识别的,所以java代码必须要先编译成字节码文件,jvm才能正确识别代码转换后的指令并将其运行。
Java代码间接翻译成字节码,储存字节码的文件再交由运行于不同平台上的JVM虚拟机去读取执行,从而实现一次编写,到处运行的目的。
JVM也不再只支持Java,由此衍生出了许多基于JVM的编程语言,如Groovy, Scala, Koltin等等。
Java字节码文件
class文件本质上是一个以8位字节为基础单位的二进制流,各个 ...
关于本笔记本文件介绍的是跟订单业务相关的知识
目录
核心问题
订单创建
订单延迟等待
并发冲突
兜底策略
解决思路
解决订单创建问题
解决订单延迟等待问题
解决订单并发冲突问题
实现订单兜底策略
方案实现
订单创建的具体多实现
订单延迟等待的具体多实现
订单并发冲突的具体多实现
订单兜底策略的具体多实现
总结
核心问题
订单创建
订单创建看似只是一次写库, 本质是“用户意图 + 库存/价格校验 + 交易落库 + 后续动作触发”的组合动作。
业务维度: 活动价格、优惠券、运费规则经常变化, 规则冲突会导致创建失败或金额错误。
技术维度: 下单链路依赖库存、营销、用户、支付等模块, 任一环节慢或不可用都会放大失败率。
数据维度: 幂等键缺失、请求重试、消息重复消费会导致重复订单。
组织维度: 需求频繁迭代但缺少统一订单状态机, 造成“能下单但后续不可处理”的隐性问题。
订单延迟等待
订单延迟等待常见于“待支付超时关闭”“发货超时提醒”“自动确认收货”等场景。
业务维度: 不同品类和渠道的超时时间不一致, 统一固定值会损失体验或资金周转效率。
技术维度: ...
1. 关于本笔记本文件介绍的是分布式架构知识
2. 目录
分布式理论
什么是分布式系统?
分布式和微服务有什么区别?
CAP
BASE
分布式特性
分布式锁
分布式ID
分布式组件
分布式事务
场景
限流降级与熔断处理
限流算法
订单链路中的一致性实现
一致性模型选型场景
分布式一致性
Raft 协议
Paxos 协议
Raft 和 Paxos 的原理对比
使用 Raft 的常见框架与组件
ZAB 协议
总结
分布式理论
什么是分布式系统?
简单讲,分布式系统就是多台机器通过网络协同完成同一业务,对外像一个整体系统。
在 Java 项目中引入分布式通常是三个原因:
单机性能上限(CPU、内存、连接数、磁盘 IO)。
高可用要求(不能单点故障)。
业务和团队规模变大(必须拆分服务与职责)。
核心收益:
水平扩展能力提升(横向扩容)。
故障隔离能力提升(部分故障不拖垮全局)。
核心代价:
网络不可靠导致一致性问题。
链路变长导致延迟、超时、重试风暴问题。
故障排查复杂度显著上升。
分布式和微服务有什么区别?
一句话:
分布式是“部署形态”(多机协同)。 ...
1. 关于本笔记本文件介绍的是java线程基础的难点知识
2. 目录
多线程简介
java里面的线程和操作系统的线程一样吗?
并发问题
解决并发问题
线程安全
线程安全的关键点
线程安全的实现方法
线程使用
线程状态转换
线程创建
常见用法
互斥同步
线程机制
如何停止一个线程?
blocked和waiting的区别
总结
多线程简介
Java 多线程是指在一个 Java 程序中同时运行多个线程,这些线程共享程序的内存空间(如全局变量、方法区等),但有各自的栈和程序计数器,能同时执行不同的任务,比如一个线程处理用户输入,另一个线程后台下载文件,提升程序效率。
为什么需要多线程?
众所周知,CPU、内存、I/O 设备的速度是有极大差异的,为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都做出了贡献,主要体现为:
CPU 增加了缓存,以均衡与内存的速度差异;// 导致可见性问题
操作系统增加了进程、线程,以分时复用 CPU,进而均衡 CPU 与 I/O 设备的速度差异;/ ...






