自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

车子(chezi)

熟能生巧,功不唐捐

  • 博客(304)
  • 资源 (8)
  • 收藏
  • 关注

原创 三阶魔方有多少种状态

魔方有多少种状态?先给出答案:为什么是这个数字呢?三阶魔方总变化数可利用乘法原理计算,具体方法是:8 个角块可以互换位置(8!),也可以旋转(3),所以分子里有8!∗38。

2023-06-23 17:21:18 861

原创 Typora 页内跳转的语法

页内跳转一般有 2 种情况:1. 跳转到某个标题处2. 跳转到正文的某个地方

2023-01-08 22:41:50 1430 1

原创 sizeof 的结果取决于什么

本文讨论的是 C 语言中的一个运算符:sizeof注意,是运算符,不是函数。sizeof 的结果是在编译时就可以确定的,于是有人认为,sizeof 的结果取决于编译器。这样说也对,但是我认为,C 和 C++ 旨在成为高效的语言。为了实现最大效率,C 或 C++ 实现必须考虑源自底层硬件的某些因素。出于这个原因,确保每种基本类型都基于硬件直接支持的某种表示是很有意义的。因此,sizeof 的结果取决于硬件。可以这么说,sizeof 的结果取决于处理器(更具体地说,ISA,指令集架构,例如 x86 和 x

2022-03-08 19:41:21 1584

原创 FreeRTOS 的命名规则

文章目录变量函数宏定义结语如果是刚接触 FreeRTOS,看到它的命名,简直是匪夷所思,犹如天书。所以,还是有必要了解它的命名规则。变量uint32_t 定义的变量都加上前缀 ul。 u 代表 unsigned 无符号,l 代表 long 长整型。例如:static portFORCE_INLINE uint32_t Atomic_CompareAndSwap_u32( uint32_t volatile * pulDestination, uint32_t ulExchan

2022-02-13 21:04:38 2126

原创 链表之CIRCLEQ

文章目录头文件例子代码分析CIRCLEQ_ENTRY 和 CIRCLEQ_HEADCIRCLEQ_HEAD_INITIALIZERCIRCLEQ_FIRST 和 CIRCLEQ_LASTCIRCLEQ_PREV 和 CIRCLEQ_NEXTCIRCLEQ_INITCIRCLEQ_EMPTYCIRCLEQ_INSERT_TAILCIRCLEQ_INSERT_HEADCIRCLEQ_INSERT_AFTERCIRCLEQ_INSERT_BEFORECIRCLEQ_FOREACHCIRCLEQ_FOREACH_R

2022-02-13 13:10:31 1451

原创 链表之TAILQ

文章目录TAILQ 介绍头文件举例代码分析TAILQ_ENTRY 和 TAILQ_HEADTAILQ_INITTAILQ_INSERT_HEADTAILQ_INSERT_TAILTAILQ_INSERT_AFTERTAILQ_INSERT_BEFORETAILQ_REMOVETAILQ_FOREACHTAILQ_FOREACH_REVERSE参考资料TAILQ 介绍TAILQ 队列是 FreeBSD 内核中的一种队列数据结构,在一些著名的开源库中(如 DPDK、libevent)有广泛的应用。TAI

2022-02-13 13:02:33 2150

原创 链表之STAILQ

文章目录STAILQ 示意图接口和实现举例代码分析STAILQ_ENTRY 和 STAILQ_HEADSTAILQ_INIT 和 STAILQ_INSERT_HEADSTAILQ_INSERT_TAILSTAILQ_INSERT_AFTERSTAILQ_REMOVESTAILQ_FIRST 和 STAILQ_REMOVE_HEADSTAILQ_FOREACHSTAILQ_NEXTSTAILQ_EMPTYSTAILQ_LASTSTAILQ 示意图STAILQ 和 LIST 的不同是,head 里面有个指

2022-02-13 12:33:22 2824

原创 链表之LIST

文章目录LIST 示意图接口和实现举例代码分析LIST_ENTRY 和 LIST_HEADLIST_INIT 和 LIST_INSERT_HEADLIST_INSERT_AFTERLIST_INSERT_BEFORELIST_FOREACHLIST_REMOVELIST_FIRST 和 LIST_NEXT参考资料上一篇博文 链表之SLIST_车子(chezi)-CSDN博客 说过,queue.h 里面有 5 种链表,分别是:SLISTLISTSTAILQTAILQCIRCLEQ这篇文章说

2022-02-13 12:29:20 1155

原创 链表之SLIST

文章目录背景SLIST 简介接口和实现举例代码分析SLIST_ENTRY 和 SLIST_HEADSLIST_INITSLIST_INSERT_HEADSLIST_INSERT_AFTERSLIST_REMOVESLIST_FIRST 和 SLIST_REMOVE_HEADSLIST_FOREACHSLIST_EMPTY 和 SLIST_INIT附录 queue.h参考资料背景对于 C 语言,在编程中需要用到链表时,通常需要程序员重新设计链表的结构体。这样做不仅麻烦,且需要验证代码的正确性,对于每个阅读

2022-02-13 12:22:33 2710 1

原创 如何复制带格式的Notepad++文本?

首先选中要复制的文本,然后如下图操作最后粘贴到 word 里面

2022-02-05 14:14:20 1835

原创 使用indent格式化代码

这是一款 Linux 上的工具。下载 indent 省略。例如要把 xxx.c 格式化,我习惯用indent -npro -kr -i4 -ts4 -sob -l80 -ss -ncs -cp1 -br -nce -nut xxx.c -o xxx1.c查看/usr/src/linux-headers-<版本>/scripts/Lindent文件 ,可以看到一行代码:indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1这一行就是 lin

2022-02-01 20:07:38 1307

原创 问题解决: 解释器错误: 没有那个文件或目录

执行一个我写的 perl 脚本,命令行报错:/usr/bin/perl^M: 解释器错误: 没有那个文件或目录解决方法:sed -i 's/\r$//' xxx.pl分析:UNIX和Linux使用“\n”换行,而Windows用“\r\n”(不是\n\r,已验证).推测脚本文件在windows下编辑过。用 sed 命令把文本中的 \r 去掉。sed -i 's/\r$//' filename...

2022-01-17 21:22:00 3863

原创 GNU C 中的零长数组

文章目录什么是零长数组(Arrays of Length Zero)零长数组的使用零长数组和指针的区别定义什么类型的零长数组什么是零长数组(Arrays of Length Zero)如果我们在程序中定义一个零长度数组,你会发现除了 GCC 编译器,在其它编译环境下可能就编译通不过或者有警告信息。咱们看一个很简单的例子:int buffer[0];int main(void){ printf("%d\n", sizeof(buffer)); return 0;}你会发现,输

2022-01-17 18:58:16 926

原创 C语言中的匿名结构体

在 C 的 C11 标准中,添加了匿名结构和匿名联合。匿名联合/结构也称为未命名联合/结构,由于没有名称,因此不会创建它们的直接对象(或变量),通常我们在嵌套结构或联合中使用它们。An anonymous struct declaration is a declaration that declares neither a tag for the struct, nor an object or typedef name. Anonymous structs are not allowed in C++

2022-01-16 23:32:15 4986 1

原创 为什么1900年不是闰年

缘起看到一段 C++ 的程序,为了介绍逻辑运算符,让判断一个年份是不是闰年。简而言之,如果某年的末尾不是 00,那么能整除 4 就是闰年;如果末尾是 00,那么能整除 400 才是闰年。我就纳闷了,不是 4 年一闰吗?既然 1896 年是闰年,再过 4 年就是 1900 年,1900 怎么就不是闰年了?其实这个困惑在我上小学时候就有了。原理一年的时间(地球绕太阳公转周期),精确到秒(天文观测)是:365天5小时48分45.5秒 = 365.24219328703703703(703的循环…)天

2021-11-28 22:28:07 2283

原创 sizeof(函数名)=?

sizeof(函数名)=?直接上代码#include <stdio.h>int foo(void){ printf("hello\n"); return 0;}int main(void){ printf("%lu\n", sizeof(foo)); printf("%lu\n", sizeof(&foo)); printf("%lu\n", sizeof(foo()));}假设保存为文件 1.c编译:$ gcc -Wa

2021-10-31 22:36:09 1009

原创 dokuwiki 的管理和使用(补充)

文章目录我的安装环境如何修改上传文件的大小限制如何修改可上传的文件类型插件 medialist如何恢复删除的页面如何修改左上角的 logo 图片我的安装环境Apache2.4.39php7.3.4ntswindows10如何修改上传文件的大小限制根据我的环境,打开 D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.ini修改 post_max_size=50M比如把 50 改成 100如何修改可上传的文件类型在 dokuwiki/conf/m

2021-10-10 10:04:06 1312

原创 BLE 加密详解

文章目录求 MICB0NonceB1B2 和 B3计算公式代码求加密数据Ai计算公式代码遗留问题参考资料完整代码BLE 协议里面的加密,可以用硬件实现,也可以用软件实现。本文讨论如何用软件实现,借用开源代码。求 MICMIC 占 4 个字节。先说如何计算 MIC。B0B0 = 0x49 || nonce || lengthB0 的格式是协议规定的注意:||表示串联,左边是低字节,右边是高字节length 占 2 个字节Nonce低 39 bits 是 packetCounter,然后

2021-10-06 20:42:00 6212

原创 dokuwiki 的管理和使用

文章目录版本控制页面间互相引用插件 indexmenu增加页面删除页面上传文档页面里引用文件文档管理用户管理权限管理dokuwiki 很适合作为中小团队的知识库,在公司内网部署。考虑到我所在公司的现状,我认为 dokuwiki 要有以下的功能:知识管理。用于知识的沉淀和分享,每个人都可以创建页面,也可以多人协同编辑页面;历史版本可追溯,可恢复。页面之间可以互相引用。树形结构。阳志平老师在他的博文中提到:我提过多次的 MIT 认知科学家 Joshua B. Tenenbaum 发表在 PN

2021-10-06 14:41:04 6208

原创 dokuwiki 部署笔记

文章目录dokuwiki 是什么dokuwiki 在 Windows 上的安装方法一:用 XAMPP方法二:用 PHPstudy创建目录和页面修复不能显示以中文命名的页面如何安装插件插件推荐Add New Pageindexmenumoveimgpastecolorsyntaxhighlighter4discussioncodemirrortagwrapedittablefilelistdokuwiki 是什么任何 wiki 引擎(也称为 wiki 软件,以下简称引擎)都是用来支持创建、协同编辑、存储

2021-10-06 09:53:42 2143

原创 详解基于 Cortex-M3 的任务调度(下)

文章目录工程说明实验结果代码讲解时钟节拍任务切换 task_switch()PendSV_Handler任务的代码重要的全局变量main() 函数代码下载在 详解基于 Cortex-M3 的任务调度(上)_车子(chezi)-CSDN博客 这篇文章中,我们已经有了理论基础,这篇文章,我们写代码实践一下。代码基于网友提供的工程和书中的参考代码修改而成,不求面面俱到,只求讲清原理。工程说明我用的是 STM32F103 这款芯片,工程结构如图:User 下面是串口的裸板驱动,调用官方的库函数,非常套路

2021-09-25 21:49:53 1097

原创 详解基于 Cortex-M3 的任务调度(上)

文章目录什么是任务任务及其内存结构上下文切换CM3 的寄存器组CM3 的 CONTROL 寄存器双栈CM3 的中断入栈取向量更新寄存器异常返回切换的时机切换非基级线程模式(补充材料)代码什么是任务对于嵌入式 RTOS,我觉得任务(task) 其实是线程。为什么这样说呢?首先,有几个知识点要明确:进程是资源分配的最小单位,线程是 CPU 调度的最小单位。一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。资源分配给进程,同一进程的所有线程共享该进程的所有资源。处理器分给线程,即

2021-09-25 09:43:57 814

原创 用python实现AES加密解密

文章目录背景测试数据代码遗留问题背景以蓝牙官方协议(V5.0)中的 sample data 为例子,看看怎么用 python 实现 AES 加密和解密。测试数据我们看看怎么由 SK 和 B0 得到 X1,然后从 X1 得到 B0代码from Crypto.Cipher import AES # install pycryptodomeimport binasciiSK = binascii.unhexlify('99AD1B5226A37E3E058E3B8E27C2C666')

2021-09-20 23:06:13 1783

原创 C语言16进制字符串转数字

假设有一个十六进制字符串,“99AD1B5226A37E3E058E3B8E27C2C666”,如何把它按照字节来切分,然后转成整型?也就是说转换成 0x99, 0xAD, 0x1B, …代码实现C 语言参考代码:#include <stdio.h>#include <stdlib.h>#include <string.h>char *key = "99AD1B5226A37E3E058E3B8E27C2C666";void main(void){

2021-09-19 11:27:45 4316

原创 python 多线程中的 join 和 daemon

文章目录第一关:简单的 join()第二关:join(timeout)第三关:setDaemon(True)第一关:简单的 join()import threadingimport timedef run(): time.sleep(2) print('当前线程的名字是: ', threading.current_thread().name) time.sleep(2)if __name__ == '__main__': print('这是主线程:', th

2021-08-15 11:41:26 935

原创 强符号与弱符号

文章目录强符号不允许多次定义强弱可以共存都是弱符号简而言之,在 C 语言中,函数和初始化的全局变量(包括显示初始化为 0)是强符号,未初始化的全局变量是弱符号。在链接器进行链接的时候,有下面的规则强符号不允许多次定义(即不同的目标文件中不能有同名的强符号)强弱可以共存,共存时,强覆盖弱都是弱符号时,选择占用空间最大的;我们举例子说明。强符号不允许多次定义针对 1,代码片段是:// a.c int tea = 2; // strong// b.cint tea = 1; // s

2021-06-13 10:31:42 891 1

原创 快速排序的时间复杂度分析

快速排序的时间复杂度分析先说结论:最坏情况:O(N2)O(N^{2})O(N2)最好情况和平均情况:$ O(NlogN)$下面开始分析。假设一个序列共有 N 个元素,基本的快速排序的关系式是:T(N)=T(i)+T(N−i−1)+cNT(N) = T(i) + T(N -i -1) + cN T(N)=T(i)+T(N−i−1)+cN其中 i 表示一次划分后,枢纽所在的位置。对一个有 N 个元素的序列排序,其时间可以划分为 3 部分:1)把枢纽放到合适的位置,即其左边的数都小于等于它,右边的

2021-04-03 21:45:19 9741 1

原创 快速排序

文章目录原理讲解C 语言实现添加调试信息时间复杂度原理讲解假设我们现在对“6 1 2 7 9 3 4 5 10 8”这 10 个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被“基准数”这个名词吓到了,其实就是一个用来参照的数,看到后面你自会明白)。我有选择困难症,就让第一个数 6 作为基准数吧。接下来,需要将这个序列中所有比基准数 6 大的数放在它的右边,比基准数 6 小的数放在它的左边,类似下面这种排列:3 1 2 5 4 6 9 7 10 8如

2021-04-03 21:36:06 613

原创 python 遍历目录或文件

python 遍历目录或文件如果想得到某个目录下面的所有文件名,用 python 怎么做?先看代码:import os,sysdef explore(dir): for root, dirs, files in os.walk(dir): print('debug: ', root, dirs, files) # 这行用来调试,帮助理解代码 for file in files: path = os.path.join(root

2021-03-14 10:33:17 1491 1

原创 打印带颜色的字符

文章目录先体验一下原理简述ANSI 转义序列控制文本颜色实验一:用 shell 脚本控制颜色实验二:用 C 语言控制颜色参考资料先体验一下在终端输入下面的代码,并回车。echo -e "\033[1;31m Hello World! \e[0m"效果是这样的:再来一个:echo -e "\033[4;47;31m带下划线的白色背景的红字 \033[0;1;41;32m高亮的红色背景的绿字\033[0m"效果是这样的:原理简述ANSI 转义序列ANSI 转义序列(ANSI

2021-03-13 22:50:54 617

原创 批量保存网页

文章目录背景工具SeleniumgeckodriverPyUserInput工具下载和安装代码总结背景之前已经写了 2 篇文章:备份 CSDN 博客(上)备份 CSDN 博客(下)但是效果都不怎么好,其实还有一种简单粗暴的方法,就是用浏览器下载,批量下载。工具我是 Ubuntu 的操作系统,自带火狐浏览器。要下载 3 个工具:seleniumgeckodriverPyUserInputSeleniumSelenium 是一个用于 Web应用程序测试的工具。Selenium 测试直

2021-02-21 10:08:02 3803 1

原创 备份CSDN博客(下)

文章目录背景fileinput 模块安装 clean-marklinecache 模块下载图片完整代码总结其他备份博客的思路背景在上一篇文章 备份 CSDN 博客(上)中,已经解决了第一个问题——获取所有博文的 URL,这篇博文就讨论如何根据 URL 把文章下载下来,并转换成 markdown 格式。fileinput 模块python 中的 fileinput 模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的 input() 函数有点类似操作文件的 readlines() 方法,区别

2021-02-20 21:50:08 322

原创 备份 CSDN 博客(上)

备份 CSDN 博客(上)背景因为 CSDN 的博客没有批量导出功能,所以我就琢磨写个脚本可以一键备份博客,最好是 markdown 格式。搜了一波,极少有能拿来就用的,那就自己探索吧。思路解析思路很简单:得到每篇文章的链接(URL)根据 URL 下载每篇文章,转换成 markdown 格式囿于篇幅,这篇文章先解决第 1 个问题。其实我不太懂 python 爬虫和前端,算是现学现卖,说得不对的地方,请您指正。如何获得每篇文章的 URL如图所示,我的博客总共有 7 页,第 2 页的

2021-02-16 16:54:39 527 2

原创 网页转 markdown 的工具

文章目录背景准备工作安装 clean-mark如何使用效果展示参考资料背景想把我在 CSDN 的博客备份下来,最好是 markdown 格式。在探索的过程中发现了一款工具——clean-mark它的仓库地址是:https://github.com/croqaz/clean-mark有人问为什么不保存成 html,而是要保存成 markdown 呢?clean-mark 在项目主页已经说得很清楚了:to save interesting articles offline, in a high

2021-02-12 19:37:13 1958 4

原创 搭建 Verilog 仿真环境

搭建 Verilog 仿真环境对于 Verilog 的初学者,有一个仿真环境是必要的。这就好比是刚开始接触 C 语言,连 C 语言的开发环境都没有,怎么学习 C 语言呢,难道靠大脑模拟运行吗?本文介绍如何在 Linux 操作系统(以 Ubuntu 为例)下搭建一个轻量级的 RTL 仿真环境。安装软件要安装 2 个软件sudo apt-get install iverilogsudo apt-get install gtkwave准备代码安装好后可以做个实验。先准备两个文件count.v

2021-01-24 11:24:13 2540

转载 verilog 中的 timescale

原文链接:https://blog.csdn.net/qq_16923717/article/details/81099833timescale 的语法timescale 是 Verilog 中的预编译指令,指定位于它后边的module的时间单位和时间精度,直到遇到新的 timescale 指令或者 resetall 指令。它的语法如下:`timescale time_unit / time_precision假如我们延时 x 个时间单位,那延时的总时间 time = x * time_unit,

2021-01-24 11:20:59 2793

原创 grep --exclude 不起作用

用 grep 查找的时候,如果想在查找范围中排除掉某个目录和文件,怎么做?很简单,用 --exclude=xxxx 或者 --exclude-dir=xxxx(用于目录)举例子$ grep 1111 -r ../a.txt:1111./b.txt:1111111./c.txt:11111222221假如要排除掉文件 a.txt$ grep 1111 --exclude=a.txt -r ../b.txt:1111111./c.txt:11111222221假如要排除掉当前目

2021-01-23 22:50:05 3460

原创 二叉树的构建

文章目录什么是扩充二叉树扩充二叉树的前序遍历二叉树构建:前序 + 中序二叉树构建:后序 + 中序二叉树构建:层序 + 中序二叉树构建:扩充二叉树前序二叉树构建:扩充二叉树后序参考资料先复习一下二叉树的遍历:前序遍历:根结点—>左子树 —>右子树中序遍历:左子树—>根结点 —>右子树后序遍历:左子树 —>右子树 —>根结点如果知道了某个遍历序列,能否还原出那个二叉树呢?要构建一棵二叉树,仅靠前序、中序和后序中的任何一个都不能,因为不能唯一确定一棵二叉树。二叉树

2021-01-01 09:52:40 7841

原创 不带头节点的单链表如何头插(多图易懂)

文章目录缘起带头节点的头插不带头节点的头插错误的代码为什么错误如何修改返回新的头指针二级指针缘起本文想说的是单向非循环链表的头插。单向非循环链表,可以是带头节点的,也可以是不带头节点的。对于前者,代码比较简单,后文会说。对于后者,不带头节点的单向链表的头插,我发现即使有多年工作经验的老鸟,也可能写出错误的代码。带头节点的头插#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef s

2020-11-22 21:22:08 12024 4

原创 main() 函数解析(一)——Linux-0.11 剖析笔记(六)

文章目录1. 宏定义`_syscall0`2. `setup.s`读取的参数3. 读取CMOS实时时钟信息3.1 `outb_p(value,port)`3.2 `inb_p(port)`3.3 `outb(value,port)`和`inb(port)`3.4 CMOS与RTC3.5 time_init函数4. main函数4.1 根设备号4.2 复制硬盘参数表4.3 计算主内存起始位置4.4 虚拟盘4.5 `mem_init`函数4.6 `trap_init`函数4.6.1 `set_trap_gate

2020-08-02 14:47:39 1820 3

themes.zip

typora主题包,解压后覆盖目标文件夹即可。 # How to install a theme Download theme from this website or other place. Open typora. Click "Open Theme Folder" button from `Preference Panel` → `Appearance` section. Put downloaded content into the opened folder, make sure your css files are directly under that directory.

2020-04-12

《从实模式到保护模式》第15章习题二的答案

《从实模式到保护模式》第15章习题二的答案,经测试,符合题目要求。

2016-07-17

《从实模式到保护模式》第15章习题一的答案

《从实模式到保护模式》第15章习题一的答案,经测试,符合题目要求。

2016-07-17

《从实模式到保护模式》第15章代码修改

《从实模式到保护模式》第15章代码修改

2016-07-11

《从实模式到保护模式》第14章的代码(修改版)

《x86汇编语言:从实模式到保护模式》第14章的代码(修改版),内容包括: 课后习题1和2; 修复了一些BUG; 增加颜色支持; 用栈传递参数;

2016-06-04

《x86汇编语言:从实模式到保护模式》第13章代码补丁

我发现配书代码中有一个小小的BUG,制作了自己的补丁包,另外还添加了其他功能。比如字符串输出支持不同的颜色等。

2016-04-10

《从实模式到保护模式》配书源码和工具

《x86汇编语言:从实模式到保护模式》主要讲述INTEL x86处理器的16位实模式、32位保护模式,至于虚拟8086模式,则是为了兼容传统的8086程序,现在看来已经完全过时,不再进行讲述。《x86汇编语言:从实模式到保护模式》的特色之一是提供了大量典型的源代码。 本资源就是配书工具和源代码

2016-01-03

orange's:一个操作系统的实现

非常不错的一本书,非扫描,可以复制。 “本书是《 自己动手写操作系统》 的第二版, 通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。 有关操作系统的书 籍资料可以找到很多, 但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见, 本书便是从一个简单的引导扇区开始, 讲 述一个操作系统成长的故事, 以作读者参考之用。 本书面向实践, 通过具体实例教读者开发自己的操作系统。 书中的步骤遵循由小到大、 由浅入深的顺序, 跟随这些步骤, 读者 可以由一个最简单的引导扇区开始, 逐渐完善代码, 扩充功能, 最后形成一个小的操作系统。”

2015-10-20

空空如也

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

TA关注的人

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