自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(348)
  • 资源 (18)
  • 收藏
  • 关注

原创 freeswitch二、freeswitch之注册,呼叫接听测试

在上一篇文章中讲解了freeswitch的安装方法,安装完后测试了和数据库的交互,下面就要测试一下freeswitch的功能了。

2022-09-23 14:42:08 2820 5

转载 ffmpeg中PTS和DTS

计算视频长度: time(秒) = st->duration * av_q2d(st->time_base) ffmpeg内部的时间与标准的时间转换方法: ffmpeg内部的时间戳 = AV_TIME_BASE * time(秒) AV_TIME_BASE_Q=1/AV_TIME_BASE av_rescale_q(int64_t a, AVRational bq, AVRational cq)函数 这个函数的作用是计算a*bq / cq来把时间戳从一个时间基调整到另外一个时间基。PTS和DTS的时间基。

2022-09-22 14:53:56 1692

原创 linux下网卡多IP静态IP

修改/etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.0.36netmask 255.255.255.0auto eth0:1iface eth0:1 inet staticaddress 192.168.10.46netmask 255

2022-04-15 17:38:19 304

原创 freeswitch一、ubuntu16.04安装freeswitch以及ODBC使用mysql

安装freeswitch下载地址:http://files.freeswitch.org/freeswitch-releases/选择下载版本freeswitch-1.8.5.tar.gz ,下载完成后拷贝到/usr/local/src解压缩cd /usr/local/src 然后解压freeswitch-1.8.5.tar.gzsudo tar -xvf freeswitch-1.8.5.tar.gz先更新软件包sudo apt-get updatesudo apt-get instal

2022-04-06 19:31:07 2923

原创 记一次阿里云上UBUNTU出现端口不能连接的问题

您执行以上命令8080改为对应需要开启的端口。

2025-05-28 13:50:22 90

原创 STM32使用StLink烧写调试

64位主机安装amd64。

2025-05-20 14:32:45 259

原创 电容触摸按键PCB设计

设置阻焊扩展和助焊扩展的值为负值,这个值就是圆形直径的一半,如果是方形的话,就是长的一半。电容触摸按键其实就是一个没有锡膏层和阻焊层的焊盘,或者就是一小块铺铜区域。a、选择铺铜,可以选择圆形,或者矩形等都可以。设置大小为10mm的圆形,顶层的焊盘。2、使用铺铜直接制作电容触摸按键。图中的方格就是铺铜出来的触摸按键。2、铺铜方式设计电容触摸按键。下面绘制PCB的时候使用。

2025-05-17 14:22:03 386

原创 STM32 CubeMX超详细开发带FreeRtos

在操作系统中,通常使用SVC指令来请求系统调用,而PendSV来进行线程切换时上下文保存动作。刚开始学习操作系统的时候,有点困惑为什么要这样做功能划分,这两个中断都让我有点傻傻分不清楚。后来觉得其实这应该也不算是硬性规定,就是约定俗成这么干,理论上用哪个去申请系统调用和切换上下文都是可以的。这也不是随意猜测的,如下可以看几个例子,在FreeRTOS中第一个任务的调用就是用的SVC,后面就一直是使用PENDSV做上下文切换;而在UCOS和RT-Thread中则是从第一个任务开始就都是使用的PENDSV。

2025-05-15 11:49:22 1066

原创 STM32中断

通过外部中断控制一个灯亮灭exti.h/* 引脚 和 中断编号 & 中断服务函数 定义 */

2025-05-10 17:05:39 795

原创 通用外设驱动模型(四步法)

【代码】通用外设驱动模型(四步法)

2025-05-09 17:21:33 472

原创 GPIO的8种模式分析

但是当外部输入低电平时,端口处又会被拉为低电平,此时传入IDR寄存器的也是低电平,输入高电平的话就没什么变化。但是当外部输入高电平时,端口处又会被拉为高电平,此时传入IDR寄存器的也是高电平,输入低电平的话就没什么变化。空闲时,IO状态不确定,处于一种高阻态,当外部输入高电平就会变成高电平,输入低电平就会变成低电平。将输入的高低电平状态存入输入数据寄存器(IDR),CPU读取IDR寄存器就可以。空闲时,由于上拉电阻打开,会将输入的引脚拉为高电平。空闲时,由于下拉电阻打开,会将输入的引脚拉为低电平。

2025-05-09 15:05:12 155

原创 STM32开发GPIO

General Purpose lnput Output,即通用输入输出端口,简称GPIO作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出。

2025-05-07 17:25:52 231

原创 STM32开发printf函数支持

用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机简单说:就是通过仿真器实现开发板在电脑上的输入和输出一般我们:不使用半主机模式!!!方法一:微库法在魔术棒→Target选项卡,勾选:Use Micro LlB,即可避免半主机模式方法二:代码法1个预处理、2个定义、3个函数1、,确保不从C库中使用半主机函数_FILE结构体,避免HAL库某些情况下报错,避免编译报错_ttywrch_sys_exit和等三个函数。

2025-05-07 17:12:57 1172

原创 WPS中excel如何进行设置打印效果

1、在页面中进行预览和设置,选择打印区域,框选想要打印的位置。3、在打印预览中进行设置打印效果,然后再进行打印。2、然后选择打印预览。

2025-05-06 14:19:18 203

原创 STM32配置系统时钟

STM32为了低功耗,一开始是关闭了所有的外设的时钟,所以外设想要工作,首先就要打开时钟,所以后面在使用外设的时候必须先用这个宏打开相应的时钟,比如打开GPIOA、ADC等外设的时钟。1、先配置HSE_VALUE,先告诉HAL库实际高速外部晶振是多少MHz的。3、sys_stm32_clock_init 函数(F1)2、HAL_RCC_ClockConfig函数(F1)1、HAL_RCC_OscConfig()函数。先配置系统时钟,后面的总线才能使用时钟频率。2、在启动文件.s中,在复位函数。

2025-04-21 00:06:16 913

原创 STM32时钟树

STM32为了低功耗,一开始是关闭了所有的外设的时钟,所以外设想要工作,首先就要打开时钟,所以后面在使用外设的时候必须先用这个宏打开相应的时钟,比如打开GPIOA、ADC等外设的时钟。HSE高速外部时钟源、HSI高速内部时钟源,为什么会有两个,有了HSI高速内部时钟源,为什么还需要HSE高速外部时钟源,这两个都接8M的晶振。外部时钟一般需要接一个时钟源,也就是晶振,这个需要外接,增加一定的成本,但是更加稳定,比内部时钟稳定精确。3、使能外设时钟的宏:__HAL_RCC_PPP_CLK_ENABLE()

2025-04-20 23:24:46 355

原创 STM32单片机C语言

去看一下宏定义x?x?dox??x?x?x?x?x?x?x?x?x?;x?while0x?建议大家使用来 构造宏定义,这样不会受到大括号、分号、运算符优先级等的影响,总是会按你期望的方式调用运行!假设LED1(1)参数为真 ,那么就执行第一句,如果是LED1(0),那么就执行第二句。

2025-04-18 16:43:37 626

原创 keil5软件配置以及使用技巧

前面设置了编码格式,文本属性,代码提示和语法检测这些,他们会存储在global.prop文件中,此时我们只需要将这个文件保存下来,当重新安装keil5的时候再拿出来替换上就能使用了。下面是设置字体符合C/C++标准的字体,然后 数字 设置的大小和颜色是第三个框内Font的,Size大小是10,颜色是红色。下面是设置C/C++中程序文本的字体和颜色,第三个框Font中设置为大小10,颜色黑色。如果出现自己误操作关闭了很多需要的小窗口,那么可以通过恢复设置进行还原。2、快速定位函数或变量被定义的地方。

2025-04-18 15:15:01 397

原创 单片机基础知识-STM32

其中电脑内存的速度40GB/S怎么算的呢?首先X86架构的芯片一般是64位的,64/8 = 8 Byte(字节),8Byte*5GHz = 40GB/S由于冯诺依曼架构中程序指令和数据被存储在同一个存储器中,程序和数据共用一条地址和数据线,这就要求分时复用地址和数据线,效率偏低哈佛结构就将程序指令和数据存储到两个独立的存储器中,程序和数据的地址线和数据线都分开了,这样执行起来效率高,但是占用引脚等的资源STM32系列微控制器采用的是‌哈佛结构‌。

2025-04-12 13:24:51 516

原创 什么是中性线、零线、地线,三相四线制如何入户用电

地线和零线的区别:零线接入用电设备的内部回路,在低压220伏电路中,和火线承载一样的工作电流,它保护设备安全。地线与大地之间的阻值小于等于4欧姆为合格,并且地线系统在每隔20~30米之间要做重复接地,以防止地线的某处接地极断开,漏电电流通过接地系统从别的接地极流入大地,在变压器三相电侧,按照星形连接法,有一个中心点,这根线引出来的线接不接地:不接地就是中性线,接地就是零线。这多出来的一根是从三相电源的中性点引出来的,就是中性线或者零线,此时可以看到接入大地了,可以看做零线。在变压器的输出端出现了四根线。

2025-04-10 21:19:25 405

原创 三相电为什么没零线也能通电

3、从曲线图可以看出,随意的一点,其中一相电压等于等于另外两相电压之和,但是方向是相反的,相互抵消为0电压。由于其中一相电压,等于另外两相电压之和,假设其中一相如果是0电压可以去除,只要求出两相之间的电压差就可以了。单相电的电压:火线220V减零线0V等于220V,但是三相电之间没有零线,所以是三相火线之间的相差电压。其中一个电枢的情况就做一相,在这一相的发电中,可以看到需要零线,因为需要回路,一根火线不能成为回路。上面就是去除了一相,只留下了两相,此时就可以计算电压差了,计算电压差需要用到向量的概念。

2025-04-10 21:09:18 445

原创 wps中如何对word中的表格序号进行自动生成

选择自定义编号。

2025-03-29 11:14:03 516

原创 stm32f103 boot引脚

在STM32F103微控制器中,配置BOOT引脚通常是为了进入系统的引导模式(Bootloader模式)或用于特定的调试和固件更新操作。STM32F103系列微控制器通常有两个BOOT引脚:BOOT0和BOOT1。它们的默认配置决定了设备在启动时如何寻找和执行代码。BOOT0:这是一个关键的引脚,用于决定设备启动时从哪种存储介质加载代码。当BOOT0引脚连接到VDD(高电平)时,设备从系统存储器(通常是内部Flash)启动。当BOOT0引脚连接到VSS(低电平)时,设备尝试从Bootloader区域启动

2025-03-20 08:54:51 1085

原创 Microsoft Edge中登录海康威视摄像头显示当前浏览器不支持解决方法

1、当使用IP登录海康威视摄像头的时候,浏览器显示了当前浏览器不支持解决方法。2、解决方法:在设置中的默认浏览器里面添加一个页面,然后选择允许,然后重启。

2025-03-18 16:54:51 198

转载 桥接、交换机、路由器、网桥、网关的概念

现在推出的无线路由器,在接上WAN的网线后,路由器会自动处理生成无线信号也就是wifi,可以供有无线网卡的设备访问互联网。路由器和交换机之间有一层包含关系,路由器可以满足交换机一切功能,但交换机没法满足路由器的功能。DDNS(Dynamic Domain Name Server,动态域名服务):DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现内网穿透。

2025-03-15 16:58:33 380

原创 记录一次wifi版有人物联串口服务器桥接网络调试经过

目前的项目想法是将一台设备IP192.168.3.56的设备通过网口发给串口服务器,然后串口服务器通过桥接,将这个数据通过wifi路由器转发给另外一台设备IP为192.168.3.17,其中串口服务器的IP为192.168.3.16,wifi路由器组成的局域网的网管192.168.3.1。7、这样双方就可以互传消息了,这种情况就是串口服务器和一号设备进行桥接,使得和串口服务器同在一个wifi局域网下的设备都可以访问一号设备了。5、将二号设备连接到路由器的wifi上,设置ip为192.168.3.17。

2025-03-15 16:08:58 386

原创 Qt/C++中的多线程同步机制详解

同步操作就像排队一样,你做一件事,得等到它完成才能继续做下一件事。比如你在电商网站购物,点了“购买”按钮后,系统会马上查库存,这时候你会看到一个加载的提示,必须等到库存查完才能继续支付。如果库存不够,系统会报错,你就不能继续操作了。异步操作则不同,你做一件事,不需要一直等着,可以继续做其他事情。比如你付完钱下单后,系统会给你发订单确认邮件。这个过程是异步的,你不用等着邮件发完,可以继续浏览网站或者做其他事情。邮件在后台自己发,就算发邮件出问题,也不影响你购物或者订单的有效性。异步。

2025-03-05 14:42:42 687

原创 QT多线程中的全局变量访问:为什么修改没有立即同步,需要使用锁或者原子操作

在多线程编程中,多个线程访问同一个全局变量时,可能会遇到内存可见性的问题:即一个线程的修改,另一个线程未必能立即看到。线程B访问 counter 的值:线程B读取counter时,可能会读取到自己缓存中的值(比如还是0),而不是线程A刚刚修改的10。这里我们使用了std::atomic来声明counter,这意味着对counter的所有操作都是原子的,且能够保证在不同线程之间修改的数据能够立即同步。为了确保线程B能够看到线程A的修改,我们需要使用一些同步机制,保证所有线程在访问共享变量时能够看到最新的值。

2025-03-05 13:11:00 473

原创 TCP粘包

在基于 TCP 协议的网络通信中,当发送方连续发送多个数据包时,接收方可能会出现一种异常情况:接收到的数据包并非按照发送方的发送顺序和边界进行准确区分,多个数据包的内容粘连在一起,这就是所谓的 TCP 粘包问题。打个比方,假设发送方要发送两条消息:“Hello” 和 “World”。正常情况下,接收方应该分两次接收到这两条完整且独立的消息。

2025-02-18 13:58:10 744

原创 Linux后台启动命令nohup并且MobaXterm后台启动断网也不关闭软件

nohup主要作用就是可以在后台运行,并可以选择将日志输出到指定文件。如启动一个程序,若使用./demo的方式启动程序当窗口关闭的时候程序也停止了,而且日志会直接输出到控制台非常不直观,nohup启动就可以解决这两个问题。

2025-02-18 10:31:24 366

原创 Qt使用pri和pro文件进行模块化编程

假如我想要做一个功能,这个功能用代码模块化实现出来,方便将来移植,比如音视频播放器的界面,将来想要在其他工程使用时,只需要将widget提升为音视频播放界面即可。当我们其他工程需要这个功能时,我们在调用的时候直接添加源码吗?1、假设举个例子,假设想要做两个模块化的功能,分别是加法和减法。在widget文件中可以直接使用上面两个的头文件了。3、在calcator中使用上面两个pri文件。2、将加法写在一个类中,减法写在另一个类。addModule.pri文件,作为加法。subModule.pri文件。

2025-02-13 16:04:00 376

转载 Qt文本高亮显示QSyntaxHighlighter

在 MyHighlighter 的构造函数中,我们定义了多个高亮规则。每个规则包含一个正则表达式和一个格式。我们用不同的格式来高亮显示时间、温度、湿度以及报警状态:时间:匹配方括号内的内容(如 [12:30]),设置灰色字体和浅灰色背景。温度:匹配 温度 字符串,使用紫色字体。湿度:匹配 湿度 字符串,使用紫色字体。报警状态:根据报警类型(正常、过低、过高)设置不同的颜色和字体样式。

2025-02-13 09:34:47 490

原创 Qt在函数中更新 UI 或重新绘制图形用replot和QTimer::singleShot的区别

在 Qt/C++ 中,有时你需要在某个函数中更新 UI 或重新绘制图形。在这种情况下,你可以选择直接调用更新函数(如 replot()),或者通过 QTimer::singleShot 来延迟执行更新操作。两者的主要区别在于执行时机、阻塞与非阻塞以及对事件循环的影响。

2025-02-13 08:30:32 488

转载 Qt多线程技术【线程池案例】:QRunnable 和 QThreadPool

线程池(ThreadPool)是一种用于管理和复用线程的技术。在多线程编程中,我们经常需要处理大量的小任务,频繁地创建和销毁线程会带来性能上的开销。线程池通过预先创建一定数量的线程来处理任务,任务完成后线程会被返回到线程池中等待下一次使用,从而避免了创建新线程的开销。线程池可以根据任务量动态地调整线程的数量,保持一定数量的线程处于空闲状态,并且通过合理调度任务来提高并发执行的效率。Qt为我们提供了 QThreadPool 和 QRunnable 类来轻松实现线程池机制。

2025-02-11 16:06:28 1002

原创 linux系统中软件的看门狗

当软件由于某些原因退出了,比如内存崩溃这种,可以再次自动重启软件。linux系统中软件的看门狗。

2025-02-10 11:01:02 99

原创 如何搜集一家公司的信息

1、国家企业信用信息公示系统。2、中国裁判文书的官网。3、中国执行信息公开网。

2025-02-06 14:53:55 167

原创 stm32开发之代码硬件仿真

点击Settings以后,就可以看到你的仿真器了,port这里需要设置一下,看一下自己的仿真器和板子的接口是SW还是JTAG。全速运行一般和断点配合使用,程序跑到断点位置会停下来,跳过断点会继续运行,停止全速运行。2、在需要的地方打击打上断点,然后全速运行,程序会在断点处停止。6、查看外设寄存器的值,比如DMA,ADC,GPIO等。7、还可以查看内核的外设的值,比如中断向量控制表。5、查看变量值,右键变量,然后添加到watch。4、进入函数内部运行,单步运行,跳出函数。3、程序运行到光标的位置。

2024-12-26 17:14:11 584

原创 硬件之DCDC开关电源

D12就是一个防反接二极管(肖特基二极管),也可以用MOS管,二极管比较简单但是大概有0.3V的压降,但是如果负载持续有3A的输出,这样0.3*3 = 0.9W,所以当要求输出电流比较大的时候,可以考虑使用MOS防反接,功耗小。电感的选型就是参考上面芯片手册给的值,就是L1的值15uH,但是由于负载的关系我们希望输出3A的电流,选择了4.7uH的电感。这里的D13是一个双向的TVS管,如果是单向的就要放在D12和R64中间,否则的话,一旦电源输入反接,单向的TVS就会烧坏。3、功率,查看输出的电流。

2024-12-20 16:46:04 679

原创 硬件之LDO线性电源

对于功耗就是P = (Vin - Vout)* I ,所以当压差越大,损耗越大,所以一般LDO芯片选取时尽量选择压差小的,或者电流小。

2024-12-20 13:55:59 379

原创 FreeRtos开发之实战一

LED1用来做运行指示灯间隔一秒闪烁一次,优先级最低osPriorityLowKEY任务中按键1用来打印信息,按键2、3、4组合事件组,进行事件组的触发Display就是数码管的显示,通过软件定时器,每隔一秒钟通知这个任务来刷新显示Event_Sync就是事件组同步的任务了,就是当按键2、3、4事件都发生了,就会通知这个任务,执行下一步操作Modbus:单片机通过485接口,使用串口空闲中断加DMA的功能,通过二值信号量通知Modbus,然后Modbus任务进行协议的解析。

2024-12-19 16:56:33 1205

LTC6813均衡电路原理图

LTC6813均衡电路原理图

2025-05-09

Qt中的两种线程启动运行方式

Qt中的两种线程启动运行方式

2024-04-07

备忘的软件之mpuclient

备忘的软件之mpuclient

2023-12-12

rufus3.10,用于制作U盘启动项

rufus3.10,用于制作U盘启动项

2023-07-03

嵌入式linux搭建nfs服务器必备的两个工具:nfs-utils,portmap,以及S60nfs文件

嵌入式linux搭建nfs服务器必备的两个工具:nfs-utils,portmap,以及S60nfs文件

2023-05-31

Qt实现DFA敏感词过滤

Qt实现DFA敏感词过滤

2023-03-08

编译Opencv和opencv-contrib缺失的boostdesc-bgm.i

编译Opencv和opencv_contrib缺失的boostdesc_bgm.i

2023-02-11

ubuntu下使用SDL和FFmpeg进行播放视频文件和实时流媒体

ubuntu下使用SDL和FFmpeg进行播放视频文件和实时流媒体

2022-10-27

用于测试freeswitch视频通话的eyeBeam软件

用于测试freeswitch视频通话的eyeBeam软件

2022-09-23

linux下ffmpeg和SDL可以播放视频文件,也可以直接拉流播放

linux下ffmpeg和SDL可以播放视频文件,也可以直接拉流播放

2022-08-16

linux下多线程服务器编程

整个程序的架构就是一开始创建一个线程,在这个线程里面做下面几个操作: 1、调用socket,创建监听客户端的socket 2、设置socket属性,端口可以重用 3、调用bind,绑定地址和端口 4、调用listen,开始监听 5、调用while(1)循环 6、 每新连接一个就创建一个线程用来做连接处理,在线程中接收数据进行处理

2022-07-28

Qt可用的一些中文字库

Qt可用的中文字库,用于在银河麒麟使用

2022-07-25

Qt写的支持多个客户端连接的服务器

Qt写的服务器端,可以根据客户端发来的json解析出设备,然后放在客户端链表,这样可以更好的维护多个客户端的连接,每次都会对客户端进行连接状态检测,发现没有连接的就会被剔除,并且可以使用这个方法设置多种平台的设备,比如可以将嵌入式终端设置一个链表,然后windows或app设置一个链表,这样可以互相直接多平台转发

2022-07-20

qt写的tcp客户端,可以连接公网ip,然后通过json传送一条指令告诉服务器自身的设备运行的平台(windows)

qt写的tcp客户端

2022-07-20

飞腾上银河麒麟编译qt5.9.8,使用aarch64-linux-gnu-g++,可以在飞腾直接编译,也可交叉编译

飞腾上银河麒麟编译qt5.9.8,使用aarch64-linux-gnu-g++,可以在飞腾直接编译,也可交叉编译

2022-07-15

Qt可用轻量级日志,C/C++

Qt可用轻量级日志,C/C++

2022-06-14

使用readline的一个实例

readline

2022-07-11

Qt自定义弹窗,可阻塞,可以点击确定和取消并且两个按键可以做不同操作,界面可根据需求修改

Qt自定义弹窗,,可阻塞,可以点击确定和取消并且两个按键可以做不同操作,界面可根据需求修改

2022-06-17

Qt在linux和windows通过QStorageInfo类来获取某个特定磁盘信息,包括大小

Qt在linux和windows通过QStorageInfo类来获取某个特定磁盘信息,包括大小

2022-06-13

QT数据库加密的DEMO

QT数据库加密的DEMO

2022-06-09

QT数据库加密,编译后生成QT的库,可直接使用

QT数据库加密,编译后生成QT的库,可直接使用

2022-06-09

ubuntu下QT调用百度地图的HTML文件,在界面显示地图,可以输入经纬度进行定位

ubuntu下QT调用百度地图的HTML文件,在界面显示地图,可以输入经纬度进行定位

2022-06-01

QT程序打包成deb文件的一个目录结构,放这里用来备忘,前面有打包成deb的文章

QT程序打包成deb文件的一个目录结构,放这里用来备忘,前面有打包成deb的文章

2022-05-31

ffmpeg拉流后保存为MP4文件

ffmpeg拉流后保存为MP4文件

2022-05-05

pjsip库的头文件文件夹

很多时候交叉编译后的pjsip的include包中会有很多的头文件,当我们全部使用这些头文件时,很容易造成里面的一些函数或者定义与编译器或系统中的定义冲突而无法编译,所以我们只需要一部分核心的头文件就可以

2022-04-20

飞腾交叉编译环境搭建之交叉编译工具链配置

飞腾交叉编译环境搭建之交叉编译工具链配置

2022-04-08

空空如也

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

TA关注的人

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