- 博客(1201)
- 资源 (45)
- 问答 (15)
- 收藏
- 关注
原创 【工具】开发工具红黑榜 (TCP测试/HTTP测试/SHELL工具/串口工具……)
SSH工具FinalShell (shell+文件传输+远程桌面)SSH/串口 工具MobaXtermXshell (缺点:收费)TCP/UDP测试工具红:USR-TCP232-Test(功能强大)http://www.usr.cn/Download/27.htmlSocketTool.exe (缺点:没有日志功能,点击发送后发送框内的数据被清除)灰:T............
2020-01-09 20:57:39
6054
4
原创 【NVSHMEM】PCIe 距离类型(PIX,PXB,PHB,NOD,SYS)和判断
PATH_PIX(0): 相同设备,最优PATH_PXB(1): 通过 PCIe 交换机连接PATH_PHB(2): 通过 Host 桥接PATH_NODE(3): 同一 NUMA 节点PATH_SYS(4): 跨系统,最差通过比较 PCIe 路径字符串的公共前缀长度判断距离。
2026-03-11 22:09:59
343
原创 【nvshmem】nvshmem中的DMA buf是什么?
dma-buf 目的:解决各个驱动之间 buffer 零拷贝共享的问题。dma-buf是 fd + buffer 的结合体,fd 用于标识和管理 buffer,同时 控制访问权限,buffer 是实际的内存区域。buf由设备驱动预先分配并导出,与一个 FD 结对,形成一个 DMA BUF。使用者可以通过 FD 符将 buf 映射到自己的地址空间,从而实现buf的访问。(说明,1: 这个 buffer可能属于不同设备(如 GPU 显存、网卡 DMA 区域),而不仅是 CPU 内存。
2026-02-28 18:46:06
706
原创 【工具】docx/word转MD:Pandoc
将文件从一种标记格式转换为另一种格式(比如 html 和 markdown等标记语言),它可以将文档在 Markdown、LaTeX、reStructuredText、HTML、Word docx 等多种标记格式之间相互转换,并支持输出 PDF、EPUB、HTML 幻灯片等多种格式。先指定输入/输出格式-f-t)→指定输出文件-o)→补充样式/结构参数-s--toc-f-t-o-s--toc,其余参数按需使用;复杂需求(如自定义样式、批量配置)可通过--defaults实现,减少重复输入参数。
2026-02-27 18:12:54
479
原创 【NCCL】NCCL通信协议:Simple, LL, LL128
摘要:NCCL提供了Simple、LL和LL128三种通信协议,针对不同数据规模优化传输效率。Simple协议采用连续缓冲区设计,有效载荷接近100%,适合大消息传输;LL协议通过内嵌flag实现低延迟,但有效载荷仅50%,适合小消息;LL128协议在两者间取得平衡,有效载荷达93.75%,适合中等消息。协议选择由NCCL自动完成,考虑硬件拓扑和消息大小,也可通过环境变量强制指定。不同协议在缓冲区布局和同步机制上存在差异,分别优化吞吐量、延迟或两者平衡。
2026-02-26 18:01:58
717
原创 【RCCL】RCCL工具
普通监控工具只能告诉你“这辆车跑完一圈用了多少秒”。NPKit则能告诉你“在第三个弯道的入弯阶段,左后轮胎的抓地力在第 3.5 秒到 3.8 秒之间出现了微小的波动,导致速度下降了 0.2%”。
2026-02-25 20:34:43
985
原创 【RDMA】rdma指令
工具包的一部分,主要用于管理 RDMA(Remote Direct Memory Access)设备。man rdma # 查看完整手册。# 显示 CM(连接管理器)ID。# 显示 CQ(完成队列)# 显示 MR(内存区域)# 显示 PD(保护域)# 显示 QP(队列对)# 尝试不同的输出格式。# 显示特定设备的资源。# 尝试其他资源类型。
2026-01-28 21:48:35
718
原创 【RDMA】infiniband IB 流控机制
IB 的拥塞控制机制,本质是一场从 “被动丢包补救” 到 “主动流量驾驭” 的技术革新。它通过交换机的 “早期检测”、“精准标记”,HCA 的 “快速反应”、“动态调节”,以及 ECN 与信用流控的协同支撑,构建起一套覆盖 “端 - 网 - 端” 的精细化闭环系统。这套系统的价值,在高性能场景中体现得淋漓尽致:在 AI 训练集群中,它能让 All-Reduce 操作的吞吐量保持在理论带宽的 90% 以上,延迟波动控制在 1 微秒以内,确保数千块 GPU 的协同训练高效稳定;
2026-01-15 21:50:39
1069
原创 【RDMA】infinband诊断工具infiniband-diags和ibutils2
在某个节点上启动 OpenSM(通常选择一台服务器) sudo systemctl start opensm # 或者 sudo /usr/sbin/opensm -F --report_rate 20。大部分这些工具是专为原生 InfiniBand(IB)设计的,在 RoCE(RDMA over Converged Ethernet)环境下无法直接使用,或功能受限。perfquery -C mlx5_2 -x -P 1 #扩展计数器(显示详细流量统计)
2026-01-15 21:20:26
884
原创 【deepEP】什么是 MoE(混合专家模型)|deepEP
专家”不是 GPU,而是 MoE(混合专家模型)中的专家子网络,GPU 是承载这些专家的计算设备。专家(Expert):是 MoE 模型中的子网络模块(比如独立的前馈网络 FFN),每个专家负责处理特定类型的任务 / 数据(比如 “数学专家”“代码专家”)。GPU:是硬件设备,多个专家会被分配到不同的 GPU 上(通过 “专家并行” 策略),一个 GPU 可以承载多个专家,一个专家也可以部署在单个 GPU 上。举个例子:图中。
2026-01-05 08:58:57
802
原创 【计算机】寄存器是什么?
寄存器是计算机存储器的一个关键组件,它存储数据和指令以快速处理。它充当一个高效的临时存储区,信息可以在这里被快速访问和操作,以执行复杂任务。“寄存器是CPU里‘距离运算器最近、延迟最低、名字最短的存储’——它把‘存储’和‘控制’合二为一,让指令在纳秒级完成‘取-译-执-写回’的循环。
2025-12-13 14:40:26
884
原创 【】NVSHMEM 传输层ibgda,ibrc,libfabirc插件设计|软件插件设计
在// RMA和AMO操作函数指针// ... 其他操作。
2025-12-02 20:43:48
426
原创 【RDMA】一个例子说明Infiniband 的LID是什么
在同一个子网内的Inifiniband 网卡才能通信,ibstat 查看Base lid 就是网卡自己的LIDSM lid: 就是网卡所在的子网的ID (其实是该子网管理器的ID)。上面的信息输出表明当前节点接入两个子网:子网 261 mlx5_0,子网 189 mlx5_2~mlx5_3mlx5_0261属于的子网mlx5_10端口处于状态,未关联有效 SM189属于的子网。
2025-11-28 19:53:39
498
原创 【集群】slurm
Slurm(全称,即 “用于资源管理的简单 Linux 工具”)是一款开源、高度可扩展的集群作业调度与资源管理系统。Slurm作为集群工作负载管理器,Slurm具有三个关键功能。首先,它在一段时间内为用户分配对资源(计算节点)的独占和/或非独占访问权限,以便他们可以执行工作。其次,它为在分配的节点集上启动、执行和监控工作(通常是并行工作)提供了一个框架。最后,它通过管理待处理工作队列来仲裁资源的争用。
2025-11-25 19:54:20
1056
原创 【NCCL】NCCL 中的channel 是什么概念?
(编译后生成nccl.h)和公开 API 中不直接暴露(内部实现),但上层通过ncclComm_t(通信对象)间接引用 Channel;内部结构体定义在,核心字段包括:int id;// Channel 唯一标识// 关联的通信对象(包含 Group 信息)// 发送缓冲区// 接收缓冲区// 缓冲区大小// 传输类型(PCIe/NVLink/IB)// 对端 GPU 信息(设备号、地址等)// 同步原语(信号量、事件等,确保传输有序)
2025-11-12 21:04:56
857
原创 【NCCL】Merged Device(合并设备)和bond的区别
在现代高性能计算环境中,节点可能有多个网络接口卡(NIC)或多个设备用于网络通信。NCCL 支持将这些设备合并为一个逻辑连接,以提高带宽和性能。因此,通信的两端都需要知道对方有多少个设备,这样才能正确地建立连接和分配资源。。NCCL 中将多个设备合并为一个逻辑连接,这种合并被称为"Merged Device"(合并设备)。
2025-11-04 17:33:22
716
翻译 【NCCL】什么是PXN
NVIDIA在NCCL 2.12版本中引入PXN架构优化all2all通信性能。该架构创新性地结合NVLink与PCIe通信,使GPU可通过NVLink将数据写入中间GPU缓冲区,再经PCIe交换机直接传输至目标网卡,避免了传统CPU间协议的带宽限制。PXN通过消息聚合机制将最多8条消息合并发送,显著提升消息速率;同时实现了节点内GPU到目标节点的连接共享,减少连接数量。测试显示该方案有效降低了网络拥塞,使all2all操作性能提升显著。该技术还解决了单GPU-NIC拓扑下的ring算法限制问题,为模型并行
2025-11-03 18:14:37
277
原创 【RDMA】mlx5dev mlx5dv_devx 接口
API 是一个抽象接口,不依赖于任何底层硬件的具体实现(意思是 RDMA 网卡不仅有 mellanox(MLX)、还有 intel 等厂商,这些厂商都遵循 OFED 的 verbs API 接口定义,针对自家网卡实现了 API 规定的功能)。DEVX API 利用 KABI(内核 ABI)机制,允许用户空间直接访问 mlx5 设备驱动,其主要目标是使用户态驱动尽可能独立于内核,从而在无需或仅需极少内核改动的情况下,启用未来设备的新功能和新命令。—— 通过 DEVX 接口修改 Verbs CQ(完成队列)
2025-10-30 20:39:55
1169
原创 【NCCL】Ring Allreduce
AllReduce主要目的是在所有处理器上收集并汇总数据,使得每个处理器都能获得全局数据的归约结果。AllReduce就像一个“班级大合唱的收票统计”:假设一个班有4个小组,每个小组算出了自己应该交的班费(比如A组10元,B组20元,C组30元,D组40元)。AllReduce的目标就是让每个小组都知道全班总共要交多少钱(10+20+30+40=100元),而不仅仅是知道自己小组的数额。为什么这个很重要?在深度学习(比如训练大模型)中:每个处理器(GPU)= 上面的一个“小组”每个处理器的数据。
2025-10-09 20:31:30
1336
原创 【RDMA】GDR和GDA的区别(GPUDirect Async vs GPU Direct RDMA)
GDA 通常是指 NVIDIA 的 GPUDirect Async 技术,它与 GDR(GPU Direct RDMA)都属于 NVIDIA GPUDirect 技术家族的成员。GDA 让 GPU 真正实现了 “数据发送 + 通信控制” 全自主,带来两大关键优势:1. 延迟更低:砍掉 CPU 参与的控制流程,减少上下文切换、队列等待的耗时;2. CPU 彻底解放:CPU 不再被通信控制绑定,能专注跑其他计算任务,提升系统整体效率。
2025-08-10 00:34:42
2462
原创 【RDMA】Adapters PRM Mellanox Adapters Programmer’s Reference mellanox网卡编程手册0.52
Mellanox 网卡程序员参考手册 (PRM) 文档。
2025-07-25 23:55:07
816
原创 【CUDA】warp洗牌shuffle:_shfl_sync、__shfl_up_sync、__shfl_down_sync 和 __shfl_xor_sync函数
# 使用场景- 广播数据- 数据偏移- 交错访问+ 累加树形求和// 获取相邻线程的值。
2025-07-17 00:31:24
1526
翻译 【NVSHMEM】NVSHMEM 3.0新增特性和兼容性
NVSHMEM是NVIDIA Magnum IO的一部分,基于OpenSHMEM, NVSHMEM为跨越多个gpu内存的数据创建了一个全局地址空间,可以通过细粒度的gpu发起的操作,cpu发起的操作和CUDA流上的操作来访问。NVSHMEM 3.0在IBGDA中增加了对一种称为cpu辅助IBGDA的新模式的支持,它作为基于代理的网络和传统IBGDA之间的中间模式。它还允许NIC助手在运行时动态选择CPU或GPU。相反,NVSHMEM使用异步的、GPU发起的数据传输,消除了CPU和GPU之间的同步开销。
2025-06-21 00:16:13
876
原创 【NCCL】DBT算法(double binary tree,双二叉树)
万卡集群通信优化算法双二叉树:https://www.bilibili.com/video/BV1zSpnezEB83.1 NCCL源码二叉树构建算法:https://www.bilibili.com/video/BV1DErsYwEhc/"double binary tree" 在并行计算/NCCL语境中特指一种用于高效集合通信的树形拓扑结构,由两个并行的二叉树组成。从 ring 算法到 tree 算法,把时间复杂度从 n 提升到了 logn。
2025-05-09 22:15:14
1571
原创 【vscode】vscode链接关联github/gitlab
注意,这里的gitlab.com应该替换为你的GitLab实例的URL(如果你的GitLab是私有的或自托管的)。将pub内容复制,登录github/gitlab上,点击头像,选择preference,在右侧“user setting”选择“SSH Keys”,将pub内容填入。完成以上步骤后,你应该能够在VSCode中使用Git功能时,通过SSH密钥进行身份验证,而无需每次输入用户名和密码。在弹出的输入框中粘贴你在GitLab上复制的项目地址,然后按回车。在弹出的窗口至选择代码存放的位置。
2025-04-15 06:36:41
3395
原创 【GPU】CUDA、OpenCL、OpenMP、OpenACC等并行运算框架区别
是一个类似于OpenMP的编程接口,专门为加速器(如GPU)设计。它通过使用编译制导语句来简化并行计算的编程工作,让开发者能够更容易地将计算任务迁移到加速器上执行。OpenACC的目标是降低使用加速器进行高性能计算的技术门槛,使非专家也能有效地利用这些资源。版本更新很快,但仅限N卡。OpenCL跨平台,社区貌似不太活跃,更新不如CUDA。:适合需要快速将CPU代码移植到GPU上的并行计算任务。主要是针对CPU,最近开始支持GPU了,SIMT(线程网格)
2025-04-15 06:20:42
1875
原创 【大模型】通信元语和相关概念|NCCL梯度|Allreduce|Scatter|Broadcast|Gather
ReduceReduce(归约) 是一种聚合操作,与“拆分”相反,它的核心逻辑是将多个数据元素合并成一个结果。拆分是 Map 的职责,而非 Reduce。Reduce 的“归约”本质是通过迭代合并,逐步缩小数据规模,最终得到全局结果。以下是关键要点:1.定义与功能Reduce通过一个二元操作(如加法、取最大值等)逐步合并数据,最终输出一个单一值。例如:对执行 Reduce(求和),结果为10。2.与 Map 的关系在MapReduce模型中:Map。
2025-03-24 05:33:20
3443
2
翻译 【RDMA】NUMA对RDMA单边操作影响的性能评估
RDMA允许节点直接访问远程机器上的内存,而多处理器架构使用NUMA来提升内存访问性能。本文首次探讨了这些配置,并提供了关于NUMA对基于RDMA系统性能影响的定量研究结果。研究表明,对于超快网络而言,NUMA本地性的影响在启用RDMA的分布式系统的性能影响更大。总之,远程可访问内存的NUMA本地性差可能导致自动20%的性能下降。此外,根据内存本地性的不同,操作远程可访问内存的本地工作负载可能会导致高达300%的性能差距。我们使用两代RDMA卡、一个合成基准测试和Memcached对我们的发现进行了验证。
2025-03-20 12:32:57
713
原创 【工具】VS code AI 代码助手
GitHub Copilot是由GitHub、OpenAI和微软Azure团队联合推出的AI编程助手,能够为开发者提供智能代码建议和自动补全功能,适用于多种编程语言和IDE,是目前市场上最受欢迎的AI编程工具之一。协作功能:帮助开发者实时补全代码、生成函数和模块,极大提升开发效率。产品价格GitHub Copilot目前提供30天免费试用期,个人开发者订阅费用约为10美元/月,企业版订阅则根据使用人数和规模定价。优点:提供高质量的代码建议,代码补全功能极其强大。
2025-03-19 11:07:13
3495
原创 【GPU】什么是 NVLink?
什么是 NVLink?| NVIDIA 英伟达博客 https://blogs.nvidia.cn/blog/what-is-nvidia-nvlink/NVLink就是英伟达(NVIDIA)开发并推出的一种总线及其通信协议,主要用于GPU之间或GPU与CPU、网络接口卡(NIC)等其他外设的连接,提供更高效的传输性能(高带宽,低延迟)。
2025-03-09 16:25:58
3564
1
原创 【GPU】什么是NCCL
NCCL (NVIDIA Collective Communications Library) 是 NVIDIA 推出的一个用于 GPU 之间高性能通信的库。深度学习模型规模巨大,单个 GPU 无法满足训练需求,需要将模型或数据分割到多个 GPU 上进行并行训练,NCCL 就是为了解决这个场景而生的。NCCL确实提供了Simple、LL和LL128这三种通信协议,以满足不同应用场景下的性能需求。减少同步带来的延迟将数据排列组合成4B Data+4B Flag的形式进行传输,对端会对Flag值进行校验。
2025-03-09 15:48:48
4424
9
原创 【CUDA】什么是CUDA?什么是CUDA编程?
CUDA(Compute Unified Device Architecture,统一计算设备架构),是显卡厂商NVIDIA推出的一种并行计算平台和编程模型。概念中的重点是“统一”二字:“统一”的含义是指该架构将不同类型的计算设备(主要是CPU和GPU)整合到一个统一的编程模型中,开发者可以使用相同的编程语言和工具集,在CPU和GPU上执行计算任务,而无为 CPU 和 GPU 分别编写完全不同的代码(既同时开发 CPU 和 GPU 上的共同程序),这种统一性简化了并行计算的开发流程传统方式。
2025-03-09 05:21:29
5364
原创 【Linux】软件工程师的屠龙技—eBPF(编辑中)
eBPF(extended Berkeley Packet Filter),即“增强版伯克利数据包过滤器”或“伯克利数据包过滤器扩展版”,是一种在Linux内核中运行沙盒程序的技术。
2025-03-07 01:17:25
1161
原创 【C/C++】内存屏障概念、原理和用途
内存屏障通过限制指令重排序和确保内存可见性,保证多线程环境下的操作顺序和一致性,广泛应用于多线程编程、操作系统内核和硬件设备驱动中。是 CPU 指令内存屏障,由编译器生成特定的硬件指令。C++11 及更高版本提供了标准化的内存屏障支持,主要通过和实现。volatile不能替代内存屏障,仅用于防止编译器优化。
2025-02-17 20:06:29
1820
原创 【RDMA】 ZTR(Zero Touch RoCE)技术(无需配置PFC和ECN)
Zero Touch RoCE(ZTR)技术是NVIDIA开发的一种创新技术,它允许在不需要特殊交换机配置的情况下,部署RDMA(RoCE,RDMA over Converged Ethernet)。ZTR技术简化了RoCE网络的部署和管理,提高了数据中心的效率和灵活性。“Zero Touch”的含义可以解释为“零接触”或“无需人工干预”。
2025-01-13 19:15:12
1637
原创 【网络】CXL (Compute Express Link)高速互联技术
通过 CXL,可以在 CPU 和 DPU 之间创建单个共享内存域,使用 CXL 连接的设备内存(如 CXL.mem)作为 CPU+DPU 的共享内存,从而避免显式的数据移动。和数量庞大的基于PCIe运算加速器,每个上面都有很大的内存。传统的基于 PCIe 的 CPU+DPU 协同处理模式存在性能瓶颈,因为需要在 CPU 和 DPU 内存域之间进行多次数据移动,导致性能大幅下降。一个高性能存储系统中,CPU 需要处理大量的存储请求,而 DPU 负责执行具体的存储操作(如加密、压缩、解密、解压缩等)。
2025-01-02 01:54:18
2266
原创 【设计模式】命令模式
命令模式是一种行为型设计模式。它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。例如你正在开发一款新的文字编辑器, 包含多个按钮的工具栏, 每个按钮对应编辑器的不同操作。你创建了一个非常简洁的按钮类, 可用于生成工具栏上的按钮, 还可用于生成各种对话框的通用按钮。
2024-12-27 02:05:20
747
原创 【设计模式】装饰器模式(Decorator Pattern)
装饰器模式(Decorator Pattern)是一种结构型设计模式。装饰器模式通过创建一个装饰类,包装原始对象,并在保持原始对象接口不变的情况下,扩展其功能。
2024-12-26 16:49:30
582
基于可靠连接和高效资源共享的可扩展 RDMA RPC
2022-02-12
Argobots: A Lightweight Threading Framework for Massive Fine-Gra
2023-09-30
mellanox RDMA MLNX-OFED Documentation Rev 5.7-1.0.2.0-11-15-2022
2022-11-15
A Review of Lightweight Thread Approaches for High Performance
2022-09-18
DISTRIBUTED ASYNCHRONOUS OBJECT STORAGE (DAOS)
2022-09-10
大文件切割FileSplitter+CoolFormat3.4+Sublime Text 3
2022-08-17
DAOS_A_Scale-Out_High_Performance_Storage_Stack_fo.pdf
2022-08-15
连接服务器失败(错误原因:Connection refused) error 111 抓包结果
2022-01-25
mellanox OFED 驱动使用手册(含verbs、rdma-cm接口使用)(原版+AI翻译)-v23-10-2-1-3-1-lts.1 LTS
2025-12-20
mellanox OFED 驱动使用手册(含verbs、rdma-cm接口使用指导)v24.10-3.2.5.0 LTS
2025-12-20
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-4.1.8
2025-04-15
Internal-Mellanox-Adapters-PRM-rev-0-53+Mellanox Adapters Programmer’s Reference0.40网卡编程手册
2025-07-25
咸鱼快捷指令-3.0.0快捷指令工具
2024-06-16
cxtool-3.2.2快捷指令工具-MobaXterm、WindTerm、xshell伴侣
2024-07-03
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-3.2.5
2024-07-18
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-3.8.0
2024-08-14
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-4.0.0
2024-08-28
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-4.1.5
2024-09-07
咸鱼快捷指令-1.5.0
2024-06-06
the-geek-in-the-corner-master.zip
2025-02-10
咸鱼快捷指令-1.2.0快捷指令工具
2024-06-05
自定义快捷指令工具 咸鱼快捷指令-2.0.0
2024-06-10
CP丢包对带宽性能的影响分析(Analysing TCP performance when link experiencing
2023-11-26
shell 脚本怎么删除 匹配字符之间的行?
2023-03-01
我写的IP转interface的shell脚本错哪里了呢?
2022-12-10
ifconfig 除了列出网口信息还有一堆不知道是什么?
2022-10-27
为什么程序能用getenv读到的环境变量我printenv打印不出来?
2022-09-23
find 后调用 -exec 执行多条语句的方法是?
2022-09-09
如何设置scons的环境变量?
2022-08-25
Gcc编译代码报错/usr/bin/ld: cannot find abt
2022-08-23
为什么popen没有执行里面的shell脚本?
2022-05-19
linux 的buff/cache有必要手动清除吗?
2021-12-06
linux怎么查看线程的父进程?
2021-10-26
C++11启动线程时怎么给线程分配名字?
2021-09-22
C++11的allocator::construct如何构造多参数对象?
2021-09-25
linux 的core file的时间戳怎么样才能变成日期格式
2018-02-26
shell怎么调用一个子脚本之后 让自己可以退出不必等子脚本
2017-05-20
如何实现子Div的大小随着父Div的大小动态的改变而改变
2017-09-24
Echart和WPF chart 比有什么优势吗?为什么Echart的JS库如此热门?
2017-06-22
如何实现点击页面上的图片改变服务器上某个文件的JSON数据?
2017-08-07
servlet应该放在哪个文件夹?servlet-class的根目录是哪里?
2017-10-19
关于protobuff,json等协议数据跨语言传输的一些问题
2017-11-09
pentaho,Kylin, Mondrian, Saiku之间到底是什么样的关系?
2017-07-16
shell函数内如何改变参数的值?类似于C语言一样参数指针传递
2017-05-21
linux 的core file的时间戳怎么样才能变成日期格式
2016-09-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅