高司机的专栏

一个爱写游戏服务器BUG的好同志

  • 博客(568)
  • 资源 (92)
  • 收藏
  • 关注

原创 阿里云的工程师又闯祸了,github上紧急修复

最近不少用户使用阿里云提供的测试用例出现了被删除了用户目录下的所有文件,项目地址是: https://github.com/aliyun/aliyun-clialiyun-cli/cli/completion_installer_test.goLines 87 to 99 in550ccb6path := filepath.Join(u.HomeDir, ".bash...

2022-12-06 16:57:53 2885

原创 如何阅读别人的代码

会读好源码,才能写出好代码而且除了经常写代码,还要保持习惯看看别人是怎么写的,这里我只引出一个话题就是如何阅读别人的代码。 一个工整的代码就好比欣赏一个漂亮的美女一样让人赏心悦目,百看不厌,一个乱糟糟的代码就不忍直视,而且还要吐槽他,对于阅码无数的老司机而言,保持良好的编码和阅读习惯很重要,读别人的代码并不大费力,对于新手而言,我觉得这篇文章对你很有帮助。保持阅读他人代码的习...

2022-12-02 11:44:41 245

原创 如何在C++ 网络库中支持websocket

我们在一些中重度游戏中经常使用TCP,可靠UDP(参考之前的剖析KCP以及KCP在游戏中是如何使用的)来进行网络传输,不过随着一些小游戏和超轻休闲类游戏的逐步崛起,越来越多的开发者逐渐使用websocket来进行网络传输数据,像node.js/ ts , go, java等语言都有造好的轮子,直接引用现成的库并能很方便的调用,但是如果你使用的是C++,你会发现,websocket的库...

2022-11-30 11:23:27 458

原创 暴雪游戏走后,谁来接盘?对网易有何影响?

11月16日,暴雪娱乐公司宣布,由于与网易的现行许可协议将于2023年1月23日到期,将暂停在中国大陆的大部分暴雪游戏服务。 这些暴雪游戏包括《魔兽世界》《炉石传说》《守望先锋》《星际争霸》《魔兽争霸 III:重制版》《暗黑破坏神 III》《风暴英雄》。此外,《暗黑破坏神:不朽》的共同开发和发行则涉及两家公司的单独协议。 暴雪娱乐总裁Mike Ybarra...

2022-11-18 11:45:00 101

原创 剖析KCP以及KCP在游戏中是如何使用的

亲爱的各位读者你们好,由于前段时间忙于部分项目的重构和优化,未能及时更新文章,不少读者催更,哈哈,我还是很开心能抽出时间给大家再来分享下kcp的相关技术内幕,以及之前完善自己的网络库增加了KCP的客户端服务器收发支持(结尾会分享封装的客户端服务器C++源码)。KCP概述对于游戏开发,尤其是MOBA游戏,或者全球唯一服架构类型的游戏,对于网络的要求比一般游戏要高。...

2022-11-07 18:06:10 758

原创 使用KCP 加速游戏消息,让全球玩家流畅联网

kcp协议是传输层的一个具有可靠性的传输层ARQ协议。它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题。kcp力求在保证可靠性的情况下提高传输速度。kcp协议的关注点主要在控制数据的可靠性和提高传输速度上面,因此kcp没有规定下层传输协议,一般用udp作为下层传输协议,kcp层协议的数据包在udp数据报文的基础上增加控制头。当用户数据很大,大于一个udp包能承担的范围时(大于mss),kcp会将用户数据分片存储在多个kcp包中。因此每个kcp包称为一个分片。

2022-10-10 12:06:30 203

原创 linux和windows环境配置安装zookpeer的dashboard可视化

有时候我们需要知道一个*.so文件或者可执行文件是debug版本的还是release版本的,这时我们有哪些方法呢? 1.readelf -S filename |grep debug导出汇编objdump -f test显示test的文件头信息objdump -d test反汇编test中的需要执行指令的那些sectionobjdump -D test与-d类似,但反汇编test中的所有sectionobjdump -h test显示test的Section H..

2022-10-10 10:23:02 559

原创 浏览器http提交protobuf二进制数据正常,微信小程序失败解决方案

最近开发微信小游戏,客户端和服务器端使用http短连接方式post数据,数据的格式使用protobuf,这样通过网络传输的数据是二进制,对于抓包的外挂使用者来说也不容易篡改数据内容。等到最后收尾的时候,开始导入微信开发者工具里,进行测试,结果出问题了,二进制数据 本应该是上面截图红色圈出来的formdata内容,但是微信开发者工具里查看到的是uint8array结构,验证发现实际上发送的字节长度是202,但是到了网络传输的时候发送了203字节,而且服务器端也收到了203字节。

2022-09-01 19:23:04 796

原创 游戏服务器缓存系统如何设计

前言不管是在业界开源领域,还是内部分享中,很少会有专门针对游戏业务特征进行专门设计的组件、类库或者框架。我们从游戏的客户端方面来看,一款专业的游戏客户端引擎,已经是游戏开发的标配,flash,Cocos,Unity,Unreal等,但是服务器端,我们几乎找不到同样重量级的产品(当然有针对海外开发者快捷开发的服务器平台,比如GAE,GameSparks,PlayFab等能满.........

2022-06-29 18:00:47 687 8

原创 深入剖析阻塞式socket的timeout

网络编程中超时时间是一个重要但又容易被忽略的问题,对其的设置需要仔细斟酌。 本文讨论的是socket设置为阻塞模式,如果socket处于阻塞模式运行时,就需要考虑处理socket操作超时的问题。 所谓阻塞模式,是指其完成指定的操作之前阻塞当前的进程或线程,直到操作有结果返回. 在我们直接调用socket操作函数时,如果不进行特意声明的话,它们都是工作在阻塞模式的, 如 connect, send, recv等.简单分类的话,可以将超时处理分成

2022-06-28 16:43:13 1494

原创 你担心大家会滥用的全局变量,大家(包括你自己)一定会滥用

前言不要使用全局变量的道理大家都懂,基本上在大家学习编程过程中很早就会被教育到,但是有时候我们也会禁不住诱惑用到一些似非实是的全局变量,只不过这些全局变量会穿上马甲,让你不会一下看穿它的巨大危害,滥用全局变量会引申带来其它更为严重的结构性系统问题。你担心大家会滥用的代码,大家(包括你自己)一定会滥用。 ...

2022-03-24 19:23:00 331 1

原创 【无标题】

每当看到代码100行的时候就出现一个全局变量,我总要戚眉变脸而后拍桌怒喝。我不否认全局变量的重要性,但我认为要十分谨慎地使用它,滥用全局变量会引申带来其它更为严重的结构性系统问题。1. 滥用全局变量会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。2. 会导致软件分层的不合理,全局变量相当于一条快捷通道,这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。说是度日如年举步维艰也不为过。3. 由于软件的分层

2022-03-24 19:04:48 1128

原创 你的代码是否按照高内聚、低耦合的原则来设计的?

我们一直强调软件开发中要按照高内聚、低耦合的设计原则来做代码结构设计。c语言和c++不同,c语言面向过程、c++面向对象。 真正的项目中,要对业务升级,原来的业...

2022-02-22 21:22:00 758

原创 Nginx 配置TCP和UDP负载均衡

前言 Nginx除了以前常用的HTTP负载均衡外,Nginx增加基于TCP协议实现的负载均衡方法。 HTTP负载均衡,也就是我们通常所有“七层负载均衡”,工作在第七...

2022-02-15 16:16:08 638

原创 使用nginx分片功能提升缓存效率,支持可拖拽式播放视频

Nginx的slice模块可以将一个请求分解成多个子请求,每个子请求返回响应内容的一个片段,让大文件的缓存更有效率。HTTP Range请求HTTP客户端下载文件时,如果发生了网络中断,必...

2021-12-28 19:31:14 763

原创 如何使用弱网环境来验证游戏中的一些延迟问题

关于弱网在当今移动互联网盛行的时代,网络的形态除了有线连接,还2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。...

2021-10-26 18:02:00 1841

原创 大型游戏后台实践浅谈

国家新闻出版署8月30日下发切实防止未成年人沉迷网络游戏的通知,要求从今天(9月1日)起,所有网络游戏企业仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供...

2021-09-03 00:00:00 380

转载 一个通用游戏后台的设计模式实践总结

搞业务开发的时候,发现有一些代码的开发会让人感觉非常简便舒服,有一些代码的开发却有时候会让人感觉心智负担比较大。逐步总结的过程中,发现让开发人员写起来感觉舒服的代码,大概率是因为当前模块与...

2021-09-02 00:00:00 332

转载 游戏中的常见概率设计分析

前言游戏中的概率真的是让人又爱又恨,很多玩家因为自己的屌丝气质(白嫖)而弃坑玩不下去的,比如人尽皆知的某阴阳师,除了氪金,还肝,而且如果你的脸真的非常的黑,那也是打不过那些...

2021-09-01 03:48:00 3521

原创 游戏服务器架构:网络服务器端程序线程划分

服务器端高性能网络编程的核心在于架构,而架构的核心在于进程-线程模型的选择。   作为服务器需要做网络数据的收发,需要做数据库拉取和保存,需要做日志存储,需要做常规的游戏逻...

2021-08-28 00:00:00 278

转载 Unity客户端开发优化要点

脚本方面1、不需要高频率调用的函数,使用InvokeRepeating(或Time.frameCount%n)代替Update2、SetParent、Instantiate、Find、IO...

2021-08-27 09:40:14 281

原创 游戏热更新:游戏客户端热更新那点事

前言热更新的内容可以是美术资源,可以是代码,但相对来说,美术资源的更新不会受到约束,代码实际上是重灾区。本文介绍的主要是客户端代码热更新。热更新对于开发者来说是一件麻烦事,...

2021-08-24 12:39:00 704

原创 ffmpeg优化mp4以及hls参数设置

ffmpeg是开源的音频视频编解码工具然而默认的参数对MP4不友好,需要自己设置这里记录一下简单的优化参数优化MP4使moov atom位于文件开头moov atom是mp4的索引信息.浏览器获得moov atom后,可以随机搜索文件位置,让拖动自由ffmpeg默认是将moov atom放在文件末尾,我们需要前置moov atom-movflags faststart关键参数ffmpeg -i input.mp4 -movflags faststart -acodec copy -v

2021-08-20 09:21:18 1816

原创 如何使用redis来实现常见的游戏排行榜

前言前面几篇文章给大家聊了下目前的常用的排行榜做法。关于游戏排行榜设计开发的一些总结游戏排行榜-跳表实现原理分析那么这篇文章将给大家带来如何使用redis来实现常见的游戏排行榜功能。为什么...

2021-08-20 09:07:04 300

原创 游戏排行榜-跳表实现原理分析

前言做游戏的一般都有游戏排行榜的需求,要查一下某个uid的积分排名第几,这里我给大家推荐之前我们使用的一种排序算法,跳表skiplist。跳表是一个随机化的数据结构。它允许快速查询一个有序...

2021-08-11 18:00:00 968

原创 关于游戏排行榜设计开发的一些总结

前言不管是手游还是端游,貌似都离不开排行榜,没有排行榜的游戏是没有灵魂的游戏,因为排行榜可以让用户分泌多巴胺,这样日活才会上来,有了用户就有钱赚。产品想方设法的让用户留存,设计各种排行榜:...

2021-08-09 18:28:00 792 3

原创 设计模式 ---适配器模式

在一些业务场景里,你是否遇到过如下类似的需求:1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能...

2021-07-12 18:30:00 186

原创 手把手教你使用sql注入来绕过游戏后台检测

SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将所有信息都存储在数据库中。其解决方案之一,有许多公司实施Web应用程序防火墙和入侵检测/预防系统来试图保护自己。但不幸的是,这些对策往...

2021-07-09 06:56:00 296

原创 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入

2010年秋季,联合国官方网站遭受SQL注入攻击。2014年一个叫“TeamDigi7al”的黑客组织攻击了美国海军的一个名为“Smart Web Move”的web应用。此次事件直接造...

2021-07-07 18:30:00 276

原创 为什么我们仍然坚持用C++做游戏服务器

本篇文章纯属文字,不需要配图。首先以我个人观点来说,C ++对于我的吸引力不仅仅是它的技术优点。c++是个庞大而奇怪的语言,很多新领域会选择这个语言是因为有...

2021-07-05 18:30:00 802 1

原创 闲话目前游戏服务器的开发

我是从12年开始进入页游行业,接触到的第一个游戏项目就是淘米网的《摩尔庄园》,公司那个时候也刚在美纽交所上市,被Benson,魏震和Rock腾讯三巨头的感染下,做着喜欢的游戏...

2021-07-01 19:00:00 3406

原创 内存优化-使用tcmalloc分析解决内存泄漏和内存暴涨问题

其实我一直很想写关于tcmalloc的内存泄漏检测的文章,只是一直记不起来该如何下笔,有时项目太忙,在整理这方便的思考过少,另外遇到的问题也不是很多,直到最近用tcmalloc帮A项目排查...

2021-06-28 18:40:00 687

原创 内存优化-如何使用tcmalloc来提升内存性能?提升的结果太不可思议

无论是在游戏开发,或者其他长期运行的服务开发中,对内存的使用一直是架构师或者主程序在最初就要关注的point,如果内存使用不当,频繁申请释放内存造成系统负担过大,性能降低,到最后产生大量内...

2021-06-25 18:30:00 283

原创 一文搞懂 什么是CPU上下文?为什么要切换?如何减少切换?

自从上篇文章聊一下CPU占用高的解决方案更新后,最近收到了一些热心观众的后台留言,问到的一些问题比较集中的是关于CPU切换.实际用C/C++,go开发,你会特别注意内存和CPU的使用情况,...

2021-06-21 18:30:00 211

原创 聊一下CPU占用高的解决方案

前言: 在软件开发和性能测试中,CPU占用率是服务器开发一个很重要的指标,到底有哪些因素会导致CPU占 用率上升呢?又有哪些手段可以降低CPU的占用率呢? 如果你看了这...

2021-06-10 13:27:00 464

原创 游戏服务器架构-设计模式之观察者模式和发布订阅模式真的一样吗?

前面我给大家分享了观察者模式和发布订阅模式,有人私信给我说这俩不是一样嘛,大体没什么区别,我猜测大多数认为这两者是一样的可以继续阅读这两篇文章,如果还不能解答你的问题,我相信这篇文章对比两...

2021-06-07 18:30:00 134

原创 游戏服务器架构-设计模式之发布订阅模式

发布订阅模式场景熟悉消息中间件的同学应该对发布/订阅模式(Publish Subscribe Pattern)并不陌生。即使你不了解消息中间件,那么在平时生活中发布/订阅模式也是非常常见的...

2021-06-04 20:00:00 216 1

原创 kubelet内存异常分析

背景:kubelet被重启后, 内存再次升高, 在游戏启动后,没有进入大量玩家的情况下,2天时间占用接近10G,并且持续在增长, CPU偶尔负载高。AWS给出的解释是containerd ...

2021-05-17 06:46:46 411

原创 mysql的cpu高定位

导致数据库CPU很高的原因有很多种,一般和慢SQL也有关(因为每条SQL要么占CPU高,要么占IO高,大体是这样)。(1)、如果服务器有多个mysql实例,需要通过top命令看看是哪个my...

2021-05-13 18:30:00 210

原创 一文彻底搞懂静态库和动态库,显示链接和隐式链接

定义:运行时库 静态库 动态库运行时库:Unix中一个典型的运行时库例子就是libc,它包含标准的C函数,如,print(),exit()等等,用户能创建他们自己的运行库(在Windows...

2021-04-21 08:20:00 1169

caffe网络模型各层详解(中文版)

caffe网络模型各层详解(中文版),pdf高清版本

2018-10-08

harris角点检测和特征匹配

Harris 角点检测 特征匹配 C++基于Harris的特征检测与匹配

2018-09-11

gamesparks 多人实时服务部分

此文档是自己翻译的gamesparks的多人匹配机制和配置的说明手册

2018-03-23

gamesparks使用教程视频

这个是录制的gamesparks的环境配置以及使用,包含了多人匹配,成就,排行榜,数据库等

2018-03-23

HTML5 驴子跳一跳游戏源码

HTML5 PC 驴子跳游戏源码,制作很漂亮的一款HTML5+CSS3网页游戏,编辑暂时没有玩过,还配有音乐,很酷很刺激,想研究HTML5技术的朋友,您可不要错过这款网页游戏哦,虽然是游戏,但却考验了作者很综合的HTML5编程水平

2018-01-17

FTP上传下载 C#源代码

FTP上传下载 C#源代码,建议大家下载看一下再评论FTP上传下载 C#源代码,建议大家下载看一下再评论

2018-01-17

xcode支持64位的lib支持

让cocos2dx支持并通过arm64 编译

2015-08-14

jmeter安装与使用.doc

jmeter安装与使用.doc jmeter安装与使用.doc jmeter安装与使用.doc

2011-08-17

Linux网络编程 Linux网络编程

Linux网络编程 Linux网络编程 Linux网络编程 Linux网络编程

2011-08-17

Python学习手册

Python学习手册 Python学习手册 Python学习手册

2011-08-17

腾讯2011求职大礼包

腾讯2011求职大礼包腾讯2011求职大礼包腾讯2011求职大礼包腾讯2011求职大礼包腾讯2011求职大礼包

2011-04-24

编译原理实验,一个此法分析程序

目的:按照实验要求设计一个此法分析程序。 在大多数编译器中此法分析器都作为一个独立的子程序,它可以使整个编 程序更清晰,更简洁,更有条理。我们可以将词法分析器设计成一个独立的子程序,当语法分析器需要一个单词时就调用这个此法分析程序,产生一个单词符号,并将识别出的单词交个语法分析器。

2011-04-21

C++底层核心本质总结笔记

底层核心本质总结,拨开迷雾,看清C++本质。深层高质量剖析C++笔记:全方位了解C++的底层即实现机制,各种重点和核心技术。是本人多年的心得体会。终于让他发行了。希望大家支持。

2011-04-15

拓扑排序 数据结构 c和 C++源程序代码

拓扑排序 数据结构 c和 C++源程序代码 拓扑排序 数据结构 c和 C++源程序代码

2010-12-27

操作系统 银行家算法 毕业论文 文档 实验报告.doc

操作系统 银行家算法 毕业论文 文档 实验报告.doc 操作系统 银行家算法 毕业论文 文档 实验报告.doc

2010-12-24

银行家算法实验报告-课程设计 毕业论文 文档.doc

银行家算法实验报告-课程设计 毕业论文 文档.doc 银行家算法实验报告-课程设计 毕业论文 文档.doc 银行家算法实验报告-课程设计 毕业论文 文档.doc

2010-12-24

毕业论文形式 银行家算法课程设计实验报告.doc

毕业论文形式 银行家算法课程设计实验报告.doc 毕业论文形式 银行家算法课程设计实验报告.doc

2010-12-23

飞鸽传书源码(C++)VC MFC代码.rar

飞鸽传书源码(C++)VC MFC代码.rar

2010-12-20

D-操作系统课程设计报告——银行家算法

D-操作系统课程设计报告——银行家算法.pdfD-操作系统课程设计报告——银行家算法.pdfD-操作系统课程设计报告——银行家算法.pdf

2010-12-20

软件工程试题及答案.doc

软件工程试题及答案.doc软件工程试题及答案.doc软件工程试题及答案.doc软件工程试题及答案.doc

2010-12-11

zookeeper服务器依赖配置,包含了zookeeper的bin包,和相关依赖maven3.8.6,ant1.10.12

zookeeper服务器依赖配置,包含了zookeeper的bin包,和相关依赖maven3.8.6,ant1.10.12,解压后,配置环境变量,点击apachezookeeper-3.8.0-bin里的相关执行文件即可运行

2022-10-10

clumsy-0.2-win64.zip

clumsy-0.2windows版本,可以设置网络丢包,延迟发送,乱序发送等网络情景

2021-10-27

48000采样率的音频opus格式的测试音频

48000采样率的音频opus格式的测试音频

2021-10-18

awk学习手册.docx

awk从入门到精通, awk常用命令,参数,以及用法说明,相信通过本文档,你可以快速掌握awk工具

2021-08-09

nasm-2.13.03.tar.xz

ffmpeg编译支持asm汇编,依赖库nasm-2.13.03下载

2021-08-09

win-kcachegrind.zip

最新版的kcachegrind windows版本,基本上很难找到的资源,可以在windows下打开,查看由valgrind工具通过callgrind检测到的性能分析结果

2021-07-01

C++ 线程池源码+demo _android源码分析

分享一个游戏项目中的封装C++线程池源码 分别用C98,C11语法实现了下,包含了测试用例

2021-01-19

分享两个自动抢茅台的源码

分享一组抢茅台的源码 两种方式,第一种方式已经被京东屏蔽了,不过可以研究下, 第二种方式目前还没有被封

2021-01-18

2021年毕业设计-java学籍后台管理系统

2021年毕业设计-

2021-01-09

2020年毕业设计-jsp校园宿舍管理系统

账号:系统管理员:账号:one 密码:123 楼宇管理员:账号:Teacher1 密码:123 学生:账号:00 密 码:mrsoft 系统介绍 图书馆管理系统主要的目的是实现图书馆的信息化管理。图书馆的主要业务就是新书的借阅和归还,因此系统最核心的功能便是实现图书的借阅和归还。此外,还需要提供图书的信息查询、读者图书借阅情况的查询等功能。项目实施后,能够提高图书馆的图书借阅、归还流程,提高工作效率。整个项目需要在两个月的时间内交付用户使用。 操作注意事项 (1)本系统的用户名为:mr,密码为:mrsoft (2)读者类型不同,可借图书的本数也

2021-01-09

20java在线考试系统SSH

毕业设计-java在线考试系统源代码,包含数据库文件

2021-01-09

88个创业全套必备资料合集_关于创业

01 创业筹备期(公司注册前注意事项) 02 成立公司(从公司起名到注册,如何才能顺风顺水)、 03 商业计划 (如何通过技巧工具,为企业融资布局) 04 品牌打造(重视品牌保护的企业才会走的更远) 05 合同协议大全(企业必备合同资源,模板范本直接套用) 06 全国企业补铁政策大全(掌握全国政策,创业路上事半功倍)

2021-01-09

基于node.js的高可扩展游戏服务器框架 设计与实现

网易同事 周永昶 基于node.js的高可扩展游戏服务器框架 设计与实现 Node.js与游戏服务器; 游戏服务器框架的可扩展性和设计,以及pomelo的框架

2020-11-26

pomelo框架下的聊天室开发

基于pomelo框架下的聊天室开发 基于pomelo框架下的聊天室开发 基于pomelo框架下的聊天室开发

2020-11-24

GAE框架下使用Timer_框架模块

GoogleAppEngine(GAE)的定时器java源代码。 GoogleAppEngine(GAE)的定时器java源代码。

2020-11-20

UDP打洞客户端和服务器打包.

资源包含客户端和服务器C++源代码和工程文件,服务器和客户端通信使用UDP的NAT穿透原理,服务端采用iocp完成端口和多线程,客户端请求分发交给子线程,在子线程中完成业务逻辑,适用于UDP通信的服务器框架使用。

2020-11-20

halcon c++ 接口参考手册

halcon c++ 接口参考手册最新修订版,halcon c++ 接口参考手册最新修订版V8.0, halcon c++ 接口参考手册最新修订版V8.0 包含所有的API文档,接口和参数说明

2020-11-20

最新2020年10月的geoip库下载

geoip库包含GeoIP.dat GeoIPCity.dat GeoLiteCity.dat GeoLiteCountry .dat GeoLiteASNum.dat GeoIPASNum.dat 以及对应的ipv6库

2020-11-20

visionPro中文版资料(pdf+ppt样例)

visionPro中文版资料(pdf+ppt样例)包含了VisionPro最新最全中文帮助文档.pdf,以及常用工具的方法,每个工具或者模块都拆分成对应的ppt来讲解,只需要5分 ,我也要生存,请谅解

2018-11-28

MongoDB权威指南第二版

MongoDB权威指南第二版 高清扫描版本

2018-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除