- 博客(259)
- 收藏
- 关注
原创 【LangChain 源码解析九:Indexing】
本系列共 2 部分,从记录管理到索引 API,完整拆解 LangChain Indexing 模块的去重与清理机制。
2026-03-11 17:06:12
390
原创 【LangChain 源码解析八:Embeddings】
本系列共 2 部分,从抽象接口到向量存储,完整拆解 LangChain Embeddings 的设计与实现。
2026-03-11 17:05:38
501
原创 【LangChain 源码解析五:Output Parser】
本系列共 4 部分,从输出数据结构到 Output Parser 全家族,完整拆解 LangChain 的"模型输出 → 结构化结果"链路。
2026-03-03 16:57:23
585
原创 【LangChain 源码解析二:Prompt 模板】
role: str用于需要自定义角色名的场景(比如"narrator""tool"等)。层次机制位置变量提取阻止.attr[idx]、纯数字变量名格式化拒绝位置参数jinja2沙箱mustache仅支持简单变量替换。
2026-03-03 16:55:45
813
原创 【LangChain 源码解析三:Chat Model】
本系列共 4 部分,从日常使用到源码架构,完整拆解 LangChain 的 ChatModel 组件。不需要 API key,不需要网络。 和 是官方测试用的假模型,行为和真模型完全一致。ChatModel 接受三种输入,统一输出 :这个类型定义在 :三种输入怎么统一?看 ():流程图:三种调用方式 + async 变体方法输入输出同步异步单个值单个值看 的实现(): 并不是直接调用 ,而是走了一条长链路:这条链路在第
2026-03-01 22:32:22
683
原创 【LangChain 源码解析一:Runnable】
每个invokestreambatch都接受一个可选的config参数。是一个TypedDicttags: list[str] # 标签,用于过滤追踪metadata: dict[str, Any] # 元数据,传给回调callbacks: Callbacks # 回调处理器run_name: str # 追踪 run 的名称max_concurrency: int | None # 最大并行数recursion_limit: int # 递归深度限制(默认 25)
2026-03-01 22:16:34
824
原创 【LangChain 源码解析四: Message】
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2026-02-09 11:29:32
696
转载 Mac终端利器:Homebrew + iTerm2 + Oh My Zsh 教程
https://juejin.cn/post/7257740918432792632
2025-07-29 07:43:01
131
原创 分布式事务选型和实践
XA是数据库的分布式事务,强一致性,在整个过程中,数据一张锁住状态,即从prepare到commit、rollback的整个过程中,TM一直把持折数据库的锁,如果有其他人要修改数据库的该条数据,就必须等待锁的释放,存在长事务风险。:业务活动管理器管理控制整个业务活动,包括记录维护 TCC 全局事务的事务状态和每个从业务服务的子事务状态,并在业务活动提交时调用所有从业务服务的 Confirm 操作,在业务活动取消时调用所有从业务服务的 Cancel 操作。如果任意本地子事务失败,则补偿已完成的事务。
2024-10-06 12:42:27
1482
原创 分布式id选型与实践
1位:符号位,始终为0。41位:时间戳,精确到毫秒,可使用69年。10位:机器ID,包括5位数据中心ID和5位机器ID。12位:序列号,毫秒内的计数,支持每个节点每毫秒生成4096个ID。在分布式系统中,选择合适的ID生成方案需要综合考虑系统的性能、可用性、实现难度和业务需求。简单场景:对于并发量不高、实现成本低的需求,可以使用UUID或利用中央数据库生成ID。中央数据库生成ID方案在分布式环境下,通过集中管理,确保ID的全局唯一性和有序性。中高并发场景。
2024-10-06 10:58:32
1388
原创 MAC OS使用docker部署RocketMQ,解决宿主机无法访问broker
虽然利用docker启动容器,可以在启动的时候配置端口映射,利用127.0.0.1+映射端口的方式直接访问容器,但是在Broker的连接上,是通过NameServer来获取他的地址,并非通过自己的配置。而NameServer提供的是容器网络内的地址,所以导致在拿到Broker的地址后,无法通过宿主机连接。然后使用以下命令在 docker 端运行 wenjunxiao/mac-docker-connector,** 指令的含义是需要使用 host 网络,并且允许 NET_ADMIN**
2024-09-05 01:37:26
1025
原创 高并发系统设计
削峰填谷(Load Shedding and Smoothing):对于流量高峰,采用削峰填谷的策略,例如消息队列、请求缓冲队列、批处理等方式,将瞬时高峰流量平滑处理,减少对系统的冲击。无锁编程和减少锁争用:尽量使用无锁数据结构(如 ConcurrentHashMap)和算法(如 CAS,Compare-And-Swap),避免线程之间的锁竞争,提高并发性能。高效的网络库:使用高效的网络库和框架(如 Netty、Akka、Vert.x)来处理大量的并发连接和请求,优化底层网络性能。
2024-09-03 23:18:22
1292
原创 RocketMQ性能优化:全网最全的一篇
通过监控 RocketMQ 的性能指标和运行状态,可以及时发现问题并进行优化调整。操作系统的配置对 RocketMQ 的性能有显著影响。通过合理的操作系统调优,可以更好地发挥硬件性能,提升 RocketMQ 的消息处理能力。RocketMQ 的写入和消费性能直接影响系统的整体吞吐量和响应时间。通过优化写入和消费策略,可以进一步提升 RocketMQ 的性能。合理选择和配置硬件资源,可以为 RocketMQ 提供更高的吞吐量和更低的延迟。通过优化消息存储策略和数据结构设计,可以提升消息存储和检索的效率。
2024-08-27 23:29:55
3596
原创 Redis性能优化:全网最全的一篇
Redis 的 Hash 适合存储多个字段的对象,当字段较少且值较短时,使用 Hash 可以显著减少内存占用。**使用更紧凑的字符串编码:**Redis 会自动选择适当的字符串编码方式(raw 或 int 编码)。**使用 LZF 压缩 AOF 文件:**如果启用了 AOF(Append Only File)持久化,可以选择使用 LZF 压缩 AOF 文件,减少磁盘和内存的使用。**优化内存分配:**Redis 内部使用 jemalloc 作为内存分配器,可以通过定期优化和整理内存分配来减少内存碎片。
2024-08-27 22:41:04
4830
原创 Redis源码浅析二:命令执行
总结:readQueryFromClient 函数负责从客户端 socket 读取请求数据,将其存储在查询缓冲区中,并根据不同的情况进行处理(如命令解析、复制状态更新等)。如果数据读取不完整或发生错误,它会正确处理这些情况,并确保不会由于某个客户端的异常状态影响到整个 Redis 服务器的稳定性。在redis启动的时候,我们还要关注一个重点,在initServer的时候,会执行aeCreateFileEvent,这里我们还有深入学习一下。看到这里基本上就可以了,不再往下追了,
2024-08-25 23:15:14
654
原创 Redis源码浅析一:redis启动
当输出缓冲区中仍然有未发送的数据时,Redis 需要确保这些数据能在将来继续发送,为此,Redis 在事件循环中为该客户端的 socket 创建一个 可写事件(AE_WRITABLE)。这个事件表示,当客户端的 socket 变为可写状态(即,socket 缓冲区有足够的空间来接收更多数据)时,Redis 的事件循环会触发相应的事件处理器(sendReplyToClient),继续将剩余的数据发送给客户端。回调函数在事件循环进入休眠等待 I/O 事件之前执行,主要用于处理一些需要在阻塞等待之前完成的任务。
2024-08-25 22:27:34
599
原创 Redission源码浅析一:RedissonLock.lock与RedissonLock.tryLock
加锁时,如果没有指定过期时间,则默认过期时间为30s且每隔10s进行锁续期操作。
2024-08-25 21:09:34
2116
原创 Lettuce源码二:执行命令
本文主要介绍了使用发送set命令的主要流程和原理:获取基础连接调用set方法(阻塞等待) -> 封装命令 -> 获取指定槽的节点连接 -> 命令缓存到队列末尾 -> 命令编码 -> 发送到tcp缓冲区 ->redis服务端收到请求、处理并返回响应 -> 客户端tcp缓冲区收到响应报文 -> 响应消息解码 -> 从本地队列头部去除缓存命令 -> 响应写入命令对象 -> 返回响应唤醒调用线程。Lettuce 客户端借助命令队列、响应式编程,实现了tcp。
2024-08-23 16:47:39
1234
原创 Mysql 性能调优四:查询优化
在前面几篇中,我们介绍了如何设计最优的库表结构、如何建立最好的索引,这些对于提高性能来说是必不可少的。但这些还不够——还需要合理地设计查询。如果查询写得很糟糕,即使库表结构再合理、索引再合适,也无法实现高性能。
2024-07-30 21:39:44
913
原创 ES性能优化:全网最全的一篇
更多的字段对搜索也是有影响的,ES 非常依赖于底层的文件系统缓存,我们肯定想把更多的数据(index segment)缓存起来,这样可以提升性能。的方式来进行处理的。使用 Bulk 的方式有利于提高写入的性能,这个其实也很好理解,如果链接不是长链接,每写入一条数据都进行一次 TCP 链接的过程,那效率是多低啊。对于写入的耗时还是很明显的,从一开始每个批次 3200 条数据的耗时 4 分 39 秒,一路优化到最后的 3 分 53 秒,需要注意的是,部分配置是有特定的使用场景的。
2024-07-30 14:40:57
4323
原创 Mysql 性能调优二:Schema设计
这个虚假的全0值可能会导致很多问题(可以将MySQL的SQL_MODE配置为不允许使用无意义的日期,对于尚未创建满是坏数据的数据库的新应用程序来说,这是一个特别好的实践)。Mysql可以为整数类型指定宽度,例如,INT(11),这对大多数应用毫无意义:它不会限制值的合法范围,只是规定来Mysql的一些交互工具例如,MySQL命令行客户端)用来显示字符的个数。在任何具有枚举值类型的数据库中,这可能是一个值得商榷的设计决策,因为它实际上应该是一个整数,会被设计为“字典”或“查找”表的外健。
2024-07-29 21:26:32
1055
原创 阿里Mysql最佳实践
说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。create_time,update_time 的类型均为datetime 类型, 如果要记录时区信息,那么类型设置为 timestamp。正例:where a =?and b =?order by c;索引:a_b_c正例:where a =?索引:a_b_c反例:索引如果存在范围查询,那么索引有序性无法利用,如:WHERE a > 10 ORDER BY b;索引 a_b 无法排序。
2024-07-28 16:29:18
1628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1