認識通訊協議——TCP/IP、UDP協議的區別,HTTP通訊協議的理解

在這里插入圖片描述

目錄

  • 引出
  • 認識通訊協議
    • 1、TCP/IP協議,UDP協議的區別
    • 2、HTTP通訊協議的講解
  • Redis沖沖沖——緩存三兄弟:緩存擊穿、穿透、雪崩
    • 緩存擊穿
    • 緩存穿透
    • 緩存雪崩
  • 總結

引出

認識通訊協議——TCP/IP、UDP協議的區別,HTTP通訊協議的理解


認識通訊協議

1、TCP/IP協議,UDP協議的區別

屬于底層的通訊協議

三次握手的目的:保證連接一定創建成功

在這里插入圖片描述

一問一答的目的:保證數據一定傳輸成功,保證數據永遠不丟失

在這里插入圖片描述

四次揮手的目的:保證連接一定斷開成功,且清理到位!

在這里插入圖片描述

Java程序連接MySQL數據庫時,第1次 是不都很慢?因為:它在建立連接 通訊協議是:MYSQL協議,底層依舊是:TCP/IP協議


UDP協議:類似于 寫信,發短信,不依賴于連接 導致:信息丟失

TCP/IP協議,UDP協議,都是網絡傳輸協議!在它們的基礎之上,可能會衍生出非常多的上層協議,比如:HTTP HTTPS MYSQL POP3 ……

2、HTTP通訊協議的講解

是屬于TCP/IP協議的上層協議,所以它也存在:3次握手,4次揮手的過程,它同樣也依賴于連接!

HTTP版本:1.0 1.1(使用最為廣泛) 2.0

1.0 每個請求都會創建一個連接,請求完畢,連接斷開

1.1 每個文件對應創建一個連接,同一個文件發出的請求,可以共享對應的連接,文件關閉連接關閉

2.0 每個瀏覽器對應創建一個連接,同一個瀏覽器發出的請求, 可以共享對應的連接,瀏覽器關閉連接關閉

版本更新的目的是:盡量的減少連接創建&銷毀的過程,做到連接復用

HTTP通訊協議的分類:請求,響應

HTTP請求協議:請求行,請求頭,空行,請求體

請求行:請求方式(GET/POST) URL HTTP協議版本號

請求頭:告訴服務端,瀏覽器的相關信息

空行:分割請求頭 & 請求體

請求體:用于在POST時,傳輸數據

在這里插入圖片描述

對應的響應協議:

狀態行:協議版本,狀態碼以及狀態碼的描述(200,400,404,405,302,500)

響應頭:后端服務器的相關信息

空行:分割響應頭 & 響應體

響應體:響應數據的東西

在這里插入圖片描述

Redis沖沖沖——緩存三兄弟:緩存擊穿、穿透、雪崩

緩存擊穿

緩存擊穿:redis中沒有,但是數據庫有

順序:先查緩存,判斷緩存是否存在;如果緩存存在,直接返回數據;如果緩存不存在,則查詢數據庫,將數據庫的數據存入到緩存

在這里插入圖片描述

解決方案:將熱點數據設置過期時間長一點;針對數據庫的熱點訪問方法上分布式鎖;

緩存穿透

緩存穿透:redis中沒有,數據庫也沒有

在這里插入圖片描述

解決方案:

(1)將不存在的key,在redis設置值為null;

(2)使用布隆過濾器;

原理:https://zhuanlan.zhihu.com/p/616911933

在這里插入圖片描述

布隆過濾器:

如果確認key不存在于redis中,那么就一定不存在;

它說key存在,就有可能存在,也可能不存在! (誤差)

在這里插入圖片描述

布隆過濾器

1、根據配置類中的 key的數量 ,誤差率,計算位圖數組【二維數組】

2、通過布隆過濾器存放key的時候,會計算出需要多少個hash函數,由hash函數算出多少個位圖位置需要設定為1

3、查詢時,根據對應的hash函數,判斷對應的位置值是否都為1;如果有位置為0,則表示key一定不存在于該redis服務器中;如果全部位置都為1,則表示key可能存在于redis服務器中;

緩存雪崩

緩存雪崩:

Redis的緩存雪崩是指當Redis中大量緩存數據同時失效或者被清空時,大量的請求會直接打到數據庫上,導致數據庫瞬時壓力過大,甚至宕機的情況。

造成緩存雪崩的原因主要有兩個:

1.相同的過期時間:當Redis中大量的緩存數據設置相同的過期時間時,這些數據很可能會在同一時間點同時失效,導致大量請求直接打到數據庫上。

2.緩存集中失效:當服務器重啟、網絡故障等因素導致Redis服務不可用,且緩存數據沒有自動進行容錯處理,當服務恢復時大量的數據同時被重新加載到緩存中,也會導致大量請求直接打到數據庫上。

預防緩存雪崩的方法主要有以下幾種:

1.設置不同的過期時間:可以將緩存數據的過期時間分散開,避免大量緩存數據在同一時間點失效。

2.使用加鎖:可以將所有請求都先進行加鎖操作,當某個請求去查詢數據庫時,如果還沒有加載到緩存中,則只讓單個線程去執行加載操作,其他線程等待該線程完成后再次進行判斷,避免瞬間都去訪問數據庫從而引起雪崩。

3.提前加載預熱:在系統低峰期,可以提前將部分熱點數據加載到緩存中,這樣可以避免在高峰期緩存數據失效時全部打到數據庫上。

4.使用多級緩存:可以在Redis緩存之上再使用一層緩存,例如本地緩存等,當Redis緩存失效時,還能夠從本地緩存中獲取數據,避免直接打到數據庫上。

在這里插入圖片描述

本地緩存:ehcache oscache spring自帶緩存 持久層框架的緩存


總結

認識通訊協議——TCP/IP、UDP協議的區別,HTTP通訊協議的理解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711253.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第九屆數學與人工智能國際會議 (ICMAI 2024)即將召開!

2024年第九屆數學與人工智能國際會議將于2024年5月10-12日在中國北京召開。本屆會議由北京工業大學主辦,旨在促進應用邏輯、算法與復雜性研究,使用數學的方法促進人工智能理論與應用發展,加深學術交流與合作。我們熱忱歡迎從事相關技術研究的…

開源WIFI繼電器之使用說明

1、設備說明 1.1外觀 1.2供電 100~240V交流輸入,Lin接火線,Nin接零線。 1.3連接負載 輸出信號為繼電器無源信號,用于信號的導通和斷開控制,最大可通過10A負載電流,COM為繼電器公共端,NO為繼電器常開端&a…

藍牙耳機推薦高性價比,五大超好用藍牙耳機推薦,趕緊上車!

?隨著技術的不斷進步,藍牙耳機的性能和配置也在不斷提升,各大品牌都在推出具有各種特色的產品。其中,音質是很多消費者最為關注的一點。因此,我在這里為大家推薦幾款音質表現還不錯的幾款藍牙耳機,供大家參考。 一、挑…

SpringAOP

1. SpringAOP的基本概念 SpringAOP(Aspect-Oriented Programming)即面向切面編程,是Spring框架體系中非常重要的功能模塊之一。AOP與OOP(面向對象編程)相輔相成,提供了一種與OOP不同的抽象軟件結構的視圖。…

Java畢業設計 基于SSM SpringBoot vue購物比價網站

Java畢業設計 基于SSM SpringBoot vue購物比價網站 SSM vue 購物比價網站 功能介紹 首頁 圖片輪播 商品 商品分類 商品詳情 評論 收藏 商品攻略 商品信息 公告欄 在線反饋 登錄 注冊 個人中心 我的收藏 后臺管理 登錄 注冊商品戶 個人中心 修改密碼 個人信息 商品戶管理 用戶…

IDC 中搭建 Serverless 應用平臺:通過 ACK One 和 Knative 玩轉云資源

作者:元毅、莊宇 如何打造云上(公共云)、云下(IDC 數據中心)統一的云原生 Serverless 應用平臺,首先我們來看一下 ChatGPT 4 會給出什么樣的答案: 如何打造云上、云下統一的云原生 Serverless…

【CesiumJS-3】加載傾斜模型數據(3DTilest)以及修改位置

引入傾斜模型數據 // 加載3DTiles數據let tileset;try {tileset await Cesium.Cesium3DTileset.fromUrl("/api/3DTiles/b3dm_qx/tileset.json");viewer.value.scene.primitives.add(tileset); // 傾斜模型添加到場景中viewer.value.zoomTo(tileset); // 視角定位到傾…

【音視頻處理】使用ffmpeg實現多個視頻合成一個視頻(按宮格視圖)

先上結果 環境 硬件:通用PC 系統:Windows 測試有效 軟件:ffmpeg 解決 0、命令 ffmpeg.exe -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex "[0:v]scaleiw/2:ih/2,pad2*iw:2*ih[a]; [1:v]scaleiw/2:ih/2…

GO學習記錄

這里寫目錄標題 00 環境二級目錄三級目錄 00 環境 參考的&#xff1a;https://www.liwenzhou.com/posts/Go/install/ 編譯運行&#xff1a; go mod init <項目名> // 在目錄下創建項目 go mod init hello // 編譯二級目錄 三級目錄

BioTech - 大分子藥物設計 概述

歡迎關注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136302202 大分子藥物設計領域主要包括3個方面&#xff0c;即大環類藥物設計、蛋白質與多肽類藥物設計、核酸藥物設計等&#xff0c;具體如下&…

selenium控制控件出現StaleElementReferenceException

attempts0while attempts<2:try:ywbh_text self.getElement(self.driver, //*[id"board_data"]/tbody/tr[1]/td[2])ywbh_text.click()config.zscjhbgbz_ywbh ywbh_text.textprint("保存業務編號&#xff1a;"ywbh_text.text"到conf中 zscjhbgbz_…

DolphinScheduler——奇富科技的調度實踐

目錄 一、技術架構 二、業務挑戰 2.1 調度任務量大 2.2 運維復雜 2.3 SLA要求高 三、調度優化實踐 3.1 重復調度 3.2 漏調度 3.3 Worker服務卡死 3.4 任務重復運行 四、服務監控 4.1 方法耗時監控 4.2 任務調度鏈路監控 五、用戶收益 原文大佬的這篇調度系統案例…

nginx使用詳解--緩存

Nginx 是一個功能強大的 Web 服務器和反向代理服務器&#xff0c;它可以用于實現靜態內容的緩存&#xff0c;緩存可以分為客戶端緩存和服務端緩存。 客戶端緩存 客戶端緩存指的是瀏覽器緩存, 瀏覽器緩存是最快的緩存, 因為它直接從本地獲取(但有可能需要發送一個協商緩存的請…

【XR806開發板試用】全網首發,對接騰訊云平臺的血淚史

1.前面的話 在上次連夜肝出了華為云平臺的帖子:https://aijishu.com/a/1060000000287434 之后,論壇里的反響平平,好評沒有,點贊更無,抱著已完成任務成功白嫖一塊板子的心態,把板子收在了盒子里,第二天,助手小姐姐跟我說為何不把騰訊云的做了,對于這個要求我其實是拒絕的,但是小…

鴻蒙開發之組件間方法傳遞(方法回調)

目前使用的方式有兩種&#xff0c;一種是父子組件方法傳遞&#xff0c;一種是系統提供的emitter。 一、父子組件方法傳遞 1.1 使用場景 當我們父組件中有一個方法&#xff0c;需要子組件在修改完數據后回調父組件的方法時候。有點抽象&#xff1a;這樣解釋一下&#xff0c;父…

深度學習-Pytorch運算的基本數據類型

深度學習-Pytorch模型運算的基本數據類型 用pytorch構建模型&#xff0c;并訓練模型&#xff0c;得到一個優化的模型&#xff0c;那么模型構造的數據類型怎樣的&#xff1f; 數據分析 數據分析-Pandas如何轉換產生新列 數據分析-Pandas如何統計數據概況 數據分析-Pandas如…

Three.js-04軌道控制器

1.導入 說明&#xff1a;相機圍繞目標進行軌道運動。也就是可以通過鼠標拖拽進行移動視角。 import { OrbitControls } from three/addons/controls/OrbitControls.js; 2.使用 說明&#xff1a;構造controls對象&#xff0c;再調用update方法&#xff1b;為了使效果更為明顯…

十二、Qt自定義Widget組件、靜態庫與動態庫

一、自定義Widget組件 1、自定義Widget組件 使用步驟采用提升法&#xff08;promotion&#xff09;重新定義paintEvent事件 2、實現程序 &#xff08;1&#xff09;創建項目&#xff0c;基于QWidget &#xff08;2&#xff09;添加類&#xff0c;為Widget組件提升類 #inclu…

Spring Boot 集成 Quartz 實現定時任務

Spring Boot 集成 Quartz 實現定時任務 在Spring Boot應用中&#xff0c;我們經常需要執行一些定時任務&#xff0c;如每天發送報表、定時更新數據庫等。雖然Spring Framework自帶了一個簡單的定時任務功能&#xff08;Scheduled&#xff09;&#xff0c;但在一些復雜場景下&a…

Vue3 在SCSS中使用v-bind

template 先創建一個通用的頁面結構 <template><div class"v-bubble-bg"></div> </template>js 在JS中先對需要用的數據進行定義&#xff1a; 可以是參數&#xff0c;也可以是data <script setup>const props defineProps({bgCol…