5.23-

?回顧

I0多路復用的原理?

  • 程序首先向操作系統發起一個IO多路復用請求,告訴操作系統需要監視哪些IO通道。這些IO通道可以包括網絡套接字、文件描述符等
  • 操作系統隨后會將這些IO通道放入一個隊列中,并在某個IO通道就緒時(如數據到達、文件可讀等)向程序發送一個事件通知
  • 程序接收到事件后,可以立即處理該IO通道的操作。這意味著,程序可以在單個線程中同時監聽多個輸入流,并在有數據可讀或可寫時進行相應的處理,而不需要為每個通道創建一個獨立的線程

實現I0多路復用可以使用哪些函數完成?

  • 可以使用 select、poll、epoll這些函數來完成

select和poll的區別?

????????select

  • 支持的最大文件描述符數量是有限制的
  • 采用輪詢方式,將所有待檢測的文件描述符放在一個fd_set集合中,每次輪詢需要遍歷整個集合
  • 是標準POSIX接口,在幾乎所有操作系統上都能使用
  • 對于返回狀態碼不夠清晰明了,需要使用FD_ISSET宏來判斷哪些文件描述符已經就緒
  • elect函數僅支持三種事件標志:可讀、可寫和異常

????????poll

  • 沒有相關限制,可以處理任意數量的文件描述符
  • 采用鏈表方式,將所有待檢測的文件描述符放在一個鏈表中,每次檢查時只需要遍歷該鏈表即可,處理大量文件描述符時,poll效率更高
  • 不是標準接口,在一些老舊的操作系統上可能無法使用
  • 返回后直接通過revents字段來判斷哪些文件描述符已經就緒,這使得poll的返回結果更加直觀
  • 支持更多的事件標志,包括可讀、可寫、異常、連接斷開、優先級帶數據和錯誤事件等

在UDP通信過程中,能否使用connect函數?為什么?有什么好處?

  • 可以使用
  • 使用connect函數為UDP套接字設置了一個目標地址后,后續調用send或sendto函數發送數據時,就可以省略目標地址參數。這可以使代碼更簡潔,減少出錯的可能性。
  • 當UDP套接字未連接時,send或sendto函數調用失敗時,errno可能被設置為ENOTCONN或EDESTADDRREQ。而使用connect函數后,這些問題可以得到簡化
  • 在某些實現中,使用connect函數連接UDP套接字可能會提高性能,因為系統可以優化網絡路徑和緩存
  • 通常,UDP套接字使用recvfrom函數來接收數據,因為它需要知道數據來自哪個源地址。但是,如果使用connect函數連接了UDP套接字,那么也可以使用recv函數來接收數據,因為系統已經知道數據應該來自哪個地址。這允許你在同一端口上創建多個套接字,這在某些應用程序中可能是有用的

0SI 7層網絡體系結構有哪些?

  • 應用層::應用層位于OSI參考模型的最高層,它的主要任務是通過應用程序間的交互來完成特定的網絡應用
  • 表示層:表示層從應用層接受數據,這些數據是以字符和數字的形式出現的(如Chinese、666)
  • 會話層:會話層負責建立、管理和終止會話。會話層通過提供單會話或多會話管理、同步以及重新同步服務,來控制哪些應用進程正在通信,并負責建立、管理和終止會話。
  • 傳輸層:傳輸層的主要任務是將從下層接收的數據進行分段和傳輸,并在到達目的地址后再進行重組
  • 網絡層:網絡層的主要任務是選擇合適的網間路由和交換節點,以確保數據分組(Packet)從發送端到達接收端
  • 數據鏈路層:數據鏈路層通常也叫做鏈路層,它位于物理層和網絡層之間
  • 物理層:物理層是OSI參考模型的最低層,它直接面向實際承擔數據傳輸的物理媒體(如通信鏈路),負責傳送比特流(即由“1”和“0”表示的二進制數串)的功能

四層網絡體系結構:

  • 網絡接口層:這一層沒有規定具體內容,目的是互聯全世界各種不同的網絡接口,如有線的以太網接口,無線局域網的Wi-Fi接口。
  • 網絡層:主要負責建立兩個節點之間的連接,通過尋址來選擇合適的路由和交換節點,確保數據能夠正確無誤地按照地址傳送給目的端的傳輸層。IP協議是這一層的核心。
  • 傳輸層:負責在機器之間建立用于會話的端到端連接(用于數據傳輸),并提供可靠、透明和優化的數據傳輸服務機制。該層的核心協議包括TCP(傳輸控制協議)和UDP(用戶數據報協議)。
  • 應用層:主要為用戶提供針對性的服務,包含大量的應用協議,如HTTP(超文本傳輸協議)、HTTPS(安全的HTTP)、FTP(文件傳輸協議)、SMTP(簡單郵件傳輸協議)、POP3(郵局協議第3版)等

ARP、HTTP、TFTP、IP、UDP、TCP說出全程和所在層

  • ARP:地址解析協議,它在TCP/IP模型中屬于IP層(網絡層),在OSI模型中屬于鏈路層。ARP協議用于將計算機的網絡地址(IP地址32位)轉化為物理地址(MAC地址48位)
  • HTTP:超文本傳輸協議,它屬于應用層協議。HTTP協議是為了實現某一類具體應用的協議,并由某一運行在用戶空間的應用程序來實現其功能
  • TFTP:簡單文件傳輸協議,它也屬于應用層協議。TFTP是一個在UDP之上建立的簡單的、面向文件的傳輸協議,僅支持文件上傳和下載功能
  • IP:網際互連協議,它位于TCP/IP模型的網絡層(相當于OSI模型的網絡層)。IP協議設計目的是提高網絡的可擴展性,如解決互聯網問題、實現大規模、異構網絡的互聯互通等
  • UDP:用戶數據報協議,它在TCP/IP模型中屬于傳輸層。UDP是一種無連接的協議,它在傳輸數據之前不需要建立連接,因此它的傳輸速度較快,但數據安全性相對較低
  • TCP:傳輸控制協議,同樣位于TCP/IP模型的傳輸層。TCP協議是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能

順序表和鏈表的區別?

  • 順序表
  • 順序表底層存儲空間是連續的,它使用一塊連續的內存空間存儲元素,并通過下標來訪問和操作元素。由于元素在內存中連續存儲,順序表具有快速的隨機訪問能力,訪問元素的時間復雜度為O(1)。
  • 在順序表中插入和刪除元素時,需要移動其他元素以保持順序,因此插入和刪除的時間復雜度較高,為O(n)。此外,順序表在插入時可能需要擴容,即開辟新空間、拷貝元素、釋放舊空間,這也增加了操作的復雜性。
  • 順序表在存儲數據時通常具有較高的空間利用率,因為它使用連續的存儲空間,減少了空間碎片。然而,順序表要求大片連續空間,改變容量不方便。
  • 順序表的設計相對簡單,因為它基于數組實現,可以直接使用數組的下標來訪問元素。
  • 鏈表
  • 鏈表底層存儲空間則是不連續的,它在計算機內存的位置是隨機存儲的。鏈表中的元素通過指針鏈接次序實現邏輯順序,因此在訪問元素時需要從頭節點開始逐個遍歷,訪問元素的時間復雜度為O(n)。
  • 鏈表在插入和刪除元素時則相對簡單,不需要移動其他元素。鏈表中的節點包含數據域和指針域,插入和刪除操作只需要修改指針即可,時間復雜度為O(1)。
  • 鏈表在存儲數據時空間利用率相對較低,因為每個節點除了存儲數據外還需要存儲指向下一個節點的指針。但是,鏈表在插入新數據時可以向系統申請新的內存空間,數據刪除后也可以將空間還給系統,因此更加靈活。
  • 鏈表的設計則相對復雜,需要定義節點結構、實現節點的鏈接和遍歷等操作。此外,鏈表在查找數據時也需要按順序找到該數據為止,無法像順序表一樣進行隨機訪問

進程和線程的區別?

  • 進程
  • 是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配的基本單位,是操作系統結構的基礎。它具有獨立的功能,可以申請和擁有系統資源,是一個動態的概念,是一個活動的實體。
  • 擁有獨立的地址空間和系統資源,包括文本區域、數據區域和堆棧區域等。因此,創建和銷毀進程的開銷相對較大
  • 是獨立的執行單元,具有自己的調度算法,在并發條件下更加穩定可靠。然而,由于進程間的相互制約,進程的執行具有間斷性,即進程按各自獨立的、不可預知的速度向前推進。
  • 必須通過IPC(進程間通信)進行通信,切換開銷相對較大。這是因為每個進程都有獨立的地址空間和資源,需要進行復雜的上下文切換操作。
  • 由程序、數據和進程控制塊(PCB)三部分組成。一個程序在不同的數據集里就構成不同的進程,能得到不同的結果。
  • 線程
  • 是操作系統能夠進行運算調度的最小單位,它被包含在進程當中,是進程中的實際運作單位。與進程相比,線程更為輕量級,共享進程的地址空間和系統資源。每個進程都至少包含一個線程,稱為主線程,而其他線程則被稱為子線程。
  • 則直接訪問其所屬進程的地址空間和資源,因此可以方便地共享數據。與進程相比,線程的創建和銷毀開銷較小,因為它們共享進程的資源
  • 可以并發執行,提高程序的吞吐量和響應性。但由于線程共享進程的資源,線程之間的調度和同步比較復雜,對并發條件的處理需要更多的注意。
  • 可以直接共享進程的地址空間和資源,因此切換開銷相對較小。這使得線程之間的通信更加高效和靈活。
  • 一個進程可以包含多個線程,這些線程共享相同的地址空間和資源。這使得線程在編程中更加靈活和高效。

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

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

相關文章

「YashanDB遷移體驗官」Mysql生產環境遷移至YashanDB數據庫深度體驗

「YashanDB遷移體驗官」Mysql生產環境遷移至YashanDB數據庫深度體驗 1. 前言1.1 產品介紹1.2 產品架構1.3 產品規格1.3.1 數據庫版本支持1.3.2 數據類型支持 2. YMP安裝2.1 環境說明2.2 執行安裝2.3 訪問YMP2.3.1 YMP登錄界面2.3.2 YMP遷移流程 3. YMP數據遷移3.1 創建數據源3.…

離線模式下載安裝gcc-4.8.5

目錄 一,下載gcc離線安裝包 二,下載gcc依賴包 三,安裝gcc 1, 解壓 2, 將依賴庫放置環境 3, 安裝 3.1自動安裝 3.1.1 執行依賴庫的編譯 3.1.2 新建編譯目錄 3.1.3 配置編譯環境 3.1.4 編譯 3.1.5 安裝 3.2 手動安裝 3.2.1 安裝GMP-4.3.2 3.2.2 安裝mpf…

【pytorch】 Win11下cuda,cudnn以及pytorch環境安裝

Win11下cuda,cudnn以及pytorch環境安裝 CUDA環境安裝1. 查看CUDA版本1.1 打開NVIDIA控制面板,可以點右下角的NVIDIA設置1.2 點擊系統信息,選擇組件查看CUDA版本 2. 下載對應的CUDA版本3. 安裝3.1 啟動exe文件安裝 4. 驗證安裝結果 CUDNN 環境…

【MySQL精通之路】InnoDB-啟動選項和系統變量

系統變量可以在服務器啟動時設置TRUE或FALSE啟用禁用,也可以通過使用--skip前綴來禁用 例如: 要啟用或禁用InnoDB自適應哈希索引,可以在命令行中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index,或者在配置…

JavaSE : 注解 Annotation

注解 Java中的注解(Annotation)是一種元數據形式,用于向編譯器或JVM提供有關程序元素(如類、方法、變量、參數和包)的附加信息。注解不會直接影響程序的行為或結構,但它們可以被編譯器、開發工具或運行時環…

Apache CXF Aegis databinding SSRF 高危漏洞修復

一、漏洞修復 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不當漏洞 二、修復步驟 1、Apache CXF Aegis databinding SSRF漏洞修復 步驟: 進入服務器搜索 databinding find -name *databinding* 發現版本是3.1.6 果斷…

數據結構~~帶環鏈表的環開始的節點位置**兩種方法

1.帶環鏈表環開始的位置 (1)上面的這個測試用例使用的是包含了4個節點的帶環鏈表,我們要找的就是鏈表里面的環開始的節點的位置,拿這個測試用例而言,就是2這個節點,從這個節點開始,我們的鏈表就…

【第16章】MyBatis-Spring之SqlSession

文章目錄 前言一、SqlSessionTemplate1. 創建2. 使用3. 批量操作3.1 創建SqlSessionTemplate3.2 service3.3 controller 二、SqlSessionDaoSupport總結 前言 在 MyBatis 中,你可以使用 SqlSessionFactory 來創建 SqlSession。 一旦你獲得一個 session 之后&#xf…

源碼部署EFK

目錄 資源列表 基礎環境 關閉防護墻 關閉內核安全機制 修改主機名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 單節點 集群(3臺節點集群為例) 啟動 二、部署filebeat 部署filebeat 添加配置文件 啟動 三、部署kiban…

單點登錄【demo】

前言 2023-07-29 15:44:56 公開發布于 2024-5-22 00:04:56 單點登錄【demo】 以下是 Java 實現單點登錄的示例代碼: 單點登錄(Single Sign-On,SSO)是一種身份認證和授權機制,可以使用戶在多個應用程序或系統之間使…

SQL常用基礎語句(一)-- FGHIJ開頭

GROUP BY GROUP BY語法可以根據給定數據列的每個成員對查詢結果進行分組統計,最終得到一個分組匯總表。在GROUP BY子句后面包含了一個HAVING子句,HAVING類似于WHERE,(唯一的差別是WHERE過濾行,HAVING過濾組&#xff0…

【C/C++筆試練習】TCP、IP廣播、ARP協議、IP路由器、MAC協議、三次握手、TCP/IP、子網劃分年、會抽獎、抄送列表

文章目錄 C/C筆試練習選擇部分(1)TCP(2)IP廣播(3)ARP協議(4)IP路由器(5)MAC協議(6)三次握手(7)TCP/IP&#xf…

PHP在線制作表白網源碼

PHP在線制作表白網源碼,送女友個驚喜吧,無數據庫,上傳就能用,后臺/admin,賬號密碼都是admin 百度網盤:https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

AWS安全性身份和合規性之Secrets Manager

AWS Secrets Manager是一項AWS托管的服務,用于安全地存儲、管理和輪轉敏感信息,如數據庫密碼、API密鑰、OAuth令牌等。AWS Secrets Manager助您在整個生命周期內輕松管理、檢索和輪換數據庫憑證、API密鑰和其他密鑰。 關鍵詞:集中管理、加密…

sql使用加和進行合并去重并提升速率

背景 有三張表ltd1 、ltd0051和、ltd0011ltd1作為主表,左關聯 ltd0051和ltd0011如果ltd0051有兩條重復數據、td0011有兩條重復數據,左關聯之后就會得到4條,同時ltd0051和ltd0011這兩條數據都是正確,基于主鍵我們需要將兩個相同主鍵…

【全開源】AJAX家政上門服務系統小程序自營+多商家(高級授權)+獨立端

基于FastAdmin和原生微信小程序開發的一款同城預約、上門服務、到店核銷家政系統,用戶端、服務端(高級授權)、門店端(高級授權)各端相互依賴又相互獨立,支持選擇項目、選擇服務人員、選擇門店多種下單方式,支持上門服務和到店核銷兩種服務方式…

深入理解數倉開發(一)數據技術篇之日志采集

前言 今天開始重新回顧電商數倉項目,結合《阿里巴巴大數據之路》和尚硅谷的《劍指大數據——企業級電商數據倉庫項目實戰 精華版》來進行第二次深入理解學習。之前第一次學習數倉,雖然盡量放慢速度力求深入理解,但是不可能一遍掌握&#xff0…

我在去哪兒薅到了5塊錢火車票代金券,速薅

哈哈,親愛的薅羊毛小伙伴們! 剛剛在去哪兒大佬那兒發現了一個超級薅羊毛福利!我只花了短短兩分鐘,就搞到了一張5塊錢火車票代金券,簡直是天上掉餡餅的節奏啊! 話不多說,薅羊毛的姿勢給你們擺好…

代碼隨想錄算法訓練營第十六天(py)| 二叉樹 | 104.二叉樹的最大深度、111.二叉樹的最小深度、222.完全二叉樹的節點個數

104.二叉樹的最大深度 給定一個二叉樹 root ,返回其最大深度。 二叉樹的 最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 思路1 迭代法 層序遍歷 層序遍歷的思路很簡單,其結果本來就是按層數記錄的,只需返回結果的長度皆可。…

【C語言回顧】聯合和枚舉

前言1. 聯合體1.1 聯合體的聲明1.2 聯合體的特點1.3 聯合體的使用 2. 枚舉2.1 枚舉的聲明2.2 枚舉的特點2.3 枚舉的使用 結語 #include<GUIQU.h> int main { 上期回顧: 【C語言回顧】結構體 個人主頁&#xff1a;C_GUIQU 專欄&#xff1a;【C語言學習】 return 一鍵三連;…