# 运开速成班第一天总结

## 																										伍嘉威

# 一、虚拟机 Ubuntu 共享 主机VPN 实现科学上网

以 Clash for Windows 为例

## 1，**什么是 Clash for Windows ？**

​		Clash 是由 Dreamacro 开发的，是一个使用Go 开发的、基于规则的隧道，无需服务器和虚拟主机。

​		Clash for [Windows](https://uzbox.com/tag/windows) 是运行在 Windows 上的一图形化 Clash 分支。通过 Clash API 来配置和控制 Clash 核心程序，便于用户可视化操作和使用。

​		Clash 是一个基于规则的跨平台代理软件核心程序。支持 SS / [VMess](https://uzbox.com/tag/vmess) 协议 。

------



## 2，VPN和Clash的区别

**VPN：**

​		VPN 是一种加密通讯技术，是一个统称。它有很多的具体实现，比如 PPTP 、L2TP 、IPSec 和 OpenVPN 。VPN 的出现远早于 GFW ，所以它不是为了翻墙而生的。 VPN 最主要的功能，并不是用来翻墙，只是它可以达到翻墙的目的。		它的功能是：在公用网络上建立专用网络，进行加密通讯。接入 VPN ，其实就是接入了一个专有网络，你的网络访问都从这个出口出去，你和 VPN 之间的通信是否加密，取决于你连接 VPN 的方式或者协议。

**Clash：**

​		Clash 则是一款比较出色的代理客户端软件，支持很多种代理协议。v2ray，Shadowsocks，ShadowsocksR等是协议服务端，例如v2ray的代理协议是VMess 协议，Shadowsocks的代理协议是SS协议。而VPN则是虚拟机专用网络，两者完全不是一个概念。

​		Clash 无需服务器，无需虚拟主机，也不需要域名，Clash是一个网络代理协议的客户端，客户端可以在电脑，安卓，苹果等平台上使用。

------



## 3、利用 Clash for Windows 搭建代理服务

### A1，Clash for Windows 下载安装

**系统版本：**Ubuntu 22.04.1 LTS

![image-20221015210623275](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015210623275.png)

**Clash for Windows版本：**V 0.20.5

![image-20221015210814574](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015210814574.png)

Clash for Windows （linux-x86）下载，其他版本的 Clash for Windows 请在下面地址获取：

`https://github.com/Fndroid/clash_for_windows_pkg/releases` 

```zsh
# 下载
sudo mkdir -pv /data/packages && cd /data/packages
sudo git clone https://github.com/Fndroid/clash_for_windows_pkg/releases/download/0.20.5/Clash.for.Windows-0.20.5-x64-linux.tar.gz

# 解压Clash for Windows
sudo tar -xf Clash.for.Windows-0.20.5-x64-linux.tar.gz
# 修改文件名，方便使用
sudo mv Clash\ for\ Windows-0.20.5-x64-linux Clash_for_Windows
```

![image-20221015232806603](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015232806603.png)

```zsh
# 为 Clash for Windows 启动脚本设置临时别名
alias myproxy='/data/packages/Clash_for_Windows/cfw'

# 为 Clash for Windows 启动脚本设置永久别名
sudo vim ~/.bashrc
在下图位置添加 alias myproxy='/data/packages/Clash_for_Windows/cfw'
```

![image-20221015201141268](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015201141268.png)

------



### A2，下载汉化补丁将 Clash for Windows 汉化

全英文的操作界面对于母语是中文的我来说非常的不方便，Clash for Windows 自身不带中文设置，所幸有汉化方法。

下载汉化补丁 `https://github.com/BoyceLig/Clash_Chinese_Patch/releases`

```zsh
# 下载
cd /data/packages/Clash_for_Windows
sudo wget https://github.com/BoyceLig/Clash_Chinese_Patch/releases/download/0.20.5/app.zip

# 解压
sudo unzip app.zip
sudo rm -rf app.zip

# 备份原语言配置文件
mv /data/packages/Clash_for_Windows/resources/app.asar /data/packages/Clash_for_Windows/resources/app.asar.bak

# 替换汉化文件
sudo mv app.asar /data/packages/Clash_for_Windows/resources/app.asar

# 打开 Clash for Windows 查看效果、
myproxy
```

![image-20221015203443230](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015203443230.png)

------



### A3，配置 Clash for Windows 代理

到 “魔法器” 官网获取订阅连接

![image-20221015203952439](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015203952439.png)

回到 Ubuntu 中的 Clash for Windows 中点击“配置”将复制的订阅地址内容下载，如下图所示：

![image-20221015204059907](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015204059907.png)

![image-20221015204242930](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015204242930.png)

​		点击新增的配置文件来切换到该配置，然后点击「代理」标签页来切换接入点，将顶部的出站模式选择为「规则」。此模式下你的网络访问请求将通过 Clash for Winows 进行**分流处理**。

![image-20221015204433262](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015204433262.png)

​		在「代理」策略组中选择所想要使用的接入点。代理 策略组是用于访问国际网络的默认策略，在不进行其他修改的情况下，所有国际网络的访问都通过 代理 策略组中选择的接入点进行。上图中所示的其它策略组为本人出于自身实际需求自行配置的，请以自己的实际配置为准。

启动 Clash for Windows 

![image-20221015205304144](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015205304144.png)

测试是否能突破墙的限制，在浏览器中输入网址 `www.youtube.com`

```http
https://www.youtube.com/
```

![image-20221015210123555](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015210123555.png)

显然是不行的，因为 Ubuntu 中的本地代理还没设置，打开 Ubuntu 设置 --> 网络 将网络代理由禁用改为手动，并按下图手动配置代理

![image-20221015205515846](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015205515846.png)

![image-20221015205556053](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015205556053.png)

再次打开浏览器输入 `https://www.youtube.com/`

```http
https://www.youtube.com/
```

![image-20221015210231053](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015210231053.png)

至此，我们也可以在VM虚拟机上使用桌面版 Ubuntu 快乐的学习啦！

------



# 二、安装 zsh 并配置 oh-my-zsh 

安装 zsh 并配置 oh-my-zsh

查看当前shell

```zsh
echo $SHELL
```

![image-20221014131508192](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221014131508192.png)

查看系统所有shell

```zsh
cat /etc/shells
```

![image-20221014131711931](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221014131711931.png)

下载 zsh

```zsh
sudo apt install -y zsh
```

修改默认shell

```zsh
chsh -s /bin/zsh
reboot
echo $SHELL
```

![image-20221014132050975](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221014132050975.png)

下载 oh-my-zsh

```zsh
首先要安装git
sudo apt install -y git
下载安装curl
sudo apt install -y curl
使用 curl 下载脚本并安装：
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

安装 oh-my-zsh 插件，主要由三个，分别是zsh-autosuggestions、zsh-syntax-highlighting、autojump

[zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) 是一个命令提示插件，，当你输入命令时，会自动推测你可能需要输入的命令，按下右键可以快速采用建议。效果如下：

![zsh-autosuggestions 插件效果](https://www.alicode.pro/static/images/blog/zsh/zsh-autosuggestions.png?imwidth=1920)

把插件下载到本地的 ~/.oh-my-zsh/custom/plugins 目录

```zsh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
```

[zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting) 是一个命令语法校验插件，在输入命令的过程中，若指令不合法，则指令显示为红色，若指令合法就会显示为绿色。效果如下：

1. 把插件下载到本地的 `~/.oh-my-zsh/custom/plugins` 目录:

```zsh
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
```

安装 autojump 插件

```zsh
sudo apt install -y autojump
```

在 `.zshrc` 中，把 ` zsh-syntax-highlighting` 加入插件列表：

效果图:

![image-20221016113310173](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016113310173.png)

------

# 三、开发环境搭建

## 1，JetBrains WebStorm

### A.**下载安装 JetBrains WebStorm**

```http
https://www.jetbrains.com/webstorm/download/#section=linux
```

![image-20221015212106032](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015212106032.png)

**安装 JetBrains WebStorm**

```zsh
# 创建外部应用专属文件夹
sudo mkdir -pv /data/aaplication

# 将压缩包解压到外部应用专属文件夹
sudo tar -xf WebStorm-2022.2.3.tar.gz -C /data/application
```

![image-20221015212444376](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015212444376.png)

**为 JetBrains WebStorm 启动脚本设置别名，方便使用**

```zsh
# 设置临时别名
alias webstorm='/data/application/WebStorm-222.4345.14/bin/webstorm.sh'

# 设置永久别名
sudo vim ~/.bashrc
在下图位置加入 alias webstorm='/data/application/WebStorm-222.4345.14/bin/webstorm.sh'
```

![image-20221015213136625](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015213136625.png)

**打开并破解使用 JetBrains WebStorm** 

方法一：

打开网站 `https://vrg123.com/` 输入秘钥 `4565` 

![image-20221015213337234](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015213337234.png)

然后选中 `WebStorm` 复制生成的秘钥

![image-20221015213501152](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015213501152.png)

打开终端，输入 `webstorm` 打开JetBrains WebStorm

```zsh
webstorm
```

对弹出的第一个界面勾选  ` I confirm that I have read and accept the terms of this User Agreement`  然后点击  `continue`

![image-20221015213756045](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015213756045.png)

第二个界面选择 `Send Anonymous Statistics`

![image-20221015214000711](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015214000711.png)

第三步选择中间的选项，然后将刚刚复制的秘钥粘贴进去，点击Activate

![image-20221015214214926](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015214214926.png)

即可开始使用：

![image-20221015214253895](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015214253895.png)

------



### B.优化 JetBrains WebStorm

**安装中文插件**

![image-20221015214645109](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015214645109.png)

**安装 Atom One Theme 插件**

![image-20221015214935056](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015214935056.png)

**安装 Atom Material Icons 插件**

![image-20221015215044702](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015215044702.png)

**安装 Code Glance 插件**

![image-20221015215134923](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015215134923.png)

------



## 3，配置编译器环境

### B1. NVM 

NVM 项目位置 `https://github.com/nvm-sh/nvm`

![image-20221015221743996](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015221743996.png)

**下载 NVM**

```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
```

![image-20221015222035619](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015222035619.png)

**配置环境变量：**

```zsh
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
```

**验证安装**

要验证 nvm 是否已安装，请执行以下操作：

```zsh
command -v nvm
```

![image-20221015222647449](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015222647449.png)

------



### B2.安装 Node.js

Node.js 官网 ：https://nodejs.org/en/

![image-20221015222704149](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015222704149.png)

**下载最新长期支持班Node.js**

```zsh
nvm install v16.18.0
```

![image-20221015222832257](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015222832257.png)

**修改NPM镜像源：**

```zsh
npm config set registry https://registry.npm.taobao.org
```

查询镜像源是否修改成功：

```zsh
npm config get registry
```

![image-20221015223352808](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015223352808.png)

**安装Yarn：**

```zsh
npm install -g yarn
```

![image-20221015223055050](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015223055050.png)

**修改Yarn 镜像源：**

```zsh
yarn config set registry https://registry.npm.taobao.org
```

![image-20221015223202771](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015223202771.png)

**查询镜像源是否修改成功：**

```zsh
yarn config get registry
```

![](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015223410211.png)

**创建项⽬：**

```zsh
npm init vue@latest
```

报错！

![image-20221015224335254](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015224335254.png)

解决方法：

这是因为在 Ubuntu 上面不用管理员权限是无法创建文件的，但是使用 NVM 安装的 npm 管理员用户找不到该命令，所以只需将 npm 命令的文件链接到 /usr/bin 目录即可

```zsh
which npm
sudo ln -s /home/superwei/.nvm/versions/node/v16.18.0/bin/npm /usr/bin/npm
sudo ln -s /home/superwei/.nvm/versions/node/v16.18.0/bin/node /usr/bin/node
sudo ln -s /home/superwei/.nvm/versions/node/v16.18.0/bin/node /usr/lib/node
```

![image-20221016001305459](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016001305459.png)

```zsh
# 调用管理员权限执行 npm 命令
sudo npm init vue@latest
```

![image-20221016001332664](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016001332664.png)

#################################### 后期备注 ####################################################

注意：上面的错误正常操作是不应该出现的，应该是环境乱了的缘故，下面的操作也出现了一系列的问题。

------

# 四、安装 Git

```zsh
sudo apt install git -y

git --version
```

![image-20221016001824416](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016001824416.png)

------

# 五、在 Gitee 创建项目仓库并

## 1，Gitee 新建仓库

![image-20221016002126338](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016002126338.png)

![image-20221016002253334](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016002253334.png)

## 2，Git 设置

```zsh
# 
sudo git init
sudo git config user.name "superweimk1"
sudo git config user.email "thnecemeeony@163.com"

# 检查是否设置成功
sudo git config  user.name
sudo git config  user.email
```

![image-20221016003031726](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016003031726.png)



## 3，修改 项目

### C1. 	下面出现几个使用 `npm i` 下载模块失败的报错：

**错误1：**使用命令 `npm i` 创建项目报错

![image-20221016104408459](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016104408459.png)

**解决方法：**

使用管理员权限调用 `npm`

![image-20221016104537035](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016104537035.png) 

**错误2：**使用命令 `npm install` 创建项目报错

![image-20221016103340531](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016103340531.png)

处理方法，执行命令 `npm cache clean --force` 然后再执行 `npm install`

![image-20221016105021225](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016105021225.png)

错误3：执行 `npm i` 后提示包已下载但是在当前目录下找不到包

解决方法：有可能是配置了全局参数，或者指定了包下载的路径，删除配置文件 `sudo rm -rf ${HOME}/.npmrc` 后执行命令  `npm cache clean --force` 解决

### C2.	使用  webstorm 编写项目

**1.使用 webstorm 打开项目，打开终端，输入以下命令打开文件**

```
# webstorm + 文件路径
webstorm /data/projects/hello_world
```

可以看到项目中存在以下目录：

![image-20221016111033754](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016111033754.png)

以下是各目录在项目中起到的作用：

```shell
node_modules library root (node模板库目录)： #存放npm命令下载的开发环境和生产环境的依赖包
public：	#发布目录
public/favicon.ico：# Favorites Icon的缩写，是指显示在浏览器收藏夹、地址栏和标签标题前面的个性化图标。 以图标的方式区别不同的网站。
src：# 这里是我们开发的主要目录（源码），基本上要做的事情都在这个目录里面，里面包含了几个目录及文件：
assets：# 存放静态资源的目录，如（CSS，FONTS)，图片、Logo等。
components：# 组件目录，存放各种组件。
router/index.js： # 路由器目录/配置路由的文件
store：# 存放 vuex 为vue专门开发的状态管理器。
views：# 存放视图文件的地方
src/app.vue：# 使用标签<route-view></router-view>渲染整个工程的.vue组件。
src/main.js：# main.js文件的作用是创建vue实例。初始项目中，引入了vue、app、store、router。
package.json：# 用于 node_modules资源部 和 启动、打包项目的 npm 命令管理。
README.md：# 项目的说明文件。
index.html： # html单页面的入口页面，可以添加一些meta信息或者同统计代码啥的或页面的重置样式等。
```

**2.初始化项目**

修改 route下的 index.js

![image-20221016111502358](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016111502358.png)

修改 src/views/HomeView.vue: 

![image-20221016111737327](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016111737327.png)

修改 src/App.vue:

![image-20221016111941533](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016111941533.png)

修改 src/main.js:

![image-20221016112056130](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112056130.png)

修改 index.html

![image-20221016111249499](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016111249499.png)

修改 package.json ：

修改版本号，作为第一个发布的版本

![image-20221016112223518](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112223518.png)

删除不必要的项目：

```shell
# 删除下面目录
components
assets
src/views/AboutView.vue
```

清理完成的项目如下图所示：

![image-20221016112426087](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112426087.png)

编辑调试配置，运行调试项目，查看结果：

1.打开配置

![image-20221016112611746](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112611746.png)

2.添加配置

![image-20221016112533986](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112533986.png)

3.设置脚本并保存

![image-20221016112704056](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112704056.png)

4.运行项目

![image-20221016112743428](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112743428.png)

5.检查web界面

![image-20221016112832679](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016112832679.png)

达到预期效果。

## 4，将项目上传 gitee 仓库

```zsh
# 执行以下命令
sudo touch README.md
git config --global --add safe.directory /data/projects/hello_world
sudo git add .
sudo git commit -m "first project"
sudo git remote add origin https://gitee.com/superweimk1/web-front-end.git
sudo git push -u origin "master"
```

![image-20221016114053813](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016114053813.png)

![image-20221016114247467](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221016114247467.png)



------

# 六、安装 Docker

## 1，设置存储库

1. **更新`apt`包索引并安装包以允许`apt`通过 HTTPS 使用存储库：**

   ```zsh
   sudo apt-get update
   
   sudo apt-get install \
       ca-certificates \
       curl \
       gnupg \
       lsb-release
   ```

2. **添加 Docker 的官方 GPG 密钥：**

   ```zsh
   sudo mkdir -p /etc/apt/keyrings
   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
   ```

3. **使用以下命令设置存储库：**

   ```zsh
   echo \
     "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
     $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
   ```

## 2，安装 Docker 引擎

1. **更新`apt`包索引，安装*最新版本*的 Docker Engine、containerd 和 Docker Compose，或者进入下一步安装特定版本：**

   ```zsh
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
   ```

2. **`hello-world` 通过运行映像来验证 Docker 引擎是否已正确安装。**

   ```zsh
    sudo service docker start
    sudo docker run hello-world
   ```

   ![image-20221015220906050](https://typora-1312877226.cos.ap-guangzhou.myqcloud.com/image-20221015220906050.png)

------



# 七、MIT 协议

## 1，什么是 MIT 许可？

​		MIT 全名 The MIT License ， 又称MIT许可证，源自麻省理工学院，又称“X许可协议”（X License）或“X11许可协议”（X11 License），

## 2，MIT 许可证有哪些规定？

### 1，被许可人权利

​		特此授予任何人免费获得本软件和相关文档文件（“软件”）副本的许可，不受限制地处理本软件，包括但不限于使用、复制、修改、合并 、发布、分发、再许可的权利， 被许可人有权利使用、复制、修改、合并、出版发行、散布、再许可和/或贩售软件及软件的副本，及授予被供应人同等权利，惟服从以下义务。

### 2，被许可人义务

​		在软件和软件的所有副本中都必须包含以上著作权声明和本许可声明。

### 3，其他许可

​		此许可协议并非属[copyleft](https://zh.wikipedia.org/wiki/Copyleft)的自由软件许可协议条款，允许在[自由及开放源代码软件](https://zh.wikipedia.org/wiki/自由及开放源代码软件)或非自由软件（proprietary software）所使用。

​		MIT的内容可依照程序著作权者的需求更改内容。此亦为MIT与[BSD](https://zh.wikipedia.org/wiki/BSD_license)（The BSD license, 3-clause BSD license）本质上不同处。

​		MIT许可协议可与其他许可协议并存。另外，MIT条款也是自由软件基金会（FSF）所认可的自由软件许可协议条款，与[GPL](https://zh.wikipedia.org/wiki/GPL)兼容。

## 3，MIT 协议说明了什么？

​		MIT规定了使用 MIT 协议的软件为开源软件，也就是说可以随便用，也可以随便改，也就是说使用者可以是使用免费的，也可以做成收费的。

​		MIT协议还规定了被许可人需要在软件中告知其他人该软件为开源软件，遵循 MIT 协议，因此在遵守该协议的软件中必须要有这个许可证文档。

​		相对于其他的开源协议，MIT协议开源更加彻底，相对于apache协议和GPL协议来说（软件可以随便用，但不能随便改，比如原商标一般不让修改，你如果修改了某个地方，必须进行突出的通知。），MIT协议是彻彻底底的授权。

------

# 八、GET、POST 请求

## 1，GET、POST 的作用

**GET：**一般用于请求，也就是用来获取资源，它只是获取、查询数据，不会修改服务器的数据，从这点来讲，GET操作是相对安全的。所谓相对安全是指不管进行多少次操作，资源的状态都不会改变，因此可以对GET请求的数据进行缓存。

**POST：**一般用于表单提交，在浏览器和服务器之间进行数据传输，因此可以向服务器发送修改请求，进行数据的修改，所以对于服务器来说是相对不安全的。

## 2，GET、POST 的区别

1. GET方法类似于**pull（拉）：**从服务器拉资源下来
2. POST方法类似于**push（推）：**将数据推给服务器

## 3，GET、POST 的安全性区别

​		对于服务器来说，GET 是安全的，POST 是不安全的，但是对于用户来说，GET是不安全的，因为GET是GET的请求是明文传输，简而言之就是你的请求信息是直接跟在URL后面的，用户都看得到，而POST是安全的，POST方法会将信息放在请求体body中，用户是看不到的。

## 4，GET、POST 的数据长度区别

- **GET**：对传输的数据长度有限制
- **POST**：对数据长度没有限制，因为数据都是放在消息体中的

## 5，GET、POST 的缓存区别

- **GET**：GET请求会被浏览器自动缓存
- **POST**：缓存需要手动设置

## 6，GET、POST 的危害性

- **GET**：GET请求在浏览器反复的`回退/前进`是无害的
- **POST**：一旦`回退`则要重新提交表单

## 7，GET、POST 的 TCP 数据报区别

- **GET**：GET请求会在发送过程中产生一个TCP数据报

>浏览器会将http header和数据data一起发送出去，服务器响应200（返回请求的数据）

- **POST**：POST在提交过程中会产生两个TCP数据报

> 浏览器先发送header，等待服务器响应`100 continue`
>
> 浏览器再发送form，服务器响应`200 OK`

