自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Clement

人生状态就像一棵树,每走一步都在做选择。

  • 博客(177)
  • 资源 (10)
  • 收藏
  • 关注

原创 正在迁移文章

以前写的文章比较分散,不同的平台都有,博客内容主要用于日常学习记录,内容比较随意,文笔水平有限,错漏在所难免,如有问题,还需谅解,欢迎大家关注!

2020-03-18 21:05:52 133

原创 使用keepalived 与 HAProxy 给两台服务器设置容灾故障转移的配置文档

假设我们有两台服务器,其IP地址分别为192.168.1.10和192.168.1.11,我们希望使用虚拟IP地址192.168.1.100来代表这两台服务器,并通过HAProxy将客户端的请求转发到这两台服务器之一。如果其中一台服务器宕机,keepalived将自动将虚拟IP地址切换到另一台服务器上。这意味着您可以自由地使用、修改和分发keepalived,甚至可以将其用于商业用途,而无需支付任何费用。以下是一个使用keepalived和HAProxy为两台服务器设置容灾故障转移的配置文档示例。

2023-04-12 23:30:27 386 1

原创 Gitbook安装

npm install gitbook-cli -g

2022-06-11 15:35:35 385

原创 npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead

2022-06-11 13:35:20 907

转载 爱奇艺 TensorFlow Serving 内存泄漏优化实践

文章目录一、背景介绍二、模型特征 Raw Serving Tensor输入三、服务突增高并发请求四、总结五、参考文献TensorFlow Serving由于其便捷稳定的特点在CTR(Click-through Rate,点击率)预估业务场景被广泛的使用,但是其运行时会出现内存不断增长的问题,也不断有相关issue被提交到Github社区,且目前都是Open状态。本文分享了爱奇艺深度学习平台在实践中发现的两个TensorFlow Serving内存泄漏问题,并修复和提交了 PR 到社区,这里将详细介绍问题

2021-10-22 12:51:36 374

原创 关于Glog中宏定义的一点引申

下文均在Windows环境下:编译Glog在Github上下载Glog源码,并解压到指定目录,打开Cmake工具:指定source code目录和build目录;点击Configure,会有提示选择VS的版本,以及生成的位数win32 & x64,根据需要选择正确条目。点击Finish,开始Configure;Generate之前,若需要生成动态库dll,需要选择BUILD_SHARED_LIBS;若生成静态库则不需要选择直接下一步即可;开始Generate,在build目录中生成大

2021-09-27 21:18:08 263

原创 VS2019 上的 OpenCV 4.5.3 找不到 *.dll #20416

系统信息(版本)OpenCV => 4.5.3操作系统/平台 => Windows 64 位编译器 => Visual Studio 2019详细说明在 VS2019 环境中创建 OpenCV 后,我在 VS2019 上编写了一个简单的 OpenCV 演示,它可以构建和运行,但终端信息加载 *dll 失败。像这样的错误:[ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\highgui

2021-09-27 14:59:32 1633 2

原创 VS2019编译GDAL2.2.4

文章目录下载修改配置参数编译测试参考下载https://gdal.org/download.html#windowshttps://download.osgeo.org/gdal/2.4.4/gdal-2.4.4.tar.gz修改配置参数1.将下载的压缩包解压到C盘(C:\ )(解压到任意盘都可以,但保证你能知道路径);2.在解压后的文件夹中找到nmake.opt文件,修改几个配置参数;3.第57行,GDAL_HOME = "C:\warmerda\bld"这个路径是用来存储编译后的头文件、

2021-08-23 14:01:29 1325 3

原创 Boost Access to a shared folder on other computer include boost1.7 install

文章目录下载Linux 编译Windows 编译vs 2019 项目配置测试参考下载https://www.boost.org/users/history/version_1_70_0.htmlLinux 编译最快捷的方法直接执行sudo apt-get install libboost-dev其它安装方式,参考 Ubuntu 16.04系统中GCC 9.1编译器安装方法及C++17标准测试示例Windows 编译visual studio 2019 编译 boost1.70.0 静态库3

2021-08-22 17:25:49 145

转载 VS2019/VC++单文件编译配置

由于VS不支持C/C++单文件编译,只是学习或测试用的单个C/C++文件也要建个项目,实在是麻烦,所以一般都是选择系统开始菜单VS自带的开发人员命令提示符,手动输入编译命令,这样就可以单文件编译了,但是也还是麻烦。每次需要先打开开发人员命令提示符,然后根据不同的文件路径名输入不同的编译命令,忍了一段时间后,今天终于发现一个比较省心的办法了。先了解一下VS的命令行编译选项:VS 2019的开发人员命令提示符(使用32位x86本机工具来生成32位x86本机代码的环境)目标:%comspec% /k "C

2021-08-22 01:39:54 2359 1

原创 C++11多线程快速入门学习笔记

文章目录1 thread 对象生命周期和线程等待和分离2 局函数作为线程入口分析参数传递内存操作3 线程函数传递指针和引用1 thread 对象生命周期和线程等待和分离#include <thread>#include <iostream>//Linux -lpthreadusing namespace std;bool is_exit = false;void ThreadMain(){ cout << "begin sub thread mai

2021-08-21 18:31:57 234

转载 go 通过 gRPC 发送文件

文章目录1 一条服务和一条消息2 场景3 结果4 与普通 HTTP2 比较5 结语在到处发送一堆消息时,gRPC 会大放异彩。文件上传呢?gRPC 是否适合文件传输?查看如何使用 gRPC 发送文件,看看这是否有意义。嘿,前段时间我很好奇gRPC是否适合通过网络发送文件。它的优点之一是对流的原生支持,那么,为什么不呢?1 一条服务和一条消息为了实现这个想法,我采用了定义最小可行服务的方法,该服务需要一些块,然后在收到后计算已收到实际内容的字节数。这些块的定义如下:message Chunk {

2021-08-17 23:59:11 4391

转载 vscode 自动生成文件头部注释和函数注释

1、安装插件KoroFileHeader2、设置在vscode左下角点击设置按钮,选择“设置”,然后输入“fileheader”,文件头部注释:Fileheader:custom Made函数注释:Fileheader:cursor Mode随便点击哪个"在setting.json"中编辑,输入以下设置后保存,然后重启vscode更新设置:// 文件头部注释 "fileheader.customMade": { "Descripttion":"",

2021-08-07 18:00:12 2928

原创 gdal-3.3.1 linux(Ubuntu) 编译(附SQLite3 PROJ6编译)

文章目录1 官网下载GDAL源码2 解压源码并安装3 下载编译PROJ64 编译安装SQLite35 继续编译PROJ66 继续编译GDAL想用GDAL/OGR功能,折腾了一晚,把步骤记录下来,供以后参考。以下内容是在原文的基础上验证,修改了一些bug。1 官网下载GDAL源码可以去官网下载,也可以到下载,后者还提供源码和编译好的文件下载(Debian版本),我用的官网的源码进行的编译。2 解压源码并安装(可参考https://www.cnblogs.com/charlee44/archive/2

2021-08-04 21:19:42 2819 1

原创 什么是 contextlib 模块?

文章目录1、概述2、contextmanager(func)3、nested(mgr1[, mgr2[, …]])4、closing(thing)1、概述Python 标准库的contextlib模块提供了为with语句分配资源的实用程序。with Python 中的语句用于资源管理和异常处理。因此,它可以作为一个很好的Context Manager。当代码到达一个with语句时,它会临时分配资源。一旦with语句块完成,所有最初消耗的资源都会with被释放。contextlib模块提供了三个函数:

2021-07-15 10:48:19 1285

原创 contextlib – Context manager utilities

文章目录Contextlib – Context manager utilitiesContext Manager APIFrom Generator to Context ManagerNesting ContextsClosing Open HandlesContextlib – Context manager utilitiescontextlib模块包含用于使用上下文管理器和with语句的实用工具。Context Manager API上下文管理器负责代码块中的资源,可能在进入代码块时创建它

2021-07-15 10:19:14 134

原创 windows10安装openssh笔记

ssh为secure Shell的缩写,是目前比较可靠,专为远程登录会话和其他网络服务提供安全性的协议。几乎所有的linux都支持ssh,ssh由客户端与服务器组成,通过ssh可以安全地进行远程登录,拷贝,上传,默认端口是22。mac与linux自带ssh客户端,windows可以安装putty使用该命令。win10自带ssh客户端和服务器,如果没有可以按如下步骤进行安装:1.以管理员身份打开PowerShell,然后输入 Get-WindowsCapability -Online | ? Name

2021-07-13 18:55:01 799 1

转载 Linux(Ubuntu)通过nfs挂载远程硬盘

文章目录1、需求2、挂载原理3、Server挂载操作4、Client 挂载操作1、需求现有两台Linux Server,需要把Linux01 下的8T硬盘挂在到 Linux02 下;Linux01 硬盘:Linux02 硬盘:2、挂载原理通过 nfs-server 将Linux01 作为Server端,把8T硬盘发布出去,供Linux02 挂载;(注意Linux01上要有nfs-server的服务在跑,Linux02 上也要有安装nfs)3、Server挂载操作首先在 Linux01

2021-07-12 15:38:45 1132

转载 Python杂谈: __init__.py的作用

文章目录1. 标识该目录是一个python的模块包(module package)2. 简化模块导入操作2.1 __init__.py 是怎么工作的?2.2 控制模块导入2.3 偷懒的导入方法3. 配置模块的初始化操作我们经常在python的模块目录中会看到 “init.py” 这个文件,那么它到底有什么作用呢?1. 标识该目录是一个python的模块包(module package)如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 module pa

2021-07-09 14:04:21 109

原创 Jupyter NoteBook Server 远程服务器搭建

Running a notebook serverhttps://jupyter-notebook.readthedocs.io/en/stable/public_server.html?highlight=ip#running-a-public-notebook-server如果想通过 pycharm 远程 running a notebook server,建议按照官方指引操作。配置完成之后,远程 ssh,启动 jupyter notebook,最后在 pycharm 设置一下 Configure

2021-07-07 10:44:42 1292 1

转载 600 多条最强 Linux 命令总结

文章目录1. 基本命令2. 关机3. 文件和目录4. 文件搜索5. 挂载一个文件系统6. 磁盘空间7. 用户和群组8. 文件的权限 使用 “+” 设置权限,使用 “-” 用于取消9. 文件的特殊属性 ,使用 “+” 设置权限,使用 “-” 用于取消10. 打包和压缩文件11. RPM 包12. YUM 软件包升级器13. deb 包14. 查看文件内容15. 文本处理16. 字符设置和文件格式转换17. 文件系统分析18. 初始化一个文件系统19. SWAP文件系统20. 备份21. 光盘22. 网络(以

2021-07-02 14:16:02 212

原创 Pycharm下 debug Celery task

项目是 Flask + Celery 实现异步,需要断点调试 celery task 中的代码,但是celery是通过命令行启动的,怎么借助pycharm进行断点调试?Run/Debug Configurationsserver 正常启动即可Path mappings最后同时运行 server 服务和schedule.app联调debug...

2021-06-24 10:56:42 1022 2

转载 使用containerD手动加载容器镜像

最近,我需要手动将一些容器映像加载到作为容器运行时运行containerd(而不是Docker)的Linux系统中。我说“手动加载一些镜像”是因为该系统与Internet隔离,因此仅运行容器并containerd自动从镜像注册表中提取镜像是行不通的。解决缺少Internet访问的过程并不困难,但似乎没有任何文档可以证明,而我可以使用常规Web搜索轻松找到该文档。我认为在此处发布它可能会帮助将来寻求此信息的个人。对于具有管理员/操作意识的用户,进行交互的主要方式containerd是通过ctr命令行工具。该

2021-05-27 22:36:15 3349 2

翻译 TensorFlow Serving架构分析

TensorFlow Serving是一个灵活、高性能的机器学习模型服务系统,专为生产环境设计。TensorFlow Serving使得部署新的算法和实验变得容易,同时保持相同的服务器架构和api。TensorFlow Serving提供了与TensorFlow模型的开箱即用集成,但是可以很容易地扩展到其他类型的模型。

2021-05-24 11:19:41 556

原创 基于轮廓提取的矫正算法

背景支付宝和微信对数字货币的推广起到了积极的作用,大多数现代人都不怎么用手点钞了,取而代之的是数字货币。随着数字货币的发展,终有一天纸币将会退出历史舞台。那一天一定会有很多人想将那个年代的钞票一张张拍下来留念。将一张百元大钞拍下来,手抖拍得又歪又斜,怎么办呢?那么多张钞票要微调处理,不可能每次都使用PS,那样工作量会很太。利用图像矫正技术可以解决这个问题,首先要弄明白几个技术原理点。图像矫正技术知识储备目标识别(匹配、最佳统计分类器、神经网络)轮廓检测与提取(矩形区域裁剪、灰度化、二值化、ROI

2021-03-16 21:07:52 798 1

原创 从C++ float* 到 C# 端侧数据接收处理

我有一个DLL,可以导出一个返回float *的函数,我想在我的 C# 代码中使用它。我不确定如何对我的 float *进行编组,以便可以在 C# 中安全地使用它。因此,在我的C ++ DLL中,我声明了:static float* GetSamples(int identifier, int dataSize);C#脚本:[DllImport ("__Internal")]public static extern float[] GetSamples (int identifier, int

2021-02-21 23:50:21 1221

转载 遥感影像深度学习标注软件的开发要点

最近一个月开发了一款遥感影像深度学习标注软件。经过一个月的艰苦编码,基本已经稳定, 讲开发过程做一个简单记录,以备后用。一、遥感影像的标注与图片影像有何不同1、遥感影像文件尺寸大,单幅影像动辄达到几百M甚至上T的数据量。 用labelme之类的软件无法打开。2、遥感影像很多是16Bit 32BiT 的数据,不经过数据类型转换和拉伸处理无法正常显示。3、数据成果的分幅问题, 普通图像可以直接导出标注结果, 但遥感图像的标注结果想要被深度学习算法利用,必须要经过分幅处理。4、多波段数据需要选择波段。

2021-02-19 00:41:55 1066

原创 深入浅出libevent学习笔记一

本教程要求有一定的服务并发编程基础,了解select和epoll等多路I/O复用机制。教程目的主要是快速建立libevent的认知,了解libevent的常用数据结构和编程方法。达到可以使用libevent写出自己的高并发服务器处理模型。文章目录1 Libevent官方1.1 libevent 特点1.2 libevent下载与安装1.3 libevent开源包2 EPOLL2.1 流 I\O操作 阻塞2.1.1 流2.1.2 I\O操作2.1.2 阻塞2.2 解决阻塞死等待的办法2.2.1 阻塞死

2021-02-16 01:34:50 279

原创 Linq集成化查询学习笔记

文章目录1 简介2 基本语法2.1 对查询结果类型的巧妙处理2.2 延迟执行与强制立即执行3 过滤操作3.1 筛选3.2 排序3.3 分组4 更复杂的查询4.1 动态创建类型4.2 联合查询5 嵌套查询1 简介LINQ( Language-Integrated Query)可以按照字面意思直接翻译为“语言集成查询”。 它是整合到C#语言中的一种非常强大且实用的查询技术。使用LINQ可以轻松做到:对如数组、集合等数据结构进行查询、筛选、排序等操作。可以用于与数据库交互。LINQ表达式可以转化为SQL

2021-02-02 17:55:40 295

原创 如何创建用于对象检测的自定义COCO数据集

文章目录1 简介2 Pascal VOC和COCOs annotations 的区别3 将 Pascal VOC 转换为 COCO annotation4 VGG Image Annotator to COCO annotation5 coco数据可视化6 结论和进一步阅读1 简介以前,我们使用Pascal VOC数据格式使用自定义带annotated(注释)的数据集训练了mmdetection模型。如果您的对象检测培训管道需要COCO数据格式,那么您很不走运,因为我们使用的labelImg工具不支持C

2021-02-01 11:09:55 514 1

原创 Unity容器与简单数据库工厂的应用

依赖注入简单来说就是定义好接口,上层代码调用接口,具体实现通过配置文件方式去指定具体实现类。具体调用方法public class DbFactory读取database.config配置文件的内容<?xml version="1.0" encoding="utf-8"?><connectionStrings> <add name="BaseDb" connectionString="Server=127.0.0.1;Initial Catalog=adms706

2021-01-30 23:04:18 236

原创 并行任务学习笔记

文章目录1 不带返回值的Task1.1 第一种方法,实例化Task类,然后调用Start方法。1.2 第二种方法,直接调用Task类的Rim静态方法。1.3 第三种方法,通过TaskFactory类来创建新Task。2 带返回值的Task3 传递状态数据的Task4 异步方法4.1 async与await4.2 在Main方法中使用异步等待4.3 保留异步上下文中的本地变量值1 不带返回值的Task1.1 第一种方法,实例化Task类,然后调用Start方法。Task taskl = new Task

2021-01-30 13:25:57 270

原创 使用线程锁

当多个线程访问同一个对象时,由于线程之间抢占资源,会使数据状态不同步,从而导致意外发生。这种情况就需要线程锁了,每一轮删除操作中,从判断Count属性到执行删除这个过程,当前线程都应该将List实例锁定。class Program{ static List<int> intList = new List<int>() { 100, 105, 108, 113, 265, 970, 160, 410, 303, 302, 104, 1

2021-01-28 01:20:42 148

原创 多个线程同时写一个文件

class Program { #region 私有字段 // 文件名 static readonly string FileName = "demoFile.data"; // 要写入文件的 9 个字节 static readonly byte[] orgBuffer = { 0x0C, 0x10, 0x02, 0xE3, 0x71, 0xA2,...

2021-01-28 01:12:32 2556

转载 根据csv文件内容执行数据库CURD操作

根据文档里面某些字段(Edit、Add、EDIT)执行数据库CURD操作设计的界面:Succesfual changes Applied:成功执行的条数Duplicate records discarded:重复丢弃的条数Record with missing fields discarded:缺少字段不执行的条数代码的s1、s2、s3就分别代表不同结果执行条数csv文件内容格式打开文件 OpenFileDialog openFileDialog = new Open

2021-01-24 17:02:56 161

原创 Redis学习笔记

redis服务端:https://github.com/MSOpenTech/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.msiredis可视化工具:https://github.com/uglide/RedisDesktopManager/releases/download/0.8.7/redis-desktop-manager-0.8.7.317.exeRedis官方网址 http://redis.io最新版Redis(wind

2021-01-20 18:57:04 163

原创 Linq知识点回顾

1、LINQ 查询简介 (C#)2、Linq的模糊查询(包含精确模糊查询)3、Linq辅助工具LinqPad,Query databases in LINQ (or SQL) — SQL/Azure, Oracle, SQLite, Postgres & MySQLLinqer,SQL to LINQ converter个人感觉LinqPad比较好用。4、LINQ用法总结...

2021-01-18 18:11:15 85

原创 c#与c++通过DLL互传图片数据

感谢网友Zhao-Michael参考示例1. C# Pass Image Data to C++ :[DllImport(DllName, EntryPoint = "DetectImage")] public static extern int DetectImage(IntPtr Image, int wid, int hei, int step); //Dll Invoke 函数签名使用方法一 ` csharpImage<Gray, byte>

2021-01-15 17:59:46 2878 4

原创 依赖注入在数据库访问场景的应用

简介依赖关系是指两个不同组件之间的引用关系,当其中一方不存在时,另一方就不能正常工作,甚至不能独立存在。例如,要连接不同平台的数据库,就需要调用类似如下的获取数据连接的组件:public class Database{ #region 构造函数 ///// <summary> ///// 构造方法 ///// </summary> public Database(string connString) {

2021-01-13 16:43:43 761

原创 异步委托与多线程的实际运用

文章目录1、线程执行Thread1静态方法2、线程执行ThreadTest实例的MyThread方法3、匿名委托创建4、使用委托绑定线程池要执行的方法(无参数)5、使用委托绑定线程池要执行的方法(有参数)6、委托的执行7、简单的异步委托8、带回调函数的异步委托1、线程执行Thread1静态方法static void Thread1(){ Console.WriteLine(String.Format("ThreadId:{0},Show:{1}", Thread.CurrentThread.Ma

2021-01-08 23:23:24 299

mnist_data.rar

mnist_data原始数据存放在raw文件夹目录下,在代码中直接调用train_loader = torch.utils.data.DataLoader( torchvision.datasets.MNIST('mnist_data', train=True, download=True, transform=torchvision.transforms.Compose([ torchvision.transforms.ToTensor(),

2020-03-12

实战突击ASP.NET项目开发案例整合

《实战突击:ASP.NET项目开发案例整合》以在线播客视频网、电子商务平台、AJAX校内数码相册、博客管理系统、网上在线论坛、企业门户网站、城市小区物业内部管理网、无纸化在线考试网、图书馆管理系统、新闻发布系统、企业内部办公系统、物流信息管理平台、个人空间类Web网站、互动媒体学习社区、征婚交友网站、校友录数码相册网、供求信息网、龙行天下搜索引擎、明日网络硬盘、仿百度知道之明日知道、企业级通用进销存软件开发Web版等21个实际项目开发程序为案例,从软件工程的角度出发,按照项目的开发顺序,系统、全面地介绍了程序的开发流程。从开发背景、需求分析、系统功能分析、数据库分析、数据库结构、系统开发到系统的编译发行,每一过程都进行了详细的介绍。

2018-11-12

ASP.NET项目开发案例全程实录(最新版)

本书以供求信息网、电子商务平台、小区物业内部管理网、图书馆管理系统、企业办公自动化管理系统、互动媒体学习社区、在线考试网、网上在线论坛、物流信息管理平台、博客管理系统、播客网、仿百度知道之明日知道12个实际项目开发程序为案例,从软件工程的角度出发,按照项目的开发顺序,系统、全面地介绍了程序开发流程。从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发到网站的编译与发布,每一过程都作了详细的介绍。

2018-11-12

基于C++服务器和客户端聊天软件(Visual studio 2010)

具体思路可以参考我的博客——https://blog.csdn.net/new_one_object/article/details/51787002 https://blog.csdn.net/new_one_object/article/details/51787035 https://blog.csdn.net/new_one_object/article/details/51787057 具备的功能: (1)聊天室服务器端能够接收多个客户端的连接请求 (2)聊天室服务器端具有处理“公聊”和“私聊”的功能;“公聊”所有客户端可见,私聊只有指定的“客户”可见 (3)聊天室客户端具有登陆对话框,通过输入用户名与服务器IP地址登陆到聊天室服务器端 (4)能够和聊天室的任何在线客户聊天,收发聊天信息,根据需要可以选择“公聊”或“私聊” 程序基于Visual Studio2010开发,以“MFC应用程序”作为程序开发模板。

2018-05-29

C++聊天程序源程序,有服务器和客户端(Visual studio C++源代码程序)

C++聊天程序源程序,有服务器和客户端(Visual studio C++源代码程序)

2018-05-29

任意数据库转换系统 DB2DB 1.80最新迁移转换工具

DB2DB 的全称是 DataBase2DataBase,可以实现任意数据库类型之间的数据库转换,目前支持的数据库类型有:Microsoft SQLServer 2005或以上,MySQL,Microsoft SQLServer CE,SQLite,Access。数据库转换包含以下内容:数据表表结构,数据表主键,数据表索引,数据表数据。还可以导出*.sql执行文件。非常实用。

2015-05-23

bat教程全集(适合初学者或懂编程序相关人士)

如果想学好bat,那必须花点功夫学习,本教程比较适合初学者以上用户学习.

2008-12-10

驱动精灵(用于重装前备份原有驱动)

这是一个备份驱动的小软件,主要用于备份自己电脑的声卡\显卡\网卡等驱动

2008-06-15

全能音频转换通 v1.2 绿色特别版

该全能音频转换通能转换各种音乐的格式

2008-06-15

apache-tomcat-5.5.25

apache-tomcat-5.5.25

2008-05-10

空空如也

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

TA关注的人

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