<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>许承胜</title><link>https://www.xcssh.cn/</link><description>要开心喔</description><item><title>Mac m1开发</title><link>https://www.xcssh.cn/?id=125</link><description>&lt;h3 style=&quot;margin: 16px 0px 5px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); line-height: 28px; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;本人mac小白，今年十月份入手一台m1的mac，希望下面的内容对小白有所帮助&lt;/span&gt;&lt;/h3&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;使用技巧，基础内容，我们不盲从，要理性，后续再跟进使用感受&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;软件安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;使用感受&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/12/202112011638327125587531.png&quot; alt=&quot;640.png&quot;/&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 16px 0px 5px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: 28px;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;使用技巧&lt;/span&gt;&lt;/h3&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;忘记我的电脑，这里统一成访达：说实话用习惯windows的&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #121212;&quot;&gt;文件管理器，在打开mac的文件及其不方便。还好本人linux自认还是蛮可以的，我一般通过终端，访问文件，touch-新建文件，cp，mv-转移文件，cd-切换目录，vi-编辑文档，open . -打开当前位置目录。暂时整理这么多吧。对于一个有强迫症的患者，我对于没规划的东西极度不适，安装的软件，下载的文档，经常使用的资源统统需要管理起来。mac就没有那么多的规则&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;快捷键-必备cmd+S保存mc，md+A全选，cmd+C复制，cmd+X剪切，cmd+V粘贴，cmd+F查找，cmd+,打开preferance也就是打开设置界面，cmd+N打开新窗口，cmd+W关闭窗口，cmd+H隐藏窗口，cmd+Q退出程序，cmd+ctrl+F全屏，cmd+Tab切换程序，重要的我觉得只剩下复制，粘贴。再之后有一些开发实用技巧 Command+Option+J 打开javascript控制台，Command+Y 打开历史记录，Command+R 刷新&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;手势-神功能，不过我还是喜欢外接鼠标。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;一个手指直接点击，类似Windows中鼠标左键功能，同时在苹果Safari等浏览器中，这个手势还支持快速查询功能；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;一个手指轻轻点击，可以选中目标；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;两个手指同时点击，类似Windows中鼠标右键功能；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;两个手指上下拖移滑动，即可实现翻页；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;两个手指分开或捏合，可以放大缩小图片、网页等内容；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;两个手指旋转，可以旋转图片等对象；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;两个手指从触控板右侧边缘向左滑动，可以调出通知窗口；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;两个手指在网页中左右滑动，可以退出或前进网页；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;三个手指左右滑动，可以在全屏应用桌相互切换；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;三个手指向上滑动，可以打开所有正在使用的软件窗口；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;三个手指向下滑动，可以打开同一个软件的不同窗口；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;四个手指同时捏合，可以调出应用程序窗口；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;四个手指同时张开，可以显示桌面；&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;标记-所有文件都可以进行标记用来快速查找&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;h3 style=&quot;margin: 16px 0px 5px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: 28px;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;软件安装&lt;/span&gt;&lt;/h3&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;macwk：https://www.macwk.com/&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;因为m1芯片很多软件不能在&amp;nbsp;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #121212;&quot;&gt;Mac App Store 下载，然后这里网上评分还是蛮高的，postman，vscode，等都是在这里下载的&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;App Store下载，尽量使用这个，官方正版&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: #121212; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;具体软件安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h5 style=&quot;margin: 8px 0px 5px; padding: 0px; outline: 0px; font-weight: 400; font-size: 15px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: 24px;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;然后介绍一下我开发常用的软件:&lt;/span&gt;&lt;/h5&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;mysql，我是继续使用navicat，奉劝大家不要尝试navicat15进行破解，太麻烦了。如果你想我贴给你试试&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;navicat 12,最好破解傻瓜式教程：http://www.pc6.com/mac/111878.html&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;navicat 15，用的不需要太香：https://www.yuque.com/docs/share/8ea8a6b5-984e-48a2-a228-07020f4e7628?# 《MAC激活navicat》&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/12/202112011638327162852586.png&quot; alt=&quot;640-1.png&quot;/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;phpstrom，关于编辑器我是用 JetBrains Toolbox管理起来的,Mac破解稍微有点问题，具体我就不赘述，这块我也放俩种破解方法吧，关于汉化我也没找到很好的解决方法&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;免费激活日常维护：https://idea.medeming.com/tongyong/三种都在这 1. 日更正版激活的二维码 2. 永久激活到2089年，不稳 3. 无限试用30天版本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;还有个人再用的更稳定的方式，这里后面单独出一版&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/12/202112011638327173564390.png&quot; alt=&quot;640-2.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;termius，用习惯Xshell在Mac上使用termius没有一丝不习惯。只能说开发者更懂开发者&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;破解版地址：https://www.macappbox.com/a/Termius.html&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/12/202112011638327185819035.png&quot; alt=&quot;640-3.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;docker，官网下载就好了，老版的Mysql在Mac M1芯片上运行是有点问题的，你可以官网找最新更新的mysql镜像。这边推荐dnmp&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;ul ne-level=&quot;1&quot; class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 23px; outline: 0px; max-width: 100%; list-style-position: initial; list-style-image: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;推荐dnmp，可以管理起来，但是感觉没啥大用处，用于多项目开发，可以Nginx管理起来，没必要的同学可以不关注：https://gitee.com/yeszao/dnmp&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/12/202112011638327196842994.png&quot; alt=&quot;640-4.png&quot;/&gt;&lt;/p&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;h4 style=&quot;margin: 10px 0px 5px; padding: 0px; outline: 0px; font-weight: 400; font-size: 16px; max-width: 100%; line-height: 24px; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;使用感受&lt;/span&gt;&lt;/h4&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 24px; text-indent: 2em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #121212; font-size: 18px;&quot;&gt;总体感觉Mac使用起来真香，尤其是手势，不需要太强大，丝滑。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 24px; text-indent: 2em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: #121212; font-size: 18px;&quot;&gt;令人诟病的是使用Windows键盘，再转Mac不习惯。感觉通用机械键盘继续下去，差点感觉&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; outline: 0px; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 01 Dec 2021 10:44:59 +0800</pubDate></item><item><title>三次握手四次挥手</title><link>https://www.xcssh.cn/?id=124</link><description>&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;带着问题进行阅读,收获会更大&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;请画出三次握手和四次挥手的示意图为什么连接的时候是三次握手?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;什么是半连接队列?ISN(Initial Sequence Number)是固定的吗?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;三次握手过程中可以携带数据吗?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;如果第三次握手丢失了,客户端服务端会如何处理?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;SYN攻击是什么?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;挥手为什么需要四次?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;四次挥手释放连接时,等待2MSL的意义?&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;1. 三次握手&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包.主要作用就是为了确认双方的接收能力和发送能力是否正常. 实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;进行三次握手&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN©.此时客户端处于 SYN_SEND 状态&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s).同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态.服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106151623757772884157.png&quot; alt=&quot;1.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1.1 为什么需要三次握手,两次不行吗?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第一次握手确定客户端发送能力,服务端接收能力,第二次握手确定服务端发送能力,客户端接收能力第三次确定双方的接收与发送是否正常&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1.2 什么是半连接队列?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列. 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传.如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除.一般间隔时间指数增长&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1.3 ISN(Initial Sequence Number)是固定的吗?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;当一端为建立连接而发送它的SYN时,它为连接选择一个初始序号.ISN随时间而变化,因此每个连接都将具有不同的ISN&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1.4 三次握手过程中可以携带数据吗?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;其实第三次握手的时候,是可以携带数据的.但是,第一次、第二次握手不可以携带数据&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1.5 SYN攻击是什么?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server则回复确认包,并等待Client确认,由于源地址不存在,因此Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪检测 SYN 攻击非常的方便&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;netstat&amp;nbsp;-n&amp;nbsp;-p&amp;nbsp;TCP&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;SYN_RECV常见的防御&amp;nbsp;SYN&amp;nbsp;攻击的方法有如下几种:&lt;/pre&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;缩短超时(SYN Timeout)时间&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;增加最大半连接数&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;过滤网关防护&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;SYN cookies技术&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;2. 四次挥手&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的).这由TCP的半关闭(half-close)造成的.所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第一次挥手: 客户端发送一个 FIN 报文,报文中会指定一个序列号.此时客户端处于 FIN_WAIT1 状态&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;即发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第二次挥手: 服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放.客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第三次挥手: 如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号.此时服务端处于 LAST_ACK 的状态即服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;第四次挥手: 客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态.需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态.此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106151623757780956531.png&quot; alt=&quot;2.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;2.1 挥手为什么需要四次?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文.其中ACK报文是用来应答的,SYN报文是用来同步的.但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”.只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送.故需要四次挥手&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;2.2 2MSL等待状态&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;TIME_WAIT状态也成为2MSL等待状态.每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime),它是任何报文段被丢弃前在网络内的最长时间.这个时间是有限的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字段&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;2.3 四次挥手释放连接时,等待2MSL的意义?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;2.4 为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态?&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;理论上,四个报文都发送完毕,就可以直接进入CLOSE状态了,但是可能网络是不可靠的,有可能最后一个ACK丢失.所以TIME_WAIT状态就是用来重发可能丢失的ACK报文&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;总结&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;《TCP/IP详解 卷1:协议》有一张TCP状态变迁图,很具有代表性,有助于大家理解三次握手和四次挥手的状态变化.如下图所示,粗的实线箭头表示正常的客户端状态变迁,粗的虚线箭头表示正常的服务器状态变迁&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106151623757798674809.png&quot; alt=&quot;3.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 15 Jun 2021 19:47:01 +0800</pubDate></item><item><title>数据脱敏</title><link>https://www.xcssh.cn/?id=123</link><description>&lt;p&gt;什么是数据脱敏&lt;/p&gt;&lt;p&gt;先来看看什么是数据脱敏？数据脱敏也叫数据的去隐私化，在我们给定脱敏规则和策略的情况下，对敏感数据比如 手机号、银行卡号 等信息，进行转换或者修改的一种技术手段，防止敏感数据直接在不可靠的环境下使用。&lt;/p&gt;&lt;p&gt;像政府、医疗行业、金融机构、移动运营商是比较早开始应用数据脱敏的，因为他们所掌握的都是用户最核心的私密数据，如果泄露后果是不可估量的。&lt;/p&gt;&lt;p&gt;数据脱敏的应用在生活中是比较常见的，比如我们在淘宝买东西订单详情中，商家账户信息会被用 * 遮挡，保障了商户隐私不泄露，这就是一种数据脱敏方式。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631183872881.png&quot; alt=&quot;1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;数据脱敏又分为静态数据脱敏(SDM)和 动态数据脱敏(DDM)：&lt;/p&gt;&lt;p&gt;静态数据脱敏（SDM）：适用于将数据抽取出生产环境脱敏后分发至测试、开发、培训、数据分析等场景。&lt;/p&gt;&lt;p&gt;有时我们可能需要将生产环境的数据&amp;nbsp; copy 到测试、开发库中，以此来排查问题或进行数据分析，但出于安全考虑又不能将敏感数据存储于非生产环境，此时就要把敏感数据从生产环境脱敏完毕之后再在非生产环境使用。&lt;/p&gt;&lt;p&gt;这样脱敏后的数据与生产环境隔离，满足业务需要的同时又保障了生产数据的安全。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631188577469.png&quot; alt=&quot;2.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如上图所示，将用户的真实 姓名、手机号、身份证、银行卡号 通过 替换、无效化、乱序、对称加密 等方案进行脱敏改造。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;动态数据脱敏&lt;/p&gt;&lt;p&gt;动态数据脱敏（DDM）：一般用在生产环境，访问敏感数据时实时进行脱敏，因为有时在不同情况下对于同一敏感数据的读取，需要做不同级别的脱敏处理，&lt;/p&gt;&lt;p&gt;例如：不同角色、不同权限所执行的脱敏方案会不同。&lt;/p&gt;&lt;p&gt;注意：在抹去数据中的敏感内容同时，也需要保持原有的数据特征、业务规则和数据关联性，保证我们在开发、测试以及数据分析类业务不会受到脱敏的影响，&lt;/p&gt;&lt;p&gt;使脱敏前后的数据一致性和有效性。总之一句话：你爱怎么脱就怎么脱，别影响我使用就行。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;数据脱敏方案&lt;/p&gt;&lt;p&gt;数据脱敏系统可以按照不同业务场景自行定义和编写脱敏规则，可以针对库表的某个敏感字段，进行数据的不落地脱敏。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631202314254.png&quot; alt=&quot;3.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;脱敏系统&lt;/p&gt;&lt;p&gt;数据脱敏的方式有很多种，接下来以下图数据为准一个一个的演示每种方案。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631214332377.png&quot; alt=&quot;4.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;原始数据&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;1、无效化&lt;/p&gt;&lt;p&gt;无效化方案在处理待脱敏的数据时，通过对字段数据值进行 截断、加密、隐藏 等方式让敏感数据脱敏，使其不再具有利用价值。一般采用特殊字符（*等）代替真值，这种隐藏敏感数据的方法简单，但缺点是用户无法得知原数据的格式，如果想要获取完整信息，要让用户授权查询。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631244635570.png&quot; alt=&quot;5.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;截断方式&lt;/p&gt;&lt;p&gt;比如我们将身份证号用 * 替换真实数字就变成了 &amp;quot;220724 ****** 3523&amp;quot;，非常简单。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631250614618.png&quot; alt=&quot;6.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;隐藏方式&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;2、随机值&lt;/p&gt;&lt;p&gt;随机值替换，字母变为随机字母，数字变为随机数字，文字随机替换文字的方式来改变敏感数据，这种方案的优点在于可以在一定程度上保留原有数据的格式，往往这种方法用户不易察觉的。&lt;/p&gt;&lt;p&gt;我们看到 name 和 idnumber 字段进行了随机化脱敏，而名字姓、氏随机化稍有特殊，需要有对应姓氏字典数据支持。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622631291282408.png&quot; alt=&quot;7.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;随机值&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;3、数据替换&lt;/p&gt;&lt;p&gt;数据替换与前边的无效化方式比较相似，不同的是这里不以特殊字符进行遮挡，而是用一个设定的虚拟值替换真值。比如说我们将手机号统一设置成 “13651300000”。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622643119693745.png&quot; alt=&quot;1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;数据替换&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;4、对称加密&lt;/p&gt;&lt;p&gt;对称加密是一种特殊的可逆脱敏方法，通过加密密钥和算法对敏感数据进行加密，密文格式与原始数据在逻辑规则上一致，通过密钥解密可以恢复原始数据，要注意的就是密钥的安全性。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622643276850987.png&quot; alt=&quot;2.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;对称加密&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;5、平均值&lt;/p&gt;&lt;p&gt;平均值方案经常用在统计场景，针对数值型数据，我们先计算它们的均值，然后使脱敏后的值在均值附近随机分布，从而保持数据的总和不变。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622643259714074.png&quot; alt=&quot;3.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;原始数据&lt;/p&gt;&lt;p&gt;对价格字段 price 做平均值处理后，字段总金额不变，但脱敏后的字段值都在均值 60 附近。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;6、偏移和取整&lt;/p&gt;&lt;p&gt;这种方式通过随机移位改变数字数据，偏移取整在保持了数据的安全性的同时保证了范围的大致真实性，比之前几种方案更接近真实数据，在大数据分析场景中意义比较大。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;比如下边的日期字段create_time中 2020-12-08 15:12:25 变为 2018-01-02 15:00:00。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622643187486051.png&quot; alt=&quot;4.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;取整&lt;/p&gt;&lt;p&gt;数据脱敏规则在实际应用中往往都是多种方案配合使用，以此来达到更高的安全级别。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;总 结&lt;/p&gt;&lt;p&gt;无论是静态脱敏还是动态脱敏，其最终都是为了防止组织内部对隐私数据的滥用，防止隐私数据在未经脱敏的情况下从组织流出。所以作为一个程序员不泄露数据是最起码的操守。&lt;/p&gt;</description><pubDate>Wed, 02 Jun 2021 18:43:05 +0800</pubDate></item><item><title>好用高效的在线工具</title><link>https://www.xcssh.cn/?id=122</link><description>&lt;p&gt;在线画图工具&lt;/p&gt;&lt;p&gt;首先就是画图工具，我想了一下，程序员经常接触的无非也就是流程图、思维导图、原型图、UML图、网络拓扑图、组织结构图等等这些。&lt;/p&gt;&lt;p&gt;下面这三个在线画图网站我想应该足够了，其中那个processon是我用得最多的，历史文章中几乎所有相关的图形都是用它绘制，然后导出图片的&lt;/p&gt;&lt;p&gt;在线画图工具ProcessOn：https://www.processon.com/&lt;/p&gt;&lt;p&gt;在线画图工具draw.io：https://app.diagrams.net/&lt;/p&gt;&lt;p&gt;在线思维导图工具：http://www.mindline.cn/webapp&lt;/p&gt;&lt;p&gt;PlantUML在线编辑器：http://haha98k.com/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线开发辅助工具&lt;/p&gt;&lt;p&gt;在做开发和写代码的过程中，经常要用到的辅助工具其实还挺多，这段时间我重点就在整理归纳这个。&lt;/p&gt;&lt;p&gt;以我个人的情况为例，日常开发经常会用到一些辅助工具我总结为8大类，包括：编解码工具、转换工具、正则工具、编译工具、网络工具、格式化工具、可视化工具、在线生成器、以及其他工具等等。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线编解码工具&lt;/p&gt;&lt;p&gt;BASE64编解码工具：https://base64.supfree.net/&lt;/p&gt;&lt;p&gt;MD5编码工具：https://www.zxgj.cn/g/md5&lt;/p&gt;&lt;p&gt;AES/DES加解密：http://www.fly63.com/tool/cipher/&lt;/p&gt;&lt;p&gt;JWT解码工具：http://jwt.calebb.net/&lt;/p&gt;&lt;p&gt;ASCII编解码工具：https://www.matools.com/code-convert-ascii&lt;/p&gt;&lt;p&gt;Unicode编解码工具：https://www.zxgj.cn/g/unicode&lt;/p&gt;&lt;p&gt;UTF-8编解码工具：https://www.zxgj.cn/g/utf8&lt;/p&gt;&lt;p&gt;字符串编解码工具：https://www.zxgj.cn/g/enstring&lt;/p&gt;&lt;p&gt;URL编解码工具：http://tool.chinaz.com/tools/urlencode.aspx?jdfwkey=lbixz1&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线转换工具&lt;/p&gt;&lt;p&gt;在线ASCII码对照表：http://www.fly63.com/tool/ascii/&lt;/p&gt;&lt;p&gt;通用进制转换工具：https://www.zxgj.cn/g/jinzhi&lt;/p&gt;&lt;p&gt;在线浮点数十进制转换：http://www.binaryconvert.com/&lt;/p&gt;&lt;p&gt;RGB颜色转换：https://www.zxgj.cn/g/yansezhi&lt;/p&gt;&lt;p&gt;时间戳转换工具：https://www.zxgj.cn/g/unix&lt;/p&gt;&lt;p&gt;计量单位换算工具：http://www.fly63.com/tool/unitable/&lt;/p&gt;&lt;p&gt;在线JSON解析：http://www.json.cn/&lt;/p&gt;&lt;p&gt;在线JS代码格式化工具：https://prettier.io/playground/&lt;/p&gt;&lt;p&gt;SQL压缩/格式化工具：https://www.zxgj.cn/g/sqlformat&lt;/p&gt;&lt;p&gt;JSON和XML在线转换：https://www.zxgj.cn/g/jsonxml&lt;/p&gt;&lt;p&gt;JSON/YAML在线转换：http://www.fly63.com/tool/jsonyaml/&lt;/p&gt;&lt;p&gt;人民币大小写转换工具：http://www.fly63.com/tool/renmingbi/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;正则表达式工具&lt;/p&gt;&lt;p&gt;正则表达式调试工具：https://regexr.com/&lt;/p&gt;&lt;p&gt;正则表达式可视化工具：https://jex.im/regulex/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;网络工具&lt;/p&gt;&lt;p&gt;IP地址归属地查询：https://www.ip138.com/&lt;/p&gt;&lt;p&gt;IP地址查询：https://www.ipip.net/ip.html&lt;/p&gt;&lt;p&gt;HTTP在线接口测试工具：http://www.fly63.com/php/http/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线编译运行工具&lt;/p&gt;&lt;p&gt;C#在线编译运行：https://rextester.com/&lt;/p&gt;&lt;p&gt;C/C++在线编译调试：https://www.onlinegdb.com/&lt;/p&gt;&lt;p&gt;在线编译工具套装：https://c.runoob.com/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;可视化/格式化工具&lt;/p&gt;&lt;p&gt;在线前端编辑器: https://codepen.io/&lt;/p&gt;&lt;p&gt;在线数据可视化：https://flourish.studio/&lt;/p&gt;&lt;p&gt;在线JSON解析：http://www.json.cn/&lt;/p&gt;&lt;p&gt;在线CSS代码可视化工具：https://enjoycss.com/&lt;/p&gt;&lt;p&gt;XML格式化工具：https://www.zxgj.cn/g/xmlformat&lt;/p&gt;&lt;p&gt;在线JS代码格式化工具：https://prettier.io/playground/&lt;/p&gt;&lt;p&gt;SQL压缩/格式化工具：https://www.zxgj.cn/g/sqlformat&lt;/p&gt;&lt;p&gt;JSON和XML在线转换：https://www.zxgj.cn/g/jsonxml&lt;/p&gt;&lt;p&gt;JSON/YAML在线转换：http://www.fly63.com/tool/jsonyaml/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线生成器&lt;/p&gt;&lt;p&gt;UUID在线生成器：https://www.zxgj.cn/g/uuid&lt;/p&gt;&lt;p&gt;随机数生成器：https://www.zxgj.cn/g/suijishu&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;其他常用工具&lt;/p&gt;&lt;p&gt;在线Nginx配置工具：https://nginxconfig.io/&lt;/p&gt;&lt;p&gt;在线对比工具：http://www.fly63.com/tool/textdiff/&lt;/p&gt;&lt;p&gt;在线Chrome浏览器插件：https://www.crx4chrome.com/&lt;/p&gt;&lt;p&gt;在线接口文档管理工具：http://www.docway.net/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线素材工具&lt;/p&gt;&lt;p&gt;如果你也写文章，或者做视频，那就一定少不了要找素材，包括各种图片、背景、emoji表情、表情包、壁纸、视频、gif图等等。&lt;/p&gt;&lt;p&gt;如此一来，那些好用的在线素材工具就必不可少了，比如像各种表情包工具、icon图标库、矢量图库、图片素材库、壁纸库等等。&lt;/p&gt;&lt;p&gt;免费透明背景图片素材：http://pngimg.com/&lt;/p&gt;&lt;p&gt;Emoji表情搜索：https://emoji.svend.cc/&lt;/p&gt;&lt;p&gt;Emoji表情包下载：https://emojiisland.com/&lt;/p&gt;&lt;p&gt;open source icons：https://feathericons.com/&lt;/p&gt;&lt;p&gt;阿里巴巴矢量图标库：https://www.iconfont.cn/&lt;/p&gt;&lt;p&gt;表情包在线网站：https://fabiaoqing.com/&lt;/p&gt;&lt;p&gt;免费PNG图片库：https://pluspng.com/&lt;/p&gt;&lt;p&gt;ICON图标在线下载：https://www.iconfinder.com/&lt;/p&gt;&lt;p&gt;极简壁纸：https://bz.zzzmh.cn/&lt;/p&gt;&lt;p&gt;Wallpaper Abyss壁纸：https://wall.alphacoders.com&lt;/p&gt;&lt;p&gt;Pixabay图片素材库：https://pixabay.com/zh/&lt;/p&gt;&lt;p&gt;Unsplash图片素材库：https://unsplash.com&lt;/p&gt;&lt;p&gt;Pexels图片素材库：http://www.pexels.com&lt;/p&gt;&lt;p&gt;NASA图片视频素材库：https://images.nasa.gov&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;设计制作类工具&lt;/p&gt;&lt;p&gt;同样，对于那些文章创作者和视频创作者而言，设计封面，做海报，设计LOGO，图片美化等等基本也是刚需。&lt;/p&gt;&lt;p&gt;这样大概率日常会用到一些简易好上手的在线设计制作类工具，比如在线P图、音/视频轻量化剪辑、logo制作、海报设计制作、图片美化、在线图片转换或生成等等，毕竟不是每时每刻我们都需要那种重量级的本地软件。&lt;/p&gt;&lt;p&gt;在线PS：https://www.uupoop.com/&lt;/p&gt;&lt;p&gt;在线音频剪辑：https://www.weixinsyt.com/&lt;/p&gt;&lt;p&gt;在线视频剪辑：https://www.kapwing.com/&lt;/p&gt;&lt;p&gt;免费logo在线制作：http://www.uugai.com/&lt;/p&gt;&lt;p&gt;艺术字体在线生成：https://www.qt86.com/&lt;/p&gt;&lt;p&gt;在线表格转换工具: https://tableconvert.com/&lt;/p&gt;&lt;p&gt;在线海报设计工具: https://www.designcap.com/&lt;/p&gt;&lt;p&gt;图片智能放大工具：https://bigjpg.com/&lt;/p&gt;&lt;p&gt;二维码美化器：https://mh.cli.im/&lt;/p&gt;&lt;p&gt;在线代码截图工具：https://carbon.now.sh/&lt;/p&gt;&lt;p&gt;在线抠图工具：https://www.remove.bg/zh&lt;/p&gt;&lt;p&gt;ICO图标在线生成：http://www.fly63.com/php/ico/&lt;/p&gt;&lt;p&gt;SVG转PNG工具：http://www.fly63.com/tool/svg2img/&lt;/p&gt;&lt;p&gt;视频转GIF工具：http://www.fly63.com/tool/giftxt/&lt;/p&gt;&lt;p&gt;二维码在线生成器：http://www.fly63.com/tool/ewm/&lt;/p&gt;&lt;p&gt;二维码在线解码：http://www.fly63.com/php/decoder/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;写作辅助工具&lt;/p&gt;&lt;p&gt;在我写文章的过程中经常会用到和写作相关的辅助工具，比方说：字数统计工具、Markdown格式的文章排版工具、图床网站、代码截图工具等等，所以下面这些在线工具就能很好地满足我的需求&lt;/p&gt;&lt;p&gt;在线字数统计：https://www.eteste.com/&lt;/p&gt;&lt;p&gt;mdnice markdown排版工具：https://mdnice.com/&lt;/p&gt;&lt;p&gt;md2all markdown排版工具：http://md.aclickall.com/&lt;/p&gt;&lt;p&gt;在线图床神器：https://picx.xpoet.cn/&lt;/p&gt;&lt;p&gt;在线免费图床：https://sm.ms/&lt;/p&gt;&lt;p&gt;图壳图床：https://imgkr.com/&lt;/p&gt;&lt;p&gt;在线代码截图工具：https://carbon.now.sh/&lt;/p&gt;&lt;p&gt;在线短链接工具：https://urlify.cn/&lt;/p&gt;&lt;p&gt;在线文本替换：http://www.fly63.com/tool/textreplace/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线办公工具&lt;/p&gt;&lt;p&gt;这部分在线工具主要用来处理一些和文档以及文稿相关的事情，经常用到的比如：在线的全套pdf处理和转换工具、各种各样多媒体文件间的相互转换工具、在线识别工具、在线压缩工具等等。&lt;/p&gt;&lt;p&gt;pdf在线处理工具1：https://smallpdf.com/cn/pdf-tools&lt;/p&gt;&lt;p&gt;pdf在线处理工具2：https://tools.pdf24.org/zh/&lt;/p&gt;&lt;p&gt;pdf转word在线工具：https://www.pdftoword.com/&lt;/p&gt;&lt;p&gt;在线多媒体转换器合集：https://cn.office-converter.com/&lt;/p&gt;&lt;p&gt;在线文字识别工具：https://ocr.wdku.net/&lt;/p&gt;&lt;p&gt;在线文件压缩工具：&lt;a href=&quot;https://docsmall.com/&quot; _src=&quot;https://docsmall.com/&quot;&gt;https://docsmall.com/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;学习类文件转换工具:&amp;nbsp;https://www.easeconvert.com/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;文档笔记工具&lt;/p&gt;&lt;p&gt;好记性不如烂笔头，作为一个学习者，我觉得记笔记是必不可少的步骤。当然现在基本都做电子笔记和电子文档比较多。&lt;/p&gt;&lt;p&gt;现如今各式各样优秀的文档工具和笔记软件鳞次栉比，好用的也有很多，整理成如下列表，这东西各有长处，使用哪个最合意还得看个人习惯和需求了。&lt;/p&gt;&lt;p&gt;印象笔记：https://www.yinxiang.com/&lt;/p&gt;&lt;p&gt;有道笔记：https://note.youdao.com/&lt;/p&gt;&lt;p&gt;OneNote：https://www.onenote.com/&lt;/p&gt;&lt;p&gt;幕布：https://mubu.com/&lt;/p&gt;&lt;p&gt;为知笔记：https://www.wiz.cn/&lt;/p&gt;&lt;p&gt;石墨文档：https://shimo.im/&lt;/p&gt;&lt;p&gt;Simplenote：https://simplenote.com/&lt;/p&gt;&lt;p&gt;语雀：https://www.yuque.com/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;编程学习网&lt;/p&gt;&lt;p&gt;哔哩哔哩：https://www.bilibili.com/&lt;/p&gt;&lt;p&gt;C语言网：https://www.dotcpp.com/&lt;/p&gt;&lt;p&gt;cppreference：http://zh.cppreference.com/&lt;/p&gt;&lt;p&gt;中国大学MOOC：https://www.icourse163.org/&lt;/p&gt;&lt;p&gt;牛客网：www.nowcoder.com&lt;/p&gt;&lt;p&gt;网易公开课：open.163.com&lt;/p&gt;&lt;p&gt;CodeGym：https://codegym.cc/&lt;/p&gt;&lt;p&gt;BeginnersBook：https://beginnersbook.com/&lt;/p&gt;&lt;p&gt;JavaSED：http://www.javased.com/&lt;/p&gt;&lt;p&gt;codecademy：https://www.codecademy.com/&lt;/p&gt;&lt;p&gt;Coursera：https://www.coursera.org/&lt;/p&gt;&lt;p&gt;StackOverFlow：https://stackoverflow.com/&lt;/p&gt;&lt;p&gt;LeetCode：https://leetcode-cn.com/&lt;/p&gt;&lt;p&gt;LintCode：https://www.lintcode.com/&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在线教程和文档&lt;/p&gt;&lt;p&gt;Git中文教程：https://git-scm.com/book/zh/v2&lt;/p&gt;&lt;p&gt;SVN中文手册：http://svnbook.red-bean.com/nightly/zh/index.html&lt;/p&gt;&lt;p&gt;jQuery API中文文档：https://jquery.cuishifeng.cn/&lt;/p&gt;&lt;p&gt;Nginx中文文档：https://www.nginx.cn/doc/index.html&lt;/p&gt;&lt;p&gt;Kafka中文文档：https://kafka.apachecn.org/&lt;/p&gt;&lt;p&gt;Mybatis中文文档：https://mybatis.org/mybatis-3/zh/index.html&lt;/p&gt;&lt;p&gt;微信小程序官方文档：https://developers.weixin.qq.com/miniprogram/dev/framework/&lt;/p&gt;&lt;p&gt;Nodejs中文教程文档：http://nodejs.cn/learn&lt;/p&gt;&lt;p&gt;Apache Web Server文档：http://httpd.apache.org/docs/&lt;/p&gt;&lt;p&gt;Spring文档中文版：https://www.springcloud.cc/spring-reference.html&lt;/p&gt;&lt;p&gt;Golang标准库文档中文版：https://studygolang.com/pkgdoc&lt;/p&gt;&lt;p&gt;Java 8官方文档：https://docs.oracle.com/javase/8/docs/api/index.html&lt;/p&gt;&lt;p&gt;Maven官方文档：http://maven.apache.org/guides/&lt;/p&gt;&lt;p&gt;Tomcat 8官方文档：http://tomcat.apache.org/tomcat-8.0-doc/index.html&lt;/p&gt;&lt;p&gt;Spring Boot官方文档：https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/&lt;/p&gt;&lt;p&gt;RabbitMQ官方文档：https://www.rabbitmq.com/documentation.html&lt;/p&gt;&lt;p&gt;RocketMQ官方文档：http://rocketmq.apache.org/docs/quick-start/&lt;/p&gt;&lt;p&gt;Dubbo中文文档：https://dubbo.apache.org/zh/docs/&lt;/p&gt;&lt;p&gt;Netty官方文档：https://netty.io/wiki/index.html&lt;/p&gt;&lt;p&gt;Elasticsearch官方文档：https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html&lt;/p&gt;&lt;p&gt;Spring Cloud官方文档：https://spring.io/projects/spring-cloud&lt;/p&gt;&lt;p&gt;Docker官方文档：https://docs.docker.com/get-started/&lt;/p&gt;&lt;p&gt;kubernetes中文文档：https://kubernetes.io/zh/docs/home/&lt;/p&gt;&lt;p&gt;thymeleaf官方文档：https://www.thymeleaf.org/documentation.html&lt;/p&gt;&lt;p&gt;Vue.js中文文档：https://cn.vuejs.org/v2/guide/&lt;/p&gt;&lt;p&gt;React.js官方文档：https://reactjs.org/docs/getting-started.html&lt;/p&gt;&lt;p&gt;Jenkins中文文档：&lt;a href=&quot;https://www.jenkins.io/zh/doc/&quot; _src=&quot;https://www.jenkins.io/zh/doc/&quot;&gt;https://www.jenkins.io/zh/doc/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/06/202106021622628560137671.png&quot; alt=&quot;640.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Wed, 02 Jun 2021 18:08:36 +0800</pubDate></item><item><title>阿里云OSS</title><link>https://www.xcssh.cn/?id=121</link><description>&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;OSS即Object Storage Service(对象存储服务)是提供海量数据存储,安全,低成本,高可靠的云存储服务.本来将为你介绍OSS.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;color: #3D464D;letter-spacing: 2px;text-align: start;font-size: 20px;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;阿里云介绍的关于产品优势&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;color: #3D464D;letter-spacing: 2px;text-align: start;font-size: 20px;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;：&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;有配套的SDK,成型的自动化工具,运维操作简化&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;弹性伸缩的特点保证用户在遇到如高并发,高流量场景时,能够自动帮用户做一些弹性调配&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;数据迁移便捷,阿里云支持多种工具,也提供在线迁移服务&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;一.&amp;nbsp;开通OSS及创建Bucket&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/04/202104211618991239506558.png&quot; alt=&quot;1.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;存储空间(Bucket)&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;存储空间是用户用于存储对象(Object)的容器，所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性，包括地域、访问权限、存储类型等。用户可以根据实际需求，创建不同类型的存储空间来存储不同的数据。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/04/202104211618991253201558.png&quot; alt=&quot;2.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;二. PHP安装OSS&lt;/span&gt;&lt;/strong&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OSS PHP SDK适用于PHP 5.3以上版本,主要有三种安装方式.首选composer方式&lt;/p&gt;&lt;ul style=&quot;list-style-type: circle;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 18px&quot;&gt;composer方式&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1. composer require aliyuncs/oss-sdk-php&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;2. composer.json文件中添加如下依赖关系&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;&amp;quot;require&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;php&amp;quot;:&amp;nbsp;&amp;quot;&amp;gt;=7.1.3&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;ext-json&amp;quot;:&amp;nbsp;&amp;quot;*&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;aliyuncs/oss-sdk-php&amp;quot;:&amp;nbsp;&amp;quot;2.3&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;运行composer install，安装依赖&lt;/p&gt;&lt;ul style=&quot;list-style-type: circle;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 18px&quot;&gt;phar方式&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在GitHub中选择相应的版本并下载打包好的phar文件&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在代码中引入phar文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;require_once&amp;nbsp;&amp;#39;/path/to/oss-sdk-php.phar&amp;#39;;&lt;/pre&gt;&lt;ul style=&quot;list-style-type: circle;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 18px&quot;&gt;源码方式&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在GitHub中选择相应版本并下载打包好的zip文件&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;解压后的根目录中包含一个autoload.php文件，在代码中引入此文件：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;require_once&amp;nbsp;&amp;#39;/path/to/oss-sdk/autoload.php&amp;#39;;&lt;/pre&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;三. 使用自有域名访问&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;1. 绑定自定义域名&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;OSS管理控制台=&amp;gt;单击Bucket列表=&amp;gt;单击目标Bucket名称=&amp;gt;传输管理=&amp;gt;域名管理=&amp;gt;单击绑定域名=&amp;gt;在绑定域名面板,输入要绑定的域名&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/04/202104211618991470822967.png&quot; alt=&quot;3.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;2. 添加CNAME记录&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;云解析DNS控制台=&amp;gt;解析设置=&amp;gt;添加记录=&amp;gt;单击确定&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/04/202104211618991476832986.png&quot; alt=&quot;4.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;3.&amp;nbsp;通过自有域名访问&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/04/202104211618991482157045.png&quot; alt=&quot;5.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;四. 访问控制&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;用户签名验证: OSS通过使用AccessKey ID、AccessKey Secret对称加密的方法来验证某个请求的发送者身份&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在Header中包含签名: 您可以在HTTP请求中增加 Authorization 的Header来包含签名（Signature）信息，表明这个消息已被授权&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在URL中包含签名: 除了使用Authorization Header，您还可以在URL中加入签名信息，以便将该URL转给第三方实现授权访问&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;Bucket权限控制: 对象存储OSS提供Bucket级别的权限访问控制&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;/strong&gt;场景:&amp;nbsp;需要对图片和文件进行15分钟过期处理&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;选型:&amp;nbsp;&lt;/p&gt;&lt;ul style=&quot;list-style-type: circle;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;用户签名验证: 长度太长,不方便使用,&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在Header中包含签名: 安全可靠,调试困难&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在URL中包含签名: 暴露AccessKeyId及过期时间.符合应用场景&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;Bucket权限控制: Bucket目前有三种访问权限：public-read-write(公共读写)，public-read(公共读，私有写)和private(私有读写)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;在URL中包含签名:&amp;nbsp;vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php 下&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;white-space: pre-wrap;color: #DD1144;font-family: Consolas, &amp;#39;Liberation Mono&amp;#39;, Menlo, Courier, monospace;font-size: 14px;text-align: left;background-color: rgba(0, 0, 0, 0.03)&quot;&gt;signUrl&lt;/span&gt;方法&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;支持生成get和put签名,&amp;nbsp;用户可以生成一个具有一定有效期的
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;签名过的url
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;$bucket
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;$object
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;int&amp;nbsp;$timeout
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;$method
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;array&amp;nbsp;$options&amp;nbsp;Key-Value数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&amp;nbsp;string
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;OssException
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;signUrl($bucket,&amp;nbsp;$object,&amp;nbsp;$timeout&amp;nbsp;=&amp;nbsp;60,&amp;nbsp;$method&amp;nbsp;=&amp;nbsp;self::OSS_HTTP_GET,&amp;nbsp;$options&amp;nbsp;=&amp;nbsp;NULL)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;precheckCommon($bucket,&amp;nbsp;$object,&amp;nbsp;$options);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//method
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(self::OSS_HTTP_GET&amp;nbsp;!==&amp;nbsp;$method&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;self::OSS_HTTP_PUT&amp;nbsp;!==&amp;nbsp;$method)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;OssException(&amp;quot;method&amp;nbsp;is&amp;nbsp;invalid&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$options[self::OSS_BUCKET]&amp;nbsp;=&amp;nbsp;$bucket;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$options[self::OSS_OBJECT]&amp;nbsp;=&amp;nbsp;$object;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$options[self::OSS_METHOD]&amp;nbsp;=&amp;nbsp;$method;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!isset($options[self::OSS_CONTENT_TYPE]))&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$options[self::OSS_CONTENT_TYPE]&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$timeout&amp;nbsp;=&amp;nbsp;time()&amp;nbsp;+&amp;nbsp;$timeout;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$options[self::OSS_PREAUTH]&amp;nbsp;=&amp;nbsp;$timeout;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$options[self::OSS_DATE]&amp;nbsp;=&amp;nbsp;$timeout;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;setSignStsInUrl(true);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$this-&amp;gt;auth($options);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;strong style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 24px&quot;&gt;五. 注意&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;OSS 上传限制&lt;/p&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;通过简单上传、表单上传、追加上传的方式上传文件,单个文件的大小不能超过5 GB；&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;通过分片上传的方式上传文件，单个文件的大小不能超过48.8 TB&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;通过控制台更改文件类型（使用CopyObject接口），文件的大小不能超过1 GB。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;通过控制台批量删除文件，文件的个数不能超过100个。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;如果上传同名文件，已有文件将被覆盖。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;文件删除后无法恢复。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;图片处理&lt;/p&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;图片格式只支持JPG、PNG、BMP、GIF、WebP、TIFF&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;原图大小不能超过20 MB&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;使用&lt;br style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;/&gt;&lt;/p&gt;&lt;ul style=&quot;padding: 0px 0px 0px 2.2em;max-width: 100%;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &amp;#39;Helvetica Neue&amp;#39;, &amp;#39;PingFang SC&amp;#39;, &amp;#39;Hiragino Sans GB&amp;#39;, &amp;#39;Microsoft YaHei UI&amp;#39;, &amp;#39;Microsoft YaHei&amp;#39;, Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-align: justify;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;生命周期规则: 定期将非热门数据转换为低频访问、归档存储或冷归档存储，将不再需要访问的数据删除，让您更高效地管理您存储的数据，节省大量人力及存储成本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;图片处理: 对存储在OSS上的图片进行格式转换、缩放、裁剪、旋转、添加水印等各种操作&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;内容分发网络CDN:&amp;nbsp;将OSS资源缓存到各区域的边缘节点，利用边缘节点缓存的数据，提升同一个文件，被边缘节点客户大量重复下载的体验&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;E-MapReduce:&amp;nbsp;构建于ECS上的大数据处理的系统解决方案，基于开源的Apache Hadoop和Apache Spark，方便您分析和处理自己的数据&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;媒体处: ：将存储于OSS的音视频转码成适合在PC、TV以及移动终端上播放的格式。并基于海量数据深度学习，对音视频的内容、文字、语音、场景多模态分析，实现智能审核、内容理解、智能编辑&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 0px;max-width: 100%;clear: both;min-height: 1em;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;&lt;span style=&quot;;padding: 0px;max-width: 100%;font-family: &amp;#39;pingfang SC&amp;#39;, &amp;#39;helvetica neue&amp;#39;, arial, &amp;#39;hiragino sans gb&amp;#39;, &amp;#39;microsoft yahei ui&amp;#39;, &amp;#39;microsoft yahei&amp;#39;, simsun, sans-serif;text-align: left;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;OSS提供图形化管理工具ossbrowser、命令行管理工具ossutil、FTP管理工具ossftp等各种类型的管理工具&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 21 Apr 2021 15:41:36 +0800</pubDate></item><item><title>Phpstrom 的插件推荐</title><link>https://www.xcssh.cn/?id=120</link><description>&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 24px;&quot;&gt;一. Translation最优秀的翻译插件&lt;/span&gt;&lt;/strong&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;特性&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;多翻译引擎 Google翻译 有道翻译 百度翻译 多语言互译 文档翻 语音朗读 自动选词 自动单词拆分&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;单词本&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;安装&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;通过 Settings -&amp;gt; Plugins -&amp;gt; Marketplace 进入插件市场选择Translation并下载安装，完成后重启就生效了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867233459210.png&quot; alt=&quot;01.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;项目地址&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;github：https://github.com/YiiGuxing/TranslationPlugin&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;项目介绍：http://yiiguxing.github.io/TranslationPlugin&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;兼容编辑器&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;IntelliJ IDEA, PhpStorm, WebStorm, PyCharm, RubyMine, AppCode, CLion, Gogland, DataGrip, Rider, MPS, Android Studio&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;使用:&amp;nbsp;可以使用快捷键: Ctrl+Shift+Y呼出如下翻译界面.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867248865285.png&quot; alt=&quot;02.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;可以使用快捷键: Ctrl+Shift+O呼出如下翻译界面&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867260420115.png&quot; alt=&quot;03.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 24px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;二.&amp;nbsp;在phpstorm上安装代码规范检查工具&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;安装&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;1. 安装phpcs&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;使用composer全局安装phpcs&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;composer global require &amp;quot;squizlabs/php_codesniffer=&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在windows系统，全局安装的话会在C:\Users\{user name}\AppData\Roaming\Composer\vendor\bin下生成一个phpcs.bat文件，这个是phpstorm后续设置需要用到的文件&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;2. phpstorm设置&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;打开phpstorm点击 File-&amp;gt;Settings-&amp;gt;Languages &amp;amp; Frameworks-&amp;gt;PHP-&amp;gt;Code Sniffer点击Configuration右侧的按钮&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;a. 选择PHP Code Sniffer (phpcs) path:的路径，就是刚才composer之后生成的那个phpcs.bat的路径。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867311368177.png&quot; alt=&quot;04.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;b. 选择之后点击Validate验证成功&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;c. 节点点击Editor-&amp;gt;Inspections展开点击右侧的PHP&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;d. 勾选PHP Code Sniffer Validation 选择右侧的PSR2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867331741799.png&quot; alt=&quot;05.png&quot;/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;效果如下图所示，如果写的代码不符合psr2编码风格规范的时候，该行代码会有波浪线，点击波浪线可以查看提示信息，根据信息我们修改就可以写出优雅的代码了&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867351748000.png&quot; alt=&quot;06.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左侧的写法不规范,idea会给出提示.右侧的线是一行超出80个字符就报错,再然后其他功能自己体会去吧.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;安装详情参照:&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; font-size: 20px; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;https://www.php.cn/php-weizijiaocheng-390263.html&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 20px; letter-spacing: 0.544px; background-color: #FFFFFF;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 24px;&quot;&gt;三. 破解&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;第一步&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;，下载JetbrainsIdesCrack-4.2-release，&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;链接：https://pan.baidu.com/s/1Jb2BEHTINon-SWZbhi-9ww&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;提取码：bdud&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;第二步&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;，将下载的jar扔到IDEA的bin目录下，如图&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612867377881089.png&quot; alt=&quot;07.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;第三步&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;，如果电脑是64位的就编辑idea64.exe.vmoptions文件，32位编辑idea.exe.vmoptions这个文件，&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;在最后面添加：&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;-javaagent:C:\Users\Vipthink\AppData\Local\JetBrains\Toolbox\apps\PhpStorm\ch0\202.7319.77\bin\JetbrainsIdesCrack-4.2-release.jar，bin前面替换成idea的安装目录，后面替换成下载到的jar名称。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;第四步&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;，启动idea填写注册码。可以通过lanyus大神提供的在线生成注册码的工具生成注册码，地址是：http://idea.lanyus.com/， 点击下方“获取注册码”，即可获取注册码。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;IDEA的快捷键网上就很多了,附上俩个:&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;https://www.open-open.com/lib/view/open1396578860887.html&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; font-size: 20px;&quot;&gt;https://www.jianshu.com/p/ce91cea16c60&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 20px; letter-spacing: 0.544px; white-space: pre; background-color: rgba(0, 0, 0, 0.027);&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Tue, 09 Feb 2021 18:38:47 +0800</pubDate></item><item><title>Phpstrom关于Git的简单介绍</title><link>https://www.xcssh.cn/?id=119</link><description>&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&amp;nbsp;此文只是带大家简单的了解一下IDEA关于Git的操作,详细的处理未介绍.总之多用多看多深究.&amp;nbsp;用IDEA的一个痛点是改代码之前不喜欢切换分支.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;一.&amp;nbsp;&amp;nbsp;Git目录&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;1. commit File: 修改代码提交本地仓库&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;在IDEA中，我们会看到文件被标识着不同颜色：红色，绿色，蓝色。它们分别代表什么意思呢？&lt;/span&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;红色：未被版本控制的文件，即未添加到版本控制的文件，例如我们添加到ignore中的文件。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;绿色：新加入版本的文件，即我们新创建的文件，还未提交到远程仓库。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;蓝色：修改过的文件，即远程仓库中已有该文件，我们这次对它进行了修改，但是还未提交。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;2. Add: 把本地文件从工作目录添加到本地仓库的stage区，对应Git的Add命令&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;3. Annotate:&amp;nbsp;分析此文件&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;4. compare with the same repository version: 与当前 同版本号的 资源比较&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;5. Compare with Branch…：与远程分支比较。我们提交前可以通过此功能比较下我们工作目录中代码和远程分支代码的异同。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;6. Show History：查看历史修改版本记录。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;7. Revert：回滚，会将你的本地修改回滚。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;8. Repository：各种仓库命令。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612855418887523.png&quot; alt=&quot;01.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;二.&amp;nbsp;Git提交树&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 2.2em; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;命令:&amp;nbsp;git log --oneline --graph --decorate --all&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612855445501997.png&quot; alt=&quot;02.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;Git提交树在Git的使用是非常重要的,用于排查哪一步出现问题,列如场景,中间提交一个不着急上线的版本分支到release分支上,需要紧急撤回等.不深究水太深,没事多看看&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;三. 分支操作&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;1. 当我想从远程仓库里拉取一条本地不存在的分支时&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;git checkout -b 本地分支名 origin/远程分支名&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;如果出现提示：&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre data-lang=&quot;sql&quot; style=&quot;margin-top: 0px;margin-bottom: 0px;padding: 1em 1em 1em 0px;max-width: 1000%;overflow-x: auto;white-space: normal;-webkit-box-flex: 1;flex: 1 1 0%;color: rgb(51, 51, 51);letter-spacing: 0.544px;text-align: justify;box-sizing: border-box !important;overflow-wrap: break-word !important&quot;&gt;fatal:&amp;nbsp;Cannot&amp;nbsp;update&amp;nbsp;paths&amp;nbsp;and&amp;nbsp;switch&amp;nbsp;to&amp;nbsp;branch&amp;nbsp;&amp;#39;dev2&amp;#39;&amp;nbsp;at&amp;nbsp;the&amp;nbsp;same&amp;nbsp;time.Did&amp;nbsp;you&amp;nbsp;intend&amp;nbsp;to&amp;nbsp;checkout&amp;nbsp;&amp;#39;origin/dev2&amp;#39;&amp;nbsp;which&amp;nbsp;can&amp;nbsp;not&amp;nbsp;be&amp;nbsp;resolved&amp;nbsp;as&amp;nbsp;commit?&lt;/pre&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;表示拉取不成功。我们需要执行&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;git fetch# 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;git checkout -b 本地分支名 origin/远程分支名&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612855551827094.png&quot; alt=&quot;03.png&quot;/&gt;&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 2.2em; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Checkout:&amp;nbsp;切换本地分支&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Show DIff with&amp;nbsp;Working Tree:&amp;nbsp;比较俩分支文件改动&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Merge into&amp;nbsp;Current: 合并到当前分支&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Delete:&amp;nbsp;删除当前分支&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;四.&amp;nbsp;Annotate-分析此文件&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612855578902486.png&quot; alt=&quot;04.png&quot;/&gt;&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 2.2em; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Close Annotation: 关闭左侧的改动记录&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;View:&amp;nbsp;左侧展示的数据&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Show in&amp;nbsp;Git Log:&amp;nbsp;展示此文件的更改&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;提交树&lt;/span&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;五. 合并(Merge)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在开发中难免会遇到多人修改同一个文件，造成版本冲突，这时候如果需要程序正常运行并且确保功能完整就需要开发人员手动解决这些冲突，并将代码合并，得到最终一致性的代码最后再push到远程。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;而这一块往往对很多人来说是最头疼的，操作不当可能会造成代码紊乱造成事故，其实理解了原理，熟练之后其实也没那么复杂。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2021/02/202102091612855597234392.png&quot; alt=&quot;05.png&quot;/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 09 Feb 2021 15:21:56 +0800</pubDate></item><item><title>PHP面试基础</title><link>https://www.xcssh.cn/?id=118</link><description>&lt;p&gt;1. mysql 事务的四个特征(ACID)&lt;/p&gt;&lt;p&gt;原子性:事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做&lt;/p&gt;&lt;p&gt;一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态.因此当数据库只包含成功事务提交的结果时,&lt;/p&gt;&lt;p&gt;就说数据库处于一致性状态.如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,&lt;/p&gt;&lt;p&gt;这时数据库就处于一种不正确的状态,或者说是不一致的状态&lt;/p&gt;&lt;p&gt;隔离线:一个事务的执行不能其它事务干扰,即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰&lt;/p&gt;&lt;p&gt;持续性:指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,接下来的其它操作或故障不应该对其执行结果有任何影响&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;2. Mysql的四种隔离级别&lt;/p&gt;&lt;p&gt;Read Uncommitted (读取未提交内容)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 在该隔离级别,所有事务都可以看到其它未提交事务的执行结果,本隔离级别很少用于实际应用,因为它的性能也不比其它级别好多少.读取未提交的数据,也称为脏读(Dirty Read)&lt;/p&gt;&lt;p&gt;Read Committed (读取提交内容)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 这是大多数数据库系统的默认隔离级别(但不是Mysql默认的),它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变,这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其它实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果&lt;/p&gt;&lt;p&gt;Repeatable Read (可重读)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mysql默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行,不过理论上,这会导致另一个棘手的问题: 幻读 (Phantom Read) .简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户在读取该范围的数据行时,会发现新的 幻影 行,InnoDB和Falcon存储引擎通过多版本并发控制(MVCC)机制解决了该问题&lt;/p&gt;&lt;p&gt;Serializable (可串行化)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 这是最高的隔离级别,它通过强制事务排序,使之不可能互相冲突,从而解决幻读问题,简言之,它是在每个读的数据行上加上共享锁,在这个级别,可能导致大量的超时现象和锁竞争&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;3. for循环跟 foreach 的原理&lt;/p&gt;&lt;p&gt;a. for循环的时候是按照数字递增的,因此for只能访问键为数字的数组,列如循环 按照$i=0到$i=4去递增访问$arr中键为0到4的单元&lt;/p&gt;&lt;p&gt;但该数组中的键依次为:1,3,5,4,8. 而键值超过4的数组单元(5=&amp;gt;&amp;#39;b&amp;#39;,8=&amp;gt;&amp;#39;d&amp;#39;)不会被访问到,因为count($arr1)=5,故$i&amp;lt;5;&amp;nbsp;&lt;/p&gt;&lt;p&gt;因此最后输出结果只有: a 22 c;对于$arr2中所有的键都是字符,并非数字,所以循环2中没有输出.&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;$arr1=array(1=&amp;gt;&amp;#39;a&amp;#39;,&amp;nbsp;3=&amp;gt;22,&amp;nbsp;5=&amp;gt;&amp;#39;b&amp;#39;,&amp;nbsp;4=&amp;gt;&amp;#39;c&amp;#39;,&amp;nbsp;8=&amp;gt;&amp;#39;d&amp;#39;);
$count1=count($arr1)
for($i=0,$i&amp;lt;$count1$i++){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;$arr1[$i].&amp;#39;&amp;nbsp;&amp;#39;;&amp;nbsp;&amp;nbsp;//&amp;nbsp;a&amp;nbsp;22&amp;nbsp;c
}&lt;/pre&gt;&lt;p&gt;b. foreach循环结构是按照数组内部的指针去循环的,当foreach开始执行时,数组内部的指针会自动指向第一个单元.&lt;/p&gt;&lt;p&gt;因此下一次循环中将会得到下一个单元,不需要按照数组的键来遍历整个数组,这也是foreach与for的不同之处.当然foreach只能用于数组和对象,并且由于foreach依赖内部数组指针,再循环中修改其值将可能导致意外的行为.&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;$arr2=array(&amp;#39;a&amp;#39;=&amp;gt;&amp;#39;aaa&amp;#39;,&amp;nbsp;&amp;#39;b&amp;#39;=&amp;gt;&amp;#39;bbb&amp;#39;,&amp;nbsp;&amp;#39;c&amp;#39;=&amp;gt;&amp;#39;ccc&amp;#39;,&amp;nbsp;&amp;#39;d&amp;#39;=&amp;gt;&amp;#39;ddd&amp;#39;,&amp;nbsp;&amp;#39;e&amp;#39;=&amp;gt;&amp;#39;eee&amp;#39;);
foreach($arr2&amp;nbsp;as&amp;nbsp;$key=&amp;gt;$value){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;$key.&amp;#39;=&amp;gt;&amp;#39;.$value.&amp;#39;&amp;nbsp;&amp;#39;;
}&lt;/pre&gt;&lt;p&gt;注: for每次循环都操作对应索引下的值,对于每个值的改变也都会反映到被遍历的对象中,而foreach每次操作一个单元,都是将其索引和值分别取到变量中,&lt;/p&gt;&lt;p&gt;或者只取出值到一个变量中,然后单独操作放有索引和值的变量,不会影响到被遍历的对象本身.如果要在遍历过程中修改对象中的值,需要在声明是在变量前加&amp;amp;符号. 例如:foreach($array as &amp;amp;$value).&lt;/p&gt;&lt;p&gt;c. foreach原理: 实现foreach的核心就是如下3个函数&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p&gt;zend_do_foreach_begin&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;zend_do_foreach_cont&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;zend_do_foreach_end&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;其中，zend_do_foreach_begin (代码太长，直接写伪码) 主要做了：&lt;/p&gt;&lt;p&gt;记录当前的opline行数（为以后跳转而记录）&lt;/p&gt;&lt;p&gt;对数组进行RESET（讲内部指针指向第一个元素）&lt;/p&gt;&lt;p&gt;获取临时变量 （$val）&lt;/p&gt;&lt;p&gt;设置获取变量的OPCODE FE_FETCH，结果存第3步的临时变量&lt;/p&gt;&lt;p&gt;记录获取变量的OPCODES的行数&lt;/p&gt;&lt;p&gt;而对于 zend_do_foreach_cont来说：&lt;/p&gt;&lt;p&gt;根据foreach_variable的u.EA.type来判断是否引用&lt;/p&gt;&lt;p&gt;根据是否引用来调整zend_do_foreach_begin中生成的FE_FETCH方式&lt;/p&gt;&lt;p&gt;根据zend_do_foreach_begin中记录的取变量的OPCODES的行数，来初始化循环(主要处理在循环内部的循环:do_begin_loop)&lt;/p&gt;&lt;p&gt;最后zend_do_foreach_end:&lt;/p&gt;&lt;p&gt;根据zend_do_foreach_begin中记录的行数信息，设置ZEND_JMP OPCODES&lt;/p&gt;&lt;p&gt;根据当前行数，设置循环体下一条opline, 用以跳出循环&lt;/p&gt;&lt;p&gt;结束循环（处理循环内循环:do_end_loop)&lt;/p&gt;&lt;p&gt;清理临时变量&lt;/p&gt;&lt;p&gt;当然， 在zend_do_foreach_cont 和 zend_do_foreach_end之间 会在语法分析阶段被填充foreach_satement的语句代码。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;4. PHP的垃圾回收机制&amp;nbsp;&lt;/p&gt;&lt;p&gt;原理 : php5和ph p7的垃圾回收机制都是利用引用计数&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;变量在zval的变量容器中结构: 类型,值,is_ref,refcount&lt;/p&gt;&lt;p&gt;zval中,除了存储变量的类型和值之外,还有is_ref字段和refcount字段&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p&gt;is_ref：是个bool值，用来区分变量是否属于引用集合。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;refcount：计数器，表示指向这个zval变量容器的变量个数。&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;注意: php5.3中将一个变量 = 赋值给另一个变量时,不会立即为新变量分配内存空间,而是在原变量的zval中给refcount加1。 只有当原变量或者发生改变时,才会为新变量分配内存空间,同时原变量的refcount减 1 。当然,如果unset原变量,新变量直接就使用原变量的zval而不是重新分配。&amp;amp;引用赋值时,原变量的is_ref&amp;nbsp; 加1.&amp;nbsp; 如果给一个变量&amp;amp;赋值,之前 = 赋值的变量会分配空间。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;&amp;lt;?php
$a&amp;nbsp;=&amp;nbsp;1;
xdebug_debug_zval(&amp;#39;a&amp;#39;);
echo&amp;nbsp;PHP_EOL;
$b&amp;nbsp;=&amp;nbsp;$a;
xdebug_debug_zval(&amp;#39;a&amp;#39;);
echo&amp;nbsp;PHP_EOL;
$c&amp;nbsp;=&amp;nbsp;&amp;amp;$a;
xdebug_debug_zval(&amp;#39;a&amp;#39;);
echo&amp;nbsp;PHP_EOL;
xdebug_debug_zval(&amp;#39;b&amp;#39;);
echo&amp;nbsp;PHP_EOL;
#&amp;nbsp;结果如下：
a:(refcount=1,&amp;nbsp;is_ref=0),int&amp;nbsp;1
a:(refcount=2,&amp;nbsp;is_ref=0),int&amp;nbsp;1
a:(refcount=2,&amp;nbsp;is_ref=1),int&amp;nbsp;1
b:(refcount=1,&amp;nbsp;is_ref=0),int&amp;nbsp;1&lt;/pre&gt;&lt;p&gt;标量在zval容器例子&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;&amp;lt;?php
$a&amp;nbsp;=&amp;nbsp;1;
xdebug_debug_zval(&amp;#39;a&amp;#39;);
echo&amp;nbsp;PHP_EOL;
$b&amp;nbsp;=&amp;nbsp;$a;
xdebug_debug_zval(&amp;#39;a&amp;#39;);
#&amp;nbsp;结果如下：可以看到标量（布尔，字符串，整形，浮点型）不再计数了
a:(refcount=0,&amp;nbsp;is_ref=0),int&amp;nbsp;1
a:(refcount=0,&amp;nbsp;is_ref=0),int&amp;nbsp;1&lt;/pre&gt;&lt;p&gt;复合类型数组和对象在zval容器例子&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;&amp;lt;?php
$a&amp;nbsp;=&amp;nbsp;array(&amp;nbsp;&amp;#39;meaning&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;#39;life&amp;#39;,&amp;nbsp;&amp;#39;number&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;42&amp;nbsp;);
xdebug_debug_zval(&amp;nbsp;&amp;#39;a&amp;#39;&amp;nbsp;);
echo&amp;nbsp;PHP_EOL;
class&amp;nbsp;Test{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;$a&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;$b&amp;nbsp;=&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;handle(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;#39;hehe&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
$test&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Test();
xdebug_debug_zval(&amp;#39;test&amp;#39;);
#&amp;nbsp;结果如下：可以看出，数组用了比数组长度多1个zval存储。数组分配了三个zval容器：a&amp;nbsp;&amp;nbsp;&amp;nbsp;meaning&amp;nbsp;&amp;nbsp;number
a:(refcount=1,&amp;nbsp;is_ref=0),
array
&amp;nbsp;&amp;nbsp;&amp;#39;meaning&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;(refcount=1,&amp;nbsp;is_ref=0),
string
&amp;#39;life&amp;#39;&amp;nbsp;(length=4)
&amp;nbsp;&amp;nbsp;&amp;#39;number&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;(refcount=1,&amp;nbsp;is_ref=0),
int&amp;nbsp;42
test:(refcount=1,&amp;nbsp;is_ref=0),
object(Test)[1]
&amp;nbsp;&amp;nbsp;public&amp;nbsp;&amp;#39;a&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;(refcount=2,&amp;nbsp;is_ref=0),
int&amp;nbsp;1
&amp;nbsp;&amp;nbsp;public&amp;nbsp;&amp;#39;b&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;(refcount=2,&amp;nbsp;is_ref=0),&lt;/pre&gt;&lt;p&gt;复合类型数组和对象在zval容器例子&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-php&quot;&gt;&amp;lt;?php
$a&amp;nbsp;=&amp;nbsp;array(&amp;nbsp;&amp;#39;meaning&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;#39;life&amp;#39;,&amp;nbsp;&amp;#39;number&amp;#39;&amp;nbsp;=&amp;gt;&amp;nbsp;42&amp;nbsp;);
xdebug_debug_zval(&amp;nbsp;&amp;#39;a&amp;#39;&amp;nbsp;);
echo&amp;nbsp;PHP_EOL;
class&amp;nbsp;Test{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;$a&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;$b&amp;nbsp;=&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;handle(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;#39;hehe&amp;#39;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
$test&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Test();
xdebug_debug_zval(&amp;#39;test&amp;#39;);
#&amp;nbsp;结果如下：可以明显的看到数组a的refcount=2，后经测试发现数组的refcount都是从2开始的
a:&amp;nbsp;(refcount=2,&amp;nbsp;is_ref=0)
array(size=2)
&amp;nbsp;&amp;nbsp;&amp;#39;meaning&amp;#39;=&amp;gt;(refcount=1,&amp;nbsp;is_ref=0)&amp;nbsp;string&amp;nbsp;&amp;#39;life&amp;#39;&amp;nbsp;(length=4)
&amp;nbsp;&amp;nbsp;&amp;#39;number&amp;#39;=&amp;gt;(refcount=0,is_ref=0)&amp;nbsp;int&amp;nbsp;42
test:&amp;nbsp;(refcount=1,&amp;nbsp;is_ref=0)
object(Test)[1]
&amp;nbsp;&amp;nbsp;public&amp;nbsp;&amp;#39;a&amp;#39;=&amp;gt;(refcount=0,&amp;nbsp;is_ref=0)&amp;nbsp;int&amp;nbsp;1
&amp;nbsp;&amp;nbsp;public&amp;nbsp;&amp;#39;b&amp;#39;=&amp;gt;(refcount=0,&amp;nbsp;is_ref=0)&amp;nbsp;int&amp;nbsp;2&lt;/pre&gt;&lt;p&gt;说明: 在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现.现在unset ($a),那么array的refcount减1变为1.现在无任何变量指向这个zval, 而且这个zval的计数器为1,不会回收.&lt;/p&gt;&lt;p&gt;结果：尽管不再有某个作用域中的任何符号指向这个结构(就是变量容器),由于子元素&amp;quot;1&amp;quot;仍然指向数组本身,所以这个容器不能被清除.因为没有另外的符号指向它,用户没有办法清除这个结构,结果就会导致内存泄漏.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在php5.3的GC中,针对的垃圾做了如下说明：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p&gt;如果一个zval的refcount增加,那么此zval还在使用,肯定不是垃圾,不会进入缓冲区&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;如果一个zval的refcount减少到0,那么zval会被立即释放掉,不属于GC要处理的垃圾对象,不会进入缓冲区.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;如果一个zval的refcount减少之后大于0,那么此zval还不能被释放,此zval可能成为一个垃圾,将其放入缓冲区.PHP5.3中的GC针对的就是这种zval进行的处理.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;垃圾回收算法:&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;对每个根缓冲区中的根zval按照深度优先遍历算法遍历所有能遍历到的zval,并将每个zval的refcount减1,同时为了避免对同一zval多次减1(因为可能不同的根能遍历到同一个zval),每次对某个zval减1后就对其标记为“已减”.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;再次对每个缓冲区中的根zval深度优先遍历,如果某个zval的refcount不为0,则对其加1,否则保持其为0.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;清空根缓冲区中的所有根(注意是把这些zval从缓冲区中清除而不是销毁它们),然后销毁所有refcount为0的zval,并收回其内存.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;如果不能完全理解也没有关系，只需记住PHP5.3的垃圾回收算法有以下几点特性：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p&gt;并不是每次refcount减少时都进入回收周期,只有根缓冲区满额后在开始垃圾回收&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;可以解决循环引用问题&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;可以总将内存泄露保持在一个阈值以下&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/12/202012131607853630448211.jpg&quot; alt=&quot;u=1674233793,3300999133&amp;amp;fm=26&amp;amp;gp=0.jpg&quot;/&gt;&lt;/p&gt;</description><pubDate>Sun, 13 Dec 2020 17:41:15 +0800</pubDate></item><item><title>Git 分支设计规范</title><link>https://www.xcssh.cn/?id=117</link><description>&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;本文仅供参考,下面是系统开发过程中的常用环境.&lt;/p&gt;&lt;table data-tool=&quot;mdnice编辑器&quot; width=&quot;677&quot;&gt;&lt;thead style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); background: rgb(240, 240, 240); max-width: 100%; text-align: left; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;简称&lt;/th&gt;&lt;th style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); background: rgb(240, 240, 240); max-width: 100%; text-align: left; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;全称&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 0px; border-style: initial; border-color: initial;&quot;&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;DEV&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;Development environment&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204); background-color: rgb(248, 248, 248);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; color: #3F3F3F; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &amp;quot;PingFang SC&amp;quot;, Cambria, Cochin, Georgia, Times, &amp;quot;Times New Roman&amp;quot;, serif; letter-spacing: 0.544px; text-align: left; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;FAT&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; color: #3F3F3F; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &amp;quot;PingFang SC&amp;quot;, Cambria, Cochin, Georgia, Times, &amp;quot;Times New Roman&amp;quot;, serif; letter-spacing: 0.544px; text-align: left; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Feature Acceptance Test environment&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;UAT&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;User Acceptance Test environment&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204); background-color: rgb(248, 248, 248);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;PRE&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;p style=&quot;max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; font-family: arial, 宋体, sans-serif; text-align: start; text-indent: 28px; background-color: #FFFFFF; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Multivariate Testing&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;margin: 0px; word-break: break-all; border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 14px; background-color: #F8F8F8;&quot;&gt;PRO&lt;/span&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;margin: 0px; word-break: break-all; border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 14px; background-color: #F8F8F8;&quot;&gt;Production environment&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 2.2em; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;pro环境：生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;pre环境：灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;uat 环境：用户验收测试环境,用于生产环境下的软件测试者测试使用。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;fat环境：测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;dev环境：开发环境,外部用户无法访问,开发人员使用,版本变动很大。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;接下来，针对不同的环境来设计分支。&lt;/p&gt;&lt;table data-tool=&quot;mdnice编辑器&quot; width=&quot;677&quot;&gt;&lt;thead style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot; class=&quot;firstRow&quot;&gt;&lt;th style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); background: rgb(240, 240, 240); max-width: 100%; text-align: left; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;分支&lt;/th&gt;&lt;th style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); background: rgb(240, 240, 240); max-width: 100%; text-align: left; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); background: rgb(240, 240, 240); max-width: 100%; text-align: left; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;环境&lt;/th&gt;&lt;th style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); background: rgb(240, 240, 240); max-width: 100%; text-align: left; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;可访问&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 0px; border-style: initial; border-color: initial;&quot;&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;master&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;主分支&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;PRO&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204); background-color: rgb(248, 248, 248);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;release&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;灰度分支&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;PRE&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;hotfix&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;紧急修复分支&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;DEV&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;否&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204); background-color: rgb(248, 248, 248);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;test&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;预上线分支&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;UAT&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; border-width: 1px 0px 0px; border-right-style: initial; border-bottom-style: initial; border-left-style: initial; border-right-color: initial; border-bottom-color: initial; border-left-color: initial; border-top-style: solid; border-top-color: rgb(204, 204, 204);&quot;&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;dev&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;测试分支&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;FA&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;T&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;margin: 0px; word-break: break-all; border-color: rgb(204, 204, 204); max-width: 100%; font-size: 14px; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; background-color: #F8F8F8; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;是&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;margin: 0px; word-break: break-all; border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 14px;&quot;&gt;feature&lt;/span&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;margin: 0px; word-break: break-all; border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 14px;&quot;&gt;需求开发分支&lt;/span&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;margin: 0px; word-break: break-all; border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 14px;&quot;&gt;DEV&lt;/span&gt;&lt;/td&gt;&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;margin: 0px; word-break: break-all; border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; overflow-wrap: break-word !important; box-sizing: border-box !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 14px;&quot;&gt;否&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;master分支&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; master 为主分支，用于部署到正式环境(PRO),一般由 release 或 hotfix &amp;nbsp;分支合并,任何情况下不允许直接在 master 分支上修改代码。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;release分支&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; release为预上线分支,用于部署到灰度环境(PRE),始终保持与 master 分支一致,一般由 dev 或 hotfix 分支合并,不建议直接在 release 分支上直接修改代码。如果在 release 分支测试出问题,需要回归验证 dev 分支看否存在此问题。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;hotfix 分支&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hotfix 为紧急修复分支,命名规则为 hotfix- 开头。当线上出现紧急问题需要马上修复时,需要基于 release 或 master 分支创建 hotfix 分支,修复完成后,再合并到 release 或 dev 分支,一旦修复上线,便将其删除。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;test 分支&lt;/strong&gt;&lt;/span&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;test 为uat测试分支,dev联调测试通过后,告知相应测试人员并发送提测邮件,将dev分支合并到test分支,告知测试人员,进行测试验收。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;dev&amp;nbsp;分支&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev 为测试分支,用于部署到测试环境(FAT)始终保持最新完成以及 bug 修复后的代码,可根据需求大小程度确定是由 feature 分支合并,还是直接在上面开发。一定是满足测试的代码才能往上面合并或提交。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;feature 分支&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; feature 为需求开发分支,命名规则为 feature- 开头,一旦该需求上线,便将其删除。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; white-space: normal; background-color: rgb(255, 255, 255); text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 20px;&quot;&gt;紧急修复正式环境 Bug&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;需求在测试环节未测试出 Bug,上线运行一段时候后出现了 Bug,需要紧急修复的。我个人理解紧急修复的意思是没时间验证测试环境了,但还是建议验证下预上线环境。&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果 release 分支存在未测试完毕的需求,就基于 master 创建 hotfix-xxx 分支,修复完毕后发布到 master 验证,验证完毕后,将 master 代码合并到 release 和 dev 分支,同时删掉 hotfix-xxx 分支。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果 release 分支不存在未测试完毕的需求,但 dev 分支存在未测试完毕的需求,就基于 release 创建 hotfix-xxx 分支,修复完毕后发布到 release 验证,后面流程与上线流程一致,验证完毕后,将 master 代码合并到 develop 分支,同时删掉 hotfix-xxx 分支。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;如果 release 和 dev 分支都不存在未测试完毕的需求, 就直接在 develop 分支上修复完毕后,发布到 release 验证,后面流程与上线流程一致。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;commit格式规范&lt;/span&gt;&lt;/strong&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;commit -m “&amp;lt;type&amp;gt;(&amp;lt;scope&amp;gt;):&amp;lt;subject&amp;gt;”&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;格式说明：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;type&lt;/strong&gt;：用于说明本次commit的类别，只允许使用下面7个标识&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;padding: 0px 0px 0px 2.2em; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;feat:新功能（feature）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;fix:修补bug&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;docs:文档（documentation）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;style:格式（不影响代码运行的变动）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;refactor:重构（即不是新增功能，也不是修改bug的代码变动）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;test:增加测试&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;chore:构建过程或者辅助工具的变动&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Scope&lt;/strong&gt;: 可选参数&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;用于说明commit的影响范围，比如数据层、控制层、视图层等，视项目不同而不同&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;Subject&lt;/strong&gt;: 是commit目的的简短描述，不超过50字符&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;以动词开头,第一个字母小写结果不加（.）&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&amp;nbsp;例如：feat:新增退费挽单跟进报表&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;分支管理规范&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;参与角色：开发、组长、测试、产品、运维&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;角色Gitlab中的职责：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;开发：根据自己所做的功能，在本地创建feat分支&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;组长：根据排期创建dev[版本号]、pre[版本号]分支，并对dev、pre分支进行管理维护&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;测试：dev[版本号]分支开发完成，组长合并代码到test分支，测试仅对test分支进行测试，测试完成之后，通知组长将功能合并到pre[版本号]&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;产品：在pre环境进行验收，验收通过通知组长。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;运维：对pre环境、生产环境进行发布。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;br style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;分支提交流程：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;常规提交：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;说明&lt;/strong&gt;&lt;/span&gt;：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;1.需求评审，经过排期后，组长/负责人以上个版本的tag为蓝本创建dev[版本号]分支。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;2.开发人员以当前需求所在版本，从dev拉去代码，本地开辟功能feat分支进行开发。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;3.开发完成之后push代码至dev环境，开发人员进行自测和前端进行联调。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;4.提测阶段，组长将dev的代码合并到test分支，test分支不允许直接修改。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;5.测试通过以后，通知组长/负责人将代码合并至pre环境，产品/业务方在pre环境验收，验收通过组长/负责人将pre分支合并至master分支。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;6.上线完毕之后需要对上线的msater打tag标记。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;7.上线完毕之后，如果有在上线之前拉取的dev分支，需要将master代码合并至dev分支。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;8.所有的代码修改都必须要从dev合并到test,不允许在dev以后的分支进行修改和提交。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/12/202012051607158435160304.png&quot; alt=&quot;640.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;线上BUG修复，紧急上线提交流程：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-size: 18px;&quot;&gt;说明&lt;/span&gt;&lt;/strong&gt;：&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;线上bug修复，需要从线上master分支拉取hotfix分支。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;bug修复完成之后，由组长/负责人将代码合并到test分支。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;测试人员在test分支进行测试，测试通过后通知组长/负责人将代码合并到pre分支。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;产品/业务方pre环境验收，验收通过通知组长负责人将代码提交到master&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;master上线后打tag标签。&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;将master代码合并到现在正在开发的dev分支中&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/12/202012051607158459531323.png&quot; alt=&quot;640.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 05 Dec 2020 16:53:22 +0800</pubDate></item><item><title>Redis基本类型底层原理</title><link>https://www.xcssh.cn/?id=108</link><description>&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Redis为什么是单线程呢&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 从redis的性能上考虑,单线程避免上下文频繁切换问题,效率高&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 从redis的内部结构设计原理进行考虑,redis是基于Reactor模式开发了自己的网络事件处理器;这个处理器被称为文件事件处理器.而这个文件事件处理器是单线程的,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;所以才叫redis的单线程模型&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #C0504D;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px; background-color: #C0504D;&quot;&gt;redis的单线程模型构造部分&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt; 最为核心的就是文件事件处理器&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;而文件事件处理器结构包含5个部分,其实真正包含为4个部分(不包含socket队列,加上主要方便后面理解):多个socket,io多路复用程序,socket队列,文件事件分派器,以及事件处理器.而事件处理器又分为3个部分为:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;连接应答处理器,命令请求处理器,命令回复处理器&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Redis单线程模型的大致工作流程及原理&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 首先在redis启动初始化的时候,redis会先将事件处理器中的连接应答处理器和AE_READABLE事件关联起来;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 如果客户端向redis发起连接,会产生AE_READABLE事件,产生该事件后会被IO多路复用程序监听到,然后IO多路复用程序会把监听到的socket信息放入到队列中,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;事件分配器每次从队列中取出一个socket,事件分配器把socket给对应的事件处理器.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;由于连接应答处理器和AE_READABLE事件在redis初始化的时候已经关联起来,所以由连接应答处理器来处理跟客户端建立连接,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;然后通过serversocket创建一个与客户端一对一对应的socket,同时将这个socker01的AE_READABLE事件和命令请求处理器关联起来.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601475512426502.png&quot; alt=&quot;20190615185708852.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;3. 当客户端向redis发生请求时(读,写操作),首先就会在对应的socket如socket01上会产生AE_READABLE事件(步骤),产生该事件后会被IO多路复用程序监听到(步骤b),然后IO多路复用程序会把监听到的socket信息放入队列中(步骤c),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;事件分配器每次从队列中取出一个socket(步骤D),然后事件分派器吧socket给对应的事件处理器(步骤E).由于命令处理器和socket01的socket01上读取相关的数据,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;如何执行相应的读写处理.操作执行完之后,redis就会将准备好相应的响应数据(如你在redis客户端输入set a 123回车时会看到响应OK),并将socket01的AE_WRITABLE事件和命令回复处理器关联起来.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601475531831623.png&quot; alt=&quot;20190615185708852.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;4. 当客户端会查询redis是否完成相应的操作,就会在socket01上产生一个AE_WRITABLE事件,会由对应的命令回复处理器来处理,就是将准备好的相应数据写入socket01(由于socket连接是双向的),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;返回给客户端,如写操作客户端会显示OK&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601475780171776.png&quot; alt=&quot;20190615193213901.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;5. 如果命令回复处理器执行完成后,就会删除这个socket01的AE_WRITABLE事件和命令回复处理器的关联.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;6. 这样客户端就和redis进行了一次通信.由于连接应答处理器执行一次就够了,如果客户端再次进行操作就会由命令请求处理器来处理,反复执行&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;在redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每种数据类型都至少使用到了一种数据结构.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;通过这五种不同类型的对象,redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场景,为对象设置多种不同的数据结构,从而优化对象在不同场景下的使用效率.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;redis使用前面说的五大数据类型来表示键和值,每次在redis数据库中创建一个减值对时,至少会创建俩个对象,一个是键对象,一个是值对象,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;而redis中的每个对象都是由redisObject结构来表示:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. type属性: 对象的type属性记录了对象的类型,这个类型就是前面讲的五大数据类型:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601477097158956.png&quot; alt=&quot;五大数据类型.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;注意:在redis中,键总是一个字符串对象,而值可以是字符串,列表,集合等对象,所以我们通常说的键为字符串键,表示的是这个键对应的值为字符串对象,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;我们说的一个键为集合键时,表示的是这个键对应的值为集合对象.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. encoding 属性和*prt指针&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 18px;&quot;&gt;&lt;/span&gt;对象的prt指针指向对象底层的数据结构,而数据结构由encoding属性来决定.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601477115238606.png&quot; alt=&quot;prt指针.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;每种类型的对象都至少使用了俩种不同的编码:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601477120348363.png&quot; alt=&quot;编码.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;可以通过OBJECT ENCODING key命令查看值对象的编码:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;下面在另外说一下五大数据类型实现原理:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;字符串对象&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;字符串是redis最基本的数据类型,不仅所有的key都是字符串类型,其他几种数据类型构成的元素也是字符串.注意字符串的长度不能超过512M&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 编码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;字符串对象的编码可以是int,raw或者embstr&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;a. int编码:保存的是可以用long类型表示的整数值.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;b. raw编码:保存长度大于44字节的字符串&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;c. embstr编码:保存长度小于44字节的字符串&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479377738711.png&quot; alt=&quot;字符串.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;由上可以看出,int编码是用来保存整数值,raw编码是用来保存长字符串,而embstr是用来保存段字符串.其实embstr编码是专门用来保存短字符串的一种优化编码,raw和embstr的区别&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479394748364.png&quot; alt=&quot;编码 (2).png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479401213085.png&quot; alt=&quot;aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTEyMDE2NS8yMDE4MDUvMTEyMDE2NS0yMDE4MDUzMDA3NTYzMjYyNC02OTY5ODEwMTMucG5n.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;embstr与raw都使用redisObject和sds保存数据,区别在于,embstr的使用只分配一次内存空间(因此redisObject和sds是连续的),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;而raw需要分配俩次内存空间(分别为redisObject和sds分配空间).因此与raw相比,embstr的好处在于创建时少分配一次空间,删除时少释放一次空间,以及对象的所有数据连在一起,寻找方便.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;而embstr的坏处也很明显,如果字符串的长度增加需要重新分配内存时,整个redisObject和sds都需要重新分配空间,因此redis中的embstr实现为只读.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;ps：Redis中对于浮点数类型也是作为字符串保存的，在需要的时候再将其转换成浮点数类型。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 编码的转换&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;当 int 编码保存的值不再是整数，或大小超过了long的范围时，自动转化为raw。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;对于 embstr 编码，由于 Redis 没有对其编写任何的修改程序（embstr 是只读的），在对embstr对象进行修改时，都会先转化为raw再进行修改，因此，只要是修改embstr对象，修改后的对象一定是raw的，无论是否达到了44个字节。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;列表对象&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;list 列表，它是简单的字符串列表，按照插入顺序排序，你可以添加一个元素到列表的头部（左边）或者尾部（右边），它的底层实际上是个链表结构。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 编码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;列表对象的编码可以是 ziplist(压缩列表) 和 linkedlist(双端链表)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;比如我们执行以下命令，创建一个 key = ‘numbers’，value = ‘1 three 5’ 的三个值的列表。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;rpush numbers 1 &amp;quot;three&amp;quot; 5&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;ziplist 编码表示如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479763679615.png&quot; alt=&quot;aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTEyMDE2NS8yMDE4MDUvMTEyMDE2NS0yMDE4MDUzMDExMDExMzg1OS0xOTk5NzA0OTI1LnBuZw.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;linkedlist表示如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479766425345.png&quot; alt=&quot;aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTEyMDE2NS8yMDE4MDUvMTEyMDE2NS0yMDE4MDUzMDExMDEzNTk2MS0xODE3NzczOTY3LnBuZw.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 编码转换&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;当同时满足下面两个条件时，使用ziplist（压缩列表）编码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　1、列表保存元素个数小于512个&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　2、每个元素长度小于64字节&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　不能满足这两个条件的时候使用 linkedlist 编码。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　上面两个条件可以在redis.conf 配置文件中的 list-max-ziplist-value选项和 list-max-ziplist-entries 选项进行配置。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;哈希对象&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;哈希对象的键是一个字符串类型，值是一个键值对集合。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 编码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;哈希对象的编码可以是 ziplist 或者 hashtable。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;当使用ziplist，也就是压缩列表作为底层实现时，新增的键值对是保存到压缩列表的表尾。比如执行以下命令：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;hset profile name &amp;quot;Tom&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;hset profile age 25&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;hset profile career &amp;quot;Programmer&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;如果使用ziplist，profile 存储如下:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479769258311.png&quot; alt=&quot;1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;当使用 hashtable 编码时，上面命令存储如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601479773486128.png&quot; alt=&quot;2.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;hashtable 编码的哈希表对象底层使用字典数据结构，哈希对象中的每个键值对都使用一个字典键值对。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;在前面介绍压缩列表时，我们介绍过压缩列表是Redis为了节省内存而开发的，是由一系列特殊编码的连续内存块组成的顺序型数据结构，相对于字典数据结构，压缩列表用于元素个数少、元素长度小的场景。其优势在于集中存储，节省空间。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 编码转换&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;和上面列表对象使用 ziplist 编码一样，当同时满足下面两个条件时，使用ziplist（压缩列表）编码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　1、列表保存元素个数小于512个&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　2、每个元素长度小于64字节&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;　　不能满足这两个条件的时候使用 hashtable 编码。第一个条件可以通过配置文件中的 set-max-intset-entries 进行修改&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;集合对象&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;集合对象 set 是 string 类型（整数也会转换成string类型进行存储）的无序集合。注意集合和列表的区别：集合中的元素是无序的，因此不能通过索引来操作元素；集合中的元素不能有重复&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 编码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;集合对象的编码可以是 intset 或者 hashtable。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;intset 编码的集合对象使用整数集合作为底层实现，集合对象包含的所有元素都被保存在整数集合中。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;hashtable 编码的集合对象使用 字典作为底层实现，字典的每个键都是一个字符串对象，这里的每个字符串对象就是一个集合中的元素，而字典的值则全部设置为 null。这里可以类比Java集合中HashSet 集合的实现，HashSet 集合是由 HashMap 来实现的，集合中的元素就是 HashMap 的key，而 HashMap 的值都设为 null。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;sadd numbers 1 3 5&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601480213251514.png&quot; alt=&quot;1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;SADD Dfruits &amp;quot;apple&amp;quot; &amp;quot;banana&amp;quot; &amp;quot;cherry&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601480217300875.png&quot; alt=&quot;2.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 编码转换&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;当集合同时满足以下两个条件时，使用 intset 编码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1、集合对象中所有元素都是整数&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2、集合对象所有元素数量不超过512&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;不能满足这两个条件的就使用 hashtable 编码。第二个条件可以通过配置文件的 set-max-intset-entries 进行配置。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;有序集合对象&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;和上面的集合对象相比，有序集合对象是有序的。与列表使用索引下标作为排序依据不同，有序集合为每个元素设置一个分数（score）作为排序依据.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1. 编码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;有序集合的编码可以是 ziplist 或者 skiplist。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;ziplist 编码的有序集合对象使用压缩列表作为底层实现，每个集合元素使用两个紧挨在一起的压缩列表节点来保存，第一个节点保存元素的成员，第二个节点保存元素的分值。并且压缩列表内的集合元素按分值从小到大的顺序进行排列，小的放置在靠近表头的位置，大的放置在靠近表尾的位置.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.xcssh.cn/zb_users/upload/2020/09/202009301601480224172943.png&quot; alt=&quot;3.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;skiplist 编码的有序集合对象使用 zet 结构作为底层实现，一个 zset 结构同时包含一个字典和一个跳跃表：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;字典的键保存元素的值，字典的值则保存元素的分值；跳跃表节点的 object 属性保存元素的成员，跳跃表节点的 score 属性保存元素的分值。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;这两种数据结构会通过指针来共享相同元素的成员和分值，所以不会产生重复成员和分值，造成内存的浪费。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;说明：其实有序集合单独使用字典或跳跃表其中一种数据结构都可以实现，但是这里使用两种数据结构组合起来，原因是假如我们单独使用 字典，虽然能以 O(1) 的时间复杂度查找成员的分值，但是因为字典是以无序的方式来保存集合元素，所以每次进行范围操作的时候都要进行排序；假如我们单独使用跳跃表来实现，虽然能执行范围操作，但是查找操作有 O(1)的复杂度变为了O(logN)。因此Redis使用了两种数据结构来共同实现有序集合.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2. 编码转换&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;当有序集合对象同时满足以下两个条件时，对象使用 ziplist 编码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1、保存的元素数量小于128；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2、保存的所有元素长度都小于64字节。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;不能满足上面两个条件的使用 skiplist 编码。以上两个条件也可以通过Redis配置文件zset-max-ziplist-entries 选项和 zset-max-ziplist-value 进行修改。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;有所不足的后期阿胜会慢慢优化&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;近期在准备换工作所以持续断更好长时间了,万分抱歉&lt;/span&gt;&lt;/p&gt;</description><pubDate>Wed, 30 Sep 2020 22:04:37 +0800</pubDate></item></channel></rss><!--9.80 ms , 5 query , -416kb memory , 0 error-->