在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

后端有點卷?沖客戶端去了!

小林coding ? 來源:小林coding ? 2023-11-10 17:19 ? 次閱讀

大家好,我是小林。

互聯網崗位里,可以說后端開發是最卷,投的人最多的,但是隔壁的客戶端開發投的就很少,有后端同學會被客戶端部門撈起來去面試,所以如果卷不過后端,又想進大廠的同學,可以嘗試投客戶端開發,面試相對沒那么卷,薪資待遇跟后端也是一樣的。

今天分享一位快手客戶端一二三面的面經,同學的技術棧是C++后端,但是面試不會問后端內容了,主要就圍繞Cpp+操作系統+網絡協議+算法來問,相比后端所需要準備的內容就少了 mysql 、redis、消息隊列等后端組件,但是計算基礎的深度會問的比較深一點。

由其第三面,直接給兩個場景代碼題手寫出來,還是有點難度。。

快手一面

擁塞控制介紹一下

在網絡出現擁堵時,如果繼續發送大量數據包,可能會導致數據包時延、丟失等,這時 TCP 就會重傳數據,但是一重傳就會導致網絡的負擔更重,于是會導致更大的延遲以及更多的丟包,這個情況就會進入惡性循環被不斷地放大....

所以,TCP 不能忽略網絡上發生的事,它被設計成一個無私的協議,當網絡發送擁塞時,TCP 會自我犧牲,降低發送的數據量。

于是,就有了擁塞控制,控制的目的就是避免「發送方」的數據填滿整個網絡。

為了在「發送方」調節所要發送數據的量,定義了一個叫做「擁塞窗口」的概念。

擁塞控制主要是四個算法:

  • 慢啟動
  • 擁塞避免
  • 擁塞發生
  • 快速恢復

慢啟動

TCP 在剛建立連接完成后,首先是有個慢啟動的過程,這個慢啟動的意思就是一點一點的提高發送數據包的數量,如果一上來就發大量的數據,這不是給網絡添堵嗎?

慢啟動的算法記住一個規則就行:當發送方每收到一個 ACK,擁塞窗口 cwnd 的大小就會加 1。

這里假定擁塞窗口 cwnd 和發送窗口 swnd 相等,下面舉個栗子:

  • 連接建立完成后,一開始初始化 cwnd = 1,表示可以傳一個 MSS 大小的數據。
  • 當收到一個 ACK 確認應答后,cwnd 增加 1,于是一次能夠發送 2 個
  • 當收到 2 個的 ACK 確認應答后, cwnd 增加 2,于是就可以比之前多發2 個,所以這一次能夠發送 4 個
  • 當這 4 個的 ACK 確認到來的時候,每個確認 cwnd 增加 1, 4 個確認 cwnd 增加 4,于是就可以比之前多發 4 個,所以這一次能夠發送 8 個。

慢啟動算法的變化過程如下圖:

f71493ec-7fa4-11ee-939d-92fbcf53809c.png慢啟動算法

可以看出慢啟動算法,發包的個數是指數性的增長

那慢啟動漲到什么時候是個頭呢?

有一個叫慢啟動門限 ssthresh (slow start threshold)狀態變量。

  • cwnd < ssthresh 時,使用慢啟動算法。
  • cwnd >= ssthresh 時,就會使用「擁塞避免算法」。

擁塞避免

當擁塞窗口 cwnd 「超過」慢啟動門限 ssthresh 就會進入擁塞避免算法。

一般來說 ssthresh 的大小是 65535 字節。

那么進入擁塞避免算法后,它的規則是:每當收到一個 ACK 時,cwnd 增加 1/cwnd。

接上前面的慢啟動的栗子,現假定 ssthresh8

  • 當 8 個 ACK 應答確認到來時,每個確認增加 1/8,8 個 ACK 確認 cwnd 一共增加 1,于是這一次能夠發送 9 個 MSS 大小的數據,變成了線性增長。

擁塞避免算法的變化過程如下圖:

f7222e6c-7fa4-11ee-939d-92fbcf53809c.png擁塞避免

所以,我們可以發現,擁塞避免算法就是將原本慢啟動算法的指數增長變成了線性增長,還是增長階段,但是增長速度緩慢了一些。

就這么一直增長著后,網絡就會慢慢進入了擁塞的狀況了,于是就會出現丟包現象,這時就需要對丟失的數據包進行重傳。

當觸發了重傳機制,也就進入了「擁塞發生算法」。

擁塞發生

當網絡出現擁塞,也就是會發生數據包重傳,重傳機制主要有兩種:

  • 超時重傳
  • 快速重傳

當發生了「超時重傳」,則就會使用擁塞發生算法。

這個時候,ssthresh 和 cwnd 的值會發生變化:

  • ssthresh 設為 cwnd/2
  • cwnd 重置為 1 (是恢復為 cwnd 初始化值,我這里假定 cwnd 初始化值 1)

擁塞發生算法的變化如下圖:

f72fa182-7fa4-11ee-939d-92fbcf53809c.png擁塞發送 —— 超時重傳

接著,就重新開始慢啟動,慢啟動是會突然減少數據流的。這真是一旦「超時重傳」,馬上回到解放前。但是這種方式太激進了,反應也很強烈,會造成網絡卡頓。

還有更好的方式,前面我們講過「快速重傳算法」。當接收方發現丟了一個中間包的時候,發送三次前一個包的 ACK,于是發送端就會快速地重傳,不必等待超時再重傳。

TCP 認為這種情況不嚴重,因為大部分沒丟,只丟了一小部分,則 ssthreshcwnd 變化如下:

  • cwnd = cwnd/2 ,也就是設置為原來的一半;
  • ssthresh = cwnd;
  • 進入快速恢復算法

快速恢復

快速重傳和快速恢復算法一般同時使用,快速恢復算法是認為,你還能收到 3 個重復 ACK 說明網絡也不那么糟糕,所以沒有必要像 RTO 超時那么強烈。

正如前面所說,進入快速恢復之前,cwndssthresh 已被更新了:

  • cwnd = cwnd/2 ,也就是設置為原來的一半;
  • ssthresh = cwnd;

然后,進入快速恢復算法如下:

  • 擁塞窗口 cwnd = ssthresh + 3 ( 3 的意思是確認有 3 個數據包被收到了);
  • 重傳丟失的數據包;
  • 如果再收到重復的 ACK,那么 cwnd 增加 1;
  • 如果收到新數據的 ACK 后,把 cwnd 設置為第一步中的 ssthresh 的值,原因是該 ACK 確認了新的數據,說明從 duplicated ACK 時的數據都已收到,該恢復過程已經結束,可以回到恢復之前的狀態了,也即再次進入擁塞避免狀態;

快速恢復算法的變化過程如下圖:

f73e2a0e-7fa4-11ee-939d-92fbcf53809c.png快速重傳和快速恢復

也就是沒有像「超時重傳」一夜回到解放前,而是還在比較高的值,后續呈線性增長。

http/ https 的區別?

  • HTTP 是超文本傳輸協議,信息是明文傳輸,存在安全風險的問題。HTTPS 則解決 HTTP 不安全的缺陷,在 TCP 和 HTTP 網絡層之間加入了 SSL/TLS 安全協議,使得報文能夠加密傳輸。
  • HTTP 連接建立相對簡單, TCP 三次握手之后便可進行 HTTP 的報文傳輸。而 HTTPS 在 TCP 三次握手之后,還需進行 SSL/TLS 的握手過程,才可進入加密報文傳輸。
  • 兩者的默認端口不一樣,HTTP 默認端口號是 80,HTTPS 默認端口號是 443。
  • HTTPS 協議需要向 CA(證書權威機構)申請數字證書,來保證服務器的身份是可信的。

Https四次加密過程?

基于 RSA 算法的 TLS 握手過程比較容易理解,所以這里先用這個給大家展示 TLS 握手過程,如下圖:

f75016c4-7fa4-11ee-939d-92fbcf53809c.jpgHTTPS 連接建立過程

TLS 協議建立的詳細流程:

1. ClientHello

首先,由客戶端向服務器發起加密通信請求,也就是 ClientHello 請求。

在這一步,客戶端主要向服務器發送以下信息:

(1)客戶端支持的 TLS 協議版本,如 TLS 1.2 版本。

(2)客戶端生產的隨機數(Client Random),后面用于生成「會話秘鑰」條件之一。

(3)客戶端支持的密碼套件列表,如 RSA 加密算法。

2. SeverHello

服務器收到客戶端請求后,向客戶端發出響應,也就是 SeverHello。服務器回應的內容有如下內容:

(1)確認 TLS 協議版本,如果瀏覽器不支持,則關閉加密通信。

(2)服務器生產的隨機數(Server Random),也是后面用于生產「會話秘鑰」條件之一。

(3)確認的密碼套件列表,如 RSA 加密算法。

(4)服務器的數字證書。

3.客戶端回應

客戶端收到服務器的回應之后,首先通過瀏覽器或者操作系統中的 CA 公鑰,確認服務器的數字證書的真實性。

如果證書沒有問題,客戶端會從數字證書中取出服務器的公鑰,然后使用它加密報文,向服務器發送如下信息:

(1)一個隨機數(pre-master key)。該隨機數會被服務器公鑰加密。

(2)加密通信算法改變通知,表示隨后的信息都將用「會話秘鑰」加密通信。

(3)客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時把之前所有內容的發生的數據做個摘要,用來供服務端校驗。

上面第一項的隨機數是整個握手階段的第三個隨機數,會發給服務端,所以這個隨機數客戶端和服務端都是一樣的。

服務器和客戶端有了這三個隨機數(Client Random、Server Random、pre-master key),接著就用雙方協商的加密算法,各自生成本次通信的「會話秘鑰」

4. 服務器的最后回應

服務器收到客戶端的第三個隨機數(pre-master key)之后,通過協商的加密算法,計算出本次通信的「會話秘鑰」。

然后,向客戶端發送最后的信息:

(1)加密通信算法改變通知,表示隨后的信息都將用「會話秘鑰」加密通信。

(2)服務器握手結束通知,表示服務器的握手階段已經結束。這一項同時把之前所有內容的發生的數據做個摘要,用來供客戶端校驗。

至此,整個 TLS 的握手階段全部結束。接下來,客戶端與服務器進入加密通信,就完全是使用普通的 HTTP 協議,只不過用「會話秘鑰」加密內容。

get和post的區別?

  • 根據 RFC 規范,GET 的語義是從服務器獲取指定的資源,這個資源可以是靜態的文本、頁面、圖片視頻等。GET 請求的參數位置一般是寫在 URL 中,URL 規定只能支持 ASCII,所以 GET 請求的參數只允許 ASCII 字符 ,而且瀏覽器會對 URL 的長度有限制(HTTP協議本身對 URL長度并沒有做任何規定)。
  • 根據 RFC 規范,POST 的語義是根據請求負荷(報文body)對指定的資源做出處理,具體的處理方式視資源類型而不同。POST 請求攜帶數據的位置一般是寫在報文 body 中,body 中的數據可以是任意格式的數據,只要客戶端與服務端協商好即可,而且瀏覽器不會對 body 大小做限制。

進程線程 有什么區別?

  • 資源占用:每個進程都有獨立的地址空間、文件描述符和其他系統資源,進程之間的資源是相互獨立的,而線程共享所屬進程的地址空間和資源,包括文件描述符、信號處理等。

  • 調度和切換:進程是系統進行調度和分配資源的基本單位,進程之間的切換開銷相對較大。而線程是在進程內部執行的,線程的切換開銷相對較小。

  • 通信和同步:進程之間通信的方式包括管道、消息隊列、共享內存等,進程間通信相對復雜。線程之間共享進程的內存空間,直接讀寫共享數據即可實現通信和同步。

線程有哪些資源,棧中保存什么?

線程在操作系統中有一些特定的資源,包括:

  • 線程控制塊(Thread Control Block,TCB):用于保存線程的狀態信息,如程序計數器(Program Counter,PC)、寄存器值、線程 ID、線程優先級等。

  • 棧(Stack):每個線程都有自己的棧空間,用于保存函數調用的局部變量、函數的返回地址以及其他臨時數據。棧是線程私有的,不同線程之間的棧是相互獨立的。

  • 寄存器(Registers):線程在執行過程中會使用到寄存器,包括通用寄存器(如EAX、EBX等)、程序計數器(PC)等。寄存器保存了線程當前的執行狀態。

  • 共享資源:線程可以共享所屬進程的資源,如打開的文件、信號處理器等。這些資源可以在線程之間共享和訪問。

棧中,主要保存了以下內容:

  • 函數調用的局部變量:當一個函數被調用時,其局部變量會被保存在棧中。這些局部變量在函數執行結束后會被銷毀。

  • 函數的返回地址:當一個函數執行完畢后,需要返回到調用該函數的地址。返回地址會被保存在棧中,以便函數執行完畢后能夠正確返回。

  • 函數調用過程中的臨時數據:在函數執行過程中,可能會需要保存一些臨時數據,如函數的參數、中間計算結果等,這些數據會保存在棧中。

函數調用的時候壓棧怎么樣的

函數調用時,會進行以下壓棧操作:

  • 保存返回地址:在函數調用前,調用指令會將下一條指令的地址(即函數調用后需要繼續執行的地址)壓入棧中,以便函數執行完畢后能夠正確返回到調用點。

  • 保存調用者的棧幀指針:在函數調用前,調用指令會將當前棧幀指針(即調用者的棧指針)壓入棧中,以便函數執行完畢后能夠恢復到調用者的執行狀態。

  • 傳遞參數:函數調用時,會將參數值依次壓入棧中,這些參數值在函數內部可以通過棧來訪問。

  • 分配局部變量空間:函數調用時,會為局部變量分配空間,這些局部變量會被保存在棧中。棧指針會相應地移動以適應新的局部變量空間。

靜態鏈接庫和動態鏈接庫有什么區別?

  • 鏈接方式:靜態鏈接庫在編譯鏈接時會被完整地復制到可執行文件中,成為可執行文件的一部分;而動態鏈接庫在編譯鏈接時只會在可執行文件中包含對庫的引用,實際的庫文件在運行時由操作系統動態加載。
  • 文件大小:靜態鏈接庫會使得可執行文件的大小增加,因為庫的代碼被完整地復制到可執行文件中;而動態鏈接庫不會增加可執行文件的大小,因為庫的代碼在運行時才會被加載。
  • 內存占用:靜態鏈接庫在運行時會被完整地加載到內存中,占用固定的內存空間;而動態鏈接庫在運行時才會被加載,可以在多個進程之間共享,減少內存占用。
  • 可擴展性:動態鏈接庫的可擴展性更好,可以在不修改可執行文件的情況下替換或添加新的庫文件,而靜態鏈接庫需要重新編譯鏈接。

動態鏈接庫怎么裝載到內存的?

通過用mmap把該庫直接映射到各個進程的地址空間中,盡管每個進程都認為自己地址空間中加載了該庫,但實際上該庫在內存中只有一份,mmap就這樣很神奇和動態鏈接庫聯動起來了。

f760384c-7fa4-11ee-939d-92fbcf53809c.pngimg

虛擬內存介紹一下

  • 第一,虛擬內存可以使得進程對運行內存超過物理內存大小,因為程序運行符合局部性原理,CPU 訪問內存會有很明顯的重復訪問的傾向性,對于那些沒有被經常使用到的內存,我們可以把它換出到物理內存之外,比如硬盤上的 swap 區域。
  • 第二,由于每個進程都有自己的頁表,所以每個進程的虛擬內存空間就是相互獨立的。進程也沒有辦法訪問其他進程的頁表,所以這些頁表是私有的,這就解決了多進程之間地址沖突的問題。
  • 第三,頁表里的頁表項中除了物理地址之外,還有一些標記屬性的比特,比如控制一個頁的讀寫權限,標記該頁是否存在等。在內存訪問方面,操作系統提供了更好的安全性。

中斷是什么

在操作系統中,中斷是指由硬件或軟件觸發的一種事件,它會暫時中止當前正在執行的程序,并轉而執行與中斷相關的處理程序。中斷可以是內部的,如除法錯誤或越界訪問,也可以是外部的,如硬件設備的輸入/輸出請求或時鐘中斷。

中斷的作用是提供一種機制來處理和響應各種事件,例如處理硬件設備的輸入/輸出請求、處理異常情況、進行時鐘調度等。當發生中斷時,操作系統會根據中斷類型確定要執行的中斷處理程序,并在處理完中斷后恢復原來的程序執行。

中斷處理程序可以執行一系列操作,如保存當前進程的上下文、處理中斷事件、與設備進行通信、調度其他進程等。通過使用中斷,操作系統可以實現多任務處理、實時響應外部事件、提高系統的可靠性和穩定性。

操作系統的鎖,自己實現一個讀寫鎖

讀者只會讀取數據,不會修改數據,而寫者即可以讀也可以修改數據。

讀者-寫者的問題描述:

  • 「讀-讀」允許:同一時刻,允許多個讀者同時讀
  • 「讀-寫」互斥:沒有寫者時讀者才能讀,沒有讀者時寫者才能寫
  • 「寫-寫」互斥:沒有其他寫者時,寫者才能寫

接下來,提出幾個解決方案來分析分析。

方案一

使用信號量的方式來嘗試解決:

  • 信號量 wMutex:控制寫操作的互斥信號量,初始值為 1 ;
  • 讀者計數 rCount:正在進行讀操作的讀者個數,初始化為 0;
  • 信號量 rCountMutex:控制對 rCount 讀者計數器的互斥修改,初始值為 1;

接下來看看代碼的實現:

f76bc112-7fa4-11ee-939d-92fbcf53809c.pngimg

上面的這種實現,是讀者優先的策略,因為只要有讀者正在讀的狀態,后來的讀者都可以直接進入,如果讀者持續不斷進入,則寫者會處于饑餓狀態。

方案二

那既然有讀者優先策略,自然也有寫者優先策略:

  • 只要有寫者準備要寫入,寫者應盡快執行寫操作,后來的讀者就必須阻塞;
  • 如果有寫者持續不斷寫入,則讀者就處于饑餓;

在方案一的基礎上新增如下變量:

  • 信號量 rMutex:控制讀者進入的互斥信號量,初始值為 1;
  • 信號量 wDataMutex:控制寫者寫操作的互斥信號量,初始值為 1;
  • 寫者計數 wCount:記錄寫者數量,初始值為 0;
  • 信號量 wCountMutex:控制 wCount 互斥修改,初始值為 1;

具體實現如下代碼:

f77beccc-7fa4-11ee-939d-92fbcf53809c.pngimg

注意,這里 rMutex 的作用,開始有多個讀者讀數據,它們全部進入讀者隊列,此時來了一個寫者,執行了 P(rMutex) 之后,后續的讀者由于阻塞在 rMutex 上,都不能再進入讀者隊列,而寫者到來,則可以全部進入寫者隊列,因此保證了寫者優先。

同時,第一個寫者執行了 P(rMutex) 之后,也不能馬上開始寫,必須等到所有進入讀者隊列的讀者都執行完讀操作,通過 V(wDataMutex) 喚醒寫者的寫操作。

方案三

既然讀者優先策略和寫者優先策略都會造成饑餓的現象,那么我們就來實現一下公平策略。

公平策略:

  • 優先級相同;
  • 寫者、讀者互斥訪問;
  • 只能一個寫者訪問臨界區;
  • 可以有多個讀者同時訪問臨界資源;

具體代碼實現:

f790780e-7fa4-11ee-939d-92fbcf53809c.pngimg

看完代碼不知你是否有這樣的疑問,為什么加了一個信號量 flag,就實現了公平競爭?

對比方案一的讀者優先策略,可以發現,讀者優先中只要后續有讀者到達,讀者就可以進入讀者隊列, 而寫者必須等待,直到沒有讀者到達。

沒有讀者到達會導致讀者隊列為空,即 rCount==0,此時寫者才可以進入臨界區執行寫操作。

而這里 flag 的作用就是阻止讀者的這種特殊權限(特殊權限是只要讀者到達,就可以進入讀者隊列)。

比如:開始來了一些讀者讀數據,它們全部進入讀者隊列,此時來了一個寫者,執行 P(falg) 操作,使得后續到來的讀者都阻塞在 flag 上,不能進入讀者隊列,這會使得讀者隊列逐漸為空,即 rCount 減為 0。

這個寫者也不能立馬開始寫(因為此時讀者隊列不為空),會阻塞在信號量 wDataMutex 上,讀者隊列中的讀者全部讀取結束后,最后一個讀者進程執行 V(wDataMutex),喚醒剛才的寫者,寫者則繼續開始進行寫操作。

算法題

  • 二叉樹層序遍歷 構建一個二叉樹測試

快手二面

指針和引用值傳遞的概念

  • 值傳遞是指將參數的值復制一份,傳遞給函數或方法進行操作。在值傳遞中,函數或方法對參數進行修改不會影響到原始的變量值。
  • 指針引用是指將參數的內存地址傳遞給函數或方法,使得函數或方法可以直接訪問和修改原始變量的值。在指針引用中,函數或方法對參數的修改會直接反映在原始變量上。

int double string強制轉化為什么會精度丟失?

  • 整數到浮點數:整數類型是精確表示的,而浮點數類型則是近似表示的,具有固定的有效位數。當將整數轉換為浮點數時,可能會導致精度丟失,因為浮點數無法精確地表示整數的所有位數。

  • 浮點數到整數:浮點數類型具有小數部分和指數部分,而整數類型只能表示整數值。當將浮點數轉換為整數時,小數部分將被丟棄,可能導致精度丟失。

  • 字符串到數值類型:字符串表示的是文本形式的數據,而數值類型表示的是數值形式的數據。當將字符串轉換為數值類型時,如果字符串無法解析為有效的數值,或者字符串表示的數值超出了目標類型的范圍,就會導致精度丟失或產生錯誤的結果。

void*是什么?

void*是一種通用的指針類型,被稱為"無類型指針"。它可以用來表示指向任何類型的指針,因為void*指針沒有指定特定的數據類型。

由于void*是無類型的,它不能直接進行解引用操作,也不能進行指針運算。在使用void*指針時,需要將其轉換為具體的指針類型才能進行操作。

void*指針常用于需要在不同類型之間進行通用操作的情況,例如在函數中傳遞任意類型的指針參數或在動態內存分配中使用。

malloc的參數列表 void*怎么轉化為int*的?

可以使用類型轉換將void*指針轉化為int*指針。以下是將void*指針轉化為int*指針的示例代碼:

void*voidPtr=malloc(sizeof(int));//分配內存并返回void*指針
int*intPtr=(int*)voidPtr;//將void*指針轉化為int*指針

//現在可以通過intPtr指針訪問int類型的數據
*intPtr=42;

在上述示例中,使用malloc函數分配了存儲一個int類型數據所需的內存,并返回了一個void*指針。然后,通過將void*指針轉換為int*指針,將其賦值給intPtr變量。現在,可以通過intPtr指針訪問和操作int類型的數據。

算法題

  • 從一個數組中找出滿足比左側都要大比右側都要小的數

快手三面

  • n個線程按照順序打印編號

  • 設計一個貪吃蛇小游戲,蛇的數據結構和蛇體更新和碰撞檢測

三面一個八股沒問,直接來兩個場景代碼題,比較注重實操,太難啦。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++
    C++
    +關注

    關注

    22

    文章

    2108

    瀏覽量

    73651
  • 數據包
    +關注

    關注

    0

    文章

    261

    瀏覽量

    24394
  • 后端
    +關注

    關注

    0

    文章

    31

    瀏覽量

    2237

原文標題:后端有點卷?沖客戶端去了!

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    IR915作為OpenVPN服務器實現客戶端子網互聯的過程

    openvpn server 子網地址的連通性. 7.配置IR615連接openvpn . 8.查看openvpn連接狀態 9.測試IR615后端子網到其它子網的連通性. 9.1測試到openvpn server 后端子網連通性 9.2測試到 IR9
    發表于 07-25 08:10

    STM32+以太網ENC28J60作為客戶端

    現在很多的例程都是把STM32+ENC28J60作為服務器,而不是作為客戶端,沒有一點意義,如何能讓它作為客戶端去連接服務器呢?不知道哪有大神搞過,小弟搞了幾天了,暫時沒有滲透{:4:}
    發表于 08-06 10:14

    一個服務器,多個客戶端,怎么向指定的客戶端發數據

    我用labview做服務器,單片機做客戶端客戶端幾百個,怎么區分客戶端,給指定的客戶發發數據
    發表于 06-01 09:26

    如何解決lwip的netconn客戶端發送問題

    助手顯示發送接收數據個數都對2,在板子的客戶端去掉接收函數,在任務中10ms一次,調用netconn_write,發送一字節,只能發送成功一次,但是設置150ms發送一次就每次都成功,現象1說明,發送接收的底層應該都是很及時的,現象2就搞不清楚為什么太快就發不出去了誰知道
    發表于 07-15 04:36

    stm32f107vc lwip tcp客戶端

    stm32f107vc lwip tcp客戶端 服務器數據傳輸第一篇TCP客戶端模式簡單數據收發 ----控制開發板LED燈概要建立LWIP客戶端模式,科星F107開發板做為客戶端去
    發表于 08-06 09:17

    實時性計算能力帶寬內存客戶端需要計算什么

    傳輸到后端?什么東西需要放到后端去計算?后端需要傳輸多少數據才能在客戶端做可視化?準確性?效率?用多少內存和算力?實時性?計算平臺CPUGPUDSPAI芯片相關崗位相關公司...
    發表于 12-23 07:22

    通訊貓MQTT服務器在線客戶端的問題

    我在網上找一個通訊貓MQTT服務器在線客戶端。我有點糊涂,到底是服務器,還是客戶端。可以連上,也可以發數據,就是不知道跟誰連。我從上面下了個WIN32客戶端,打開,怎么設置都連不上。用
    發表于 11-19 12:17

    CoolpyCould客戶端

    一款開源的物聯網服務器平臺,利用nodejs寫成,此文件是CoolpyCould客戶端
    發表于 11-06 17:00 ?18次下載

    CSDN博客客戶端源碼

    CSDN博客客戶端源碼CSDN博客客戶端源碼CSDN博客客戶端源碼
    發表于 11-18 10:22 ?1次下載

    iOS端淘寶客戶端應用名稱發生變化 Android客戶端應用名稱尚未更改

    iOS端淘寶客戶端應用名稱發生變化 Android客戶端應用名稱尚未更改
    發表于 04-18 15:37 ?935次閱讀

    HTTP客戶端快速入門指南

    HTTP客戶端快速入門指南
    發表于 01-12 18:45 ?0次下載
    HTTP<b class='flag-5'>客戶端</b>快速入門指南

    HTTP客戶端快速入門指南

    HTTP客戶端快速入門指南
    發表于 07-03 18:38 ?0次下載
    HTTP<b class='flag-5'>客戶端</b>快速入門指南

    MQTT中服務端和客戶端

    MQTT 是一種基于客戶端-服務端架構(C/S)的消息傳輸協議,所以在 MQTT 協議通信中,有兩個最為重要的角色,它們便是服務端和客戶端。 1)服務端 MQTT 服務端通常是一臺
    的頭像 發表于 07-30 14:55 ?2652次閱讀

    ROS是如何設計的 ROS客戶端

    實現通信的代碼在ros_comm包中,如下。 其中clients文件夾一共有127個文件,看來是最大的包了。 現在我們來到了ROS最核心的地帶。 客戶端這個名詞出現的有些突然,一個機器人操作系統里
    的頭像 發表于 09-14 17:29 ?869次閱讀
    ROS是如何設計的 ROS<b class='flag-5'>客戶端</b>庫

    后端測開去了

    持有并等待條件是指,當線程 A 已經持有了資源 1,又想申請資源 2,而資源 2 已經被線程 C 持有了,所以線程 A 就會處于等待狀態,但是線程 A 在等待資源 2 的同時并不會釋放自己已經持有的資源 1。
    的頭像 發表于 09-25 17:00 ?356次閱讀
    <b class='flag-5'>后端</b>太<b class='flag-5'>卷</b>?<b class='flag-5'>沖</b>測開<b class='flag-5'>去了</b>!
    主站蜘蛛池模板: 一级做a爰片久久毛片一| 一级片视频在线| 四虎最新地址| 黄色aaaa| 天堂资源地址在线| 亚洲一二三四区| 三级理论在线观看| a级毛片免费网站| 午夜看黄| 四虎在线观看一区二区| 国产高清成人| 2019国产情侣| 扒开双腿疯狂进出爽爽爽| 九九99久久精品影视| 最新理论三级中文在线观看| 就要爱综合| 美女网战色| 一级特黄特黄的大片免费| 黄频网站免费大全在线观看| 理论片亚洲| 亚洲国产成人在线| 国产高清一区二区三区| 欧美一区二区三区男人的天堂| 四虎影院免费网址| 午夜一区二区三区| 特黄特a级特别特级特毛片| 男女做视频网站免费观看| 日本黄页网| 亚洲人成电影在线观看网| 第四色视频| 亚洲视频一区二区三区| 男女爱爱爽爽福利免费视频| 男人天堂资源网| 午夜欧美电影| 午夜视频免费看| 男女免费观看视频| 国产色女人| 最新亚洲一区二区三区四区| 欧美日韩你懂的| chinesevideo普通话对白| 色偷偷.com|