自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术分享博客

前端框架知识;操作系统知识;C#,python,Java,等编程语言相关知识,以及在开发过程中遇到的坑和解决方式

  • 博客(146)
  • 资源 (3)
  • 收藏
  • 关注

原创 rust操作stm32f1ct86

本文介绍了使用Rust编程语言操作STM32F103C8T6单片机驱动28BYJ48步进电机的完整教程。包括环境配置(安装core库、调试工具等)、项目结构搭建(builder.rs、Cargo.toml等文件配置)、代码实现(GPIO控制LED闪烁示例)以及硬件接线说明(ST-Link调试器与STM32的连接方式)。教程适用于Ubuntu系统,采用ST-LINK烧录工具,为初学者提供了从软件环境搭建到硬件连接的全流程指南,为后续步进电机控制开发奠定基础。

2025-11-09 18:55:54 752

原创 .net 8压榨rabbitMq性能

.NET 8下RabbitMQ性能优化实践 本文通过实验测试了.NET 8环境下RabbitMQ的性能表现。测试环境采用i5-12400处理器和16GB内存,RabbitMQ服务器为Xeon E5-2667 v4处理器7.57GB内存。测试结果显示: 在网络环境下,非压缩模式吞吐量达到33,333条/秒,压缩模式提升至50,000条/秒 消费者读取性能在压缩模式下达到54,054条/秒 无网络开销时性能进一步提升 文章提供了关键代码实现,包括内存优化、批量处理和错误重试机制,使用MessagePack序列化

2025-10-29 17:44:32 965 2

原创 Redis Kerberos票据认证(.net 6)

本文详细介绍了在Docker容器中搭建Kerberos认证测试环境的完整过程。主要内容包括:Kerberos的基本概念与认证流程;在Ubuntu容器中安装配置Kerberos服务端,包括创建Realm、管理员账户、配置ACL等关键步骤;安装Redis服务并创建对应的服务主体;以及通过编译安装支持SPNEGO的Nginx实现Redis的Kerberos代理认证。整个环境搭建过程通过详细的命令和截图展示了每个步骤,为理解Kerberos认证机制和实际应用提供了实践参考。

2025-09-25 15:50:45 1019

原创 rust使用sqlx示例

这篇文章介绍了如何使用Rust的sqlx库操作MySQL数据库,主要内容包括: 项目结构:展示了完整的Rust代码实现用户添加功能,包含用户实体定义、仓储接口和持久化层实现。 关键技术点: 使用async-trait实现异步特性 通过dotenv读取环境变量配置 使用MySqlPool管理数据库连接池 实现基本的CRUD操作(示例演示了添加用户) 运行效果:展示了程序执行后的数据库插入结果。 项目依赖:介绍了所需的crate包及其作用,包括sqlx、tokio等。 代码结构:详细解释了用户实体、仓储接口和持

2025-09-22 16:39:17 1524 3

原创 rust中的“继承”

文章摘要:本文对比了C#和Rust在继承机制上的差异。Rust结构体不支持继承,而是采用组合方式实现代码复用,通过将公共字段提取为独立结构体并在其他结构体中包含使用。作者展示了两种实现方式:手动组合结构和过程宏自动生成代码,后者虽简洁但增加了复杂性。建议在Rust开发中优先选择组合模式,谨慎使用过程宏以保持代码可读性。文章还介绍了查看宏展开代码的方法,帮助理解Rust编译过程。

2025-09-17 11:24:59 437

原创 Rust+slint实现一个登录demo

本文介绍了使用Rust全栈编程开发GUI应用的小示例,重点讲解了选择Slint作为前端框架的原因及其优势。文章包含项目结构、前端代码编写等内容,通过一个登录界面示例展示了Slint的DSL语法和界面设计方式。Slint因其高性能、低内存占用和跨平台能力成为嵌入式系统等资源敏感型应用的理想选择。项目使用RustRover开发工具,并采用分离式项目管理,将前端代码放在单独的.slint文件中。

2025-09-04 14:59:17 1149 1

原创 Nginx配置proxy protocol代理获取真实ip

本文介绍了Nginx配置PROXY Protocol协议的方法,用于获取客户端真实IP。PROXY Protocol协议分为人类可读的V1和高效的二进制V2版本。文章详细说明了在代理服务器上配置http模块和stream模块的方法,包括端口设置、日志记录和防火墙配置。通过测试命令验证配置是否生效,并演示如何在后端应用程序中使用SuperSocket框架处理PROXY Protocol协议。该配置可有效解决代理环境下客户端真实信息获取的问题,适用于安全策略和地区推送等场景。

2025-07-21 14:22:03 1509

原创 C#千万数据秒级导入

C#千万数据秒级导入优化实践本文介绍了千万级数据导入ClickHouse的性能优化方案。原始单线程处理耗时2分钟以上,优化后采用多消费者并行处理模式,将导入时间缩短至30秒内。关键优化点包括:使用生产者-消费者模式分离IO和计算、设置10万条/批次的合理批次大小、利用BoundedChannel控制内存压力、ClickHouse批量并行提交等。文章详细分析了批次大小选择10万而非150万的原因,包括内存考量、ClickHouse性能特点、并行处理效率和I/O优化等因素。优化后的方案显著提升了大数据导入性能

2025-07-11 15:06:39 592

原创 EFCore相关知识分享

EF Core相比大家都听说过,它是 .NET Core 中的一个开源对象关系映射(ORM)框架。它允许开发者以面向对象的方式与数据库进行交互,从而简化了数据库访问的复杂性。EF Core 是 Entity Framework 的跨平台版本,支持 .NET Core 以及 .NET Framework。EF Core的相关知识分享到这里就结束了,后面如果还有其他知识会更新在这篇文章中。

2025-02-12 22:48:53 1007

原创 ML.Net二元分类

‌ML.NET‌是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习框架。它允许开发者使用C#或F#来训练、构建和发布定制的机器学习模型,特别适合.NET开发人员使用‌至此ML.Net的使用教程就结束啦,更多有趣的玩法大家快去尝试吧。

2025-02-12 19:28:28 967

原创 DeepSeek本地部署

deepSeek的大名想必大家都有所耳闻了吧,国内深度求索公司开发的一款开源的AI,用于对抗美国的OpenAI。搞笑的是美国的AI虽然叫openAI但是它是闭源的,还不如改名叫CloseAI呢。但是DeepSeek也不是从零开始的,也是借鉴了部分OpenAi的思路再加上自己的工程创新才实现的,调侃归调侃,致敬归致敬,其实DeepSeek也是用的TensorFlow,接下来我就来给大家讲讲Deepseek怎么进行本地化部署。

2025-02-12 01:59:32 1955

原创 C# 常用的文件处理方法

在开发中我们经常会遇到文件上传文件下载,excel导入,excel导出等情况,这里我就总结在此篇文章中,方便大家在需要时直接copy。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2025-01-20 11:04:36 1273

原创 C#防止重复提交

当用户在前端进行提交数据时,如果网络出现卡顿和前端没有给出响应的话顾客通常都会狂点提交按钮,这样就很容易导致后端数据造成脏数据,众所周知顾客就是老天爷,这种问题一定是咱有问题。下面我们就来看看如何避免这种情况吧。这里主要是通过过滤器实现的。这里顺带提一下,过滤器也属于是AOP编程的体现哦。今日的分享就到此结束,有什么不懂的可以留言讨论。

2025-01-20 08:58:40 589

原创 C#深度神经网络(TensorFlow.NET)

现在AI这么流行想必大家都听说过,卷积神经网络(CNN)、深度神经网络(DNN),大多数实现都是采用的python,不得不说python是真的火。TensorFlow.NET是由SciSharp STACK开源社区团队的贡献,它为TensorFlow提供了.NET Standard , 以C#实现完整的Tensorflow API,允许.NET开发人员使用跨平台的.NET Standard框架开发、训练和部署机器学习模型。

2025-01-17 15:12:17 3438

原创 C# AOP编程

‌切面编程(Aspect-Oriented Programming,AOP)‌是一种编程范式,其实就是通过将横切关注点(如日志记录、事务管理、安全控制等)与业务逻辑分离,把重复的代码提出来以提高代码的模块化、简化维护,并提高代码的复用性‌。AOP是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。AOP是使用切面(aspect)将横切关注点模块化,OOP是使用类将状态和行为模块化。

2025-01-14 11:28:13 1302

原创 C#反射的应用案例与讲解

反射在我们实际开发中其实比较常见的,比如我们接口对接时将对象序列化为json字符串和将对方传过来的json字符串序列化为我们的DTO对象,还有进行依赖注入的时候其实都用到的反射。下面我就来用实际开发案例的方法来给大家讲解一些C# 反射的用法和原理。其实有的时候我也在考虑有没有必要这样刨根问底,换个思考方式就像铁匠去研究锤子的铁是由什么元素组成的一样,其实他就是个打铁的根本没必要去做这些事只要打好自己的铁就可以了。但是古人又说了,不能知其然要知其所以然。奇奇怪怪。

2025-01-10 11:35:04 1106

原创 .Net加密与Java互通

在接口对接过程中我们常常会遇到需要加密和签名等情况,像经典的RSA,AES,SM2,SM3,各个语言之间的加密都有些小差异,接下来我就总结一下我做.net开发中与java接口对接时发现的差异与解决办法。提示:以下是本篇文章正文内容,下面案例可供参考以上就是常用的加密和解密方式。希望对大家有所帮助,对于加密和解密不用过多在意他们的计算公式和原理。咱们只管开发就好,过于追求真理只会延迟开发进度。

2024-12-31 15:11:25 1616 1

原创 Sql Sqserver 相关知识总结

本文主要从如何优化sql语句,检查sqlserver状态,SQL server各种索引的对比,这几个方面来开展学习和探讨,总结了我近几年的经验。希望对大家有所帮助。

2024-12-27 10:02:52 1218

原创 .Net 多线程、异步、性能优化应用与心得

这里我是记录的执行耗时的,总共花费了97毫秒,其实多数耗时都是花费在了创建线程上面,采用多线程的方式去进行文件的写入和读取,可以看出异步操作不会阻塞调用线程,适合在高并发场景下提高程序的整体性能,如果每次写入都是一个用户发起的请求的话那么也可以说它可以更有效地利用系统资源,比如在网络应用中,可以处理多个网络连接而不会阻塞。而且这种方式的底层实现其实是才用的线程池,当线程使用完之后不会立即销毁,会放回线程池内,等到下次再处理的时候就可以直接使用这个线程,这样就避免了频繁的创建和销毁线程,减少了性能开销。

2024-12-09 09:27:41 1579

原创 .net 8使用hangfire实现库存同步任务

在第一章中我介绍了如何在.net Framework 4.6 WebAPI 中使用Hangfire,实现Hangfire定时调用我们开发的API接口,但是在实际业务中调用接口往往需要处理耗时任务,如果还像第一章中的方式去调用的话就会出现请求超时的情况。今天我就以电商系统库存同步业务为例子给大家讲解如何使用hangfire调用耗时任务。后续我也会把项目放在CSDN上供大家下载学习。该服务用于定时调用库存同步服务。作为库存同步服务和商品SKU更新服务的管理。Common:项目中的公共方法。

2024-11-21 11:11:41 1225

原创 .net Framework 4.6 WebAPI 使用Hangfire

在业务中常常遇到需要在后台定时执行的业务,例如:库存同步、数据定时推送拉取等,目前较为成熟的定时任务插件主要有hangfire,Quartz;这里我们就选择hangfire,选择它的原因主要是因为它自带了控制面板,单它也有缺点它不支持秒级定时。这里举例的业务主要是做库存同步,不需要精确到秒级。下面咱们就来看看怎么实现吧。以上就是我对Hangfire的简单使用,至此结束,有任何疑问欢迎评论区探讨,上述教程如果有错误的地方也请各位大佬指正,以免误人子弟。

2024-09-27 17:00:26 2165

原创 C#基于Redis实现消息队列

这里的方法逻辑是,外部方法调用addQueue,往队列里面添加数据,同时开启消费线程(CreateAndRunTask),当数据执行结束后将信号量重置,将线程挂起,减少性能开销。CreateAndRunTask 方法中会调用每个继承该抽象方法的子类的处理方法也就是(DealWith) 方法。这里是reids方法的具体实现,注意这里的redis采用的是单例模式防止产生过多客户端影响系统性能。该帮助类中是包含的Redis的连接和存储的方法。这里是继承自上述基类的子方法。这个方法和上面是同样的。

2024-08-19 11:34:12 1160

原创 .net Core FileHelper

在开发中我们时常会遇到需要对文件进行操作的情况,下面是我常用的文件帮助类,希望能帮助到各位骚棒,贴出来也方便我自己后面copy.

2024-06-20 15:11:17 333

原创 C#加密与java 互通

在我们对接其他公司接口的时候,时常会出现对方使用的开发语言和我方使用的开发语言不同的情况,因为每个语言之间都会有些许差别,在进行加密签名中就会出现签名一直对接不上的问题,下面我就来和各位分享一下我所遇到的问题以及解决方案。

2024-05-30 11:41:20 1317

原创 js将文本复制到粘贴板

在web开发中为了方便用户操作,我们时常会遇到需要一键复制的情况,一下两种方法是介绍js中操作剪切版的相关方法。

2024-03-25 11:16:22 997

原创 对外开放接口的Appkey和Secret应该如何设置?

123456 MD5加密后就生成了32位或者64位的字符串,再将其拆分为若干段,例如拆分成三段,每段有多少个,然后生成一个2000随机乱码字符串中,将secret 插入到2000个字符串中的固定位置,然后检查乱码字符串长度是否附后,然后substring拆你要的加密字符串,然后解密出来看是否能得到原来的明文。在对外开放接口的设计中应该要考虑到接口的安全性和可扩展性。App secret:的意思为“私匙”,简称api接口密钥,是跟app key配套使用的,可以简单理解成是密码,它是微信公众平台服务号才有的。

2024-03-25 10:46:46 3232

原创 .Net Core 中间件验签

为什么要用中间件验签,而不是筛选器去验签?1、根据上图我们可以看到,中间件在筛选器之前,而筛选往下就是我们写业务逻辑代码的控制器了。这就大大增加了我们被攻击的风险。2、用筛选器我们需要在每个控制器上都添加相应的标识,如果需要校验的sign的控制器多的话,就增加了很多不必要的工作量,和风险,如果某个控制器一时疏忽忘记加筛选器的话就有可能会被攻击。筛选器一般都是当数据得到信任的时候做验证,例如用户登录了,做功能的权限判定,中间件判定非信任数据。

2024-03-13 09:10:19 1166

原创 领域驱动设计应用之WebAPI

随着技术的不断迭代升级,设计方式也在不断迭代更新,目前比较流行的就是领域驱动设计的方式来开发程序,领域驱动设计相对于传统设计模式的有点在于:1、更好地理解业务需求。2、更好的设计质量。3、更好的团队协作。4、更好的的业务创新。从这里就可以体现出领域驱动设计的效果了,商品领域的请求和返回只会用到它自己领域的东西。这也很好的避免了传统设计方式会出现的代码冗余问题。也可以方便后期维护,需要修改那个领域就可以很快的找到相关的代码。

2024-01-13 15:41:41 1210

原创 C#高性能的批量数据处理方案

我们经常会遇到这样的数据处理应用场景:我们利用一个组件实时收集外部交付给它的数据,并由它转发给一个外部处理程序进行处理。考虑到性能,它会将数据存储在本地缓冲区,等累积到指定的数量后打包发送;考虑到实时性,数据不能在缓冲区存太长的时间,必须设置一个延时时间,一旦超过这个时间,缓冲的数据必须立即发出去。看似简单的需求,如果需要综合考虑性能、线程安全、内存分配,要实现起来还真有点麻烦。这个问题有不同的解法,本文提供一种实现方案。

2023-08-01 09:12:41 1993

原创 C#百万数据处理

这里我给大家带来一个我自己所经历的百万数据处理案例,该案例中会拿优化前和优化后的代码进行对比,让大家更直观的感受优化给项目带来的效率提升。该项目优化用到了:线程同步,多线程,sqlSugar,异步,委托等知识。以上就是我个人所经历的大数据处理,虽然优化的并不算完美但是还是总结出了不少经验,也从中学习到了很多,比如,单线程和多线程的运用以及委托和线程同步等知识。

2023-07-30 13:10:58 1340

原创 C#多线程

随着业务的不断发展,程序的数据处理量需求也越来越高,例如,电商项目中的库存同步,和商品信息拉取等,一个门店都是几千个品种,每个品种都有几十甚至上百的的批次,如果是个连锁有一万家门店,那么这种情况库存同步如果用单线程处理的话效率是极其低的,同步几天都同步不完,接下来就该利用多线程来优化了。协程,英文名是 Coroutine, 又称为微线程,是一种用户态的轻量级线程。协程不像线程和进程那样,需要进行系统内核上的上下文切换,协程的上下文切换是由程序员决定的。

2023-07-27 14:30:40 976

原创 .Net Core依赖注入

相信大家在学习.net Core的时候都听说过依赖注入,和控制反转等概念。随着.net Core 6.0的到来,相比于之前的.net Core 3.1 做了不小的改变,依赖注入的方式也和之前的方式有些许不同,但是万变不离其宗,如果你会用.net Core 3.1那.net Core 6.0应该也能很快上手,不会.net Core 3.1的同学也不用担心,相信你看了下面的教程也能学会如果依赖注入。

2023-07-24 17:31:31 1565

原创 DataTable数据对比

开发中我们经常会出现查询数据库后返回DataTable的情况,那么DataTable中常用的一些操作阁下又了解多少呢,例如:两个结构不同DataTable怎么找出他们俩之间的交集和差集。

2023-07-19 17:16:13 2688 2

原创 SqlServer Update的各种使用方式

在平时的使用中常常会遇到一些批量修改或者根据某个表的数据去修改另一个表的数据。sqlserver 的Update 语句一定要加 where 条件,不然后果很严重。where条件尽量用索引列这样能有效提高效率。

2023-06-07 16:34:21 9280

原创 Js时间范围计算

在设置layui时间范围选择器的默认值时想动态设置近五天的时间。故此写下此段代码。

2023-06-02 15:04:04 298

原创 【C#优雅的合并两个DataTable】

这里我们只利用.Net 的LINQ语句进行的Join查询,当数据量过大是会明显的比用for循环拼接快得多。

2023-04-03 21:37:15 5475

原创 两个List集合做数据对比

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。比如集合A和集合B,A和B的差集就是A集合中有的而B集合没有的,也就是灰色的部分。集合A和B共有的数据,也就是图中灰色部分A和B的数据合并在一起的值,也就是灰色范围的值。

2023-03-21 14:36:44 6194

原创 loadCLodop驱动检测

先修改LodopFuncs.js中的打印对象为全局变量。引入lodop的js后判断Lodop对象是否为空。

2023-02-07 10:49:53 670

原创 Redis如何保证和数据库的数据一致性

Reids如何保证缓存数据与数据库数据的一致性

2023-01-05 21:08:34 706

原创 Redis过期键删除策略

想必大家都直到Redis它是一个key-Value结构的数据库,它的key是可以设置过期时间的,过了这是时间key就会被清除掉。那么当我们设置了过期时间后Reids它是怎么处理的呢?Redis中同时使用的惰性过期和定期清理这两种策略。

2023-01-05 20:50:23 966

手搓的针对pgsql的orm代码

手搓的针对pgsql的orm代码,性能上六个线程同时运行增删改查能达到三万条每秒,数据交互model采用表达式树缓存,启动时加载减少运行中的性能开销,对于pgsql数据库里数据的修改采用使用UNLOGGED临时表更新减少WAL日志产生的同时可以处理大批量数据的更新。该代码还有性能提升的空间,但是这只是测试代码代码结构有点不合理,大家如果生产环境使用的话可以对代码进行一些整理

2025-12-12

rust操作28byj48步进电机完整代码

适合rust嵌入式初学者,该代码可直接运行

2025-11-09

rust操作stm32f1ct86

运行效果展示视频

2025-11-09

该项目主要是dotnet 8 下对rabbitmq的性能探索测试项目,该项目分别有1,2,3,4,5,6 ..8个队列每个队列一百万的数据测试方法 测试结果数据可以参照我博客里写的测试数据

rabbitmq性能测试项目,在dotnet8下对rabbitmq的性能压榨测试,使用的最新的rabbitmq.client(7.0);

2025-11-03

rust使用sqlx(1.1.16)

该项目是rust使用sqlx的示例项目代码,供大家免费下载学习;打开项目后修改项目中的.env文件中的数据库连接字符串配置,然后在控制台直接执行sqlx migrate run 运行迁移脚本,运行之后执行cargo run 就可以把项目跑起来了

2025-09-22

rust+slint的多窗体示例

这是一个rust+slint的多窗体示例项目打开项目后直接运行cargo run 即可,项目中实现登录成功后跳转到主窗体的相关功能;

2025-09-05

MSYS2(Minimal SYStem 2)是一个集成了大量的GNU工具链、工具和库的开源软件包集合 它提供了一个类似于Linux的shell环境,可以在Windows系统中编译和运行许多Linux

开发工具

2025-09-04

MobaXterm 专业版本工具

MobaXterm 辅助工具

2025-08-21

C#模板匹配算法示例代码

模板匹配算法示例代码详情请查看博客相关介绍

2025-05-21

google的数据清洗工具

内涵清理工具安装包,主要用于人工智能训练数据的数据清洗

2025-02-21

用于Http请求抓包,检查请求内容的工具

用于调试web网页请求,可以查看请求内容,请求头等数据的工具

2025-02-21

ML.net检测诈骗短信测试项目

文件内包含训练数据,以及训练好的模型,和模型调用方法

2025-02-18

语音识别项目部分代码提交

语音识别项目部分代码提交

2025-02-07

.net 8使用HangFire实现库存同步Demo

项目采用.net8 +HangFire+Reids+Sqlsugar实现了京东商城,天猫,抖音O2O,B2C等电商平台的库存同步 具体介绍 请前往:https://blog.csdn.net/qq_42455262/article/details/143933229?spm=1001.2014.3001.5501 查看

2024-11-21

C# 实现Redis队列

采用.net7.0\Newtonsoft.Json 序列化工具\StackExchange.Redis Redis工具

2024-08-19

采用领域驱动设计模式封装API

这里采用领域驱动设计思想,以对接中通快递拦截功能为例子,项目结构 Common:公共方法其中主要包含IRequest(请求模型父级接口)、IResponse(返回模型父级接口)、IZTOClient(请求方法父级接口) DataObject:数据交互实体,里面包含了两个文件夹分别是:Request、Response Utility:公共资源,里面包含了签名工具、公用枚举类 UnitTest:单元测试类 下载之后用vs打开点击UnitTest1,先在 Assert.IsNotNull(res);打个断点,之后再鼠标右键点击 “调试测试”

2024-08-01

Nginx负载均衡项目

项目内包含Nginx文件,Nginx官方中文文档,以及用于测试的C#项目, 使用方法: 1、将C#项目解决方案中的两个项目启动起来。 2、安装nginx,并把项目中的nginx文件启动起来,想起的启动方法请参考:https://blog.csdn.net/qq_42455262/article/details/122487787。 2.2、若nginx启动出现异常可使用:tasklist | findstr nginx 命令近行检测。 3、nginx中文文档是向官方申请下载的,里面包含了nginx详细的配置说明,每个配置对应的作用和方法,nginx的工作原理,以及调优方法等。

2024-01-11

Lodop6.226_Clodop4.118.zip

打印小票需要的j驱动和s包

2021-04-12

layui excel.zip

配合layui将json导出为excel

2021-07-21

things.zip

使用.Net Framework框架,MVC设计模式,利用C#调用事物进行存储。还用到vue-resource的一些知识。

2020-05-20

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

TA关注的人

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