自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(223)
  • 资源 (13)
  • 收藏
  • 关注

转载 密码学基础之ASN.1编码

x为0x03,二进制为 00000011,但是x不能编码出401,需要和y一起编码才能表示401,因此需要将x的最高位替换为1,表示后面还有字节来编码401,替换后为10000011,编码为0x83,y为17,二进制为 00010001,x和y可以成功编码出401,后面没有其他数据了,y就不需要替换最高位,直接编码为 0x11,则401的最终编码为 0x83,0x11。因为整数值的最高位表示正负数,AB值的最高位为1,如果不填充00,就会把AB开始的Value值当作负数处理,因此最高位填充00,表示正数。

2025-01-07 15:30:43 401

转载 详解国密SM2的数字签名

RSA数字签名算法和RSA加密算法相似,不同的是,RSA加密算法是公钥加密,私钥解密,而RSA签名算法是私钥签名,公钥验证签名。在前面的文章我说过,SM2实际上就是一种椭圆曲线(EC)密码算法,所以这里先详细说说标准的ECDSA算法,然后再说说SM2数字签名算法和ECDSA算法有哪些差别。虽然SM2数字签名算法的计算步骤有所差别,但ECDSA中的基本运算,比如大数的加减乘除、曲线的乘积、取模运算都可以重用,所以实现起来也不是很困难。下面的步骤中,M是消息,HASH(M)是对消息进行摘要运算。

2024-12-20 11:28:16 533

转载 国密起步4:GmSSL3生成证书并使用tls(SM2、SSL)

转自:国密起步4:GmSSL3生成证书并使用tls(SM2、SSL)-CSDN博客此文介绍如何使用gmssl的tls示例。一、GmSSL的源码结构 下载过来的目录结构如下: .vs是我加的,因为我习惯用visual studio查看源代码。include 头文件src C文件tests 测试代码tools 工具的代码,对应gmssl命令的command二、gmssl命令 安装完成就可以在系统里直接使用gmssl命令了:user@

2024-12-17 16:12:04 384 1

转载 Windows下编译GmSSL源码

(1)解压GmSSL-3.1.1.zip,如: D:\MyWork\SVN_CGS\GmSSL\GmSSL-3.1.1_x64\GmSSL-3.1.1。(1)解压GmSSL-3.1.1.zip,如: D:\MyWork\SVN_CGS\GmSSL\GmSSL-3.1.1_x86\GmSSL-3.1.1。下载地址:https://github.com/guanzhi/GmSSL。(3)输入命令进入到GmSSL-3.1.1的目录中。(3)输入命令进入到GmSSL-3.1.1的目录中。

2024-12-17 14:20:30 185

转载 使用xshell远程连接linux服务器慢问题解决

连的远程的linux服务器,在经过别人修改过服务器ip配置后,使用ssh连接服务器,或者vs2019远程连接服务器进行编译,都变得奇慢无比,根本没发干活。上网一查,就看到有说ssh每次连接服务器时ssh服务器端都会自动检查dns环境是否一致。在按照上文修改了usedns为no后,连接远程服务器变得畅快无比,问题解决!最近一段时间在研究docker的使用时,在VM中安装了CentOS 7.6,配置了静态IP,使用Xshell连接虚拟机,发现响应的速度特别慢,大概得有10秒钟才能连上。# 重启ssh服务即可。

2024-11-18 09:19:07 202

转载 SQLite参考手册

SQLite 语法 - [ SQLite参考手册 ] - 在线原生手册 - php中文网

2024-10-31 10:34:49 46

原创 读取配置centos网络配置信息

【代码】读取配置centos网络配置信息。

2024-10-29 11:36:18 141

转载 详解CMakeLists.txt

CMakeLists.txt文件通常位于项目的顶层目录,并可在子目录中包含其他的CMakeLists.txt文件以组织复杂项目的构建过程。虽然基本语法并不复杂,但组合使用也是变化繁多,再加上还有各种内置变量,实际大型项目中的CMakeLists.txt可能非常复杂,需要持续认真学习和积累。这个示例中,我们创建了一个基于C语言的名为"MyProject"的项目,设置了C11标准,并添加了一个名为"MyLibrary"的静态库。# 添加子目录,子目录下应包含自己的CMakeLists.txt文件。

2024-10-24 10:00:16 455

转载 Visual Studio连接Linux服务器编译CMake项目,生成在Linux上运行的程序

系统上是否安装了最新版本的 CMake。>>>>>>>>>>>>>> 中间的安装过程省略 中间的安装过程省略 中间的安装过程省略 中间的安装过程省略 省略部分内容显示 省略部分内容显示

2024-10-23 17:58:54 451

原创 linux下使用iconv库来将中文字符转换成utf8

outbytesleft:指向一个 size_t 变量的指针,该变量表示输出缓冲区中剩余的字节数。inbytesleft:指向一个 size_t 变量的指针,该变量表示 inbuf 中剩余的字节数。在调用 iconv() 之前,这个指针应该指向输出缓冲区的起始位置。在调用 iconv() 之前,这个指针应该指向要转换的数据的起始位置。在函数调用后,它将被更新为指向尚未转换的数据的下一个位置。cd:由 iconv_open() 返回的转换描述符,它指定了源编码和目标编码。

2024-10-23 15:02:30 867

转载 grpc使用教程

当用protocol buffer编译器来运行.proto文件时,编译器将生成所选择语言的代码,这些代码可以操作在.proto文件中定义的消息 类型,包括获取、设置字段值,将消息序列化到一个输出流中,以及从一个输入流中解析消息。生成C++代码IM.Login.pb.h和IM.Login.pb.cc, IM.Login.grpc.pb.h和IM.Login.grpc.pb.cc。1.对C++来说,编译器会为每个.proto文件生成一个.h文件和一个.cc文件,.proto文件中的每一个消息有一个对应的类。

2024-10-10 11:38:15 430

转载 Cannot run compiler ‘cl‘

设置好cl.exe文件路径到环境变量的系统path后,重启creator,即能正常编译vs的工程,我用的是qt vs 2019。1.在everything.exe中查找cl.exe出来后,找到对应的vs版本的目录,如下,即能够正常解析.pro文件了。3.重启打开qt工程,选择。

2024-10-09 15:36:09 330

转载 新手小白Windows下gRPC编译操作详解~ 【v1.62.0 步骤详细】

很早之前在实习的时候就用到了一些gRPC相关的内容,当时也是编译鼓捣了好久总是这里有问题那里有问题,搜索一些博客的时候也总是会遇到一些博客中没有的问题,或者弄不明白每一步都是在干嘛,很多时候都是一些非常细小的地方出错误,最近又需要用到gRPC,又自己编译了一次,感觉整个过程清晰明了许多,做个记录~这一步需要的时间较长,我大概用了30多分钟,在编译过程中,可能会遇到堆栈异常xxx提前退出的错误、或许电脑也会变得异常卡顿,这大概是因为内存不够用了,关掉一些其它应用进程,重新进行编译即可。

2024-10-09 14:08:02 235

转载 Windows核心编程_HOOK(续)_APIHOOK

答:当我们发布了一个大型的应用程序,当我们发现了严重的漏洞后,是应用程序里的某个API思路的问题,我们可以通过此方式拦截这个API然后执行我们补丁里新的API达到修复漏洞的方式,因为一个应用程序那么大,出了漏洞,如果让用户重新安装,过于麻烦,不如写一个小型补丁来修补应用程序上的问题,就好像一条渔网,漏网了,如果我们要换个网的话,需要去重新编网或者去买一个,然后在拿回来这个过程,成本就已经算在里了,不如直接用胶带之类的绑起来,然后在慢慢换新的!当然这只是一个比喻!修改方法可以参考博主写的游戏修改器的文章!

2024-10-08 11:27:23 164

原创 zeromq的api官方文档

zeromq的api官方文档。

2024-09-20 10:49:22 216

原创 Ubuntu之源码编译安装nginx

输入: ./nginx,运行nginx后,输入ps aux | grep 'nginx',可以看到已经有nginx进程。3.运行配置命令:(--prefix指定make install 后的目录,也就是nginx生成目录)5.运行make install 安装命令: make install。在浏览器中输入http://127.0.0.1/进入sbin目录,就是生成的nginx文件。sed后面的路径那里就是编译出来的目录。4.运行make命令: make。

2024-09-04 11:08:40 887

转载 nginx添加cjson库文件编译

如果是用vs工程编译nginx源码,则直接将csjon的.c和.h文件找个源码目录放进去,然后添加到工程,即可编译通过。如果是使用命令行编译方式,则将.c和.h放到src/core目录下,然后再在auto/source中增加。.h,cJSON.c的路径,即可编译通过。

2024-08-21 15:50:07 125

转载 使用cJSON库解析JSON字符串

(1) 首先调用cJSON_Parse()函数,解析JSON数据包,并按照cJSON结构体的结构序列化整个数据包。(2)调用cJSON_GetObjectItem()函数,可从cJSON结构体中查找某个子节点名称(键名称),如果查找成功可把该子节点序列化到cJSON结构体中。(3) 如果需要使用cJSON结构体中的内容,可通过cJSON结构体中的valueint和valuestring取出有价值的内容(即键的值)//通过cJSON_Delete(),释放cJSON_Parse()分配出来的内存空间。

2024-08-13 19:27:57 468

转载 如何在 Visual Studio 编译调试 Windows 版本的 Nginx 源码?

转自:如何在 Visual Studio 编译调试 Windows 版本的 Nginx 源码?_vs 编译 nginx-CSDN博客

2024-08-09 09:41:50 87

转载 Nginx:subrequest的使用方式

首先调用ngx_http_subrequest方法建立subrequest子请求,在ngx_http_mytest_handler返回后,mytest_post_handler是父请求重新激活后的回调方法,它对应于ngx_http_event_handler_pt指针。Nginx在子请求正常或者异常结束时,都会调用ngx_http_post_subrequest_pt回调方法,它的定义如下。175 //ngx_http_post_subrequest_t结构体会决定子请求的回调方法。

2024-08-05 17:11:16 162

转载 Nginx: handler 模块的实现

转自:https://zhuanlan.zhihu.com/p/585898977Nginx 内部结构是由核心部分和一系列功能模块所组成的,每个模块的功能相对简单,便于开发,同时也便于对系统进行功能扩展。Nginx 将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块,进行处理。每个模块实现特定的功能。handler 模块就是接受来自客户端的请求并产生输出的模块,例如 ngx_http_static_module 模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应

2024-07-30 17:54:17 79

转载 【Nginx】开发一个HTTP过滤模块

当HTTP模块调用ngx_http_send_header发送头部时,就从ngx_http_top_header_filter指向的模块開始遍历全部的HTTP头部过滤模块并处理;我们使用预设的配置项解析函数ngx_conf_set_flag_slot解析配置项myfilter,将解析出的配置项參数存入结构体ngx_http_myfilter_conf_t的enable成员中。

2024-07-30 10:57:00 60

原创 关于新版QtCreator阅读代码时候耗用cpu达到100%问题解决

近日在使用新版本的QtCreator(Qt6.72, QtCreator13.02)阅读源码的时候,发现QtCreator cpu占用率时不时冲到100%,造成电脑超级卡,以为是新版QtCreator的bug,换回比较旧的版本(QtCreator10.0.2)发现也存在该问题。而且这个选项还有个奇葩的地方,你写的一行代码长一点了,他会自动给你分行显示,造成原本加个打印,还给你分个4,5行,搞得代码行数奇多,影响阅读。还有个东西就是本也得最后一项Clangd,查看资源管理器,就是这个东西一直在耗cpu。

2024-07-19 11:56:01 815

原创 ngnix添加自定义模块

使用msys生成makefile文件时候,configure编译命令需要添加如下语句:(即将自定义模块的目录加进来)参考如下的 示例: hello handler 模块 部分,重新生成ngnix.exe文件。

2024-07-18 15:20:23 1047

转载 HTTP 协议详解(史上最全)

如果没有 Cookie,直接将要存储的数据保存在客户端浏览器所在的主机的硬盘上,那么就会出现很大的安全风险,比如当你不小心打开某个不安全的网站,该网站就可以在你的硬盘上写一个病毒程序,那么你的电脑就挂了!假设我用 bing 浏览器搜索蛋糕,会发现有的搜索结果带有广告字眼,这就相当于广告主在 bing 浏览器用来引流的,当该网站的点击次数越多,用户的成交量也就会上升,金主给浏览器的广告费也就增多。如果最终我们只需要付一件产品的钱,就是幂等的,如果要支付N件产品的钱,就不是幂等的。

2024-07-17 09:42:16 12395

原创 Nginx源码windows下编译

4.将pcre-8.45.tar.gz、zlib-1.3.1.tar.gz、openssl-3.3.1.tar.gz解压到lib目录下,可以直接手动解压到该目录。打开nginx根目录下的auto/cc/msvc,发现没有写NGX_MSVC_VER版本号,因我的是vs2019,所以写上19.20。根据你自己的实际vs版本号填写,只有填写成功,后面nmake才能编译成功。3.在nginx源码根目录下创建objs文件夹,再在objs下创建lib。此时objs目录下已经生成了nginx.exe,说明已经编译成功。

2024-07-12 09:13:36 1526 1

转载 Nginx开发从入门到精通

Nginx开发从入门到精通 — Nginx开发从入门到精通

2024-07-09 11:51:30 56

转载 反转单链表四种方法整理

反转单链表四种方法整理_单链表反转-CSDN博客

2024-06-19 21:00:30 50

原创 qml创建附加类

【代码】qml创建附加类。

2024-03-20 10:50:42 169

原创 qml使用c++自定义类作为组件

【代码】qml使用c++自定义类作为组件。

2024-03-15 16:05:44 571

转载 探索Qt 3D之旅:从基础到实战,打造引人入胜的三维界面与应用

探索Qt 3D之旅:从基础到实战,打造引人入胜的三维界面与应用

2024-02-26 16:58:47 2613

转载 深入了解epoll模型(特别详细)

深入了解epoll模型(特别详细) - 知乎

2023-11-13 22:01:40 152

转载 UDP报文头部分析

数据发送是发送到物理链路层的,从应用层开始,经过一层层的数据报文的封装,最终封装成以太网封装格式 和 802.x 封装格式的数据包,通过有线网络或无线网络在以太网上传输数据帧(bit流)。标明UDP头部和UDP数据的总长度字节,UDP首部的长度为固定的8个字节,加上UDP数据长度就是长度大小,UDP数据长度可以通过wireshark抓包看到。实时游戏:游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响。

2023-08-08 15:22:51 1970

转载 TCP 协议头全解

首部 Header Length 4 位,表示 TCP 报文段首部长度,看了下有的地方也叫它数据偏移,可以理解为 TCP 报文起始位置 到 数据部分 payload 的起始位置 也就是上图中 [源端口号 , 选项, 填充 ] 这部分数据的大小,4 位 0000 最大为 1111 = 15 ,这里每个数代表 4 byte,所以首部最大是 15 * 4 byte = 60 byte。发送方会将紧急数据插入到本次报文段的最前面,而后面的仍然是普通数据,紧急指针指示的是紧急数据的末尾在本段报文数据的位置。

2023-08-08 14:21:33 1021

原创 qssh使用

qssh使用

2023-07-28 16:02:47 2607

原创 编译cmake源码时提示没有合适的c编译器

cmake源码编译

2023-07-18 10:15:40 2068 1

转载 QT6源码编译全过程

截至笔者编写此篇博客的时候,QT6系列已经发布了6.2.3版本,笔者也是于近期亲身编译了QT6.2.2的源码,开始着手熟悉体验新版本的QT了哦!顺便将笔者的编译过程整理记录下来,跟大家进行分享、交流。QT作为一个跨平台的界面开发平台,经过了历史长河的洗礼以及一代代Qt开发者的不断努力,其意义已经远远高于开发界面。1、解压Qt6.2.2源码,启动VS2019的64位命令行并切换至Qt6.2.2源码目录。(1)Visual Studio2019(笔者使用的企业版)(6)QT6.2.2源码 点击下载。

2023-07-09 13:11:34 2673

转载 Source Insight 4.0 序列号 license文件

用16进制编辑器(sublime text)打开sourceinsight4.exe文件,找到c800 0000 742a 83bc 2408 这一段,修改74 为 eb。原文链接:https://blog.csdn.net/lxj170/article/details/94554818。注意:过一段时间提示过期后,把Date="2019-10-24 00:00:00",改成前一天的,又能继续使用。链接: https://pan.baidu.com/s/1xyprwNSXLpj7kpDa7LaF_Q。

2023-06-26 17:44:05 12534

转载 source insight的使用方法逆天整理(1)

新建工程之后是add and remove files这个窗口,一般add tree就把文件夹里的所有文件都加载进这个工程了。那么Load完成之后呢?close对话框就可以了啊。close之前有个神奇的地方向大家介绍下——SI可以加不同路径的代码进入你的工程,嘿嘿嘿。。。完成之后,就出现在右边了,点击其中任意一个文件,内容就显示在中央编辑区域了。左边是,可以快速定位函数、变量定义等。下面是,显示有用的上下文相关信息。可以通过View菜单调出或者关闭各种窗口。比如可以显示出方法中调用的方法。

2023-06-26 17:41:31 2458

转载 这样读源码,不牛X也难

不同的目的会有不同的心情,会影响到工作的进展,像修复他人的Bug这种事情,类似于没被掰弯的男猿捏着鼻子给另外一个男人擦屁股,是很恶心的,很容易让人拒绝的。其他的目的,重构旧代码、添加新功能,比帮别人擦沟子(陕西话,屁股)略强,因为他带有创造性,创造性的活动能给人带来强烈的愉悦,所以虽然这两种目的也有很多让人不爽的部分,不过想到我可以让一棵老树焕发青春,不爽也就慢慢弱下去了。我有这样的体会,因为代码不是自己写的,很难很快在脑子里刻下印记,经常是看着这里忘了那里,早上觉得弄懂了数据流向,中午吃个饭就忘了。

2023-06-26 17:15:23 104

nginx源码vs工程-自定义handler处理-创建子请求处理逻辑-filter过滤器中处理应答

*本工程功能: 1.windows下vs2019工程编译nginx源码,可正常编译运行。生成的文件在bin目录下。 2.在自定义handler上读取请求体,并在请求体读取完后处理逻辑,创建子请求转发给后端服务器处理。 3.子请求回调函数处理完后,激活父请求,继续往下阶段处理request的请求或者继续创建子请求转发数据。 4.在filter中获取后端服务器返回来的数据,处理完后,创建子请求转发到另外一个服务器处理,接收服务器回应数据,再发送回给客户端。 5.支持自定义变量的注册与获取,在location中解析到对应的变量时,动态获取到变量的当前值 (此处变量动态获取值,只有在不同的请求中才能动态获取,同一个请求中变量只会获取到一次值) 6.自定义handler进入方式可以修改,即可以从location中读取关键字,也可以从请求头中检测是否有对应字段。 (此处从请求头中检测是否有对应字段,有则进入处理,否则往下一阶段处理) 7.添加cJson库解析处理接收到的数据 8.自定义的handle

2024-09-14

qftp源码可以被vs编译过

正常下载的qftp源码,如qftp.h qftp.cpp qurlinfo.h qurlinfo.cpp,使用vs编译时,会报使用了未定义类型“QFtpPrivate”的错误,造成没法正常使用。本源码是经过修改过的,能过通过vs编译的源码。已使用vs2017编译通过。详细修改方法见: https://blog.csdn.net/qqwangfan/article/details/131124547

2023-06-09

TestDesigeMode.zip

使用c++实现《大话设计模式》里面介绍的各种模式,配合《大话设计模式》来看会更容易看明白

2021-02-02

thinkpad 黑将s5 win10开机刷脸 intel realsense 3D摄像头驱动。能正常刷脸开机

thinkpad 黑将s5 win10刷脸开机 intel realsense 3D摄像头驱动,必须按顺序安装才能启动正常刷脸开机,否则即使摄像头能用也不能正常开机。

2018-03-10

qt窗口自适应v2.0

根据屏幕大小自适应窗口大小,包括窗口字体,所有窗体,gif都自适应大小。也支持窗口拖拉自适应大小。

2017-06-24

自定义的QPushButton插件,可放到qt设计师使用v3.0

一个简单的自定义QPushButton插件,可放到qt设计师使用,功能有:点击时按钮连同按钮上的文字一起缩放,给人一种很明显的点击效果。具体使用方法可参考文章http://blog.csdn.net/qqwangfan/article/details/71724118 简单说是将生成的dll放到qt的plugins\designer目录下,将插件的.h和.cpp文件放到你的工程目录下,编译通过后,可以直接使用qt设计师拖拉到界面使用。插件具体位置在qt设计师的My Plugins组下。

2017-05-17

自定义的QPushButton插件,可放到qt设计师使用v2.0

一个简单的自定义QPushButton插件,可放到qt设计师使用,功能有:点击时按钮连同按钮上的文字一起缩放,给人一种很明显的点击效果。具体使用方法可参考文章http://blog.csdn.net/qqwangfan/article/details/71724118 简单说是将生成的dll放到qt的plugins\designer目录下,将插件的.h和.cpp文件放到你的工程目录下,编译通过后,可以直接使用qt设计师拖拉到界面使用。插件具体位置在qt设计师的My Plugins组下。本次上传版本为2.0版本,相对之前上传的版本,修复了当鼠标移动到按钮外释放不会恢复原状的问题。

2017-05-15

自定义的QPushButton插件,可放到qt设计师使用

一个简单的自定义QPushButton插件,可放到qt设计师使用,功能有:点击时按钮连同按钮上的文字一起缩放,给人一种很明显的点击效果。具体使用方法可参考文章http://blog.csdn.net/qqwangfan/article/details/71724118 简单说是将生成的dll放到qt的plugins\designer目录下,将插件的.h和.cpp文件放到你的工程目录下,编译通过后,可以直接使用qt设计师拖拉到界面使用。插件具体位置在qt设计师的My Plugins组下

2017-05-12

QTableWidget表头添加复选框实现全选功能

QTableWidget表头添加复选框实现全选功能。有点投机取巧,但是功能是实现了。实现很简单。

2017-04-08

轻量级日志模块,支持纯windows下日志打印或qt环境下日志打印

日志使用c++编写,支持纯windows下日志打印或qt环境下日志打印,采用当前程序名字和当前年月日命名,如果当前文件写到超过最大大小,则新生成一个以当前年月日命名的新文件,如此 1.既保存了旧的文件 2.又不会因为以时间命名而每天生成一个文件导致日志文件个数过多影响查看日志 3.支持文件回滚和备份

2016-12-16

qt5.5.7编译出的opencv310动态库

使用qt5.5.7+cmake-3.4.1-win32-x86.exe+opencv310 编译出的opencv310的库

2016-12-16

vs2013编译出的opencv310动态库

vs2013编译opencv310开源代码,编译出的opencv310动态库

2016-12-16

opencv310动态库

使用qt5.5.7+cmake-3.4.1-win32-x86.exe+opencv310 编译出的opencv310的库

2016-12-16

qt编译出的db2和oracle数据库驱动(qt5.5.0+vs2013)

使用qt5.5.0+vs2013编译出的db2和oracle的数据库驱动动态库,qt没有自带db2和oracle的数据库驱动库,需要自己手动编译

2016-11-22

记录日志到文件

支持写日志到文件,支持日志级别和设置日志最大大小,当超过日志最大大小时,会新生成一个以时间命名的文件。 因获取程序名和互斥锁,用了qt类,如果不想包含qt,可以使用另外的程序名和基于windows或者linux或者boost库的互斥锁 文件起名目的:以当前年月日命名,如果当前文件写到超过最大大小,则新生成一个以当前年月日命名的文件, 新文件如果跟旧文件不在同一天,则不会覆盖旧文件。如此既保存了旧的文件,又不会因为以时间命名而每天生成 一个文件导致日志文件个数过多影响查看日志。(如超过大小,但是还是在同一天,则会继续在当天上写。如日志写的很快,则时间可以详细到 分和秒,这样就不会超过大小还是在同一文件)

2016-09-29

空空如也

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

TA关注的人

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