自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

江州司马

https://hexo.yuanjh.cn

  • 博客(554)
  • 资源 (1)
  • 收藏
  • 关注

转载 [转]Docker部署Django由浅入深系列(下): 八步部署Django+Uwsgi+Nginx+MySQL+Redis

在上篇教程中,我们手动构建了两个容器,一个容器放Django + Uwsgi,另一个容器放Nginx,成功部署了一个简单的Django项目。然而在实际的生产环境中,我们往往需要定义数量庞大的 docker 容器,并且容器之间具有错综复杂的依赖联系,一个一个去手动创建容器并记录和配置这些复杂的容器关系,不仅效率低下而且容易出错,所以迫切需要一种定义容器集群编排和部署的工具,这就是docker-compose。本文是Docker部署Django项目的终章,我们将详细介绍如何使用docker-compose工具.

2021-03-17 13:58:15 484

原创 高并发之缓存

Web缓存是用于临时存储(缓存)Web文档(如HTML页面和图像),以减少服务器延迟的一种信息技术。Web缓存系统会保存下通过这套系统的文档的副本;如果满足某些条件,则可以由缓存满足后续请求。缓存的作用减少网络带宽消耗:当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。降低服务器压力:给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。减少网络..

2022-04-04 14:07:12 2782

原创 高并发之降级

由于爆炸性的流量冲击,对一些服务进行有策略的放弃,以此缓解系统压力,保证目前主要业务的正常运行。它主要是针对非正常情况下的应急服务措施:当此时一些业务服务无法执行时,给出一个统一的返回结果。降级服务的特征原因:整体负荷超出整体负载承受能力。目的:保证重要或基本服务正常运行,非重要服务延迟使用或暂停使用大小:降低服务粒度,要考虑整体模块粒度的大小,将粒度控制在合适的范围内可控性:在服务粒度大小的基础上增加服务的可控性,后台服务开关的功能是一项必要配置(单机可配置文件,其他可领用数据库和缓存)..

2022-04-04 14:05:54 1404

原创 http认证鉴权05CAS和OAuth2区别

二者区别主要集中在以下几个方面目的不同cas是用作单点登录的,oauth2是用来做授权的。保护对象不同cas保护的用户名密码(st可以看作用户名密码的等价物)。oauth2,保护的是code,code等价于用户名+密码+数据使用范围限制(第三方登录时,可以选择是否提供手机号,头像等信息给被授权方使用。区别很大?并非如此CAS和Oauth2乍一看区别很大。譬如常见的流程图解CASOAuth2但是如果我们将CAS的流程图拍平,也修改为OAuth2的形式进行展示。那么

2022-04-04 14:00:49 3559

转载 [转]详细的GStreamer开发教程

详细的GStreamer开发教程文章目录详细的GStreamer开发教程 1. 什么是GStreamer? 2. GStreamer架构 2.1 Media Applications 2.2 Core Framework 2.3 Plugins 3. GStreamer组件 3.1 Element 创建一个 GstElement 3.2 箱柜(bin) 元件的状态 3...

2021-03-24 11:35:37 510

转载 [转]Ubuntu terminator 无法打开解决方案

在使用Ubuntu的过程中,突然发现Ctrl + Alt + T无法打开terminator,但是Ubuntu本身的终端是可以打开的。我因此重启了电脑两次,重装terminator,都无效。结果原因是因为我更改了默认的Python版本,就是把/usr/bin/python连接到了Python3,但是terminator是基于Python2的。解决方案sudo gedit /usr/bin/terminator将#!/usr/bin/python...

2021-03-19 17:27:23 382

转载 [转]Terraform 使用 - 从最简单例子开始

Terraform 使用 - 从最简单例子开始https://yanbin.blog/terraform-get-started-with-first-sample/Terraform 是一个 IT 基础架构自动化编排工具,它的口号是 "Write, Plan, and create Infrastructure as Code", 基础架构即代码。具体的说就是可以用代码来管理维护 IT 资源,比如针对 AWS,我们可以用它创建,修改,删除 S3 Bucket, Lambda, EC2 实例,Kin

2021-03-17 13:56:40 597

原创 高并发之限流

原文:高并发之限流高并发系统设计的三利器:缓存、限流、降级,三利器简述缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也常常扮演者非常重要的角色。比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系统的吞吐量或者实现系统的保护措施。甚至消息中间

2021-03-14 18:33:37 168

原创 读书_w3c架构师01通用设计与方法论

原文:读书_w3c架构师01通用设计与方法论读书_w3c架构师架构 秒杀系统优化思路基本思路(1)将请求尽量拦截在系统上游(不要让锁冲突落到数据库上去)(2)充分利用缓存,秒杀买票,这是一个典型的读多写少的应用场景,大部分请求是车次查询第一层,客户端怎么优化(浏览器层,APP层)(a)产品层面,用户点击“查询”或者“购票”后,按钮置灰,禁止用户重复提交请求;(b)JS层面,限制用户在x秒之内只能提交一次请求;第二层,站点层面的请求拦截怎么拦截?怎么防止程序员写for循环调

2021-03-14 18:23:53 234 2

转载 [转]web实时视频流从0到1(ffmpeg+nginx-http-flv-module+flv.js)

海康威视视频流rtsp,需要在web(Vue)页面显示,探索了很多方法,考虑到兼容,最终确定 ffmpeg+nginx-http-flv-module+flv.js 这一套方案,也推荐大家使用这一套方案。简介特此声明:本文主要记录我web直播海康视频的探索过程,如文中概念阐述有不正确的地方望留言指正业界cs视频流方案还是比较多的,不在赘述。以下是web支持主流视频流协议考虑到flash的会完全禁止(win10即将禁止,chrome,firfox已经禁止),rtm...

2021-03-05 16:25:33 635

转载 [转]正则表达式中re.match、re.search、re.findall的用法和区别

正则表达式中re.match、re.search、re.findall的用法和区别re.match 用法re.match语法:re.match(pattern,string,flags=0)pattern:表示正则表达式string:要匹配的字符flags:控制匹配的方式**re.match匹配方式:**从字符起始位置匹配,若起始位置匹配不成功返回none。即只匹配起始位置import re string='www.baidu.com'pattern1='w...

2021-01-31 22:04:16 421

转载 [转]微服务轮子项目(27) -MySQL 主从复制、主从切换、主主复制

文章目录 1. 主从复制 1.1 主库安装 1.1.1 创建配置文件 1.1.2 启动主库 1.1.3 主库创建用于同步的账号 1.2 从库安装 1.2.1 创建配置文件 1.2.2 启动从库 1.2.3 关联主库 1.2.4 启动并查看slave 1.2.5 创建从库的普通用户 1.3 主库查看同步信息 2. 主从切换 2.1 对主库进行锁表...

2021-01-29 16:39:27 261

转载 [转]从根上理解高性能、高并发:深入计算机底层,理解线程与线程池

系列《从根上理解高性能、高并发(一):深入计算机底层,理解线程与线程池》 《从根上理解高性能、高并发(二):深入操作系统,理解I/O与零拷贝技术》 《从根上理解高性能、高并发(三):深入操作系统,彻底理解I/O多路复用》 《从根上理解高性能、高并发(四):深入操作系统,彻底理解同步与异步》 《从根上理解高性能、高并发(五):深入操作系统,理解高并发中的协程》(* 本文) 《从根上理解高性能、高并发(六):通俗易懂,高性能服务器到底是如何实现的》前言作为即时通讯技术的开发者来说,高性能、高

2021-01-28 19:34:32 243

原创 linux_负载分析之LoadAverage

原创:linux_负载分析之LoadAverage平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数。和 CPU 使用率并没有直接的关系一般的进程需要消耗 CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。不过影响最大的是 CPU 使用率、CPU 等待和磁盘I/O。他不仅包扩了正在使用CPU的进程,还包括等待 CPU 和等待磁盘I/O的进程。查看load average# cat /

2021-01-27 08:20:59 2748

原创 软件_手把手教vscode配置c++,python开发环境

原创:软件_手把手教vscode配置c++,python开发环境之前主用Python作为项目开发语言,将项目迁移到arm边缘盒子上后发现arm的cpu不给力,软件速度低于预期,所以计划将部分程序改为c++实现。于是乎,复习了c和c++的一些知识,毕竟十多年未用了(上次用还是本科读书时)。未来一段时间可能将c++作为主力研发语言,之前上学那会使用的codeBlocks貌似也不怎么火了,最近风头正盛的时vscode,打算用vscode进行研发。首先,vscode只能看做加强版的文本编辑器,不能看做IDE。

2021-01-26 22:02:48 742

转载 [转]关于Linux下时间片分配给进程还是线程的问题

原文地址:https://www.zhihu.com/question/64723752/answer/223613245在Linux系统中,对于用户创建的进程(线程)来说,CPU分配时间片的单位是线程还是进程?是线程。线程是实际工作的单元[1],进程只是一个容器,用来管理一个或多个线程。1.这是不是就意味着尽量使用多线程并发,这样可以抢到更多的时间片。理论上是的,多线程的一种用途就是能同时做好几件事情,以提高效率。但实际问题是,CPU的数量(核心数,下同)是有限的,而且并不多。如果你的.

2021-01-26 15:54:34 310

转载 [转]git merge 与 git rebase的区别

git log --graph可以查看分支合并图1》他们都是用于从一个分支获取并且合并到当前分支2》一个场景:在feature分支进行新特性的开发,与此同时,master分支也有新的提交,为了将master上的新提交合并到你的feature分支上3》merge合并执行的命令是:git checkout featuregit merge master此时在feature上git会自动产生一个新的commitmerge特点:自动创建一个新的commit优点:记录真实的

2021-01-25 13:59:58 136

转载 [转]【Linux】一幅图秒懂LoadAverage(负载)

一、什么是Load Average?系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)。平均负载(Load Average)是一段时间内系统的平均负载,这个一段时间一般取1分钟、5分钟、15分钟。二、如何查看Load?top命令,w命令,uptime等命令都可以查看系统负载:[shenjian@dev02 ~]$ uptime13:53:39 up 130 days, 2:15, 1 us...

2021-01-21 23:36:03 144

转载 [转]Django REST framework 简介与中文教程

Django REST framework 简介与中文教程简介在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。 在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的: 增:校验请求数据–>执行反序列化过程–>保存数据库–>将保存的对象序列化并返回; 删:判断要删除的数据是否存在–>执行数据库删除 改...

2021-01-13 15:22:46 866

转载 [转]为什么mysql默认隔离级别设置为可重复读

一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为>:串行化 > RR > RC >读未提交在SQL标准中,前三种隔离级别分别解决了幻象读、不可重复读和脏读的问题。那么,为什么MySQL使用可重复读作为默认隔离级别呢?...

2021-01-01 00:29:02 306

转载 [转]char数组赋值

c语言易错点定义一个数组char a[10];怎么给这个数组赋值呢?1、定义的时候直接用字符串赋值char a[10]=“hello”;注意:不能先定义再给它赋值,如char a[10]; a[10]=“hello”;这样是错误的!2、对数组中字符逐个赋值char a[10]={‘h’,‘e’,‘l’,‘l’,‘o’};3、利用strcpychar a[10]; strcpy(a, “hello”);易错情况:1、char a[10]; a[10]=“hello”;//一个字...

2020-12-31 15:27:15 854 1

转载 [转]C/C++语言中值传递、指针传递和引用传递

在C/C++语言中值传递、指针传递和引用传递(C++ only)这三种函数参数传递方式是比较基本的知识,用的比较普遍,但不仔细分析其实质的话,时间长容易记混了。网上的资料也较多但多数都不系统,本文力求用最白话的表达和简单的示例把这三种方式描述清楚。没时间看分析的直接看简述就可以了。简述值传递就是最普通的传递方式,比如函数定义为fun(int a),在调用的地方有int x=6, 使用fun(x)就可以了。这种方式在fun(int a)函数内部的对a的修改 不能 导致外部x的变化...

2020-12-31 15:16:10 155

转载 [转]【人是怎么废掉的?】

作者:曾加链接:https://www.zhihu.com/question/43607087/answer/321913371来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。沉溺于「轻易获得高成就感」的事情:有意无意地寻求用很小付出获得很大「回报」的偏方,哪怕回报是虚拟的。这种行为会提升自己的「兴奋阈值」,让人越来越不容易拥有成就感,从而越来越依赖虚拟的成就感,陷入恶性循环。症状轻的:沉溺游戏(在虚拟世界中加快时间流逝的速度,使得「成功」来得更快)、种马小说(意.

2020-12-19 17:00:44 132 1

转载 [转](转载+整理)超详细的cmake教程

cmake教程参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和测试 定制安装规则 为工程添加测试 支持gdb 添加环境检查 添加版本 生成安装包 将其他平台的项目迁移到 CMake 其他参考超详细的cmake教程 camke...

2020-12-19 14:45:03 383 1

转载 [转]当你老了,一生最后悔什么?全球统计前五名!

第一名:92%的人后悔年轻时努力不够导致一事无成所谓少壮不努力,老大徒伤悲,青春的大好时光总是流逝得那么快。 而在青春岁月里,又常常碰到那么多的诱惑甚至陷阱,当你猛然醒悟时,也许白发早生,才发现自己竟然一事无成多数人都遵循着一种从众的生活态度,别人学习他也学习,别人工作他也工作,别人娱乐他也娱乐,自然的,别人得到什么,他也不可能得到更多。 要想得到别人得不到的东西,就需要付出别人不愿意付出的代价,尤其是在你年轻的时候。 所以,趁着你还有时间、有精力、有体力去努力的时候,赶快制定一个切实可行的计划吧,

2020-12-19 14:23:38 232 1

转载 [转]Linux下VSCode常用的快捷键

写在最前面最近(?)装了linux,于是开始捣鼓vscode的常用快捷键,顺便翻译了一些,给大家参考。Ctrl+Shift+N 新窗口Ctrl+W 关闭窗口Ctrl+K Ctrl+S 显示快捷键Ctrl+X 剪切/没有选择时默认剪切一行Ctrl+C 复制/没有选择时默认复制一行Alt+ ↓ / ↑ 把当前行上移/下移一行Ctrl+Shift+K 删除一行Ctrl+Enter 在当前行的下方插入一空行(在某行中间时可以用)Ctrl+Shift+Enter 在当前行的上方插入一空行(在某行中

2020-12-16 19:53:43 2385 1

转载 [转] python中的高效迭代器函数

python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~首先还是要先import一下:#import itertoolsfrom itertools import * #最好使用时用上面那个,不过下面的是为了演示比较 常用的,所以就直接全部导入了一.无限迭代器:由于这些都是无限迭代器,因此使用的时候都要设置终止条...

2020-12-16 18:55:54 164

原创 博客主机_通配符证书提示不安全

原创:博客主机_通配符证书提示不安全问题:使用了Let’s Encrypt 的免费的通配符证书,且在有效期内,但浏览器依然提示不安全更多信息去这里点击进入sslshopper,检查下结果如下:可见证书本身是有效的,但是由于某些特殊原因,浏览器无法识别,所以标记为不安全解决其实是证书链问题,配置nginx时自己参考的教程配置的是 1 ssl_certificate /etc/letsencrypt/live/your_domain/cert.

2020-12-13 12:26:27 607 1

原创 博客主机_自动申请续期免费证书

原创:博客主机_自动申请续期免费证书一不留神,之前的域名证书过期了。由于是Let’s Encrypt免费证书,需要3个月手工续期一次,一年就得4次,还是有点麻烦,搞成自动化多好。以下操作均在服务器上执行(ubuntu16,腾讯云)下载脚本certbot-auto 123 cd opt/wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 执行certbot-auto可.

2020-12-13 12:25:17 239 1

原创 杂谈_巴诺nook2电纸书再折腾手记

原创:杂谈_巴诺nook2电纸书再折腾手记nook2是自己使用的第一款电纸书,也是目前为止满意度最高的电纸书,搭配Orionviewer切边+横屏简直就是6寸阅读扫描版pdf的利器。由于之前折腾过,所以这次刷机还是比较顺利的(刷机是在win10下操作的,个人体验最佳的是行云版,所以这次刷的也是行云版)。一个弄了3h左右,下载东西占了2h,折腾了1h就搞好了。主要参考教程https://www.cnblogs.com/coyoteshkw/p/nook2.html按照教程的操作即可畅通无阻,特此也致

2020-12-13 12:23:59 4119 1

原创 杂谈_小米电纸书折腾手记

原创:杂谈_小米电纸书折腾手记开启开发者模式下载安装E-InkLauncher下载地址:E-Ink Launcher:https://www.coolapk.com/apk/cn.modificator.launcher安装方法:pc上安装应用宝手机助手或者360手机助手(个人使用应用宝)使用数据线连接小米电纸书,弹出选择框中选择“传输数据(USB数据那个)”不出意外就连接成功了,然后在应用宝上操作。(其他教程安装的adb就是用来通过pc给电纸书安装apk的,使用应用宝简化了这.

2020-12-13 12:19:30 2625

转载 [转]Git:如何在项目提交历史中查找已删除的文件?

曾几何时,我的项目中现在有一个文件,我现在希望能够得到。问题是:我不知道何时删除它以及它在哪条路径上。如何找到该文件的提交?#1楼无法编辑接受的回复,因此在此处将其添加为答案,要恢复git中的文件,请使用以下命令(注意SHA后面的'^'符号)git checkout <SHA>^ -- /path/to/file#2楼获取已删除文件的列表,并复制已删除文件的完整路径git log --diff-filter=D --summary | grep dele

2020-12-12 18:54:09 1237

转载 [转]git merge 与 git rebase的区别

前言 其实这个问题困扰我有一段时间,相信也有人和我一样有这个困扰,网上已有很多这种解释了,但是要么就是无图,要么就是解释的很乱,没太看懂,经过自己对git的使用,加上向同事请教,算是理解了这个问题,所以写下来分享一下,我尽量详细说明merge与rebase的区别 假设我们有如下图一所示仓库,该仓库有master和develop两个分支,且develop是在(3.added merge.txt file)commit处从master拉出来的分支。图一merge...

2020-12-09 09:55:37 129

转载 [转]MySQL实现over partition by(分组后对组内数据排序)

前言开发中遇到了这样一个需求:统计商品库存,产品ID + 子产品名称都相同时,可以确定是同一款商品。当商品来自不同的渠道时,我们要统计每个渠道中最大的那一个。如果在Oracle中可以通过分析函数 OVER(PARTITION BY… ORDER BY…)来实现。在MySQL中应该怎么来实现呢。现在通过两种简单的方式来实现这一需求。数据准备/*Table structure for table `product_stock` */CREATE TABLE `produc...

2020-12-05 14:58:13 4256 2

转载 [转]cookie、sesstion、localstorage、sesstionstorage的使用和区别

文章目录 基本概念 cookie详解 1、服务端写入cookie 2、客户端查看cookie 3、前端JS获取cookie sesstion详解 1,服务端生成sesstion。 2,客户端查看sesstionId localStorage的使用 sesstionStorage 基本概念cookie,是在客户端(浏览器)存储少量数据的地方,通常用于存储用户数据。在客户端和服务端进行交互的时候,...

2020-12-05 14:51:10 425

转载 [转]nginx常见配置详解

一.nginx的配置文件配置文件默认为安装目录下的conf/nginx.conf,如果有使用到其他子配置文件,可以在nginx.conf中使用include 文件路径;的方式加载使用,比如server段,就可以单独写成一个配置文件,在http段下面使用include加载使用。nginx.conf配置的结构...全局配置区域...http { ... http段配置 ... server { ...... ...... locatio.

2020-12-03 16:25:44 182

转载 [转]Google的60款开源项目

1.机器学习系统 TensorFlow详情:https://github.com/tensorflow/tensorflow2.material-design-icons详情:http://google.github.io/material-design-icons/3.前端开发工具组 MDL详情:https://github.com/google/material-design-lite4.Web 前端框架 Angular详情:https://github.com/angular/an...

2020-11-23 13:40:10 1546

转载 [转]服务器监控 UptimeRobot 简明使用手册

简介Uptime Robot 是一个美国的网站监控服务,每 5 分钟检查一次你设定的网站 / 服务,最多可以免费检查 50 个网站。 当你的网站宕机时,只要你事先设置了通知邮箱或者手机号码,Uptime Robot 就会通过邮件或者短信通知到你。 虽然 Uptime Robot 的短信服务支持很多个国家或地区,但是遗憾的是不支持中国。注册注册地址 正常输入用户名密码及邮箱验证即可增加服务器监控登陆后点击 Add New Monitor有四种监控方式:HTTP:通过访问

2020-11-18 22:02:46 597

转载 [转][进阶]-Python3 异步编程详解

目录1 什么是异步编程1.1 阻塞1.2 非阻塞1.3 同步1.4 异步1.5 并发1.6 并行1.7 概念总结1.8 异步编程1.9 异步之难(nán)2 苦心异步为哪般2.1 CPU的时间观2.2 面临的问题2.3 解决方案3 异步I/O进化之路3.1 同步阻塞方式3.2 改进方式:多进程3.3 继续改进:多线程3.4 非阻塞方式3.5 非阻塞改进3.5.1 epoll3.5.2 回调(Callback)3.5.

2020-11-13 09:28:02 528

转载 [转]CMake 生成makefile 步骤

1、首先创建一个目录下的makefile//main.cpp#include<iostream>using namespace std;int main(){ cout<<"Hello word!"<<endl; return 0;}在main文件所在的目录创建CMakeLists.txt//CMakeLists.txtPROJECT(main)CMAKE_MINIMUM_REQUIRED(VERSION 2.8)AUX_SOURCE_DIRECT

2020-11-13 09:11:03 3751

ta-lib-0.4.0-src.tar.gz

ubuntu,linux的安装talib,TA-lib时必须如果报错func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directory compilation terminated.,则只能使用源代码安装,无法使用pip install ta-lib安装,下载这个包总容易被qiang,所以放在这方便大家下载

2019-03-22

空空如也

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

TA关注的人

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