ip route:用于管理靜態路由表。
linux 系統中,可以自定義從 1-252個路由表。其中,linux系統維護了4個路由表:
* 0#表: 系統保留表
* 253#表: defulte table 沒特別指定的默認路由都放在改表
* 254#表: main table 沒指明路由表的所有路由放在該表
* 255#表: local table 保存本地接口地址,廣播地址、NAT地址 由系統維護,用戶不得更改
路由表的查看可以通過`ip route list table table_number [table_name]`命令。路由表序號和表名的對應關系在 `/etc/iproute2/rt_tables` 文件中,可手動編輯,路由表添加完畢即時生效。
[TOC]
# <span style="font-size:15px">**ip route 命令格式說明**</span>
```
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route showdump
ip route get ADDRESS [ from ADDRESS iif STRING ]
[ oif STRING ] [ tos TOS ]
[ mark NUMBER ]
ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]
[ rtt TIME ] [ rttvar TIME ] [reordering NUMBER ]
[ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ]
[ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
[ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
[ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
[ expires TIME ]
TYPE := { unicast | local | broadcast | multicast | throw |
unreachable | prohibit | blackhole | nat }
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
```
# <span style="font-size:15px">**ip route add/change/replace**</span>
>**option:**
>* to TYPE PREFIX (default):路由的目標前綴。如果省略TYPE,則ip采用unicast類型。上面列出了其他類型的值。前綴是一個IP或IPv6地址,后跟斜杠和前綴長度。如果前綴的長度丟失,ip將采用全長主機路由。還有一個特殊的前綴默認值-相當于IP 0/0或IPv6::/0。
>* tos TOS:服務類型(TOS)密鑰。這個密鑰沒有相關的掩碼,最長的匹配被理解為:首先,比較路由和包的TOS。如果它們不相等,則分組仍然可以匹配具有零TOS的路由。TOS是8位十六進制數或`/etc/iproute2/rt_dsfield`中的標識符。
> * metric :跳數,該條路由記錄的質量,一般情況下,如果有多條到達相同目的地的路由記錄,路由器會采用metric值小的那條路由
>* table TABLEID:要將此路由添加到的表。TABLEID可以是文件`/etc/iproute2/rt_tables`中的數字或字符串。如果省略此參數,ip將采用主表,但本地、廣播和nat路由除外,默認情況下,這些路由將放入本地表中
>* dev NAME:輸出設備名稱
>* via ADDRESS:下一跳路由器的地址。 實際上,此字段的含義取決于路由類型。 對于普通的單播路由,它要么是真正的下一跳路由器,要么是以BSD兼容模式安裝的直接路由,它可以是接口的本地地址。 對于NAT路由,它是已轉換IP目標塊的第一個地址
>* src ADDRESS:發送到路由前綴所覆蓋的目的地時首選的源地址
>* realm REALMID:此路由被分配到的領域。REALMID可以是`/etc/iproute2/rt_realms`文件中的數字或字符串。
>* mtu MTU/mtu lock MTU:到達目的地的路徑上的MTU。 如果未使用修飾符鎖定,則由于路徑MTU發現,內核可能會更新MTU。 如果使用了修飾符鎖定,則將不嘗試任何路徑MTU發現,在IPv4情況下,所有數據包將在沒有DF位的情況下發送,或者將其分片到IPv6的MTU
>* window NUMBER:TCP播發到這些目的地的最大窗口,以字節為單位。它限制了允許TCP對等方發送給我們的最大數據突發
>* rtt TIME:初始RTT(“往返時間”)估算值。 如果未指定后綴,則這些單位是直接傳遞到路由代碼的原始值,以保持與先前版本的兼容性。 否則,如果使用后綴s,sec或secs來指定秒數,而使用ms,msec或msecs的后綴來指定毫秒。
>* rttvar TIME (2.3.15+ only):初始RTT方差估算值。 與上面的rtt一樣指定值
>* rto_min TIME (2.6.23+ only):與此目標通信時要使用的最小TCP重新傳輸超時。值的指定與上面的rtt相同
>* ssthresh NUMBER (2.3.15+ only):初始慢啟動閾值的估計值
>* cwnd NUMBER (2.3.15+ only):鎖定標志,如果不使用鎖定標志,則忽略該選項
>* initcwnd NUMBER (2.5.70+ only):到此目標的連接的初始擁塞窗口大小。 實際窗口大小是該值乘以相同連接的MSS(``最大段大小'')。 默認值為零,表示使用RFC2414中指定的值。
>* initrwnd NUMBER (2.6.33+ only):到此目標的連接的初始接收窗口大小。 實際窗口大小是此值乘以連接的MSS。 默認值為零,表示使用慢啟動值。
>* features FEATURES (3.18+only):啟用或禁用每路由功能。此時唯一可用的特性是ecn,它可以在啟動到給定目標網絡的連接時啟用顯式擁塞通知。當響應來自給定網絡的連接請求時,即使net.ipv4.tcp\_ecn sysctl設置為0
>* congctl NAME/congctl lock NAME (3.20+ only):僅針對給定的目的地設置特定的TCP擁塞控制算法。 如果未指定,Linux將保留當前的全局默認TCP擁塞控制算法或應用程序中的一種。 如果未使用修飾符鎖定,則應用程序仍可能會覆蓋該目的地的建議擁塞控制算法。 如果使用了修飾符鎖,則不允許應用程序覆蓋該目的地的指定擁塞控制算法,因此將強制/保證使用建議的算法
>* advmss NUMBER (2.3.15+ only):在建立TCP連接時向這些目標播發的MSS(“最大段大小”)。如果沒有給定,Linux將使用從第一跳設備MTU計算的默認值
>* reordering NUMBER (2.3.15+ only):到此目的地的路徑上的最大重新排序。 如果未給出,則Linux使用通過sysctl變量`net/ipv4/tcp_reordering`選擇的值
>* nexthop NEXTHOP:多路徑路由的下一跳。 NEXTHOP是一個復雜值,其語法類似于頂級參數列表:
> * via ADDRESS:下一跳路由
> * dev NAME:輸出設備名稱
> * weight NUMBER:是多路徑路由的此元素的權重,反映其相對帶寬或質量
>* scope SCOPE_VAL:路由前綴所覆蓋的目的地范圍。 SCOPE\_VAL可以是數字`/etc/iproute2/rt_scopes`中的字符串。 如果省略此參數,則ip假定所有網關單播路由的作用域是全局范圍,直接單播和廣播路由的作用域鏈接以及本地路由的作用域主機
>* protocol RTPROTO:該路由的路由協議標識符。 RTPROTO可以是文件/ etc / iproute2 / rt\_protos中的數字或字符串。如果未提供路由協議ID,則ip會采用協議引導方式(即假定路由是由不了解自己在做什么的人添加的)。 幾個協議值具有固定的解釋。
> * redirect: 路由是由于ICMP重定向而安裝的
> * kernel:路由是在自動配置期間由內核安裝的
> * boot:路由是在啟動過程中安裝的。如果路由守護進程啟動,它將清除所有這些守護進程
> * static:該路由由管理員安裝,以覆蓋動態路由。 路由守護程序將尊重它們,甚至可能將它們通告給其對等端。
> * ra:路由是通過路由器發現協議安裝的
| 命令 | 解釋 |
| --- | ---- |
|ip route add default via 192.168.1.1| 設置系統默認路由 |
|ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0|設置192.168.4.0網段的網關為192.168.0.254,數據走eth0接口|
|ip route add default via 192.168.0.254 dev eth0| 設置默認網關為192.168.0.254|
|ip route add default via 192.168.1.1 table 1|在一號表中添加默認路由為192.168.1.1|
|ip route add 192.168.0.0/24 via 192.168.1.2 table 1 |在一號表中添加一條到192.168.0.0網段的路由為192.168.1.2|
|ip route add prohibit 209.10.26.51|設置請求的目的地不可達的路由|
|ip route add prohibit 209.10.26.51 from 192.168.99.35|假設您不想阻止所有用戶訪問此特定主機,則可以使用該`from`選項,阻止了源IP 192.168.99.35到達209.10.26.51|
|ip route change default via 192.168.99.113 dev eth0| 更改默認路由。此操作等同于先刪除,后新增|
# <span style="font-size:15px">**ip route show**</span>
該命令顯示路由表的內容或按某些條件選擇的路由
> **option:**
>* to SELECTOR (default):僅從給定的目的地范圍內選擇路線。 SELECTOR由一個可選的修飾符(root 、match、exact)和一個前綴組成。 root PREFIX選擇前綴不小于PREFIX的路由。 F.e. 根0/0選擇整個路由表。 match PREFIX選擇前綴不超過PREFIX的路由。 比如: 匹配10.0/16選擇10.0/16、10/8和0/0,但不選擇10.1/16和10.0.0/24。 精確的PREFIX(或僅PREFIX)選擇具有此精確前綴的路由。 如果這兩個選項都不存在,則ip假定根目錄為0/0,即列出整個表。
>* tos TOS:僅選擇具有給定TOS的路線
>* table TABLEID:顯示此表中的路由。默認設置是顯示主表。TABLEID可以是實表的ID,也可以是特殊值之一:
> * all:列出所有表
> * cache:轉儲路由緩存
> * cloned:緩存列表克隆的路由,即由于某些路由屬性(例如MTU)已更新而從其他路由動態分叉的路由。 實際上,它等效于表緩存。
> * from SELECTOR:與to的語法相同,但它綁定的是源地址范圍而不是目的地。請注意,from選項僅適用于克隆路由
> * protocol RTPROTO:只列出該協議的路由
> * scope SCOPE_VAL:僅列出具有此范圍的路由
> * type TYPE:僅列出該類型的路由
> * dev NAME:僅列出通過此設備的路由
> * via PREFIX:僅列出通過前綴選擇的nexthop路由器的路由
> * src PREFIX:僅列出具有按前綴選擇的首選源地址的路由
> * realms FROMREALM/TOREALM/REALMID:僅列出具有這些領域的路由。
| 查看命令 | 解釋 |
| --- | ---- |
|ip route <br>或:ip r<br>或:ip route show<br>或:ip route list| 顯示系統路由|
|ip route show [exact] 169.254.0.0/16|精準查看具體某一條路由|
|ip route show match 172.18|模糊匹配某一條路由|
|ip route show src 172.18.16.0/20|僅列出源地址前綴為172.18.16.0/20的路由 |
|ip route show via 172.18.31.253|僅列出通過前綴選擇的為該ip的路由|
|ip -s route show cache 192.168.100.17|顯示來自路由緩存的統計信息|
|ip route show table local<br>或:ip route list table local|查看本地路由表|
# <span style="font-size:15px">**ip route get**</span>
此命令獲取到目標的單個路由,并按照內核所看到的方式打印其內容。
此操作不等同于ip route show。 ip routeshow會顯示現有路線,而get解析它們并在必要時創建新克隆。基本上,get相當于沿著此路徑發送數據包。如果沒有給出iif參數,內核將創建一個路由,以將數據包輸出到請求的目的地。這相當于用后續的ip路由ls緩存ping目標,但是實際上沒有發送任何數據包。使用iif參數,內核假裝一個數據包從這個接口到達,并搜索一條路徑來轉發數據包
> **option:**
> * to ADDRESS (default):目的地址
> * from ADDRESS:源地址
> * tos TOS:服務類型
> * iif NAME:此數據包預期從中到達的設備
> * oif NAME:強制將此數據包路由到的輸出設備
> * connected:如果未給出源地址(選項from),則重新查找源設置為從第一次查找收到的首選地址的路由。 如果使用策略路由,則可能是其他路由
| 查看命令 | 解釋 |
| --- | ---- |
|ip route get 169.254.0.0/16|獲取到目標的單個路由,并按照內核所看到的方式打印其內容|
# <span style="font-size:15px">**ip route delete**</span>
| 命令 | 解釋 |
| --- | ---- |
|ip route del 192.168.4.0/24|刪除192.168.4.0網段的網關|
|ip route del default |刪除默認路由|
|ip route delete 192.168.1.0/24 dev eth0|刪除路由|
# <span style="font-size:15px">**ip route save**</span>
將路由表信息保存到標準輸出。該命令的行為類似于ip route show,除了輸出是適合傳遞給ip route restore的原始數據外。
# <span style="font-size:15px">**ip route restore**</span>
從stdin恢復路由表信息 該命令希望讀取從ip route save返回的數據流。 它將嘗試完全還原保存時的路由表信息,因此必須先完成流中信息的任何轉換(例如設備索引)。 任何現有路線均保持不變。 表中已經存在的數據流中指定的任何路由都將被忽略。
ip route restore
# <span style="font-size:15px">**ip route flush**</span>
該`flush`選項與**ip route**一起使用時,將清空路由表或刪除特定目標的路由
| 命令 | 解釋 |
| --- | ---- |
|ip route flush 10.38.0.0/16|刪除特定路由|
|ip route flush table main|清空路由表|
<br>
**Route type 解釋:**
* unicast:由路由前綴覆蓋的目的地址的真實路徑
* unreachable:目的路由無法到達。丟棄數據包并生成ICMP消息主機不可訪問。本地發件人收到一個EHOSTUNREACH錯誤。
* blackhole:目的路由無法到達。數據包被悄悄丟棄。本地發件人收到EINVAL錯誤。
* prohibit:目的路由無法到達。數據包將被丟棄,并生成管理上禁止的ICMP消息通信。 本地發件人收到EACCES錯誤。
* local:目的地已分配給此主機。數據包被環回并在本地傳遞
* broadcast:目的路由是廣播地址。數據包作為鏈接廣播發送
* throw:與策略規則一起使用的特殊控制路徑。 如果選擇了這樣的路由,則會在未找到路由的情況下終止此表中的查找。 如果沒有策略路由,則等同于路由表中沒有路由。 數據包被丟棄,并生成ICMP消息net unreachable。 本地發件人收到ENETUNREACH錯誤
* nat:一條特殊的NAT路由。 前綴所覆蓋的目的地被認為是虛擬(或外部)地址,在轉發之前需要將其轉換為真實(或內部)地址。 使用屬性via選擇要轉換為的地址
* anycast:未分配給此主機的路由地址,它們主要等效于本地,只是有一個區別:這些地址用作任何數據包的源地址時都是無效的。
* multicast:一種用于多播路由的特殊類型。 它在常規路由表中不存在。
**運行實例:**
```
// 查看本地路由表
// 此輸出中的第一個字段告訴我們該路由是針對該計算機本地托管的廣播地址還是IP地址或范圍。
//隨后的字段會通知我們目標可通過哪個設備到達,并且特別是(在此表中)內核已添加了這些路由,作為建立IP層接口的一部分
[root@izwz91quxhnlkan8kjak5hz net]# ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
// 添加請求目的不可達的路由
[root@masq-gw]# ip route add prohibit 209.10.26.51
[root@tristan]# ssh 209.10.26.51
ssh: connect to address 209.10.26.51 port 22: No route to host
[root@masq-gw]# tcpdump -nnq -i eth2
tcpdump: listening on eth2
22:13:13.740406 192.168.99.35.51973 > 209.10.26.51.22: tcp 0 (DF)
22:13:13.740714 192.168.99.254 > 192.168.99.35: icmp: host 209.10.26.51 unreachable - admin prohibited filter [tos 0xc0]
```
- PHP
- PHP基礎
- PHP介紹
- 如何理解PHP是弱類型語言
- 超全局變量
- $_SERVER詳解
- 字符串處理函數
- 常用數組函數
- 文件處理函數
- 常用時間函數
- 日歷函數
- 常用url處理函數
- 易混淆函數區別(面試題常見)
- 時間戳
- PHP進階
- PSR規范
- RESTFUL規范
- 面向對象
- 三大基本特征和五大基本原則
- 訪問權限
- static關鍵字
- static關鍵字
- 靜態變量與普通變量
- 靜態方法與普通方法
- const關鍵字
- final關鍵字
- abstract關鍵字
- self、$this、parent::關鍵字
- 接口(interface)
- trait關鍵字
- instanceof關鍵字
- 魔術方法
- 構造函數和析構函數
- 私有屬性的設置獲取
- __toString()方法
- __clone()方法
- __call()方法
- 類的自動加載
- 設計模式詳解
- 關于設計模式的一些建議
- 工廠模式
- 簡單工廠模式
- 工廠方法模式
- 抽象工廠模式
- 區別和適用范圍
- 策略模式
- 單例模式
- HTTP
- 定義
- 特點
- 工作過程
- request
- response
- HTTP狀態碼
- URL
- GET和POST的區別
- HTTPS
- session與cookie
- 排序算法
- 冒泡排序算法
- 二分查找算法
- 直接插入排序算法
- 希爾排序算法
- 選擇排序算法
- 快速排序算法
- 循環算法
- 遞歸與尾遞歸
- 迭代
- 日期相關的類
- DateTimeInterface接口
- DateTime類
- DateTimeImmutable類
- DateInterval類
- DateTimeZone類
- DatePeriod類
- format參數格式
- DateInterval的format格式化參數
- 預定義接口
- ArrayAccess(數組式訪問)接口
- Serializable (序列化)接口
- Traversable(遍歷)接口
- Closure類
- Iterator(迭代器)接口
- IteratorAggregate(聚合迭代器) 接口
- Generator (生成器)接口
- composer
- composer安裝與使用
- python
- python3執行tarfile解壓文件報錯:tarfile.ReadError:file could not be opened successfully
- golang
- 單元測試
- 單元測試框架
- Golang內置testing包
- GoConvey庫
- testify庫
- 打樁與mock
- GoMock框架
- Gomonkey框架
- HTTP Mock
- httpMock
- mux庫/httptest
- 數據庫
- MYSQL
- SQL語言的分類
- 事務(重點)
- 索引
- 存儲過程
- 觸發器
- 視圖
- 導入導出數據庫
- 優化mysql數據庫的方法
- MyISAM與InnoDB區別
- 外連接、內連接的區別
- 物理文件結構
- PostgreSQL
- 編譯安裝
- pgsql常用命令
- pgsql應用目錄(bin目錄)文件結構解析
- pg_ctl
- initdb
- psql
- clusterdb
- cluster命令
- createdb
- dropdb
- createuser
- dropuser
- pg_config
- pg_controldata
- pg_checksums
- pgbench
- pg_basebackup
- pg_dump
- pg_dumpall
- pg_isready
- pg_receivewal
- pg_recvlogical
- pg_resetwal
- pg_restore
- pg_rewind
- pg_test_fsync
- pg_test_timing
- pg_upgrade
- pg_verifybackup
- pg_archivecleanup
- pg_waldump
- postgres
- reindexdb
- vacuumdb
- ecpg
- pgsql數據目錄文件結構解析
- pgsql數據目錄文件結構解析
- postgresql.conf解析
- pgsql系統配置參數說明
- pgsql索引類型
- 四種索引類型解析
- 索引之ctid解析
- 索引相關操作
- pgsql函數解析
- pgsql系統函數解析
- pgsql窗口函數解析
- pgsql聚合函數解析
- pgsql系統表解析
- pg_stat_all_indexes
- pg_stat_all_tables
- pg_statio_all_indexes
- pg_statio_all_tables
- pg_stat_database
- pg_stat_statements
- pg_extension
- pg_available_extensions
- pg_available_extension_versions
- pgsql基本原理
- 進程和內存結構
- 存儲結構
- 數據文件的內部結構
- 垃圾回收機制VACUUM
- 事務日志WAL
- 并發控制
- 介紹
- 事務ID-txid
- 元組結構-Tuple Structure
- 事務狀態記錄-Commit Log (clog)
- 事務快照-Transaction Snapshot
- 事務快照實例
- 事務隔離
- 事務隔離級別
- 讀已提交-Read committed
- 可重復讀-Repeatable read
- 可序列化-Serializable
- 讀未提交-Read uncommitted
- 鎖機制
- 擴展機制解析
- 擴展的定義
- 擴展的安裝方式
- 自定義創建擴展
- 擴展的管理
- 擴展使用實例
- 在pgsql中使用last、first聚合函數
- pgsql模糊查詢不走索引的解決方案
- pgsql的pg_trgm擴展解析與驗證
- 高可用
- LNMP
- LNMP環境搭建
- 一鍵安裝包
- 搭建方法
- 配置文件目錄
- 服務器管理系統
- 寶塔(Linux)
- 安裝與使用
- 開放API
- 自定義apache日志
- 一鍵安裝包LNMP1.5
- LNMP1.5:添加、刪除站點
- LNMP1.5:php多版本切換
- LNMP1.5 部署 thinkphp項目
- Operation not permitted解決方法
- Nginx
- Nginx的產生
- 正向代理和反向代理
- 負載均衡
- Linux常用命令
- 目錄與文件相關命令
- 目錄操作命令
- 文件編輯命令
- 文件查看命令
- 文件查找命令
- 文件權限命令
- 文件上傳下載命令
- 用戶和群組相關命令
- 用戶與用戶組的關系
- 用戶相關的系統配置文件
- 用戶相關命令
- 用戶組相關命令
- 壓縮與解壓相關命令
- .zip格式
- .tar.gz格式
- .gz格式
- .bz2格式
- 查看系統版本
- cpuinfo詳解
- meminfo詳解
- getconf獲取系統信息
- 磁盤空間相關命令
- 查看系統負載情況
- 系統環境變量
- 網絡相關命令
- ip命令詳解
- ip命令格式詳解
- ip address命令詳解
- ip link命令詳解
- ip rule命令詳解
- ip route命令詳解
- nslookup命令詳解
- traceroute命令詳解
- netstat命令詳解
- route命令詳解
- tcpdump命令詳解
- 系統進程相關命令
- ps命令詳解
- pstree命令詳解
- kill命令詳解
- 守護進程-supervisord
- 性能監控相關命令
- top命令詳解
- iostat命令詳解
- pidstat命令詳解
- iotop命令詳解
- mpstat命令詳解
- vmstat命令詳解
- ifstat命令詳解
- sar命令詳解
- iftop命令詳解
- 定時任務相關命令
- ssh登錄遠程主機
- ssh口令登錄
- ssh公鑰登錄
- ssh帶密碼登錄
- ssh端口映射
- ssh配置文件
- ssh安全設置
- 歷史紀錄
- history命令詳解
- linux開啟操作日志記錄
- 拓展
- git
- git初始化本地倉庫-https
- git初始化倉庫-ssh
- git-查看和設置config配置
- docker
- 概念
- docker原理
- docker鏡像原理
- docker Overlay2 文件系統原理
- docker日志原理
- docker日志驅動
- docker容器日志管理
- 原理論證
- 驗證容器的啟動是作為Docker Daemon的子進程
- 驗證syslog類型日志驅動
- 驗證journald類型日志驅動
- 驗證local類型日志驅動
- 修改容器的hostname
- 修改容器的hosts
- 驗證聯合掛載技術
- 驗證啟動多個容器對于磁盤的占用情況
- 驗證寫時復制原理
- 驗證docker內容尋址原理
- docker存儲目錄
- /var/lib/docker目錄
- image目錄
- overlay2目錄
- 數據卷
- 具名掛載和匿名掛載
- 數據卷容器
- Dockerfile詳解
- dockerfile指令詳解
- 實例:構造centos
- 實例:CMD和ENTRYPOINT的區別
- docker網絡詳解
- docker-compose
- 緩存
- redis
- redis的數據類型和應用場景
- redis持久化
- RDB持久化
- AOF持久化
- redis緩存穿透、緩存擊穿、緩存雪崩
- 常見網絡攻擊類型
- CSRF攻擊
- XSS攻擊
- SQL注入
- Cookie攻擊
- 歷史項目經驗
- 圖片上傳項目實例
- 原生php上傳方法實例
- base64圖片流
- tp5的上傳方法封裝實例
- 多級關系的遞歸查詢
- 數組轉樹結構
- thinkphp5.1+ajax實現導出Excel
- JS 刪除數組的某一項
- 判斷是否為索引數組
- ip操作