当前位置: 首页 > news >正文

学习大数据DAY20 Linux环境配置与Linux基本指令

目录

Linux 介绍

Linux 发行版

Linux 和 Windows 比较

Linux 就业方向:

下载 CentOS

Linux 目录树

Linux 目录结构

作业 1

常用命令分类

文件目录类

作业 2

vim 编辑文件

作业 3


你问我第 19 天去哪了?第 19 天在汇报第一阶段的知识总结,没什么好写的了。

Linux 介绍

linux 是一个开源、免费的操作系统,其稳定性、安全性已得到业界认可,很多
企业项目都会部署到 Linux/unix 系统上。
常见的操作系统:
unix、linux、Windows、IOS、Android、Mac

Linux 发行版

Ubuntu( 乌班图 )
RedHat( 红帽 )
CentOS
Debian
Fedora
SuSE
OpenSUSE

Linux 和 Windows 比较

Linux 就业方向:

服务器运维工程师

下载 CentOS

下载地址, 一般选择国内镜像下载
官网下载: http://isoredirect.centos.org/centos/7/isos/x86_64/
网易镜像: http://mirrors.163.com/centos/7/isos/

Linux 目录树

Linux 目录结构

1. linux 的目录有且只有一个根目录 /
2. linux 的各个目录存放的内容的规划好的, 不用乱放文件
3. linux 是以文件的形式管理我们的设备, 因此 linux 系统, 一切皆为文件
4. linux 的各个目录下存放什么内容, 大家必须有一个认识 5. 学习后, 你的脑海里应该有一棵 linux 目录树

作业 1

安装 CentOS 并实现远程连接
1. 按照文档安装---《centos7 安装.docx》
链接:https://pan.baidu.com/s/1mm1m3N4O4V47m9kzEUz19Q
提取码:awsl
2.使用命令 init 0 关机,再使用 mobax 连接

常用命令分类

文件目录类
搜索查看查找类
压缩安装类
用户权限类
网络配置类
其他扩展类

文件目录类

cd 切换到指定目录

cd ~ 或者 cd 回到自己的家目录

cd ../ 回到当前目录的上一级目录
从根目录算起的路径叫做绝对路径,以斜线开头
cd /home
从当前目录算起的路径叫做相对路径,当前工作目录的相对位置
cd sql

pwd 现在所在的目录位置

ls 查看内容

ls -a all,显示全部包括隐藏文件(隐藏文件以.开头)
ls -l 等于 ll 显示长格式属性
ls -r 反向排序
ls -S 按照占磁盘大小从大到小排序
ls -t 以时间排序(由新到旧)
指定路径查看
ls /home/test
mkdir 创建目录
mkdir a 创建一个目录 mkdir b c 同时创建多个目录
mkdir -p d/e 创建多级目录或称为递归创建
touch 创建空文件
touch name.txt
touch {1..5}.txt
通配符---配合文件名及目录使用
?匹配一个字符 f?.txt
* 匹配全部字符 *.txt
{1..10} 1 到 10
{a..z} a b c ...z
{A..Z} A B C .....Z
rm 删除文件或目录
可以删除一个目录中的一个或多个文件或目录及其下属的所有文件及其子目录
均删除掉;
对于链接文件,只是删除整个链接文件,而原有文件保持不变
-f:强制删除;
-r:递归处理,将指定目录下的所有文件与子目录一并处理(删目录);
rm t.txt 删除文件
rm -r a 删除 a 目录(文件夹)及其里面的文件及子目录
rm -rf * 强制删除文件夹下面的子目录和文件
rm -rf q*强制删除以 q 开头的文件夹及下面的子目录和文件
mv 移动文件和目录, 或者重命名
mv a b
mv a c/
mv a.txt b.txt
mv b.txt ../c.txt
cp 拷贝文件到指定目录
cp -r 递归拷贝目录(复制包括所有子文件,必须使用)
cp a.txt b/a.txt
cp a.txt b/b.txt
cp -r /root/a /root/b
ln 软连接, 类似 win 快捷方式
什么是软连接?
软连接是 Linux 系统上的另一个文件或目录。
这和 Windows 系统中的快捷方式有点类似,链接文件中记录的只是原始文件的
路径,并不记录原始文件的内容。
什么是硬链接?
硬链接是原始文件的一个镜像副本。创建硬链接后,如果把原始文件删除,链接
文件也不会受到影响,因为此时原始文件和链接文件互为镜像副本。
cd /home/test
ln -s /home/test ceshi
cd ceshi
快捷键
1.Tab 命令补全;文件名或者路径补全;连续按 2 次 Tab 键,显示以已输入字符
开头的所有
命令、文件名或路径
2.Ctrl + C 1、取消当前命令行的编辑;2、结束当前执行的命令
3.上下键自动记录命令
4.Ctrl+滚轮上下滚动可以放大缩小
5.mobax 右键快速粘贴,修改完重启 mobox 生效

作业 2

1. 分别使用绝对路径和相对路径切换到 home 目录
cd /home
cd ../home
2. 回到当前目录的上一级目录
cd ../
3. 回到家目录
cd ~
4. /home 目录下创建两个目录 class a
cd /home
mkdir class a
5. 创建目录 /home/class/students
mkdir -p /home/class/students
6. 删除一个目录 /home/a
rm -rf /home/a
7. 在目录 /home/class/students 下创建个文件 name.txt
touch /home/class/students/name.txt
8. /home/class/students/name.txt 复制到 /home/class 目录
cp /home/class/students/name.txt /home/class/
9. 创建 /home/class/teachers 文件夹,复制整个目录 /home/class/students
/home/class/teachers/ 文件夹下
mv /home/class/students /home/class/teachers/ 10. 删除 /home/class/name.txt
rm -f /home/class/name.txt
11. 删除文件夹及里面的文件 /home/class/teachers
rm -rf /home/class/teachers
12./home 目录下创建一个文件 name.txt, 重命名 /home/name.txt 文件为 age.txt
touch /home/name.txt
mv /home/name.txt age.txt
13. /home/age.txt 拷贝到 /root/ 目录下
cp /home/age.txt /root/
14. /root 下创建一个软连接 wk ,指向 /etc/sysconfig/network-scripts/ifcfg-ens33 ,然后
使用 ll 查看这个软连接
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 wk
ll
15. 删除上题中建立的软连接
rm wk
y
16. /root 下递归创建目录 xxx/yyy/zzz
mkdir -p /root/xxx/yyy/zzz
17. 使用 touch 命令在 zzz 目录中批量创建文件: test1.log...test10.log a.txt...z.txt
a1.txt...a10.txt b1.txt..b10.txt ... z1.txt...z10.txt
cd /root/xxx/yyy/zzz
touch test{1..10}.log {a..z}{1..10}.txt
18. 删除 zzz 中所有名字是单个字母后缀是 txt 的文件
rm -f {a..z}.txt {A..Z}.txt
19. zzz 中所有 test 开头的文件复制到上级目录 yyy
cp /root/xxx/yyy/zzz/test*.txt /root/xxx/yyy/

vim 编辑文件

进入一般模式后,可在键盘输入,实现删除、复制、粘贴。
dd 删除光标所在的行,且保存到剪贴板
3dd 删除光标所在的三行,且保存到剪贴板
yy 复制光标所在的行
4yy 复制光标所在的连续 4 行
p(小写) 将已复制的内容在光标的下一行粘贴
P(大写)将已复制的内容在光标的上一行粘贴
x,X:在一行字中,x 为向后删除一个字符(相当于[Del]键),X 为向前删除一
个字符(相当于[Backspace])也可 5x 等
G 光标快速定位到最后一行
gg 光标快速定位到第一行
u 撤销上一步操作
命令行模式
q 不保存退出 后面加!为强制退出
wq 保存后退出 后面加!为强制保存后退出
!强制执行(强制退出,强制保存)
:set nu 显示行号
:set nonu 取消行号
:5 光标快读定位到第 5 行
:nohl 去除高亮显示
查找:
(以下直接输入/)
/hello 查找字符串,按 n 向上搜索,按 N 向下搜索
替换字符串
替换字符串命令的基本语法是 :[range]s/ 标字符串/替换字符串/[option],
其中 range 和 option 字段都可以缺省不填,间隔符除了/还可以是其他的。
range:表 搜索范围,默认表 当前 ; 1,10 表 从第 1 到第 10 ;
g 表示全局替换,有多少次替换多少次;无 g 只替代每行第一个
s 表示替换
:1,$s/nologin/88888/g
:1,$s#nologin#88888#g
把整个文件的 nologin 替换成 888888
:1,10s/nologin/88888/g
把 1 到 10 行的 nologin 替换成 888888
创建快照
类似于备份系统,以便还原系统
打开虚拟机:虚拟机-快照-拍摄快照
如果系统出问题可以还原到这个拍照的节点
快照可以是关机也可以是开机,开机快照内存中的也会备份,建议关机拍快照

作业 3

1.将/etc/man_db.conf 复制到家目录/root 下;
cd /etc
cp man_db.conf /root/
2.使用 vim 开启家目录下的 man_db.conf 在 vim 中设定一下行号;
vim man_db.conf
G
:set nu
3.定位到第 68 行
:68
4.移动到第一行,并且向下搜寻一下 SECTION 这个字符串,请问他在第几行?
gg
/SECTION
5.接下来,我要将 50 到 100 行之间的小写[man]字符串改为大写[MAN]字符串
:50,100s/man/MAN/g
6.修改完之后,突然反悔了,要全部复原,有哪些方法?
u
7.我要复制 65 到 73 这 9 行内容,并且贴到最后一行之后;
:65
9yy
G
p
8.到第 70 行,并且向右删除 5 个字符
:70
xxxxx
9.在第一行新增一行,该行内容输入[I am a student…]
gg
i
回车
I am a student...
按下 ESC 退出
10.找到原来猴子吃桃的题目,把代码拷贝到第 50 行之后
复制
:50
按向右方向键进入行末
回车
按下 Shift+insert
按下 ESC
11.到第 30 行,删除 30 到 38 行
:30
9dd
12.取消行号,存储后离开吧!
:set nonu :wq!
13.配置静态 ip,vim /etc/sysconfig/network-scripts/ifcfg-ens33
(1) 定位到第四行,修改成如下:
BOOTPROTO="static"
vim /etc/sysconfig/network-scripts/ifcfg-ens33
:4
i
修改
ESC
(2) 在文档末尾插入如下内容(IPADDR 和 GATEWAY 使用自己的),保存退出
ZONE=public
IPADDR="192.168.25.133"
NETMASK="255.255.255.0"
GATEWAY="192.168.145.2"
DNS1="8.8.8.8"
DNS2="114.114.114.114"
G
复制,按方向键到行末
i
回车
粘贴
ESC
:wq!
(3) 执行 service network restart 重启网络
service network restart
14. 关机,拍摄快照《linux 配置完成》
快照拍摄位置:
命名后可保存,描述可写可不写。

我们需要:
Select knowledge
from course left join self-study on course.psychology=self-study.psychology
Where course.psychology=enthusiasm;

相关文章:

学习大数据DAY20 Linux环境配置与Linux基本指令

目录 Linux 介绍 Linux 发行版 Linux 和 Windows 比较 Linux 就业方向: 下载 CentOS Linux 目录树 Linux 目录结构 作业 1 常用命令分类 文件目录类 作业 2 vim 编辑文件 作业 3 你问我第 19 天去哪了?第 19 天在汇报第一阶段的知识总结,没什…...

达梦+flowable改造

原项目springbootflowablemysql模式现需改造springbootflowable达梦&#xff0c; 1.在项目中引入达梦jpa包 引入高版本包已兼容flowable&#xff08;6.4.2&#xff09;liquibase&#xff08;3.6.2&#xff09; 我没有像网上做覆盖及达梦配置 <dependency> …...

【乐吾乐2D可视化组态编辑器】消息

消息 乐吾乐2D可视化组态编辑器demo&#xff1a;https://2d.le5le.com/ 监听消息 const fn (event, data) > {}; meta2d.on(event, fn);// 监听全部消息 meta2d.on(*, fn);// 取消监听 meta2d.off(event, fn); meta2d.off(*, fn); Copy 系统消息 event&#xff08;…...

Qt创建列表,通过外部按钮控制列表的选中下移、上移以及左侧图标的显现

引言 项目中需要使用列表QListWidget,但是不能直接拿来使用。需要创建一个列表,通过向上和向下的按钮来向上或者向下移动选中列表项,当当前项背选中再去点击确认按钮,会在列表项的前面出现一个图标。 实现效果 本实例实现的效果如下: 实现思路 思路一 直接采用QLis…...

svn不能记住密码,反复弹出GNOME,自动重置svn.simple文件

1. 修改文件 打开 ~/.subversion/auth/svn.simple/xxx 更新前 K 15 svn:realmstring V 32 xxxxx //svn 地址&#xff0c;库的地址 K 8 username V 4 xxx //用户名 END在顶部插入下面内容&#xff0c; 注意&#xff0c;如果密码不对&#xff0c;则文件文法正常生效 更新后…...

对称加密与非对称加密

对称加密 对称加密指的是加密和解密使用同一个秘钥,所以叫对称加密。对称加密只有一个秘钥,称为私钥。 优点:算法公开、计算量小、加密速度快、效率高 缺点:数据传输前,发送方和接收方必须确定好秘钥,双方也必须要保存好秘钥。 常见对称加密算法: DES、3DES、AES、3…...

03 Git的基本使用

第3章&#xff1a;Git的基本使用 一、创建版本仓库 一&#xff09;TortoiseGit ​ 选择项目地址&#xff0c;右键&#xff0c;创建版本库 ​ 初始化git init版本库 ​ 查看是否生成.git文件&#xff08;隐藏文件&#xff09; 二&#xff09;Git ​ 选择项目地址&#xff0c…...

【Linux】将IDEA项目部署到云服务器上,让其成为后台进程(保姆级教学,满满的干货~~)

目录 部署项目到云服务器什么是部署一、 创建MySQL数据库二、 修改idea配置项三、 数据打包四、 部署云服务器五、开放端口号六 、 验证程序 部署项目到云服务器 什么是部署 ⼯作中涉及到的"环境" 开发环境:开发⼈员写代码⽤的机器.测试环境:测试⼈员测试程序使⽤…...

IDEA的断点调试(Debug)

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …...

部署django

部署Django项目到Apache HTTP服务器上,通常会使用mod_wsgi模块,这是Apache的一个扩展,专为Python web应用设计,可以很好地与Django集成。以下是部署Django项目的简要步骤: 准备工作 确保环境准备就绪: 确保你的系统中已安装了Python、Django以及Apache HTTP Server。安装…...

Android Framework学习笔记(4)----Zygote进程

Zygote的启动流程 Init进程启动后&#xff0c;会加载并执行init.rc文件。该.rc文件中&#xff0c;就包含启动Zygote进程的Action。详见“RC文件解析”章节。 根据Zygote对应的RC文件&#xff0c;可知Zygote进程是由/system/bin/app_process程序来创建的。 app_process大致处…...

澎湃算力 玩转AI 华为昇腾AI开发板——香橙派OriengePi AiPro边缘计算案例评测

澎湃算力 玩转AI 华为昇腾AI开发板 香橙派OriengePi AiPro 边缘计算案例评测 人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着我们的生活、工作乃至整个社会的面貌。作为推动这一变革的关键力量&#xff0c;边缘计算与AI技术的深度融合正成为行业发展的新趋势…...

<数据集>铁轨缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;844张 标注数量(xml文件个数)&#xff1a;844 标注数量(txt文件个数)&#xff1a;844 标注类别数&#xff1a;3 标注类别名称&#xff1a;[Spalling, Squat, Wheel Burn] 序号类别名称图片数框数1Spalling3315522…...

第2章 矩阵

A 乘以此列向量&#xff0c;1的位置依次往下&#xff0c;所以A的列向量全为0 B C、D 取BE 要统一...

抖音seo短视频矩阵源码系统开发搭建----开源+二次开发

抖音seo短视频矩阵源码系统开发搭建 是一项技术密集型工作&#xff0c;需要对大数据处理、人工智能等领域有深入了解。该系统开发过程中需要用到多种编程语言&#xff0c;如Java、Python等。同时&#xff0c;需要使用一些框架和技术&#xff0c;如Hadoop、Spark、PyTorch等&am…...

【ELK】简述

ELK 堆栈的作用 大规模日志管理与分析 随着系统规模的扩大&#xff0c;应用程序、服务器和网络设备会产生大量的日志数据。ELK 堆栈可以集中收集、存储和索引这些分散在不同服务器和系统中的日志&#xff0c;方便快速检索和分析&#xff0c;帮助您快速定位系统故障、异常事件和…...

PyTorch张量数值计算

文章目录 1、张量基本运算2、阿达玛积3、点积运算4、指定运算设备⭐5、解决在GPU运行PyTorch的问题 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&am…...

Dockerfile相关命令

Dockerfile Dockerfile 是一个用来构建Docker镜像的文本文件&#xff0c;包含了一系列构建镜像所需的指令和参数。 指令详解 Dockerfile 指令说明FROM指定基础镜像&#xff0c;用于后续的指令构建&#xff0c;必须为第一个命令MAINTAINER指定Dockerfile的作者/维护者。&…...

【AI教程-吴恩达讲解Prompts】第1篇 - 课程简介

文章目录 简介Prompt学习相关资源 两类大模型原则与技巧 简介 欢迎来到面向开发者的提示工程部分&#xff0c;本部分内容基于吴恩达老师的《Prompt Engineering for Developer》课程进行编写。《Prompt Engineering for Developer》课程是由吴恩达老师与 OpenAI 技术团队成员 I…...

Leetcode - 周赛406

目录 一&#xff0c;3216. 交换后字典序最小的字符串 二&#xff0c;3217. 从链表中移除在数组中存在的节点 三&#xff0c;3218. 切蛋糕的最小总开销 I 四&#xff0c;3219. 切蛋糕的最小总开销 II 一&#xff0c;3216. 交换后字典序最小的字符串 本题要求交换一次相邻字符…...

【JavaScript 算法】拓扑排序:有向无环图的应用

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现方法一&#xff1a;Kahn算法方法二&#xff1a;深度优先搜索&#xff08;DFS&#xff09;注释说明&#xff1a; 三、应用场景四、总结 拓扑排序&#xff08;Topological Sorting&#xff09;是一种…...

Fastgpt本地或服务器私有化部署常见问题

一、错误排查方式 遇到问题先按下面方式排查。 docker ps -a 查看所有容器运行状态,检查是否全部 running,如有异常,尝试docker logs 容器名查看对应日志。容器都运行正常的,docker logs 容器名 查看报错日志带有requestId的,都是 OneAPI 提示错误,大部分都是因为模型接…...

基于深度学习的股票预测

基于深度学习的股票预测是一项复杂且具有挑战性的任务&#xff0c;涉及金融数据的分析和预测。其目的是利用深度学习模型来预测股票价格的走势&#xff0c;从而帮助投资者做出更为准确的投资决策。以下是对这一领域的系统介绍&#xff1a; 1. 任务和目标 股票预测的主要任务和…...

UNiapp 微信小程序渐变不生效

开始用的一直是这个&#xff0c;调试一直没问题&#xff0c;但是重新启动就没生效&#xff0c;经查询这个不适合小程序使用&#xff1a;不适合没生效 background-image:linear-gradient(to right, #33f38d8a,#6dd5ed00); 正确使用下面这个&#xff1a; 生效&#xff0c;适合…...

FinClip 率先入驻 AWS Marketplace,加速全球市场布局

近日&#xff0c;凡泰极客旗下的小程序数字管理平台 FinClip 已成功上线亚马逊云科技&#xff08;AWS&#xff09;Marketplace。未来&#xff0c;FinClip 将主要服务于海外市场的开放银行、超级钱包、财富管理、社交电商、智慧城市解决方案等领域。 在全球市场的多样性需求推动…...

ChatGPT对话:Windows如何将Python训练模型转换为TensorFlow.js格式

【编者按】编者目前正在做手机上的人工智能软件&#xff0c;第一次做这种工作&#xff0c;从一些基本工作开始与ChatGPT交流。对初学者应该有帮助。 一天后修改文章补充内容&#xff1a; 解决TensorFlow 2.X与TensorFlow Decision Forests版本冲突问题&#xff1a; 在使用tens…...

封装网络请求 鸿蒙APP HarmonyOS ArkTS

一、效果展示 通过在页面直接调用 userLogin(params) 方法&#xff0c;获取登录令牌 二、申请网络权限 访问网络时候首先需要申请网络权限&#xff0c;需要修改 src/main 目录下的 module.json5 文件&#xff0c;加入 requestPermissions 属性&#xff0c;详见官方文档 【声明权…...

2024年度上半年中国汽车保值率报告

来源&#xff1a;中国汽车流通协会&精真估 近期历史回顾&#xff1a; 2024上半年房地产企业数智化转型报告.pdf 2024国产院线电影路演数据洞察报告.pdf 空间数据智能大模型研究-2024年中国空间数据智能战略发展白皮书.pdf 2024年全球资产管理报告 2024年中型律师事务所的法…...

Go语言之内存分配

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ Go 语言程序所管理的虚拟内存空间会被分为两部分&#xff1a;堆内…...

北京交通大学《深度学习》专业课,实验3卷积、空洞卷积、残差神经网络实验

一、实验要求 1. 二维卷积实验&#xff08;平台课与专业课要求相同&#xff09; ⚫ 手写二维卷积的实现&#xff0c;并在至少一个数据集上进行实验&#xff0c;从训练时间、预测精 度、Loss变化等角度分析实验结果&#xff08;最好使用图表展示&#xff09; ⚫ 使用torch.nn…...

高端网站建设 引擎技网络/自学seo能找到工作吗

print_r - 打印关于变量的易于理解的信息。 bool print_r ( mixed $expression [, bool $return ] ) Note: 参数 return 是在 PHP 4.3.0 的时候加上的 print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float&#xff0c;将打印变量值本身。如果给…...

网络游戏那个网站做的最好/免费站长工具

快捷方式 应该来说 很多人都做过&#xff0c;我们就来看一下基本的快捷方式 是怎么实现的&#xff0c;会有什么问题&#xff1f; 首先 肯定要获取权限&#xff1a; 1 <!-- 添加快捷方式 --> 2 <uses-permission android:name"com.android.launcher.permissi…...

毕业设计代做网站都有哪些/如何建网站

作者&#xff1a; 小马哥 rstevens (rstevens2008hotmail.com) 欢迎转载&#xff0c;未经允许&#xff0c;请勿用于商业目的1. 定义 Packet&#xff1a; 通过网卡收发的报文&#xff0c;包括链路层、网络层、传输层的协议头和携带的数据 Data Buffer&#xff1a;用…...

有做阿里网站的吗/百度推广销售员好做吗

OpenCV作为开源视觉库&#xff0c;整体模块的架构&#xff08;即头文件&#xff09;是核心所在。 在OpenCV-build-include文件夹下&#xff0c;有OpenCV和OpenCV 2两个文件夹&#xff0c;前者为1.0版本&#xff0c;后者为2.0版本。 以下为各模块介绍&#xff1a; 1.calib3d:相机…...

个人网站备案材料填写/广州竞价托管代运营

一、变量初始化以及默认值设置1.$var与${var}&#xff1a;这两种写法本质上是一样的&#xff0c;但$var有时候会产生混淆&#xff0c;而${var}一般不会&#xff0c;可以把变量和字符串组合起来使用&#xff0c;比如name${first}-on-${last}2.${var-default}与${var:-default}&a…...

代理分佣后台网站开发/百度推广登录平台怎么收费

Linux查看网络即时网速 sar -n DEV 1 100 1代表一秒统计并显示一次 100代表统计一百次 还可以使用ntop工具 转载于:https://www.cnblogs.com/lovychen/p/5740116.html...