- 博客(397)
- 收藏
- 关注
原创 GO [ 指针 ]
本文系统讲解Go语言指针的核心概念:指针保存变量地址,类型为*T,通过&取地址、*解引用。强调指针零值为nil,解引用前需判空,避免运行时panic。指针可实现函数修改外部变量、安全返回局部变量地址(依赖逃逸分析),并用于结构体方法(指针接收者)、链表等数据结构。对比new与make,指出切片、map已具引用语义,无需额外指针。强调Go自动垃圾回收,无需手动free,unsafe.Pointer仅限底层场景。重点区分指针接收者与接口实现的差异,避免常见误区。最终指出:指针是带类型的间接访问机制,核心
2026-09-24 16:37:11
14
原创 GO [ 映射表 ]
本文系统讲解Go语言中的map(映射表),涵盖其基本概念、创建与初始化、key类型限制、读写删除操作、comma-ok判断、遍历无序性、作为函数参数的传递机制、value为切片或结构体的应用场景,以及使用maps标准库进行高效操作。重点强调map非并发安全、避免依赖遍历顺序、正确处理不存在键的情况,并通过自定义哈希表实现加深对底层原理的理解。最后总结map的核心特性:基于可比较key的动态键值结构,适用于计数、分组、集合等典型场景,是Go编程中不可或缺的重要数据结构。
2026-09-24 11:25:05
29
原创 GO [ 字符串 ]
Go字符串是不可变的字节序列,长度为字节数,非字符数。len() 返回字节数,range 遍历返回 rune(Unicode码点),下标访问为字节。字符串不可修改,需转为 []byte 或 []rune 后操作。支持双引号(解析转义)和反引号(原始字符串)字面量。处理文本时应使用 utf8.RuneCountInString 统计字符数,strings.Builder 高效拼接,strconv 实现类型转换。字符串可含任意字节,不强制合法UTF-8,需业务自行校验。正确理解字节、字符与rune差异,避免常见
2026-09-22 22:38:14
213
原创 GO [ 切片 ]
本文系统讲解Go语言切片的核心概念:切片是底层数组的动态描述符,包含指针、长度(len)和容量(cap)三要素。通过代码实操,阐明切片与数组的本质区别——切片共享底层数组,赋值仅复制描述符;掌握make、字面量、截取及三下标切片创建方式;理解append需接收返回值、可能扩容;copy实现元素复制;slices包提供泛型操作函数。重点揭示切片共享、内存保留、参数传递等底层机制,结合栈、队列、过滤映射等应用,强调正确使用避免常见错误,最终实现对切片“窗口”本质的深刻理解。
2026-09-22 14:41:49
404
原创 GO [ 条件/循环控制 ]
本文系统讲解Go语言的条件控制机制,涵盖if、for、switch、select、defer等核心控制结构。重点强调Go语法特点:条件无需括号、大括号必须紧随其后;if支持初始化语句,变量作用域受限;for为唯一循环结构,支持三段式、条件式与无限循环;range遍历集合,注意map遍历顺序不固定;break和continue控制流程,嵌套循环需标签跳出;switch默认不自动贯穿,支持无表达式写法与类型断言(typeswitch);select用于多通道并发选择;defer实现延迟执行,遵循后进先出原则。结
2026-09-21 20:57:17
157
原创 GO [ 输入输出 ]
本章系统讲解Go语言的输入输出机制,核心在于理解fmt(格式化)、os(标准流)、io(Reader/Writer抽象)和bufio(缓冲)的分层设计。通过io.Reader与io.Writer接口,文件、网络、内存等均可统一处理。重点掌握:fmt.Scan读取空白分隔数据,bufio.Scanner按行读取,io.Copy实现流式传输,bufio.Writer需调用Flush才写入。强调错误处理、资源关闭及io.EOF为正常结束信号。最终实现从内存输入解析到缓冲输出的完整流程,体现Go I/O“抽象统一、
2026-09-21 19:52:45
256
原创 GO [ 变量 ]
本文系统讲解Go语言变量的核心概念,涵盖变量定义、声明方式(var与:=)、零值机制、类型推断、多变量声明与多重赋值、作用域与遮蔽、指针与new/ make 使用,以及结构体变量的零值特性。通过实例阐明变量作为运行时存储位置的本质,强调类型约束、作用域控制与零值可用性设计,帮助开发者避免常见误区,深入理解Go变量的底层逻辑与最佳实践。
2026-09-21 17:22:12
190
原创 GO [ 常量 ]
本文系统讲解Go语言常量,强调其并非简单“不可修改的变量”,而是编译期确定的值。重点涵盖:常量声明语法(const)、六类形式(布尔、rune、整数、浮点、复数、字符串)、无类型与有类型常量的区别、默认类型转换规则、常量表达式在编译期求值、数值常量支持任意精度、iota实现枚举与位标志、类型安全及常见误区。通过实例演示,揭示常量在配置、状态码、权限控制等场景中的核心作用,帮助开发者深入理解其本质与最佳实践。
2026-09-21 15:23:05
283
原创 GO [ 数据类型 ]
本文系统讲解Go语言数据类型的核心概念,强调类型不仅定义值的范围,还决定可执行操作。通过官方规范与实际代码结合,深入解析布尔、数值、字符串、复合类型等的特性与使用场景。重点阐明类型推断、零值、类型转换、指针与接口的底层机制,并总结常见误区与最佳实践,帮助开发者选择最符合业务语义的类型,提升代码安全性与可维护性。
2026-09-21 10:46:38
332
原创 GO [ 基本语法 ]
Go语法看似熟悉,实则暗藏玄机:前导0代表八进制(如024=20),但虚数字面量0123i却按十进制解析;常量0.1+0.2==0.3为真,存入变量后因浮点舍入变为假;math.MaxInt64在32位架构编译失败。这些差异源于无类型常量的编译期高精度计算与变量的机器类型限制。理解关键在于区分名字、类型、文本与语句边界,明确包依赖、作用域与类型转换规则,才能避免隐性错误。
2026-09-18 11:18:51
310
原创 RAG 数据检索
<think>我们根据内容生成摘要,要求≤150字。内容主要介绍RAG数据检索流程:用户查询、查询向量化、向量检索、代码实现。需简明扼要。字数控制。</think>本文介绍了RAG数据检索流程:用户输入查询后,用与知识库一致的嵌入模型向量化,再在向量数据库中检索相似文本,最终返回给大模型回答。包含库初始化、分块入库及交互检索的代码实现,强调模型一致性,并通过测试验证效果。
2026-09-01 22:14:15
220
原创 知识库的构建 [ 4 ]
向量数据库是专门存储、索引、检索高维Embedding向量的专用数据库,核心作用是快速做相似度匹配,弥补传统关系型数据库不擅长高维浮点数数组比对的短板。………………,我们之前学过很多关系型数据库,例如MySQLRedisSQLite,这些数据库能不能存储向量?答案是可以存储,但是效率很差。向量是高维浮点数组,小数位数很长。关系型数据库虽然可以存下向量数据,但是做相似度检索的时候性能远不如向量数据库。所以我们要使用更适配的工具,也就是向量数据库,以此提升检索效率。现在市面上向量数据库的种类非常多,像。
2026-08-30 22:59:42
424
原创 知识库的构建 [ 3 ]
先按主题或段落初步划分,再对超长块递归细分,直至满足大小限制。递归分块融合了结构化与非结构化处理逻辑,与固定大小的分块不同,这种方法保持了语言的自然流畅性并保留了完整的内容语义。
2026-08-29 19:20:05
505
原创 知识库的构建 [ 2 ]
我给大家举个直观的例子:第一句话:小明长得很帅。第二句话:小明长得很俊。第三句话:小明长得很丑。我们用人脑、肉眼判断,第一句和第二句意思基本一致、语义高度相近;第一句和第三句字面结构几乎一样,只有最后一个词不同,但语义是完全相反的。如果只靠字面字符匹配,程序很容易判断错误,会误以为第一句和第三句更相似。所以我们需要一套能力,让计算机替代人脑,精准识别文本真实语义、判断语句相似度。实现这个能力的核心工具就是。
2026-08-25 23:11:45
424
原创 知识库的构建 [ 1 ]
本文介绍了RAG项目的开发环境搭建与知识库构建流程。主要内容包括: 使用Conda创建Python 3.12开发环境,安装LlamaIndex框架及其依赖包,配置PyCharm解释器。 详细讲解了LlamaIndex框架的作用和优势,这是一个专门为RAG场景设计的开源框架,擅长处理数据加载、解析、分块、索引等核心环节。 实现数据加载模块的两大核心功能: 数据解析:通过SimpleDirectoryReader工具类解析各种格式文件(PDF、PPT、CSV等) 数据清洗:使用正则表达式清除解析产生的格式残留和
2026-08-21 22:03:36
202
原创 SQL 调优 [ 2 ]
本文详细解析了MySQL执行计划中type列的各种取值及其性能表现,从最优到最差依次为:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。重点分析了常见类型: 高性能类型: const:主键/唯一索引的等值查询,性能最佳 eq_ref:多表关联
2026-08-18 20:24:31
203
原创 SQL 调优 [ 1 ]
本文主要介绍了MySQL数据库索引优化的核心内容,包括执行计划(EXPLAIN)的使用和解读。通过构建百万级测试数据表,对比演示了主键索引查询和非索引列查询的性能差异,主键查询耗时0.00秒,而非索引查询耗时1.40秒,性能差距显著。文章详细讲解了执行计划的12个关键字段含义,特别是type列(访问类型)和Extra列(附加信息)对SQL优化的指导作用。通过执行计划可以分析索引使用情况、预估扫描行数等指标,帮助开发者识别性能瓶颈并进行针对性优化。此外还介绍了索引覆盖、回表查询等概念,以及索引失效的常见场景,
2026-08-18 16:17:22
223
原创 C++ inline的现代视角:从优化建议到重定义解决方案
本文深入探讨了C++中inline关键字的现代应用,重点分析了其解决“多重定义”问题的核心机制。文章从传统extern方案切入,对比了inline函数的三重特性:允许头文件定义、链接器合并重复符号、要求定义完全一致。通过代码示例详细说明了C++17引入的inline变量特性,以及static/匿名命名空间的替代方案。最后提供了根据场景选择extern/inline/static的实践指南,并补充了extern与extern"C"的相关知识,为现代C++工程中符号管理提供了全面解决方案。
2026-08-12 14:27:22
494
原创 ICMP 协议
ICMP(互联网控制消息协议)是网络层协议,核心功能为网络故障诊断和状态反馈,而非传输业务数据。它弥补了IP协议无法通知丢包原因的缺陷,通过差错通知和诊断查询两类报文实现网络运维。ICMP报文封装在IP数据包中,路由器、主机必须支持其解析。典型应用包括ping(测试连通性)和traceroute(追踪路由路径),二者直接基于ICMP实现,不涉及传输层端口概念。ICMP对网络管理员至关重要,能精准定位链路故障节点和原因。
2026-08-04 15:03:41
370
原创 DNS (Domain Name System)
DNS系统将易记的域名转换为IP地址,优化用户体验。早期使用hosts文件维护映射关系,但无法适应互联网规模扩张,演变为分布式DNS系统。域名采用树形分层结构,解析过程通过本地DNS服务器、根服务器、顶级域名服务器和权威服务器递归查询完成。DNS默认使用UDP协议(端口53)进行高效查询,但超过512字节或需要可靠传输时会切换至TCP。多级缓存机制提升解析效率。全球13组IPv4根服务器大多位于北美,我国通过"雪人计划"部署IPv6根服务器,增强网络安全自主权。完整DNS解析流程对用户透
2026-08-04 13:53:08
396
原创 IP 分片和组装的具体过程
IP分片与组装过程深度解析:围绕16位标识、3位标志(含DF/MF位)、13位片偏移三大核心字段展开。当IP报文超过链路层MTU(如以太网1500字节)时,系统根据MSS(1460字节)进行分片处理,每片携带独立IP头并按8字节对齐(除末片)。接收端通过相同标识聚合分片,校验连续性后按偏移重组。关键点在于:分片会显著增加丢包风险(单片丢失导致整包重传),因此TCP通过MSS优化避免分片。整个过程对上层协议透明,体现了网络分层设计中效率与可靠性的平衡。
2026-08-02 16:32:57
469
原创 TCP 全连接队列与 tcpdump 抓包
第一层:VFS 虚拟文件层进程 →文件表 →文件对象,实现「套接字即文件」,用户态只用 fd 统一操作;第二层:BSD 通用套接字层,统一网络操作入口,通过proto_ops函数指针实现协议分发;第三层:INET 网络协议层sock→inet_sock→→tcp_sock嵌套结构体,C 语言模拟多态,存放 IP、TCP 专属连接状态;第四层:硬件设备层网卡设备,sk_buff报文载体,完成报文收发、硬件交互。弄懂这套内核嵌套结构后,再回看之前实验里的全连接队列上限 = backlog+1。
2026-07-31 17:30:10
415
原创 手写序列化与反序列化
本文详细讲解了两项核心技术:1. 基于JSON和自定义文本协议实现对象序列化与反序列化;2. 在TCP流式传输中通过长度头解决粘包问题。文章采用条件编译方案(#define SelfDefine)实现JSON与自定义协议的无缝切换:自定义协议采用"数字 运算符 数字"的文本格式,通过字符串分割处理实现序列化;TCP层通过"\r\n"分隔长度头和有效载荷来封包/解包。文中提供了完整的Request/Response类实现,包括序列化方法(对象转字符串)、反序列化方法(字
2026-07-28 14:08:27
196
原创 connect 断线重连
本文介绍了一个基于状态机实现的TCP客户端程序,具备自动断线重连功能。主要内容包括: 程序采用三层架构设计,通过状态机管理TCP连接全生命周期(新建、连接中、已连接、断开、关闭) 核心功能实现: 单次连接建立 自动重连机制(可配置重试次数和间隔) 连接状态检测与处理 资源释放管理 关键特性: 状态机驱动流程控制 自动重连逻辑 错误检测与处理 RAII资源管理 测试场景验证了程序的: 服务端不可达时的重试机制 正常通信流程 服务端中断后的自动恢复能力 文章还讨论了可能的优化方向,如重连策略优化、IO模型升级等
2026-07-27 20:25:12
202
原创 Windows 平台下的 TCP 客户端
本文介绍了Windows平台TCP客户端与Linux服务端跨平台通信的实现方法。文章首先说明了验证目标:确保Windows TCP客户端能正常连接Linux服务端,强调跨平台互通对实用性的重要性。然后详细讲解了Windows TCP客户端的编写流程,包括Winsock初始化、套接字创建、服务端地址配置、连接建立和数据收发等关键步骤,并提供了完整代码示例。通过实操演示了从Visual Studio创建项目、配置IP和端口,到最终实现双向通信的全过程。特别指出TCP协议具备连接状态感知能力,能准确检测客户端断开
2026-07-27 13:56:37
230
原创 Windows 平台下的 UDP 客户端
本文验证了Windows与Linux系统间的UDP双向通信能力。通过对比分析两平台的套接字编程差异,重点阐述了Windows特有的Winsock库初始化、资源释放等操作,并提供了完整的UDP客户端实现代码。实验结果表明,尽管存在字符编码显示差异和NAT地址转换现象,但跨平台UDP通信功能完全正常。文章还特别提醒了云服务器端口放行等常见配置问题,为实际应用场景(如直播弹幕传输)提供了技术参考。
2026-07-27 02:52:03
242
原创 网络排查必备:ping、netstat、pidof 命令详解
在日常开发与运维中,网络问题是最常见也最令人头疼的问题之一。当服务连不上、请求超时、连接被拒绝时,我们该如何快速定位问题?工欲善其事,必先利其器。掌握几个核心的网络命令,能让你在排障时事半功倍。ping(网络层可达性测试)、netstat(网络状态查看)和pidof(进程 ID 查询)。它们分别从网络连通性、服务监听状态、进程管理三个维度,构成了网络排障的基础工具箱。netstat是的缩写,是 Linux 下最经典的网络状态查看工具。它可以显示当前系统的网络连接、路由表、接口统计信息等。
2026-07-21 18:48:18
406
原创 Multi-agent [ 5 ]
本文摘要: 本文系统介绍了LangChain框架中的智能体加工模式,重点解析了Router路由模式及其实现方法。Router架构通过引入路由分类器,将用户请求精准分发至多个专业智能体并行处理,适用于知识分散在不同垂直领域的场景。文章详细阐述了Router模式的核心概念、两种实现方式(单一路由和并行路由),并通过多源知识库检索的完整案例演示了代码实现。案例中构建了GitHub、Notion和Slack三个领域智能体,展示了从问题分类、并行执行到结果合成的完整流程。此外,还探讨了如何为无状态Router添加对话
2026-07-10 20:19:06
385
原创 Multi-agent [ 4 ]
文章摘要 Skills架构模式是一种将特定业务能力封装为可调用"技能"的技术,通过专属提示词驱动智能体完成专项任务。该模式采用渐进式披露技术,仅将轻量级技能描述常驻上下文,完整内容按需加载,有效控制token消耗。核心实现包含:定义标准化Skill结构(名称、描述、内容)、创建技能加载工具、构建中间件注入技能描述。高级应用可扩展为动态工具注册、层级技能树等变体,适用于编程助手、领域知识库等场景。通过SQL助手案例演示了销售分析和库存管理技能的按需调用流程,展现了如何结合业务规则生成精准查
2026-07-07 20:58:12
356
原创 协程 [ C++ ]
C++20协程是一种可以暂停执行并在之后恢复的特殊函数,它通过co_await、co_yield、co_return三个关键字实现。协程的核心特性是可挂起和恢复,执行到挂起点时会保存当前状态(局部变量、执行位置等),让出执行权,待条件满足后从暂停点继续执行。 协程与线程的主要区别在于: 线程是操作系统调度的基本单位,切换涉及内核态开销; 协程在用户态切换,仅保存少量状态,开销极低; 一个线程可运行多个协程,二者是协作互补关系。 C++20实现的是无栈协程,通过协程帧保存状态,支持海量并发。典型应用场景包括异
2026-07-07 00:13:34
491
原创 Multi-agent [ 3 ]
文章摘要:Handoffs架构模式详解 Handoffs是一种由OpenAI提出的架构模式,其核心在于让AI代理(Agent)根据业务阶段动态切换行为,类似于电话客服的菜单导航。该模式通过状态变量(如current_step)驱动流程,分阶段收集信息并持久化存储,最终输出精准解决方案。实现方式包括两种: 单代理+中间件:通过中间件动态调整系统提示词和工具集,适用于线性分步场景(如设备售后流程)。 多代理子图:将独立代理作为LangGraph节点,通过条件边和Command对象实现跨代理任务转交,适合多业务模
2026-07-06 11:10:43
395
原创 Multi-agent [ 2 ]
文章摘要: 本文深入探讨了多智能体架构中的Subagents(子代理)模式,详细解析其核心设计原理、实现策略及高级应用场景。主要内容包括: 基础架构 采用**主代理(监督者)+子代理(工作者)**的分层结构,主代理负责任务调度与结果整合,子代理专注执行具体任务(如日程管理、邮件发送)。 无状态设计:子代理不保存历史上下文,依赖主代理传递任务上下文,避免信息冗余。 核心实现 工具封装:将子代理包装为主代理的可调用工具(如schedule_event、manage_email),通过工具调用实现任务分发。 上下
2026-07-05 14:34:35
411
原创 Multi-agent [ 1 ]
多智能体系统(Multi-agent)是通过调度机制协调多个专业化智能体共同处理复杂任务的架构。其核心设计理念包括:1)任务拆分,每个智能体专注单一功能(如天气查询、日期计算);2)上下文工程,精准控制各智能体可见的信息范围;3)支持并行执行提升效率。相比单智能体,多智能体系统具备三大优势:上下文管理更高效、支持分布式开发、任务处理更快速。典型实现模式包括子代理、交接、路由器等五种核心架构,设计时需遵循无状态子代理、统一上下文维护等原则。值得注意的是,并非所有复杂任务都需要多智能体方案,单智能体配合适当工具
2026-07-03 20:46:09
279
原创 MCP(Model Context Protocol)[ 4 ]
本文介绍了MCP协议中的进度通知、日志记录和引导式输入三大核心功能。1. 进度通知:服务端通过Context对象的report_progress()方法推送任务进度,客户端通过注册on_progress回调接收实时更新,适用于大文件处理等耗时操作。2. 日志记录:服务端工具使用Context的分级日志方法(info/debug/warning)发送日志,客户端通过on_logging_message回调捕获,便于监控和调试。3. 引导式输入:服务端通过elicit()方法请求客户端补充信息,客户端可返回ac
2026-07-02 15:05:27
442
原创 MCP(Model Context Protocol)[ 3 ]
本文深入讲解了MCP工具拦截器的核心功能与应用场景。拦截器作为MCP的高级功能,主要具备三大能力:1)访问运行时上下文,通过request.runtime读取state、store、context等数据;2)状态更新与流程控制,通过Command对象更新状态或跳转流程;3)实现请求修改、错误处理等通用逻辑。文章通过天气查询、订单提交等实例,演示了如何利用拦截器注入用户上下文、校验权限、管理状态等典型场景,并详细说明了拦截器的编写规范和执行流程。拦截器遵循洋葱模型执行顺序,支持前置/后置处理,是连接独立MCP
2026-07-01 20:39:29
239
原创 MCP(Model Context Protocol)[ 2 ]
MCP(Model Context Protocol)服务器是为AI应用提供标准化上下文的工具,包含三大核心功能:工具(Tools)、资源(Resources)和提示词模板(Prompts)。工具支持主动调用执行操作;资源提供只读数据;提示词模板指导模型完成任务。本文详细讲解了如何在FastMCP框架下定义这三类功能,并通过实战演示客户端如何连接MCP服务器、调用工具、读取资源和获取提示词模板。同时介绍了如何利用社区第三方MCP服务(如时间转换、文档查询等)快速扩展AI能力,并通过封装资源为工具的方式将其集
2026-07-01 00:14:34
1033
原创 MCP(Model Context Protocol)[ 1 ]
MCP(Model Context Protocol)是一种连接AI应用与外部系统的标准化协议,类似于AI领域的"万能插座"。它解决了传统工具调用中的工程挑战,如接口不统一、重复开发等问题。MCP包含Host、Client、Server三个核心角色,支持stdio和HTTP两种通信方式。 在快速上手部分,通过fastmcp库搭建了本地计算器服务和远程天气服务,并使用langchain-mcp-adapters创建客户端连接这些服务。案例展示了如何让Agent智能体通过MCP协议调用加法、
2026-06-30 13:30:46
446
原创 Agents 核心能力 [ 3 ]
第三种custom自定义流模式,可以弥补工具无法主动推送中间进度的短板。如果我们需要在工具执行过程中,向外推送自定义提示、进度信息,就使用该模式。与 LangGraph 用法一致,通过函数获取写入器,可以主动向流中推送任意自定义数据。报告工具执行进度(如 “正在查询数据库...”)、中间计算结果、调试信息等。示例:在工具中发送自定义进度更新具体使用步骤:在工具函数内部导入方法,获取流写入器writer;调用writer("自定义文本")
2026-06-29 02:04:21
461
原创 Agents 核心能力 [ 2 ]
文章摘要: 本文系统讲解了LangChain框架中提示词和状态管理的核心技术。提示词分为静态和动态两类:静态提示词直接传入固定文本,适用于简单场景;动态提示词通过中间件动态生成,可根据运行时上下文自动调整。在状态管理方面,介绍了自定义状态的两种实现方式,推荐使用中间件绑定方式实现作用域隔离。同时详细解析了结构化输出的两套底层策略(提供者策略和工具策略)及其适用场景,帮助开发者根据模型特性选择最优方案。文章通过完整代码示例演示了各项技术的实际应用,并强调了版本兼容性注意事项。
2026-06-26 17:00:07
305
原创 Agents 核心能力 [ 1 ]
本文系统介绍了Agent的核心能力,重点阐述了模型和工具的静态与动态配置方法。在模型配置方面:静态模型通过字符串标识符或模型实例一次性绑定,动态模型则利用@wrap_model_call中间件实现运行时切换。工具配置部分:静态工具在创建时预注册,动态工具支持运行时筛选已有工具或新增工具,需配合中间件实现。文章通过代码实例演示了权限控制、工具动态加载等场景的实现方式,并强调错误处理和ReAct循环的重要性。Agent通过这些机制能够灵活适应复杂任务需求,实现智能决策与外部能力的协同调用。
2026-06-25 20:42:59
490
包含了多个关于C++编程概念和特性的图像文件,具体内容涵盖了排序算法、内存管理、迭代器使用、拷贝构造函数等多个方面,会更新,放心
2024-08-23
STL中string,vector,list,queue,stack....等原码
2024-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅