終于有人把tcp、http、rpc和grpc總結完整了

隨著微服務的迅速發展,各大互聯網企業也投入到微服務的?使用種。微服務最大的特點是,跨進程、跨服務、跨語言之間的調用,使得我們能夠像調用本地類、函數一樣。當微服務具備該特點,將我們復雜的業務拆分成不同的服務,?服務之間在相互調用。這也是微服務為什么火的原因之一。
要使用好微服務,不僅僅是對業務的拆分能力要求高,同時對服務之間的通信也要求高,今天就來給大家總結幾種常用的通信協議,它們分別是什么、有什么優缺點以及各種協議之間的對比。

前面一篇文章對微服務的架構,做了一個簡單的介紹,這一篇就來針對各種常用的通訊協議做一個匯總。一篇文章快速理解微服務架構

什么是tcp

TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層協議。TCP協議具有以下特點:

  1. 面向連接:TCP協議在數據傳輸之前需要建立連接,數據傳輸完成后需要釋放連接,保證了數據傳輸的可靠性和完整性。

  2. 可靠性高:TCP協議采用確認機制、序列號和校驗和等技術,可以保證數據傳輸的可靠性和完整性。

  3. 擁塞控制:TCP協議采用擁塞控制算法,可以避免網絡擁塞和丟包等問題,保證了數據傳輸的穩定性和公平性。

  4. 全雙工通信:TCP協議支持全雙工通信,即客戶端和服務器端都可以同時發送和接收數據,實現了雙向通信。

  5. 高效性:TCP協議采用滑動窗口機制和分段傳輸技術,可以提高數據傳輸的效率和性能。

  6. 支持多種應用協議:TCP協議可以支持多種應用層協議,例如HTTP、FTP、SMTP等。

  7. 可靠的錯誤恢復:TCP協議可以對丟失、重復、損壞和超時等錯誤進行恢復和處理,保證了數據傳輸的可靠性和完整性。

TCP協議的數據傳輸過程如下:

  1. 客戶端向服務器端發送SYN(同步)請求,請求建立連接。

  2. 服務器端收到SYN請求后,向客戶端發送SYN+ACK(同步和確認)應答,表示可以建立連接。

  3. 客戶端收到SYN+ACK應答后,向服務器端發送ACK(確認)應答,表示連接已經建立成功。

  4. 數據傳輸完成后,客戶端和服務器端分別發送FIN(結束)請求,請求釋放連接。

  5. 收到FIN請求后,另一方發送ACK應答,表示已經收到了結束請求。

  6. 雙方都收到了對方的ACK應答后,即完成了連接的釋放。

TCP協議具有面向連接、可靠性高、擁塞控制、全雙工通信、高效性、支持多種應用協議等特點,是一種非常重要的傳輸層協議。

tcp的優缺點

tcp的優點

TCP(Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層協議,具有以下優點:

  1. 可靠性高:TCP采用確認機制、序列號和校驗和等技術,可以保證數據傳輸的可靠性和完整性。

  2. 擁塞控制:TCP采用擁塞控制算法,可以避免網絡擁塞和丟包等問題,保證了數據傳輸的穩定性和公平性。

  3. 全雙工通信:TCP支持全雙工通信,即客戶端和服務器端都可以同時發送和接收數據,實現了雙向通信。

  4. 高效性:TCP采用滑動窗口機制和分段傳輸技術,可以提高數據傳輸的效率和性能。

  5. 支持多種應用協議:TCP可以支持多種應用層協議,例如HTTP、FTP、SMTP等。

  6. 可靠的錯誤恢復:TCP可以對丟失、重復、損壞和超時等錯誤進行恢復和處理,保證了數據傳輸的可靠性和完整性。

  7. 可靠的順序傳輸:TCP可以保證數據按照發送的順序進行傳輸,避免了數據亂序的問題。

  8. 適用于長連接:TCP適用于長連接,可以減少建立和釋放連接的開銷,提高了網絡傳輸的效率和性能。

TCP具有可靠性高、擁塞控制、全雙工通信、高效性、支持多種應用協議等優點,是一種非常重要的傳輸層協議。

tcp的缺點

TCP(Transmission Control Protocol)雖然具有很多優點,但仍存在以下缺點:

  1. 較為復雜:TCP協議的實現較為復雜,需要考慮到各種網絡環境和異常情況,對于開發人員而言學習成本較高。

  2. 傳輸效率相對較低:TCP采用確認機制、序列號等技術,保證了數據傳輸的可靠性和完整性,但也使得數據傳輸效率相對較低。

  3. 不適用于短連接:TCP適用于長連接,對于短連接的支持不夠友好,會增加建立和釋放連接的開銷。

  4. 不適用于實時性要求高的場景:由于TCP采用確認機制和重傳機制,無法保證數據的實時性,不適用于實時性要求較高的場景。

  5. 不適用于高負載場景:當網絡負載較大時,TCP采用擁塞控制算法可能會導致傳輸速度下降,影響了數據傳輸的效率和性能。

  6. 無法支持廣播和多播:TCP協議無法支持廣播和多播,只能進行點對點的數據傳輸。

TCP雖然具有很多優點,但仍存在一些缺點,例如傳輸效率相對較低、不適用于短連接等。在選擇協議時,需要根據具體的需求和場景進行綜合考慮。

什么是rcp

RPC是遠程過程調用(Remote Procedure Call)的縮寫。它是一種計算機通信協議,使得程序可以請求另一個進程或者計算機上的服務,就像調用本地的函數一樣,從而實現分布式系統之間的交互和通訊。RPC可以大大簡化分布式系統的開發,提高系統的可維護性和可擴展性。

rpc的優缺點

rpc的優點

RPC具有以下優勢:

  1. 抽象屏蔽:RPC框架可以屏蔽底層的網絡通信細節,使得遠程調用就像本地調用一樣簡單。

  2. 可擴展性:RPC框架可以支持多種協議和編碼方式,可以適應不同場景的需求,同時也可以方便地添加新的功能和服務。

  3. 可靠性:RPC框架通常會提供各種機制來保證通信的可靠性,如超時重試、錯誤處理等。

  4. 高效性:RPC框架通常使用二進制協議和高效的序列化方式,可以大大減少網絡傳輸的數據量,提高系統的性能。

  5. 語言無關性:RPC框架可以支持多種編程語言,使得不同語言的程序可以方便地進行交互和通訊。

rpc的缺點

RPC也有以下缺點:

  1. 依賴網絡:RPC需要通過網絡進行通信,因此對網絡的穩定性和延遲要求比較高。

  2. 難以調試:由于RPC是跨進程或者跨計算機的調用,因此調試起來比較困難,需要使用一些特殊的工具和技術。

  3. 數據格式限制:RPC框架通常會限制數據的格式和大小,如果需要傳輸大量的數據或者復雜的數據結構,可能會導致性能問題。

  4. 安全性問題:RPC通常不會提供加密和認證等安全機制,需要在應用層進行處理,否則容易受到攻擊。

  5. 可靠性問題:RPC框架雖然提供了一些機制來保證通信的可靠性,但仍然可能出現通信失敗、丟失消息等情況,需要應用程序自己處理。

什么是grpc

gRPC是Google開源的一種高性能、通用的遠程過程調用(RPC)框架,基于Protocol Buffers序列化協議進行數據傳輸。與其他RPC框架相比,gRPC具有以下優勢:

  1. 高性能:gRPC采用基于HTTP/2的二進制傳輸協議,可以實現雙向流、頭部壓縮和多路復用等特性,提高了網絡傳輸的效率和性能。

  2. 多語言支持:gRPC支持多種編程語言,包括C++、Java、Python、Go、Ruby等,可以方便地構建跨語言的分布式系統。

  3. 自動生成代碼:gRPC可以根據服務定義文件自動生成客戶端和服務器端的代碼,大大簡化了開發過程。

  4. 可擴展性:gRPC支持多種負載均衡算法和服務發現機制,可以適應不同場景的需求。

  5. 安全性:gRPC支持TLS加密和認證等安全機制,保障通信的安全性。

  6. 易于使用和維護:gRPC提供了豐富的文檔和工具鏈,使得開發和維護分布式系統變得更加容易。

grpc的優缺點

grpc的優點

gRPC是一種高性能、通用的遠程過程調用(RPC)框架,具有以下優點:

  1. 高性能:gRPC采用基于HTTP/2的二進制傳輸協議,可以實現雙向流、頭部壓縮和多路復用等特性,提高了網絡傳輸的效率和性能。

  2. 多語言支持:gRPC支持多種編程語言,包括C++、Java、Python、Go、Ruby等,可以方便地構建跨語言的分布式系統。

  3. 自動生成代碼:gRPC可以根據服務定義文件自動生成客戶端和服務器端的代碼,大大簡化了開發過程。

  4. 可擴展性:gRPC支持多種負載均衡算法和服務發現機制,可以適應不同場景的需求。

  5. 安全性:gRPC支持TLS加密和認證等安全機制,保障通信的安全性。

  6. 易于使用和維護:gRPC提供了豐富的文檔和工具鏈,使得開發和維護分布式系統變得更加容易。

  7. 支持多種序列化協議:gRPC支持多種序列化協議,包括Google開發的Protocol Buffers序列化協議和JSON等,可以根據實際需求選擇最適合的序列化方式。

  8. 支持流式數據傳輸:gRPC支持雙向流、客戶端流和服務器端流等多種流式數據傳輸方式,可以滿足不同的業務需求。

gRPC具有高性能、多語言支持、自動生成代碼、可擴展性、安全性、易于使用和維護等優點,是一種非常適合構建分布式系統的RPC框架。

grpc的缺點

雖然gRPC是一種非常優秀的RPC框架,但仍存在以下缺點:

  1. 學習曲線較陡峭:相比于傳統的RESTful API,gRPC需要使用IDL文件來定義服務和消息類型,并且需要生成客戶端和服務器端的代碼,需要掌握這些新的概念和技術。

  2. 不支持RESTful API:gRPC不支持基于HTTP的RESTful API,無法與現有的RESTful API進行兼容和集成。

  3. 不支持瀏覽器端:gRPC目前不支持Web瀏覽器端,因為瀏覽器不支持HTTP/2協議。

  4. 依賴Protocol Buffers:gRPC默認使用Google開發的Protocol Buffers序列化協議,如果需要使用其他的序列化協議,則需要自行實現。

  5. 難以調試:由于gRPC采用二進制協議,數據的傳輸和解析都是以二進制形式進行的,對于調試和排錯帶來了一定的困難。

  6. 安全性依賴于TLS:雖然gRPC支持TLS加密和認證等安全機制,但這些機制都依賴于TLS協議,如果TLS協議本身存在漏洞或被攻擊,則會影響gRPC的安全性。

gRPC雖然具有很多優點,但仍存在一些缺點,例如學習曲線較陡峭、不支持RESTful API等。在選擇RPC框架時,需要根據具體的需求和場景進行綜合考慮。

什么是http

HTTP協議是一種基于請求-響應模式的應用層協議,用于在Web瀏覽器和Web服務器之間傳遞數據。它是一種無狀態的協議,每個請求和響應都是獨立的,沒有任何關聯性。

HTTP通常使用TCP作為傳輸層協議,使用端口號80進行通信。HTTP協議定義了客戶端和服務器之間交換的消息格式和規則,包括請求方法、請求頭部、請求正文、響應狀態碼、響應頭部和響應正文等。

HTTP請求由三部分組成:請求行、請求頭部和請求正文。其中,請求行包括請求方法、URL和HTTP版本號;請求頭部包括請求的附加信息,如Cookie、User-Agent等;請求正文包括請求的數據內容,如表單數據、JSON數據等。

HTTP響應由三部分組成:狀態行、響應頭部和響應正文。其中,狀態行包括HTTP版本號、狀態碼和狀態描述;響應頭部包括響應的附加信息,如Content-Type、Content-Length等;響應正文包括響應的數據內容,如HTML頁面、圖片等。

HTTP協議具有以下特點:

  1. 簡單易用:HTTP協議的消息格式簡單明了,易于理解和使用。

  2. 無狀態:HTTP協議是一種無狀態協議,每個請求和響應都是獨立的,沒有任何關聯性。

  3. 可擴展性:HTTP協議支持多種請求方法和響應狀態碼,并且可以使用擴展頭部來傳遞附加信息。

  4. 易于緩存:HTTP協議支持緩存機制,可以減少網絡傳輸的數據量,提高系統的性能。

  5. 安全性較低:HTTP協議通常不提供加密和認證等安全機制,容易受到中間人攻擊和竊聽。

http的優缺點

http的優點

HTTP(超文本傳輸協議)是一種應用層協議,常被用于Web瀏覽器和Web服務器之間的通信。HTTP具有以下優點:

  1. 簡單易用:HTTP采用文本協議和請求-響應模型,消息格式簡單、易于理解和使用。

  2. 易于擴展:HTTP支持插件和擴展機制,可以根據需求添加新的功能和特性。

  3. 可靠性高:HTTP采用TCP協議進行數據傳輸,保證了數據的可靠性和完整性。

  4. 良好的兼容性:HTTP是互聯網上最常用的協議之一,幾乎所有的瀏覽器和服務器都支持HTTP協議,具有良好的兼容性。

  5. 支持緩存機制:HTTP支持緩存機制,可以提高網絡傳輸的效率和性能。

  6. 安全性高:HTTP支持SSL/TLS加密和認證等安全機制,保證了數據的安全性和隱私性。

  7. 支持多種媒體類型:HTTP支持多種媒體類型,例如HTML、XML、JSON等,可以滿足不同的業務需求。

綜上所述,HTTP具有簡單易用、易于擴展、可靠性高、良好的兼容性、支持緩存機制、安全性高、支持多種媒體類型等優點。這些特性使得HTTP成為了Web應用程序開發中不可或缺的協議之一。

http的缺點

HTTP(超文本傳輸協議)雖然具有很多優點,但仍存在以下缺點:

  1. 傳輸效率較低:HTTP采用明文傳輸,消息格式較為冗長,數據傳輸效率相對較低。

  2. 安全性較低:HTTP采用明文傳輸,數據在傳輸過程中容易被竊聽和篡改,安全性較低。

  3. 不支持雙向通信:HTTP采用請求-響應模式,不支持服務器主動向客戶端發送消息,無法實現雙向通信。

  4. 不支持流式數據傳輸:HTTP采用短連接方式,每次請求都需要建立一次TCP連接,無法實現流式數據傳輸。

  5. 無狀態協議:HTTP是一種無狀態協議,服務器不能保存客戶端的狀態信息,每次請求都需要重新驗證身份和權限等信息。

  6. 不支持服務發現:HTTP沒有內置的服務發現機制,需要通過第三方工具或平臺來實現服務發現。

  7. RESTful API限制:RESTful API是基于HTTP協議的一種API設計風格,但由于HTTP協議本身的限制,RESTful API無法完全滿足所有場景的需求。

協議對比

rpc、grpc和http對比

RPC、gRPC、TCP和HTTP是常見的網絡通信協議,它們之間具有以下相同點和不同點,以及各自的優劣勢。

  1. 相同點:

(1)都是應用層協議,用于在不同的進程或計算機之間進行數據傳輸和通信。

(2)都支持客戶端和服務器端的通信模式,可以實現分布式系統的構建。

(3)都需要使用特定的消息格式和規則來進行數據的傳輸和解析。

  1. 不同點:

(1)RPC和gRPC是遠程過程調用框架,主要用于在不同的進程或計算機之間進行函數調用和數據交換。而TCP和HTTP是基礎協議,主要用于數據傳輸和通信。

(2)RPC和gRPC通常采用二進制協議和高效的序列化方式,可以大大減少網絡傳輸的數據量,提高系統的性能。而TCP和HTTP通常采用文本協議和基于ASCII碼的編碼方式,數據傳輸效率較低。

(3)RPC和gRPC通常需要使用專門的IDL文件來定義服務和消息類型,并且需要生成客戶端和服務器端的代碼。而TCP和HTTP沒有這個限制,可以直接使用套接字進行通信。

(4)RPC和gRPC通常需要使用底層的網絡庫進行封裝和實現,例如Netty、Thrift等。而TCP和HTTP通常已經被操作系統封裝好,可以直接使用。

  1. 優劣勢:

(1)RPC的優勢在于性能高、可擴展性強、支持多種編程語言、易于維護和開發等。缺點在于安全性較低、調試困難等。

(2)gRPC的優勢在于性能高、支持多種編程語言、自動生成代碼等。缺點在于學習曲線較陡峭、不支持RESTful API等。

(3)TCP的優勢在于可靠傳輸、支持流式數據傳輸、使用廣泛等。缺點在于傳輸效率較低、需要手動處理分包和粘包等問題。

(4)HTTP的優勢在于簡單易用、良好的兼容性、支持緩存機制等。缺點在于傳輸效率較低、不支持雙向流式數據傳輸、安全性較低等。

綜上所述,這幾種協議各有優劣勢,應根據具體的需求來選擇合適的協議。例如,如果需要高性能、支持多種語言、易于維護和開發,可以選擇RPC或gRPC;如果需要可靠傳輸、支持流式數據傳輸,可以選擇TCP;如果需要簡單易用、良好的兼容性、支持緩存機制,可以選擇HTTP。

grpc和rpc的對比

gRPC和傳統的RPC框架之間有以下區別:

  1. 通信協議不同:gRPC基于HTTP/2協議進行數據傳輸,而傳統的RPC框架通常使用TCP或UDP等傳輸層協議。

  2. 序列化方式不同:gRPC使用Protocol Buffers作為默認的序列化協議,而傳統的RPC框架則使用JSON、XML等格式。

  3. 支持多種語言:gRPC支持多種編程語言,包括C++、Java、Python、Go、Ruby等,而傳統的RPC框架通常只支持少數幾種語言。

  4. 高性能:由于采用了HTTP/2協議和Protocol Buffers序列化協議,gRPC具有更高的性能和效率。

  5. 自動生成代碼:gRPC可以根據服務定義文件自動生成客戶端和服務器端的代碼,大大簡化了開發過程。

  6. 安全性:gRPC提供了TLS加密和認證等安全機制,保障通信的安全性。

http與tcp的對比

TCP(Transmission Control Protocol)協議和HTTP(Hypertext Transfer Protocol)協議都是互聯網中的重要協議,但兩者之間存在以下區別:

  1. 位置不同:TCP協議位于傳輸層,負責數據的傳輸;而HTTP協議位于應用層,負責客戶端和服務器之間的通信。

  2. 目的不同:TCP協議的主要目的是保證數據傳輸的可靠性和完整性;而HTTP協議的主要目的是實現Web瀏覽器和Web服務器之間的通信。

  3. 連接方式不同:TCP協議采用面向連接的方式進行數據傳輸,需要先建立連接然后再進行數據傳輸;而HTTP協議采用無狀態的方式進行數據傳輸,每次請求和響應都是獨立的,沒有長期的連接。

  4. 數據格式不同:TCP協議只負責數據的傳輸,對數據的內容和格式沒有限制;而HTTP協議規定了數據的格式和內容,例如請求頭、響應頭、消息體等。

  5. 端口號不同:TCP協議使用端口號來標識不同的進程或應用程序;而HTTP協議默認使用80端口號進行數據傳輸。

  6. 應用場景不同:TCP協議適用于各種數據傳輸場景,例如文件傳輸、郵件傳輸等;而HTTP協議適用于Web瀏覽器和Web服務器之間的通信,主要用于實現Web頁面的訪問和數據交互。

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

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

相關文章

CentOS7安裝Docker,DockerCompose

安裝docker 1、卸載docker 查看是否有舊版本docker docker info首先檢測我們虛擬機是否已經安裝過Docker,如果安裝則需卸載。代碼中“\”符號為換行符,相當于一行內容分為多行,這是檢測docker的各種組件 yum remove docker \docker-clien…

VGG模型

概念: CNN感受野 在卷積神經網絡中,決定某一層輸出結果中的一個元素所對應的輸入層的區域大小,被稱作感受野(receptive field)。通俗的解釋是,輸出feature map上的一個單元對應輸入層上的區域大小。 VGG…

協同過濾算法springboot+java+ssm高校圖書館圖書借閱管理系統k32vr

課題主要分為四大模塊:即管理員模塊,員工模塊,教師模塊和學生模塊,主要功能包括:首頁,個人中心,員工管理,學生管理,教師管理,圖書分類管理,圖書信…

wsl2 ubuntu上搭建OpenIM

文檔 踩坑 版本要選擇好,不要直接main來跑,目前版本OpenIMServer 有release-v3.3和release-v3.4,對應Chat版本的release-v1.4和release-v1.4。但我跑3.4是有問題的,切到3.3可以跑通。export OPENIM_IP"http://ip:10002"…

HNU計算機結構體系-實驗2:CPU動態指令調度Tomasulo

文章目錄 實驗2 CPU動態指令調度Tomasulo一、實驗目的二、實驗說明三、實驗內容問題1:問題2:問題3:問題4:問題5: 四、思考題問題1:問題2: 五、實驗總結 實驗2 CPU動態指令調度Tomasulo 一、實驗…

【數據挖掘】國科大蘇桂平老師數據庫新技術課程作業 —— 第三次作業

part 1 設計一個學籍管理小系統。系統包含以下信息: 學號、學生姓名、性別、出生日、學生所在系名、學生所在系號、課程名、課程號、課程類型(必修、選修、任選)、學分、任課教師姓名、教師編號、教師職稱、教師所屬系名、系號、學生所選課…

汽車網絡安全--ISO\SAE 21434解析(一)

目錄 1.標準總覽 2.示例分析 2015年美國黑帽大會,知名網絡安全專家Charlie Miller和Chris Valasek詳細描述了他們是如何在有限距離下通過WiFI入侵到Jeep大切諾基的中控系統,從此關于汽車網絡安全的討論拉開了序幕。 2016 年,ISO 道路車輛技術委員會與 SAE 聯合成立 SC32/…

【算法每日一練]-結構優化(保姆級教程 篇5 樹狀數組)POJ3067日本 #POJ3321蘋果樹 #POJ2352星星

目錄 今天知識點 求交點轉化求逆序對,每次操作都維護一個y點的前綴和 樹的變動轉化成一維數組的變動,利用時間戳將節點轉化成區間 先將y排序,然后每加入一個就點更新求一次前綴和 POJ3067:日本 思路: POJ3321蘋…

案例063:基于微信小程序的傳染病防控宣傳系統

文末獲取源碼 開發語言:Java 框架:springboot JDK版本:JDK1.8 數據庫:mysql 5.7 開發軟件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序開發軟件:HBuilder …

leetcode系列:反轉鏈表的形象表示

反轉鏈表是一道比較簡單的題,主要考察的是對鏈表數據結構的理解和雙指針應用,比較容易出錯的地方是指針的移動順序。在練習的過程中想到了一個比較形象的表示方法,于是記錄下來。 # Definition for singly-linked list. # class ListNode: #…

地理信息系統概論

地理信息系統概論 第一章導論第二章地理信息系統的數據結構第三章空間數據的處理第四章地理信息系統空間數據庫第五章空間分析的原理與方法第六章地理信息系統的應用模型第七章地理信息系統的設計與評價第八章地理信息系統產品的輸出與設計 第一章導論 數據與信息的關系&#…

Java基礎-java.util.Scanner接收用戶輸入

目錄 1. 導入所需要的jar包2. 編寫代碼運行3. 輸出運行結果 1. 導入所需要的jar包 import java.util.Scanner;2. 編寫代碼運行 public class ScannerDemo {public static void main(String[] args) {/** 使用Scanner接收用戶鍵盤輸入的數據* 1. 導包:告訴程序去JD…

【Python】translate包報錯RuntimeError: generator raised StopIteration

根據網上有些教程,使用translate包翻譯稍微復雜語句的時候,會報錯RuntimeError: generator raised StopIteration 實際測試之后發現,主要是from_lang、to_lang兩個參數的設置有問題,比如有人說中文寫"Chinese"、"Z…

Mysql、Oracle安全項檢查表及操作腳本

軟件開發全資料獲取:點我獲取 Mysql檢查表 Oracle檢查表

【華為OD題庫-073】字符串變換最小字符串-java

題目 題目描述: 給定一個字符串s,最多只能進行一次變換,返回變換后能得到的最小字符串(按照字典序進行比較)。變換規則:交換字符串中任意兩個不同位置的字符。 輸入描述: —串小寫字母組成的字符串s 輸出描述: 按照要求進行變換得到的最小字符串 備注: s…

Anaconda建虛擬環境并在jupyter中打開

1.假設要用yaml格式創建虛擬環境 從開始里打開anaconda powersheel 輸入以下 conda env create -f environment.yaml conda activate env_name activate以下虛擬環境 修改名稱 如果不用yaml也可以用 conda create --name my_first_env python3.6 這個來指定 2.(base)變(…

C語言 位運算符 + 應用

常用的位運算符 按位與 快速判斷整數的奇偶性 奇數的二進制表示的最低位為1,偶數的二進制表示的最低位為0。 int num 9; if (num & 1) {// num 是奇數 } else {// num 是偶數 }按位異或 交換兩個變量的值 int a 5; int b 7; a a ^ b; b a ^ b; a a ^ …

udemy angular decoration 自存

番外 為什么一個ts文件變成了component,因為它使用了components裝飾器 components is just a class,you export it so angular know how to use it 舉例:組件裝飾器 decoration前總是有一個符號 decoration的作用(之一?) NgModu…

【漏洞復現】獅子魚任意文件上傳漏洞

漏洞描述 獅子魚CMS(Content Management System)是一種網站管理系統,旨在幫助用戶更輕松地創建和管理網站。它具有用戶友好的界面和豐富的功能,包括頁面管理、博客、新聞、產品展示等。 獅子魚CMS使用簡單直觀的管理界面,使得網站所有者可以方便地進行內容的發布、管理和…

深入探索 Java 反射機制

文章目錄 什么是 Java 反射?反射的核心類和接口反射的基本用法獲取 Class 對象的三種方式創建對象實例訪問字段和方法調用構造方法 反射的使用場景注意事項結語 Java反射(Reflection)是指在運行時獲取類的信息,特別是獲取其屬性、…