如何理解:業務架構、應用架構、數據架構、技術架構與系統和復雜度

關于系統的理解

???1.1?系統的概述

隨著人類社會的發展,人們面對越來越多的規模巨大、關系復雜、參數眾多地復雜問題,這些問題的復雜度已經遠遠超出人類的理解能力,系統論就是為了分析和解決這些問題而生。我們平時接觸的計算機系統包括軟件系統,本質上屬于系統論的一個范疇。系統論是一門獨立的學科,經歷了多年的發展已經形成了體系化的理論。系統論里的一些原則、理論、方法同樣適用于計算機系統,計算機系統里遇到的復雜性問題在系統論里肯定會有原則性的指導。相信前人肯定比我們聰明,我們遇到的問題,前人肯定也遇到過,只不過以另外一種形式呈現。多年的互聯網從業經驗很容易讓我們拘泥于互聯網軟件系統,這樣很容易忽略更一般性的規律和原理。

所以,把互聯網軟件系統放到軟件系統里看,把軟件系統放到系統論里看。

從計算機系統出來,進入系統論的層面,再回到計算機系統。這種思維的切換,仿佛上帝視角與人間視角的來回切換。

關于系統定義:系統由相互作用和相互依賴的若干組成部分結合成的、具有特定功能的有機整體。系統論強調整體與局部、局部與局部、系統本身與外部環境之間互為依存、相互影響和制約的關系。

系統論要求:把事物或者現象當作系統來研究,并用數學模型去描述和確定系統的結構和行為。系統的思考,區別于系統化的思考,系統的思考是要求我們把事情當做一各個個的系統來看。

系統的整體不是系統的部分之和,系統的整體一定大于系統的部分之和。一個系統能支撐的能力超越于系統組成之和。例如汽車由輪子、發動機、車架組成。汽車都能行駛,但是輪子、發動機、車架都不能行駛。

???1.2?系統三大基本特征

目的性:任何系統都有一定的目的。

這里可以理解為業務系統的邊界。我們的系統是為了做什么事而設立的?能做什么事?不能做什么事?

動態性:動態性說明系統會發展。

放到我們的業務系統上來說,就是會演進,會向前動態發展。系統內部會隨著時間而變化,系統與外部的交互關系也會隨著時間而改變。

有序性:任何系統本質上都是有序的,如果不是,說明我們對系統的描述還不夠深刻。

如果我們的業務系統仍然很亂,很雜,那說明我們還沒有找到系統的深層次的結構,復雜是因為我們掌握不夠。

???1.3?系統思維的四層境界

認識系統:認識并了解系統的形式與功能、結構與關系。

預測系統:當系統發生某個事件時,能夠根據已有知識對系統的行為做出預測。

決策系統:對系統足夠了解,擁有充足的依據,可以干預系統,對系統進行認定、分析、權衡,最終做出決策。

組裝系統:系統思維的最高境界,可以根據系統的部件重組一套系統。

系統思維的方法論:

通過抽象思維識別出系統中的實體并用概念模型表達。

通過整體思維對關鍵問題進行分析、歸納,篩選出恰當的實體作為系統的組裝部件。

???1.4?系統的分類

系統的分類有很多,按照不同的維度可以劃分不同的系統,例如按照是否人工可以分為人工系統、自然系統、社會系統等。

這里簡要講一下兩個系統,決定論系統,演化系統。

決定論系統:有明確的因果關系,掌握系統內部規律就可以做出明確的判定。機械系統、軟件系統等均屬于這個范疇。

例如飛機、汽車等只要掌握對應的物理原理,就能夠讓飛機飛行,讓汽車在馬路上奔馳。

演化系統:更多的是相關性,因果關系不明確或者難以理清,其難度是深不可測。例如人類的免疫系統,醫學上雖然知道免疫系統,但是仍然難以理清其原理。人類的大腦,自然界中的蟻群系統,自然界的生態平衡系統等。

對于不同的系統,有不同的方法論,處理的策略也不一樣。

系統論是一門科學,也是一門哲學,有興趣可以深入研究,這里只是蜻蜓點水。

02

關于架構的理解

“把桌子放在房間里看,把房間放在院子里看,把院子放在城市規劃里看。”

???2.1?什么是架構

架構,是對系統的描述。

維基百科的定義是:軟件架構是有關軟件整體結構與組件的抽象描述,用于指導大型軟件系統各個方面的設計。

系統的三大特征表現在架構上就是:橫向可并列,縱向可推導,整體可演進。

物理學的熵增定律表明孤立系統總是趨向于熵增的方向發展。在軟件系統里同樣適用,只不過是以復雜度的增加表現的。

互聯網軟件系統總是朝著復雜度增加的方向發展。所以架構的第一目的是控制復雜,使系統朝著可控的方向發展。

???2.2?什么是好的架構圖

簡潔抽象:好的架構圖一定是簡潔的,表現上簡潔有力,能夠一眼看上去就經緯分明。有一定的抽象度的,如果一個架構圖存在各種飛線環線,那一定是抽象的不夠。抽象才有意義,架構里如果存在各種細節,那就是堆砌。

可解釋:好的架構圖一定能夠用來解釋當前系統的現狀和行為。

指導行動:好的架構圖一定是可以指導行為的,指導行動才是架構圖的最大價值。能夠預測未來,指導行動。對于某個領域架構圖,根據架構圖都不知道把某個模塊放哪里,那就是失敗的。好的架構圖應該是對于一個沒有經驗的人,都能根據架構來做模塊劃分。

可進化:對應于系統的動態性,架構也會隨著時間而進化的。不能進化的架構就像花瓶,看著很美,一碰就碎。

???2.3?架構圖

對架構的呈現業界已經存在不同的框架。有4+1視圖、C4 模型、TOGAF 提出的企業架構模型等。不管哪種模型,其核心思想都是從不同的維度對軟件架構進行描述。下面著重從這幾個方面來簡述。

???2.3.1 4+1模式

4+1視圖由 Philippe Kruchten 提出的對軟件工程邏輯架構的描述,目前已經成為事實上的軟件結構標準,分別以終端使用者、開發者、系統工程師、軟件經理等不同的視角對軟件進行描述。如下圖所示:

圖片

邏輯視圖(Logic View):終端使用者的視角,從功能角度來描述不同功能組件的層次關系。

開發視圖(Development View):開發者視角下,從實現層面描述不同代碼的包、類、庫的構成關系。

過程視圖(Process View):不同組件之間的行為關系,通常以時序圖的形式來表示,有一定的時序延展性。

物理視圖(Physical View):部署視圖,系統所依托的物理視圖。

場景視圖(Scenarios):系統所涉及的不同對象之間的關系。通常以用例圖的形式來呈現。

基于這5個視角,可以衍生出5種架構模型。場景、功能、實現、過程、部署,一層層的抽象。

4+1架構視圖,構建了一個觀察了解系統框架。它告訴我們可以從邏輯視圖、開發視圖、過程視圖、物理視圖、場景視圖這幾個層面來對系統進行描述、觀察、理解。對于一個系統,這5個視角已經是很完備了。值得注意的是4+1更大的價值是提供了一套分析系統的框架,實際上怎么呈現不同的團隊可能有不同的形式。對于一個系統從不同的視角看會得到不同的理解,橫看成嶺側成峰。

???2.3.2?C4模型

圖片

C4 模型是由 Simon Brown 在2006年至2011年之間創建,在4+1模型的基礎上建立( https://c4model.com/ ),實際上就是以下4個單詞的縮寫:

上下文 Context:描述的系統與周邊系統、人的關系。重點是該系統與外界的關系。這里的外界包含人、以及其他的系統。?

容器 Containers:容器是一個功能的單位,是從技術層面來描述,可以是一個服務,也可以是一個技術組件或者一個功能模塊。例如一個基金系統會包含交易服務、訂單服務、商品服務等。

組件 Components:組件是容器的的組成,組件是對容器的放大,例如商品服務里包含 sku 管理、行情數據、衍生指標等。

代碼 Code:這一層次是代碼級別,包含接口、類、對象的繼承、組合、包含等。

該模型是對一個系統從宏觀到微觀逐級展開來描述,猶如拿著放大鏡從太空看地球一樣。

第一層看到的是地球與其星球的環繞、第二層是看到地球上的山川海河,第三層看到的是不同的國家城市,第四層看到的是不同的房子家庭。

C4 模型基于4+1模型,但是也有些差異。如果說4+1重點是橫看成嶺側成峰。那 C4 模型則是一窺到底的放大鏡。

C4 模型告訴我們,不同抽象層次的關注點、挑戰點、問題域都是不同的,站在不同的層次就要思考對應的事情。

關注點一旦與該層次不匹配就會出現邏輯錯亂問題。能分清楚問題域在何種層次其實已經把問題解決一大半了。

有時候,在低層次很難解的問題,上升一個層次就迎刃而解了。?

有時候,在高層次看不清的問題, 降低一個層次就一目了然了。

高層次是低一層的抽象,低層次是高一層的具化。

高手應該是能夠識別不同的抽象層次,并且可以游刃有余地在不同抽象層次之間穿梭。

處于高層次時不應該被低層次的具體牽絆,處于低層次的時候也不應該好高騖遠。

???2.3.3?TOGAF-4A 架構

圖片

業務架構:業務戰略,治理,組織和關鍵業務流程。從企業視角來看,重在價值、信息、協作,關聯多部門。

應用架構:要部署的各個應用程序的藍圖,其交互以及與組織核心業務流程的關系。

數據架構:一個組織的邏輯和物理數據資產和數據管理資源的結構。

技術架構:支持部署業務,數據和應用程序服務所需的邏輯軟件和硬件功能。這包括IT基礎設施,中間件,網絡,通信,處理和標準。

TOGAF 認為架構的目的是為了幫助企業實現如下能力:

異構到同構(塑造同構 IT)、事后到事先(塑造規劃 IT)、離散到統一(塑造統一 IT)、無序到有序(塑造有序 IT)

???2.3.4?實際模型-互聯網模型

實際上,相對于傳統的軟件系統,互聯網行業發展比較快,業務存活周期比較短,就形成了互聯網行業特定的架構描述方式。更多是以業務架構、技術架構、部署架構三種形式呈現。

業務架構:從業務角度描述系統承載的功能集合、領域邊界、各組成部分的邏輯關系。區別于技術架構,業務架構圖里避免出現技術類的術語,如 DB、MySQL、CMQ、同步、異步、并發等。?

技術架構:從技術角度描述系統各組成部件之間的交互關系,技術架構體現的要具有技術特色,例如同步、異步、消息等。

部署架構:從物理角度描述系統的部署分布。

???2.4?微服務的理解

軟件架構歸根結底無非兩種模式:從技術層面和業務功能層面來設計。在理解這兩個之前先區分一下技術語言和業務語言:

技術語言:是實現層面的。如 DB、MySQL、查詢、超時、讀寫分離、快慢分離、邏輯層、緩存、創建訂單、同步、異步、多線程、多進程。

業務語言:是功能層面的。如買入、取出、基金信息、行情、基金詳情、資產、產品列表、持倉列表、申購列表、贖回列表。

技術人員要做的是擺脫技術語言體系,走進業務體系,不能被技術語言限制住。從本質上來說技術是為了業務服務的,所以理解業務第一,技術第二。對業務有了深刻的理解,再轉過去用技術來實現業務。最好的實踐就是在業務代碼中看不到技術詞匯,只有業務。

微服務最早由martinfowler提出,定義如下:

“In short, the microservice architectural style? is an approach to developing a single application as?a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are?built around business capabilities?and independently deployable by?fully automated deployment machinery.?There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.” --- https://www.martinfowler.com/architecture/

說一下我的理解,微服務不是小服務,如果只是因為規模小,那直接叫小服務即可,更準確的叫法是:小而完整的服務,這里的小是指體積,完整是指能夠提供完整的業務能力。微服務是一種理念,其表達的是用一個服務來表達一個實體相關的所有行為,某個實體與外部的所有聯系均通過該服務來發生。區別于以往按照技術功能劃分的服務,ao 做邏輯層,dao 做存儲層,vo 做展示層。一個實體的行為要通過 vo、ao、dao 三個服務的關聯才能表達出來。而微服務是純粹從業務語義層面出發,只需要一個服務,對外的表示只有一個。類似于一個國家,雖然小,但是有自己的法律、武裝、稅收等。微服務擁有自己的邏輯、存儲、領域等。微服務核心思想:服務即實體,我即全部。服務是實體概念的載體。其出發點是從業務領域或者功能層面就進行徹底的解耦。微服務之間完全異構,微服務之間甚至都無技術層面的共通性。

例如代表保單的微服務,所有跟保單的相關行為都是該服務提供的,該服務內部實現保單的存儲和查詢,外界無需關心,創建保單、查詢保單、理賠保單均是通過該保單微服務實現的。

但是在實操中,限于硬件水平和當前的技術能力,單個微服務又難以承接實體相關的所有行為。例如保單的查詢對性能要求比較高,保單的寫入對一致性要求比較高,這種情況下,如果放在一個服務里就會帶來實現上的困難。這時可能又會回到了傳統技術功能劃分服務上來,考慮讀寫分離,分出一個查詢和讀的保單微服務。有時候也是無奈的妥協,但是一般的原則是先堅持原則再妥協。先按照微服務領域的不可分割性來設計,遇到技術性的挑戰再做調整與妥協。

03

關于復雜的理解

“計算機編程的本質就是控制復雜度”? ?---Brian Kernighan

???3.1 什么是復雜?

對于一個系統來說達到怎么樣的情況下才是復雜呢?物理學家勞埃德提出了一個觀點:

描述它有多困難;

產生它有多困難;

其組織程度如何?

我個人的理解是,如果對于一個系統出現如下情況,即可認為是復雜的:

無法表達其概念,超出了人類語言的表達能力范疇

無法描述其過程,超出了人類的理解能力。

無法度量其結果,沒有度量就無法管理,復雜到難以有精確的方式進行度量。

???3.2?復雜的分類

  • 表面復雜度:一個系統經過抽象、簡化、分層、構建呈現出來的復雜度,是人類最直觀理解的復雜度。例如一個系統架構圖所呈現的復雜度就是表面復雜度。

  • 必備復雜度:支持一個功能所需要的必備復雜度,也就是理論復雜度。

  • 實際復雜度:實際上包含因為技術限制、資源限制、過程浪費導致的不必要的復雜度。

表面復雜度是人類所能理解的復雜度,必備復雜度和實際復雜度往往超出人類的理解能力。

有一種觀點認為:系統架構的目的就是為了把系統的表面復雜度控制在人類的理解范疇內,把實際復雜度降低到接近必備復雜度。

???3.3 CyneFin 框架

關于復雜,內涵很豐富。有一個大佬叫戴夫·斯諾登,他于1999年創建了一套輔助決策的框架 Cynefin 框架,這套框架里就很好地把我們平常說的復雜進行了歸類。見下圖。

圖片

這個圖直觀上看,分五個象限,從右下角依次逆時針看。

Simle(簡單)、Complicated(繁雜)、Complex(復雜)、Chaotic(混亂),中間有一個黑色區域是Disorder(無序)。

這五組概念,可以理解為復雜度逐級提高。簡單理解:

  • Simple(簡單):知道因就能知道果。

  • Complicated(繁雜):由因可能推出不同的果,需要一定的領域知識,才能分析出因果。

  • Complex(復雜):不知因,也不知果。直觀上找不出因果,必須事后復盤才可以。

  • Chaotic(混亂):知道因果不重要了,重要的是要構建秩序,使系統穩定下來。

  • Disorder(無序):復雜到都無法按照以上四個概念定義。

我們平常遇到的任何的業務、環境、情形、項目、系統都可以用這五個概念中的一個來形容。

一個系統的發展也大概會沿著從簡單->繁雜->復雜->混亂->無序的狀態發展。這個過程跟物理中的熵增概念很吻合。

Simle(簡單):已知的知識,存在直接因果關系,一看就明白。這個不需多說,任何我們已經熟悉的系統,都是這樣的。

對于這種狀態的,我們最好應對方式,是采用感知-分類-響應模式。因果關系非常明確,我們只需要進行歸類就好。

Complicated(繁雜):?這個系統存在大量的已知的未知,非專業人士很難看出其中的因果關系,需要專業人士結合大量的專業知識才能分析出因果。

例如在政府部門的設置上分縱線和橫線兩套體系,俗稱“條條塊塊”。既垂直又水平。某縣教育局縱線要向上級教育廳匯報,橫線又要向地方縣政府匯報。諸多類似的部門形成了錯綜復雜的關系,呈現出來就是網狀的關系。面對這樣的系統,體制外的人很難理清某個部門應該向誰匯報。這個時候如果來個公務員老司機,他能夠很快速地告訴你其中的奧秘。

再例如,對于一個沒有任何醫學專業背景的人,你給他一堆指標,然后問他為啥會胃痛。他肯定覺得太繁雜了,無從下手。對于他來說最好的方式,就是請教醫學生或者系統性學習醫學類的專業知識。

所以面對繁雜的情形,最好的方式是,學習領域知識,快速入門。實踐上采用:“感知-分析-響應”的模式。注意重點是分析。分析的前提要擁有領域知識。所以深入學習+分析才是應對之道。大部分情況下我們遇到的是這種系統,我們需要的是增加專業技能,補充領域知識,提高識別能力。這種也最好解。

Complex(復雜):代表了未知的未知。存在不確定的情況,可能存在也可能不存在,需要復盤才能找到原因。需要逐步探索,通過反饋才能分析到原因。

例如你突然被提拔為一個管理者,你的任務是團隊文化建設。面對這項任務,既不知道因也不知道果。因為團隊文化是個很虛的東西,你都不知道怎么衡量。更不用說采取什么方法去預測了。對于這種,你只能通過試探,然后事后歸因。

所以采用模式是:“探索-感知-響應”。關鍵是要去探索,不斷地探索,不斷地反饋,最終找到因果關系。

Chaotic(混亂):混亂狀態通常是指危機時刻。是指你能接觸到信息都是不穩定的。這種情況下因果關系不清晰,處于雜亂無序的狀態。嘗試去識別因果已經沒有意義了。

處于各種不穩定中,行動起來,把無序狀態穩定下來。用行動來構建秩序。

對于這種情況,一切未知,只要行動起來,通過行動構建秩序。使混亂場面扭轉到復雜的場面。這種狀態下的應對模式是:“行動-感知-響應”。

Disorder(無序):復雜到無法對系統復雜度進行分類。完全無序,抓瞎狀態。這種的應對策略,就是先觀察,以靜待變,等你理清楚了處于某種復雜度狀態的時候,再去想對策。想不清復雜度,就不要動。一直想。直到你能區分系統處于以上四種狀態的一種。

總結:

不同級別的復雜對應的處理策略也不一樣。我們每天面對各種的情形,利用這個框架的指導思路,有助于我們透過現象看本質。能力越強的人處理的復雜度的也越高。

04

后記

本文的內容是結合以往的學習、收集整理而來。越整理越發現里面的知識越龐大,每個點都可以展開。所以這里很多地方只是簡要帶過,有時間再進一步整理。推薦三本書 :

《系統架構-復雜系統的產品設計與開發》對我來說,簡直是開天眼的書。本文的有些思路和語句也是從這本書里摘錄的。

《軟件架構-架構模式、特征及實踐》

《領域驅動設計》 這本書在筆者部門幾乎人手一本。

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

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

相關文章

ChatGPT的Mac客戶端正式發布了!Mac用戶有福了

ChatGPT的Mac客戶端正式發布了!Mac用戶有福了 🎉 大家好,我是貓頭虎,科技自媒體博主。今天我帶來了一個超級重磅的消息 📢,就是 ChatGPT 的客戶端終于來了!這對我們所有 Mac 用戶,尤…

2024全國大學生信息安全競賽(ciscn)半決賽(華中賽區)Pwn題解

簡介 前段時間賽前準備把ciscn東北賽區、華南賽區、西南賽區半決賽的題都復現完了。 可惜遇到了華東北賽區的離譜平臺和離譜pwn出題人: 假的awdp(直接傳🐎到靶機,然后連上去cat /flag.txt即可)題型分布不合理&#…

當前的網安行業絕對不是高薪行業

昨天,面試了一個剛畢業兩年的同學小A。第一學歷為某大專,第二學歷為某省地區的本科院校。面試過程表現一般偏下,但動不動就要薪資15K 這個人,我當場就PASS了。主要原因是,并非是否定小A同學的能力,而是他…

VSCode運行前端項目-頁面404

背景: 通過VSCode運行前端本地項目,運行成功后打開本地鏈接:http://1x.xxx.x.xxx:9803/ ,發現打開的頁面重定向到404:http//1xx.xxx.x.xxx:9803/404; 并且控制臺出現:Failed to load resource: …

詳解 ClickHouse 的監控及備份

一、ClickHouse 監控概述 ClickHouse 運行時會將一些個自身的運行狀態記錄到眾多系統表中(system.*)。所以對于 ClickHouse 自身的一些運行指標的監控數據,也主要來自這些系統表。直接查詢這些系統表進行監控會有一些不足之處: 這…

win10修改遠程桌面端口,Windows 10下修改遠程桌面端口及服務器關閉445端口的操作指南

Windows 10下修改遠程桌面端口及服務器關閉445端口的操作指南 一、修改Windows 10遠程桌面端口 在Windows 10系統中,遠程桌面連接默認使用3389端口。為了安全起見,建議修改此端口以減少潛在的安全風險。以下是修改遠程桌面端口的步驟: 1. 打…

IMX6ULL SD卡啟動uboot+kernel+rootfs

目錄 1. 背景說明 2.SD卡啟動 2.1準備條件 2.2 對SD卡分區格式化 2.3 制作sd卡鏡像 3.效果測試 1. 背景說明 網絡上絕大數教程,教大家把uboot燒錄到SD卡,然后uboot啟動后,通過TFTP下載kernel和設備樹,然后通過nfs掛載文件系…

油猴腳本入門

如何支持jquery 首先要在頭部引入外部資源 require https://cdn.bootcss.com/jquery/2.2.1/jquery.js編輯開始前添加一個注釋 /* globals $ */完整代碼 // UserScript // name study_jquery // namespace http://tampermonkey.net/ // version 1.0 // …

ultralytics官方更新 | 添加YOLOv10到ultralytics

💡💡💡本專欄所有程序均經過測試,可成功執行💡💡💡 專欄目錄:《YOLOv8改進有效漲點》專欄介紹 & 專欄目錄 | 目前已有40篇內容,內含各種Head檢測頭、損失函數Loss、…

【C++】類和對象(六)

文章目錄 二、static成員概念面試題一個題目 三、友元友元函數說明 友元類 四、內部類(了解)概念:注意:特性: 五、匿名對象 書接上回: 【C】類和對象(五)隱式類型轉換 二、static成員 01_31 03 12 01 概…

Xcode 手動添加模擬器

在Xcode中下載iOS模擬器很慢,且經常出現下載失敗,需重新從頭開始下載的問題。現了解Xcode 15 和運行環境是分離的,故闡述一下手動添加模擬器的步驟: 官網下載所需模擬器:https://developer.apple.com/download/all/?…

idea項目推送gitee/github

選擇需要的項目創建本地Git倉庫 添加到暫存區 第一次提交 或者點擊這里 寫備注并commit 推送遠程倉庫 填寫地址 解決上圖警告 右鍵打開項目,輸入 git pull origin master –allow-unrelated-historiesgit push -u origin master -f推送成功 idea項目推送github及克…

怎么用韓語說幫忙更合體,柯橋零基礎韓語培訓

1. **詳細解釋:** - **標準寫法與音譯:** - **??**(讀作 dop-da):動詞“幫助”。 - **????**(讀作 do-wa-ju-da):動詞“幫忙”,字面意思是“給予幫助”。 - **??…

PMP證書在國內已經泛濫了,大家怎么看?

目前,越來越多的人獲得了PMP證書。自1999年PMP引入中國以來,全國累計PMP考試人數接近60萬人次,通過PMP認證的人數約為42萬人。雖然這個數據看起來很大,但絕對不能說是過多。 首先,PMP在中國并不普遍。根據美國項目管理…

【源碼+文檔+調試講解】災害應急救援平臺

摘 要 災害應急救援平臺的目的是讓使用者可以更方便的將人、設備和場景更立體的連接在一起。能讓用戶以更科幻的方式使用產品,體驗高科技時代帶給人們的方便,同時也能讓用戶體會到與以往常規產品不同的體驗風格。 與安卓,iOS相比較起來&…

linux好用的分屏器byobu

什么是byobu byobu是linux下分屏器工具tmux或screen的包裝器。 安裝 sudo apt-get install byobu 啟動 emaubuntu:~$ byobu配置通知欄 按F9進入Byobu配置菜單導航到切換狀態通知選項,然后按ENTER鍵可以在選中和不選中之間切換選擇要啟用的狀態通知后&#xff…

深度學習項目實例(一)—— 實時AI換臉項目

一、前言 人工智能(AI)技術的快速發展為各個領域帶來了革命性的變化,其中之一就是人臉識別與圖像處理技術。在這之中,AI換臉技術尤其引人注目。這種技術不僅在娛樂行業中得到廣泛應用,如電影制作、視頻特效等&#xf…

static在C/C++中的作用

C語言中 static 的作用: 文件作用域的全局變量: 當static修飾一個全局變量時,這個變量只在定義它的文件內部可見,不會被其他文件訪問。 靜態局部變量: 在函數內部,static關鍵字確保局部變量的生命周期貫穿整…

目前公認最好用充電寶!四款高性價比充電寶推薦,一文看懂!

當我們在旅行途中,手機和相機等設備必不可少。長時間使用這些設備,電量很容易耗盡。此時,充電寶就能派上用場,讓我們在欣賞美景、記錄美好時光的同時,不再擔心電量不足。特別在假期出游的時候在我們玩的特別盡興的時候…

力扣2815.數組中的最大數對和

力扣2815.數組中的最大數對和 遍歷每個元素 并求其中最大的數字 將每個數字對應的最大元素存在數組中每遍歷到一個新的元素 &#xff0c;將其存在對應的數組位置中 class Solution {public:int maxSum(vector<int>& nums) {vector<int> cnt(10,INT_MIN);int…