<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:57811|
      • 收錄網站:279872|

      IT精英團

      真正的建筑設計是什么樣子的?

      真正的建筑設計是什么樣子的?

      瀏覽次數:
      評論次數:
      編輯: 溫瑜
      信息來源: ITPUB
      更新日期: 2022-05-20 21:38:44
      摘要

      什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的

      • 正文開始
      • 相關閱讀
      • 推薦作品

      什么是架構和架構本質

      在軟件行業,關于什么是架構有很多爭論,每個人都有自己的理解。這個君主說的建筑和他理解的建筑不一定是一樣的。所以,在討論建筑之前,我們先來討論一下建筑的概念定義。概念是人們認識世界的基礎,是交流的手段。如果對架構概念的理解不同,交流自然不會順暢。

      Linux有架構,MySQL有架構,JVM有架構,使用Java開發,MySQL存儲,運行在Linux上的業務系統也有架構。應該注意哪一個?要理解以上問題,需要梳理幾個相關且相近的概念:系統與子系統、模塊與構建、框架與架構3360。

      1.1. 系統與子系統

      系統:一般指一組相關的個體,按照一定的規則運行,能夠完成單個部件獨立完成不了的工作能力。

      子系統:它也是一個由一組相關個體組成的系統,大多是一個更大系統的一部分。

      1.2. 模塊與組件

      都是系統的一部分,只是從不同的角度拆分了系統。模塊是邏輯單元,組件是物理單元。

      模塊就是對系統進行邏輯分解,也就是分而治之,把復雜的問題簡單化。模塊的粒度可大可小,可以是系統、幾個子系統、某個服務、函數、類、方法、功能塊等。

      組件可以包括應用服務、數據庫、網絡、物理機器、MQ、容器、Nginx和其他技術組件。

      1.3. 框架與架構

      它是組件實現的規范,如MVC、MVP、MVVM等。是提供基本功能的產品,比如開源框架:Ruby on Rails、Spring、Laravel、Django等??梢灾苯邮褂?,也可以在此基礎上進行二次開發。

      框架是規范,架構是結構。

      我在這里重新定義架構:軟件架構是指軟件系統的頂層結構。

      架構是經過系統思考,權衡利弊,在現有資源約束下最合理的決定。最后,一個清晰的系統骨架:包括子系統、模塊和組件,以及它們之間的協作關系、約束規范和指導原則。它引導團隊中的每個人在思想層面上達成一致。涉及四個方面:

      系統思考的合理決策:如技術選擇、解決方案等。

      明確系統骨架:明確系統由哪些部分組成。

      系統協作:所有組件如何協作來實現業務請求。

      規范和指導原則:確保系統有序、高效、穩定運行。

      所以建筑師有能力:理解業務,全局把控,選擇合適技術,解決關鍵問題、指導研發落地實施.

      架構的本質是對系統進行有序的重構,以符合當前的業務發展并快速擴展。

      應該考慮什么樣的制度?架構設計技術不會無緣無故的發展和自我驅動,但架構的發展和需求是由業務驅動的。

      該架構完全是為業務而設計的,

      需求相對復雜。

      非功能性需求在整個系統中占據重要地位。

      系統生命周期長,需要可擴展性。

      基于系統組件或集成的需要。

      業務流程再造的需要。

      架構分層和分類

      架構可以細分為業務架構、應用架構、技術架構、代碼架構和部署架構。

      業務架構是戰略,應用架構是戰書,技術架構是裝備。其中,應用架構承上啟下。一方面承擔業務架構的落地,另一方面影響技術選擇。

      熟悉業務,形成業務架構,根據業務架構做出相應的應用架構,最后實現技術架構。

      如何根據當前需求選擇合適的應用架構,如何面向未來,保證架構的平穩過渡,是軟件開發人員尤其是架構師需要深入思考的問題。

      2.1. 業務架構(俯視架構):

      包括業務規劃、業務模塊、業務流程、整個系統的業務拆分、領域模型的設計以及

      沒有最優的架構,只有最適合的架構。所有的系統設計原則都應該以解決業務問題為目標。脫離實際業務的技術情懷架構往往會把系統帶進一個大坑。任何不是基于商業的異想天開的架構都是流氓。

      所有問題的前提都是搞清楚我們今天面臨的業務量有多大,增長趨勢是什么,解決高并發的過程一定是一個循序漸進的過程。合理的結構可以提前預見業務發展。

      1~2年為宜。這樣可以付出較為合理的代價換來真正達到技術引領業務成長的效果。

      看看京東業務架構(網上分享圖):

      圖片

      2.2. 應用架構(剖面架構,也叫邏輯架構圖)

      硬件到應用的抽象,包括抽象層和編程接口。應用架構和業務架構是相輔相成的關系。業務架構的每一部分都有應用架構。

      類似:

      圖片

      應用架構:應用作為獨立可部署的單元,為系統劃分了明確的邊界,深刻影響系統功能組織、代碼開發、部署和運維等各方面. 應用架構定義系統有哪些應用、以及應用之間如何分工和合作。這里所謂應用就是各個邏輯模塊或者子系統。

      應用架構圖關鍵有2點:

      ①. 職責劃分: 明確應用(各個邏輯模塊或者子系統)邊界

      • 邏輯分層
      • 子系統、模塊定義。
      • 關鍵類。

      ②. 職責之間的協作:

      • 接口協議:應用對外輸出的接口。
      • 協作關系:應用之間的調用關系。

      應用分層有兩種方式:

      • 一種是水平分(橫向),按照功能處理順序劃分應用,比如把系統分為web前端/中間服務/后臺任務,這是面向業務深度的劃分。
      • 另一種是垂直分(縱向),按照不同的業務類型劃分應用,比如進銷存系統可以劃分為三個獨立的應用,這是面向業務廣度的劃分。

      應用的合反映應用之間如何協作,共同完成復雜的業務case,主要體現在應用之間的通訊機制和數據格式,通訊機制可以是同步調用/異步消息/共享DB訪問等,數據格式可以是文本/XML/JSON/二進制等。

      應用的分偏向于業務,反映業務架構,應用的合偏向于技術,影響技術架構。分降低了業務復雜度,系統更有序,合增加了技術復雜度,系統更無序。

      應用架構的本質是通過系統拆分,平衡業務和技術復雜性,保證系統形散神不散。

      系統采用什么樣的應用架構,受業務復雜性影響,包括企業發展階段和業務特點;同時受技術復雜性影響,包括IT技術發展階段和內部技術人員水平。業務復雜性(包括業務量大)必然帶來技術復雜性,應用架構目標是解決業務復雜性的同時,避免技術太復雜,確保業務架構落地。

      2.3. 數據架構

      數據架構指導數據庫的設計. 不僅僅要考慮開發中涉及到的數據庫,實體模型,也要考慮物理架構中數據存儲的設計。

      圖片

      2.4. 代碼架構(也叫開發架構)

      子系統代碼架構主要為開發人員提供切實可行的指導,如果代碼架構設計不足,就會造成影響全局的架構設計。比如公司內不同的開發團隊使用不同的技術?;蛘呓M件,結果公司整體架構設計就會失控。

      代碼架構主要定義:

      ①. 代碼單元:

      • 配置設計
      • 框架、類庫。

      ②. 代碼單元組織:

      • 編碼規范,編碼的慣例。
      • 項目模塊劃分
      • 頂層文件結構設計,比如mvc設計。
      • 依賴關系
      圖片

      2.5. 技術架構

      技術架構:確定組成應用系統的實際運行組件(lvs,nginx,tomcat,php-fpm等),這些運行組件之間的關系,以及部署到硬件的策略。

      技術架構主要考慮系統的非功能性特征,對系統的高可用、高性能、擴展、安全、伸縮性、簡潔等做系統級的把握。

      系統架構的設計要求架構師具備軟件和硬件的功能和性能的過硬知識,這也是架構設計工作中最為困難的工作。

      2.6. 部署拓撲架構圖(實際物理架構圖)

      拓撲架構,包括架構部署了幾個節點,節點之間的關系,服務器的高可用,網路接口和協議等,決定了應用如何運行,運行的性能,可維護性,可擴展性,是所有架構的基礎。這個圖主要是運維工程師主要關注的對象。

      圖片

      物理架構主要考慮硬件選擇和拓撲結構,軟件到硬件的映射,軟硬件的相互影響。

      圖片

      架構級別

      我們使用金字塔的架構級別來說明,上層級別包含下層:

      • 系統級:即整個系統內各部分的關系以及如何治理:分層
      • 應用級:即單個應用的整體架構,及其與系統內單個應用的關系等。
      • 模塊級:即應用內部的模塊架構,如代碼的模塊化、數據和狀態的管理等。
      • 代碼級:即從代碼級別保障架構實施。

      戰略設計與戰shu設計

      基于架構金字塔,我們有了系統架構的戰略設計與戰shu設計的完美結合:

      • 戰略設計:業務架構用于指導架構師如何進行系統架構設計。
      • 戰shu設計:應用架構要根據業務架構來設計。
      • 戰shu實施:應用架構確定以后,就是技術選型。
      圖片

      應用架構演進

      業務架構是生產力,應用架構是生產關系,技術架構是生產工具。業務架構決定應用架構,應用架構需要適配業務架構,并隨著業務架構不斷進化,同時應用架構依托技術架構最終落地。

      圖片

      架構演進路程:單體應用→分布式應用服務化→微服務

      4.1. 單體應用

      企業一開始業務比較簡單,只應用某個簡單場景,應用服務支持數據增刪改查和簡單的邏輯即可,單體應用可以滿足要求。

      典型的三級架構,前端(Web/手機端)+中間業務邏輯層+數據庫層。這是一種典型的Java Spring MVC或者Python Django框架的應用。其架構圖如下所示:

      圖片

      針對單體應用,非功能性需求的做法:

      • 性能需求:使用緩存改善性能
      • 并發需求:使用集群改善并發
      • 讀寫分離:數據庫地讀寫分離
      • 使用反向代理和cdn加速
      • 使用分布式文件和分布式數據庫

      單體架構的應用比較容易部署、測試, 在項目的初期,單體應用可以很好地運行。然而,隨著需求的不斷增加, 越來越多的人加入開發團隊,代碼庫也在飛速地膨脹。慢慢地,單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,維護成本越來越高。下面是單體架構應用的一些缺點:

      • 復雜性高:以一個百萬行級別的單體應用為例,整個項目包含的模塊非常多、模塊的邊界模糊、 依賴關系不清晰、 代碼質量參差不齊、 混亂地堆砌在一起??上攵麄€項目非常復雜。每次修改代碼都心驚膽戰, 甚至添加一個簡單的功能, 或者修改一個Bug都會帶來隱含的缺陷。
      • 技術債務:隨著時間推移、需求變更和人員更迭,會逐漸形成應用程序的技術債務, 并且越積 越多?!?不壞不修”, 這在軟件開發中非常常見, 在單體應用中這種思想更甚。已使用的系統設計或代碼難以被修改,因為應用程序中的其他模塊可能會以意料之外的方式使用它。
      • 部署頻率低:隨著代碼的增多,構建和部署的時間也會增加。而在單體應用中, 每次功能的變更或缺陷的修復都會導致需要重新部署整個應用。全量部署的方式耗時長、 影響范圍大、 風險高, 這使得單體應用項目上線部署的頻率較低。而部署頻率低又導致兩次發布之間會有大量的功能變更和缺陷修復,出錯率比較高。
      • 可靠性差:某個應用Bug,例如死循環、內存溢出等, 可能會導致整個應用的崩潰。
      • 擴展能力受限:單體應用只能作為一個整體進行擴展,無法根據業務模塊的需要進行伸縮。例如,應用中有的模塊是計算密集型的,它需要強勁的CPU;有的模塊則是IO密集型的,需要更大的內存。由于這些模塊部署在一起,不得不在硬件的選擇上做出妥協。
      • 阻礙技術創新:單體應用往往使用統一的技術平臺或方案解決所有的問題, 團隊中的每個成員 都必須使用相同的開發語言和框架,要想引入新框架或新技術平臺會非常困難。

      4.2. 分布式

      隨著業務深入,業務要求的產品功能越來越多,每個業務模塊邏輯也都變得更加復雜,業務的深度和廣度都增加,使得單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,增加新功能開發周期越來越長,維護成本越來越高。

      這時需要對系統按照業務功能模塊拆分,將各個模塊服務化,變成一個分布式系統。業務模塊分別部署在不同的服務器上,各個業務模塊之間通過接口進行數據交互。

      該架構相對于單體架構來說,這種架構提供了負載均衡的能力,大大提高了系統負載能力,解決了網站高并發的需求。另外還有以下特點:

      • 降低了耦合度:把模塊拆分,使用接口通信,降低模塊之間的耦合度。
      • 責任清晰:把項目拆分成若干個子項目,不同的團隊負責不同的子項目。
      • 擴展方便:增加功能時只需要再增加一個子項目,調用其他系統的接口就可以。
      • 部署方便:可以靈活的進行分布式部署。
      • 提高代碼的復用性:比如Service層,如果不采用分布式rest服務方式架構就會在手機Wap商城,微信商城,PC,Android,iOS每個端都要寫一個Service層邏輯,開發量大,難以維護一起升級,這時候就可以采用分布式rest服務方式,公用一個service層。
      • 缺點:系統之間的交互要使用遠程通信,接口開發增大工作量,但是利大于弊。

      4.3. 微服務

      緊接著業務模式越來越復雜,訂單、商品、庫存、價格等各個模塊都很深入,比如價格區分會員等級,訪問渠道(app還是PC),銷售方式(團購還是普通)等,還有大量的價格促銷,這些規則很復雜,容易相互沖突,需要把分散到各個業務的價格邏輯進行統一管理,以基礎價格服務的方式透明地提供給上層應用,變成一個微內核的服務化架構,即微服務。

      微服務的特點:

      • 易于開發和維護:一個微服務只會關注一個特定的業務功能,所以它業務清晰、代碼量較少。開發和維護單個微服務相對簡單。而整個應用是由若干個微服務構建而成的,所以整個應用也會被維持在一個可控狀態。
      • 單個微服務啟動較快:單個微服務代碼量較少, 所以啟動會比較快。
      • 局部修改容易部署:單體應用只要有修改,就得重新部署整個應用,微服務解決了這樣的問題。一般來說,對某個微服務進行修改,只需要重新部署這個服務即可。
      • 技術棧不受限:在微服務架構中,可以結合項目業務及團隊的特點,合理地選擇技術棧。例如某些服務可使用關系型數據庫MySQL;某些微服務有圖形計算的需求,可以使用Neo4j;甚至可根據需要,部分微服務使用Java開發,部分微服務使用Node.js開發。

      微服務雖然有很多吸引人的地方,但它并不是免費的午餐,使用它是有代價的。使用微服務架構面臨的挑戰。

      • 運維要求較高:更多的服務意味著更多的運維投入。在單體架構中,只需要保證一個應用的正常運行。而在微服務中,需要保證幾十甚至幾百個服務服務的正常運行與協作,這給運維帶來了很大的挑戰。
      • 分布式固有的復雜性:使用微服務構建的是分布式系統。對于一個分布式系統,系統容錯、網絡延遲、分布式事務等都會帶來巨大的挑戰。
      • 接口調整成本高:微服務之間通過接口進行通信。如果修改某一個微服務的API,可能所有使用了該接口的微服務都需要做調整。
      • 重復勞動:很多服務可能都會使用到相同的功能,而這個功能并沒有達到分解為一個微服務的程度,這個時候,可能各個服務都會開發這一功能,從而導致代碼重復。盡管可以使用共享庫來解決這個問題(例如可以將這個功能封裝成公共組件,需要該功能的微服務引用該組件),但共享庫在多語言環境下就不一定行得通了。

      五. 衡量架構的合理性

      架構為業務服務,沒有最優的架構,只有最合適的架構,架構始終以高效,穩定,安全為目標來衡量其合理性。

      合理的架構設計:

      5.1. 業務需求角度

      • 能解決當下業務需求和問題
      • 高效完成業務需求: 能以優雅且可復用的方式解決當下所有業務問題
      • 前瞻性設計: 能在未來一段時間都能以第2種方式滿足業務,從而不會每次當業務進行演變時,導致架構翻天覆地的變化。

      5.2. 非業務需求角度

      ①. 穩定性。指標:

      • 高可用:要盡可能的提高軟件的可用性,我想每個操作人都不愿意看到自己的工作無法正常進行。黑盒白盒測試、單元測試、自動化測試、故障注入測試、提高測試覆蓋率等方式來一步一步推進。

      ②. 高效指標:

      • 文檔化:不管是整體還是部分的整個生命周期內都必須做好文檔化,變動的來源包括但不限于BUG,需求。
      • 可擴展:軟件的設計秉承著低耦合的理念去做,注意在合理的地方抽象。方便功能更改、新增和運用技術的迭代,并且支持在適時對架構做出重構。
      • 高復用:為了避免重復勞動,為了降低成本,我們希望能夠重用之前的代碼、之前的設計。這點對于架構環境的依賴是最大的。

      ③. 安全指標

      • 安全:組織的運作過程中產生的數據都是具有商業價值的,保證數據的安全也是刻不容緩的一部分。以免出現XX門之類丑聞。加密、https等為普遍手段

      常見架構誤區

      開高走落不到實處

      • 遺漏關鍵性約束與非功能需求
      • 為虛無的未來埋單而過度設計
      • 過早做出關鍵性決策
      • 客戶說啥就是啥成為傳話筒
      • 埋頭干活兒缺乏前瞻性
      • 架構設計還要考慮系統可測性
      • 架構設計不要企圖一步到位

      常見誤區

      • 誤區1——架構專門由架構師來做,業務開發人員無需關注:架構的再好,最終還是需要代碼來落地,并且組織越大這個落地的難度越大。不單單是系統架構,每個解決方案每個項目也由自己的架構,如分層、設計模式等。如果每一塊磚瓦不夠堅固,那么整個系統還是會由崩塌的風險。所謂“千里之堤,潰于蟻穴”。
      • 誤區2——架構師確定了架構藍圖之后任務就結束了:架構不是“空中樓閣”,最終還是要落地的,但是架構師完全不去深入到第一線怎么知道“地”在哪?怎么才能落的穩穩當當。
      • 誤區3——不做出完美的架構設計不開工:世上沒有最好架構,只有最合適的架構,不要企圖一步到位。我們需要的不是一下子造出一輛汽車,而是從單輪車→自行車→摩托車,最后再到汽車。想象一下2年后才能造出的產品,當初市場還存在嗎?
      • 誤區4—— 為虛無的未來埋單而過度設計:在創業公司初期,業務場景和需求邊界很難把握,產品需要快速迭代和變現,需求頻繁更新,這個時候需要的是快速實現。不要過多考慮未來的擴展,說不定功能做完,效果不好就無用了。如果業務模式和應用場景邊界都已經比較清晰,是應該適當的考慮未來的擴展性設計。
      • 誤區5——一味追隨大公司的解決方案:由于大公司巨大成功的光環效應,再加上從大公司挖來的技術高手的影響,網站在討論架構決策時,最有說服力的一句話就成了“淘寶就是這么搞的”或者“騰訊 就是這么搞的”。大公司的經驗和成功模式固然重要,值得學習借鑒,但如果因此而變得盲從,就失去了堅持自我的勇氣,在架構演化的道路上遲早會迷路。
      • 誤區6——為了技術而技術:技術是為業務而存在的,除此毫無意義。在技術選型和架構設計中,脫離網站業務發展的實際,一味追求時髦的新技術,可能會將技術發展引入崎嶇小道,架構之路越走越難??紤]實現成本、時間、人員等各方面都要綜合考慮,理想與現實需要折中。

      架構知識體系

      7.1. 架構演進

      • 初始階段:LAMP,部署在一臺服務器
      • 應用服務器和數據服務器分離
      • 使用緩存改善性能
      • 使用集群改善并發
      • 數據庫地讀寫分離
      • 使用反向代理和cdn加速
      • 使用分布式文件和分布式數據庫
      • 業務拆分
      • 分布式服務

      7.2. 架構模式

      分層:橫向分層:應用層,服務層,數據層

      分割:縱向分割:拆分功能和服務

      分布式

      • 分布式應用和服務
      • 分布式靜態資源
      • 分布式數據和存儲
      • 分布式計算

      集群:提高并發和可用性

      緩存:優化系統性能

      • cdn
      • 方向代理訪問資源
      • 本地緩存
      • 分布式緩存

      異步:降低系統的耦合性

      • 提供系統的可用性
      • 加快響應速度

      冗余:冷備和熱備,保證系統的可用性

      自動化:發布,測試,部署,監控,報警,失效轉移,故障恢復

      安全:

      7.3. 架構核心要素

      高性能:網站的靈魂

      • 性能測試
      • 前端優化
      • 應用優化
      • 數據庫優化

      可用性:保證服務器不宕機,一般通過冗余部署備份服務器來完成

      • 負載均衡
      • 數據備份
      • 自動發布
      • 灰度發布
      • 監控報警

      伸縮性:建集群,是否快速應對大規模增長的流量,容易添加新的機器

      集群

      • 負載均衡
      • 緩存負載均衡

      可擴展性:主要關注功能需求,應對業務的擴展,快速響應業務的變化。是否做法開閉原則,系統耦合依賴

      • 分布式消息
      • 服務化

      安全性:網站的各種攻擊,各種漏洞是否堵住,架構是否可以做到限流作用,防止ddos攻擊。

      • xss攻擊
      • sql注入
      • csr攻擊
      • web防火墻漏洞
      • 安全漏洞
      • ssl

      原文

      標簽:架構 業務 系統
      10分鐘了解云原生 值得收藏~
      ? 上一篇 2022-05-20
      如何在Bash腳本中使用強大的Linux測試命令
      下一篇 ? 2022-05-20
      • 如何在Ubuntu中保留文件系統并備份當前開發板鏡像
        0閱讀 0條評論 個贊
        在Ubuntu保留文件系統或者說備份當前開發板鏡像的需求在不斷增加。比如Ubuntu文件系統需要安裝庫文件的話直接使用apt-get工具就可以下載,但由于需要下載的核心板較多,比較費時間,這時需要將安……
      • 國產核心板全志T507助力消防系統升級
        0閱讀 0條評論 個贊
        9月16日下午,位于湖南長沙市區內的中國電信大樓發生火災,建筑高度218米,現場濃煙滾滾,數十層樓體燃燒劇烈。消防救援人員趕到現場后很快將火勢控制住,目前大樓火勢已被撲滅,所幸未發現人員傷亡。湖南電信……
      • 教大家如何處理Spring Boot易流中的用戶和群體!
        0閱讀 0條評論 個贊
        1.準備工作2.用戶操作2.1添加用戶2.2修改用戶2.3刪除用戶2.4查詢用戶3.組操作3.1添加組3.2修改組3.3刪除組3.4查詢組4.查看表詳情雖然說我們在實際開發中,……
      • 從PG15開始WAL壓縮優化
        0閱讀 0條評論 個贊
        PG15傳聞中的超級令人激動的功能大多數跳票了,年初我也寫過一個關于PG15新功能跳票的文章。PG15BETA已經發出幾個月了,似乎PG15里令人激動人心的功能不多,不過從長長的新功能列表里,……
      • 深入了解美團葉子發射器開源方案
        0閱讀 0條評論 個贊
        大家好,我是樹哥。之前我們有聊過「如何設計一個分布式ID發號器」,其中有講過4種解決方案,分別是:UUID類雪花算法數據庫自增主鍵Redis原子自增美團以第2、3種解決方案為基礎,開發出……
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • MySQL性能調優和優化技術
        0閱讀 0條評論 個贊
        介紹MySQL是一種流行的開源數據庫應用程序,它以一種有意義且易于訪問的方式存儲和構造數據。對于大型應用程序,龐大的數據量可能會導致性能問題。本指南提供了一些關于如何提高MySQL數據庫性能的調……
      • 計算機網絡-了解-DNS和HTTPDNS
        0閱讀 0條評論 個贊
        DNS和HTTPDNSDNS域名解析的過程傳統DNS存在的問題1、域名緩存問題2、域名轉發問題3、出口NAT問題4、DNS域名更新問題5、解析延遲問題6、運營商劫持HTTPDNSHTTP……
      • RDD星火基金簡介(01)
        0閱讀 0條評論 個贊
        1,基本概念RDD(ResilientDistributedDataset):彈性分布式數據集它是Spark中最基本的數據抽象,是編寫Spark程序的基礎。簡單的來講,一個Spark程序可以概括……
      • 數字人技術在直播場景中的應用
        0閱讀 0條評論 個贊
        作者|薄志浩導讀introduction本文介紹了在數字人AI技術發展迅猛,整體AI數字人市場呈現高速增長的趨勢下,與強調高實時性互動的直播業務場景的結合與應用,通過數字人渲染技術、強大的AI全棧能……
      • 如何獲取Yarn和Spark UI的界面索引信息
        1閱讀 0條評論 個贊
        .css-1yuhvjn{margin-top:16px;}.css-3jt6os.FileLinkCard{-webkit-align-items:center;-webkit-box-align……
      • python的環境,你再也不用愁康達
        1閱讀 0條評論 個贊
        CondaGuideConda簡介conda是一個包,依賴和環境管理工具,適用于多種語言,如:Python,R,Scala,Java,Javascript,C/C++,FORTRAN……
      • 圖系列中推薦算法的召回與粗排實踐
        3閱讀 0條評論 個贊
        一、轉轉推薦算法介紹1.1什么是推薦系統?1.2轉轉推薦主要場景及流程二、圖算法原理介紹及轉轉實踐2.1經典GraphEmbedding方法:DeepWalk2.2結構性與同質性:node2……
      • c#異步高級————通道[1]
        0閱讀 0條評論 個贊
        前言該系列為異步編程的進階篇,其實也不能這么講。世界上本沒有進階篇,只能說是高級篇(高級篇不能說多高級,是對底層的封裝的意思),只要是加深理解都是進階。本章先介紹一下channel。正文下面沒什么好說……
      • 如何保持Mysql和Redis數據一致
        0閱讀 0條評論 個贊
        先闡明一下Mysql和Redis的關系:Mysql是數據庫,用來持久化數據,一定程度上保證數據的可靠性;Redis是用來當緩存,用來提升數據訪問的性能。關于如何保證Mysql和Redis中的數據一致(……
      • 如何在Ubuntu中保留文件系統并備份當前開發板鏡像
        0閱讀 0條評論 個贊
        在Ubuntu保留文件系統或者說備份當前開發板鏡像的需求在不斷增加。比如Ubuntu文件系統需要安裝庫文件的話直接使用apt-get工具就可以下載,但由于需要下載的核心板較多,比較費時間,這時需要將安……
      • SQL Server:觸發器的詳細說明
        0閱讀 0條評論 個贊
        1.概述2.觸發器的分類3.Inserted和Deleted表4.觸發器的執行過程5.創建觸發器6.修改觸發器:7.刪除觸發器:8.查看數據庫中已有觸發器:9.“Insteadof……
      • 二戰MySQL數據庫【升華】
        0閱讀 0條評論 個贊
        MYSQL入門系列——第二篇1.篩選條件:(1)比較運算符:(2)邏輯運算符:(3)其他操作:1.排序:2.限制:拓展:3.去重:4.模糊查詢:(like'%')5.范圍查詢:2.聚合與分組(重點……
      • 金牛座入門 MVC微服務框架開發教程:項目部署:4 微服務應用發布到Docker進行部署
        0閱讀 0條評論 個贊
        前言:本篇教程,演示ASP.NETCore微服務應用程序,如何最簡方式發布到Docker中部署,并運行起來。新手兩個簡易概念:1、映像:可以理解為Class,用于定義;2、容器:可以理解為Clas……
      • 讓自己更有價值的5種能力
        0閱讀 0條評論 個贊
        如何讓自己更值錢?回答這個問題,需要用到黃金圈理論。什么是黃金圈理論?黃金圈理論,是國際知名營銷專家、作家SimonSinek在2011年提出的,這是一種由內向外的思維模式。黃金圈理論提倡由Why、……
      • 一個沒有寫代碼的案例 讓我們看看Flowable為我們提供了哪些功能
        3閱讀 0條評論 個贊
        其實松哥之前已經寫過文章和大家介紹了flowable-ui的玩法了,這是官方提供的一個工具,這個工具不僅可以用來繪制流程圖,還可以用來部署一個流程應用,通過這個流程應用我們可以體驗一把flowa……
      • SQL Server 2005分區模板和實例
        0閱讀 0條評論 個贊
        一、場景這一段時間使用SQLServer2005對幾個系統進行表分區,這幾個系統都有一些特點,比如數據庫某張表持續增長,給數據庫帶來了很大的壓力?,F在假如提供一臺新的服務器,那么我們應該如何規劃……
      • 【高并發】從源碼角度深入分析線程池如何優雅退出
        0閱讀 0條評論 個贊
        大家好,我是冰河~~在【高并發專題】中,我們從源碼角度深度分析了線程池中那些重要的接口和抽象類、深度解析了線程池是如何創建的,ThreadPoolExecutor類有哪些屬性和內部類,以及它們對線程池……
      • 用戶自定義注釋 AOP實現的日志保存(數據庫) 所有代碼都可以粘貼復制
        0閱讀 0條評論 個贊
        前言1,在一些特定的場景我們往往需要看一下接口的入參,特別是跨系統的接口調用(下發,推送),這個時候的接口入參就很重要,我們保存入參入庫,如果出問題就可以馬上定位是上游還是下游的問題(方便扯皮)2,還……
      • Python條件語句的用法
        0閱讀 0條評論 個贊
        python條件語句使用if表達式,難度不高,需要注意的是嵌套用法,以及如何設置對應的條件。if條件判斷語句python語句是按固定順序執行的,先執行前面的語句,再執行后面的語句。如果你像要程……
      • web端pdf編輯能力的設計與實踐
        0閱讀 0條評論 個贊
        本期作者顧伊凡嗶哩嗶哩資深開發工程師2021年加入B站,負責UP主創作激勵、收益中心、電子簽約平臺前端建設。本文將從業務場景與技術實現等角度對“web端pdf編輯能力”進行基本的介紹。01背景B站電……
      最近發布資訊
      更多
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>