主頁 > 後端開發 > 小白的學習路程

小白的學習路程

2020-11-16 20:18:15 後端開發

計算機基礎知識

IP地址規劃
現在常用的是IPV4,公網已經耗盡,中國有2.77億個公網地址,IPV6還在實驗室階段,未落地,
較大型IP地址規劃分有業務地址、物理地址和管理地址,

  1. 業務地址
    需要知道有多少臺無線(WiFi)與有線(網卡)設備終端接入,分別分有內部和訪客使用的兩類地址,
    需服務端接入,分有網管設備、業務系統的網段和監控系統的網段,
    結構:
    內網網路,有服務端和終端,
    外網網路,服務端較少,終端較多,終端分有無線和有線,還有有內部和訪客兩類,
    監控網路,服務端有資料庫、運用端、流媒體;終端分有攝像頭、打卡報警之類的,
    網管網路,認證服務器有portal、dotlx ;網管系統有代理服務器、WSUS、堡壘機、ad域控,

  2. 物理地址
    背對背,VRRP HA HSRP,網路設備分布各個地域

  3. 管理地址
    有設備遠程,路由器協議router-id、網管到設備,

區域結構整體有各個地方的各個網點,

較小型IP地址規劃如學校
可分為宿舍區,辦公區,教學區幾部分,都包含用戶IP,設備管理IP,設備互聯IP,然后核心設備有設備管理IP和設備互聯IP,

TCP/IP協議
在這里插入圖片描述

IP或ICMP(Internet Control Message Protocol,因特網控制報文協議)、TCP或UDP、TELNET或FTP、以及HTTP等都屬于TCP/IP的協議,也稱TCP/IP為網際協議族,
互聯網的協議就是TCP/IP,TCP/IP就是互聯網的協議,
TCP/IP是現在Internet主流協議,是一個分層、多協議的通信體系,
IP地址即為機器的物理地址
協議分有應用層(用戶空間)、傳輸層、網路層(內核空間)、資料鏈路層,

資料鏈路層
網卡介面的網路驅動程式,處理資料在物理傳輸媒介上的傳輸
有ARP協議(Address Resolve Protocol,地址決議協議),RARP協議(Reverse Address Resolve Protocol,逆地址決議協議)
網路層通過IP地址鏈接主機,首先將IP地址從ARP來廣播,資料鏈路層通過物理地址連接主機
WAN(Wide Area Network,廣域網) 通過路由器連接主機,
IP協議(Internet Protocol,因特網協議):根據資料包的目的IP地址決定如何投遞資訊,使用逐跳(hop by hop)的方式確定通訊路徑,

ICMP協議
檢測網路連接,區分報文型別:報文差錯,回應網路錯誤;查詢報文,查詢網路資訊,報文進行冗余校驗(CRC)以檢驗報文在傳輸中是否損壞,

傳輸層
為兩臺主機上的應用程式提供端到端(end to end)的通信,
TCP協議(Transmission Control Protocol,傳輸控制協議):為應用層提供可靠的、面向連接的、基于流(stream)的服務,
UDP協議(User Control Transmission Protocol,用戶資料報協議):為應用層提供不可靠、無連接、基于資料報的服務,雖然可以確保發送訊息的大小,卻不能保證訊息一定會到達,
SCTP協議(Stream Control Transmission Protocol,流控制傳輸協議):為在因特網上傳輸電話信號而設計的服務,

應用層
瀏覽器與服務端之間通信所用的協議是HTTP(HuperText Transfer Protocol),所傳輸資料主要格式是HTML(HyperText Markup Language),WWW(萬維網)中的HTTP屬于OSI應用層的協議,而HTTP屬于表示層的協議,

應用層協議
Ping應用程式,利用ICMP報文檢測網路連接,
Telnet遠程登陸協議,在本地完成遠程任務,
OSPF(Open Shortest Path Fist,開放最短路徑優先)動態路由更新協議,用于路由器之間的通信,
DNS(Domain Name Service,域名服務)協議,提供機器域名到IP地址的轉換功能,
封裝,
每一層協議都在上層資料的基礎上加上自己的頭部資訊(尾部資訊),實作該層功能
是一套分布式的域名服務系統,每個DNS服務器是存在大量機器域名和IP地址的映射,并且是動態更新的,
域名服務,將機器域名轉換陳IP地址,

在這里插入圖片描述

TCP協議
為通信雙方維持一個連接,并且在內核中存盤相關資料,這部分資料中的TCP頭部資訊和TCP內核緩沖資料一槍構成TCP報文段,
(frame):經過資料鏈路層封裝的資料,
分用:使在幀到達目的主機沿著自底向上依次處理幀中本層負責頭部資料,獲取所需資訊,并最終將處理后的幀交給目標應用程式,

ARP協議
實作任意網路層地址到任意物理層地址的轉換,
主機向所在網路廣播一個ARP請求,請求包含目標機器網路地址,這個網路是其他機器都會接收到,但只有被請求的目標機器會應答一個ARP請求,其中包含自己的物理地址,

IP服務
IP協議是TCP/IP協議族的動力,它為上層協議提供無狀態、無連接、不可靠的服務,
無狀態(stateless):無法處理亂序、重復的IP資料報,但是簡單、高效,
無連接(connectionless):IP通信雙方都不長久地維持對方的任何資訊,每次發送資料是都必須指定對方的IP地址,
不可靠:不能保證IP資料報準確地到達接收端,只是盡最大可能,
IP服務的上層協議需要自己實作資料確認、超時重傳等機制以達到可靠傳輸目的,

IP頭部結構
IP頭部資訊出現在每個IP資料報中,用于指定IP通信的源端IP地址、目的端IP地址,指導IP分片和重組,以及指定部分通信行為,

IPv4頭部結構

在這里插入圖片描述

IPv6頭部結構

在這里插入圖片描述

IPv6使得地球上每一粒沙子都有一個IP地址,

IP分片
當IP資料報的長度超過幀的MTU時,將被分片傳輸,在最終的目標機器上才會重新組裝,

在這里插入圖片描述

IP路由
決定發送資料報到目標機器的路途,

IP模塊作業流程

在這里插入圖片描述

路由機制
查找路由表中和資料報的目標IP地址完全匹配的主機IP地址,如果找到,就用該路由項,沒有則轉2,
查找路由表中和資料報的目標IP地址具有相同網路ID的網路IP地址,如果找到,就使用該路由項,沒有則轉3,
選擇默認路由項,通常意味著資料報的下一跳是網關,

IP轉發
將不是發送給本機的IP資料交由資料報轉發子模塊進行轉發,
對于允許IP資料報轉發的檔案系統(主機/路由器),資料報轉發子模塊將對期望轉發的資料報執行以下操作:

  1. 檢查資料報頭部的TTL值,如果TTL為0,則丟棄該資料報,
  2. 查看資料報頭部的嚴格源路由器選擇選項,如果該選項被設定,則檢測資料報的目標IP地址是否是本機的某個IP地址,如果不是則回傳一個ICMP源站選路失敗報文,
  3. 給源端發送一個ICMP重定報文,一告訴它一個更合適的下一跳路由器,
  4. 將TTL值減1,
  5. 處理IP頭部選項,
  6. 執行IP分片操作

網頁常見狀態碼
1開頭 - 資訊提示
這些狀態代碼表示臨時的回應,客戶端在收到常規回應之前,應準備接收一個或多個 1xx 回應,
100 - Continue 初始的請求已經接受,客戶應當繼續發送請求的其余部分,(HTTP 1.1新)
101 - Switching Protocols 服務器將遵從客戶的請求轉換到另外一種協議(HTTP 1.1新)

2開頭 (請求成功)表示成功處理了請求的狀態代碼,
200 (成功) 服務器已成功處理了請求, 通常,這表示服務器提供了請求的網頁,
201 (已創建) 請求成功并且服務器創建了新的資源,
202 (已接受) 服務器已接受請求,但尚未處理,
203 (非授權資訊) 服務器已成功處理了請求,但回傳的資訊可能來自另一來源,
204 (無內容) 服務器成功處理了請求,但沒有回傳任何內容,
205 (重置內容) 服務器成功處理了請求,但沒有回傳任何內容,
206 (部分內容) 服務器成功處理了部分 GET 請求,

3開頭 (請求被重定向)表示要完成請求,需要進一步操作, 通常,這些狀態代碼用來重定向,
300 (多種選擇) 針對請求,服務器可執行多種操作, 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作串列供請求者選擇,
301 (永久移動) 請求的網頁已永久移動到新位置, 服務器回傳此回應(對 GET 或 HEAD 請求的回應)時,會自動將請求者轉到新位置,
302 (臨時移動) 服務器目前從不同位置的網頁回應請求,但請求者應繼續使用原有位置來進行以后的請求,
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索回應時,服務器回傳此代碼,
304 (未修改) 自從上次請求后,請求的網頁未修改過, 服務器回傳此回應時,不會回傳網頁內容,
305 (使用代理) 請求者只能使用代理訪問請求的網頁, 如果服務器回傳此回應,還表示請求者應使用代理,
307 (臨時重定向) 服務器目前從不同位置的網頁回應請求,但請求者應繼續使用原有位置來進行以后的請求,

4開頭 (請求錯誤)這些狀態代碼表示請求可能出錯,妨礙了服務器的處理,
400 (錯誤請求) 服務器不理解請求的語法,
401 (未授權) 請求要求身份驗證, 對于需要登錄的網頁,服務器可能回傳此回應,
403 (禁止) 服務器拒絕請求,
404 (未找到) 服務器找不到請求的網頁,
405 (方法禁用) 禁用請求中指定的方法,
406 (不接受) 無法使用請求的內容特性回應請求的網頁,
407 (需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理,
408 (請求超時) 服務器等候請求時發生超時,
409 (沖突) 服務器在完成請求時發生沖突, 服務器必須在回應中包含有關沖突的資訊,
410 (已洗掉) 如果請求的資源已永久洗掉,服務器就會回傳此回應,
411 (需要有效長度) 服務器不接受不含有效內容長度標頭欄位的請求,
412 (未滿足前提條件) 服務器未滿足請求者在請求中設定的其中一個前提條件,
413 (請求物體過大) 服務器無法處理請求,因為請求物體過大,超出服務器的處理能力,
414 (請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法處理,
415 (不支持的媒體型別) 請求的格式不受請求頁面的支持,
416 (請求范圍不符合要求) 如果頁面無法提供請求的范圍,則服務器會回傳此狀態代碼,
417 (未滿足期望值) 服務器未滿足"期望"請求標頭欄位的要求,

5開頭(服務器錯誤)這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤, 這些錯誤可能是服務器本身的錯誤,而不是請求出錯,
500 (服務器內部錯誤) 服務器遇到錯誤,無法完成請求,
501 (尚未實施) 服務器不具備完成請求的功能, 例如,服務器無法識別請求方法時可能會回傳此代碼,
502 (錯誤網關) 服務器作為網關或代理,從上游服務器收到無效回應,
503 (服務不可用) 服務器目前無法使用(由于超載或停機維護), 通常,這只是暫時狀態,
504 (網關超時) 服務器作為網關或代理,但是沒有及時從上游服務器收到請求,
505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本,

Get/Post兩種基本請求方法
GET和POST本質上就是TCP鏈接,并無差別,但是由于HTTP的規定和瀏覽器/服務器的限制,導致他們在應用程序中體現出一些不同,
GET產生一個TCP資料包;POST產生兩個TCP資料包(并不是所有瀏覽器都會在POST中發送兩次包,Firefox就只發送一次),發一次包的時間和發兩次包的時間差別基本可以無視,而在網路環境差的情況下,兩次包的TCP在驗證資料包完整性上,有非常大的優點,
對于GET方式的請求,瀏覽器會把http header和data一并發送出去,服務器回應200(回傳資料);
而對于POST,瀏覽器先發送header,服務器回應100 continue,瀏覽器再發送data,服務器回應200 ok(回傳資料),
萬維網中,用TCP運輸資料,HTTP設定了好幾個服務類別,有GET, POST, PUT, DELETE等,HTTP規定,當執行GET請求的時候,就會貼上GET的標簽(設定method為GET),而且要求把傳送的資料放在url中以方便記錄,如果是POST請求,就要貼上POST的標簽,HTTP只是個行為準則,而TCP才是GET和POST怎么實作的基本,
GET在瀏覽器回退時是無害的,而POST會再次提交請求,
GET產生的URL地址可以被Bookmark,而POST不可以,
GET請求會被瀏覽器主動cache,而POST不會,除非手動設定,
GET請求只能進行url編碼,而POST支持多種編碼方式,
GET請求引數會被完整保留在瀏覽器歷史記錄里,而POST中的引數不會被保留,
GET請求在URL中傳送的引數是有長度限制的,而POST么有,
對引數的資料型別,GET只接受ASCII字符,而POST沒有限制,
GET比POST更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感資訊,
GET引數通過URL傳遞,POST放在Request body中,

HTML基礎語法
HTML(Hypertext Markup Language,超文本標記語言),使用HTML撰寫的檔案稱為網頁,HTML是網頁設計的基礎語言,目前最新版本是HTML5,使用最廣泛的是HTML4.1,
HTML是構成網頁檔案的主要語言,HTML標簽可以標識文字、圖形、影片、聲音、表格、超鏈接等網頁物件,

HTML檔案基本結構
HTML檔案一般都包含頭=頭部區域和主體區域,由、、三個標簽組成,每個標簽都是成對存在的,
在這里插入圖片描述

靜態網頁:檔案拓展名一般為.html或.htm,可直接在瀏覽器中瀏覽,
動態網頁:檔案拓展名為.asp、.aspx、.php或.jsp等,需服務器決議之后,瀏覽器才能瀏覽,
元素
我們把匹配的標簽對以及它們包圍的內容稱為元素,即(元素 = 開始標簽 + 內容 + 結束標簽),如:< a href=“http://hanzhaoxin.cnblogs.com/”>我的博客</ a>,
屬性
開始標簽中那些以名稱/值對的形式出現的內容,我們稱之為屬性,如上例中:href=“http://hanzhaoxin.cnblogs.com/”,
(href是屬性名稱,"http://hanzhaoxin.cnblogs.com/"是屬性值),

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/220519.html

標籤:python

上一篇:Vue.js2+ArcGIS3二、繪制工具(標繪、空間測量、空間統計)

下一篇:C語言入門——《一維到多維陣列》

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more