「Docker入門指北」容器很難理解?帶你從頭到尾捋一遍

在這里插入圖片描述

文章目錄

  • 1. 初始虛擬化
    • 🍑 虛擬化概念
    • 🍑 硬件虛擬化
  • 2. Docker容器
    • 🍑 Docker技術的誕生
    • 🍑 容器與虛擬化
    • 🍑 性能差別
    • 🍑 Docker優勢
      • 編排有序
      • 高效易遷移
      • 快速部署
  • 3. 容器生態系統
    • 🍑 核心技術
      • 容器規范
      • 容器 runtime
      • 管理工具
      • 定義工具
      • 容器倉庫
      • 容器OS
    • 🍑 平臺技術
      • 容器編排引擎
      • 容器管理平臺
      • 容器PaaS
    • 🍑 支持技術
      • 容器網絡
      • 服務發現
      • 容器監控
      • 數據管理
      • 日志管理
      • 容器安全
  • 4. 總結

在這里插入圖片描述

1. 初始虛擬化

🍑 虛擬化概念

在計算機技術中,虛擬化(Virtualization) 是一種資源管理技術。
?
虛擬化的目的是在一臺計算機上運行多個系統或應用,從而提高資源的利用率,節約成本。將單臺服務器中的各種資源,如網絡、CPU及內存等,整合轉換為一臺或多臺虛擬機,用戶就可以從多個方面充分利用計算資源。
?
由下圖可以看出,一臺物理機可以擁有多臺虛擬機,而這些虛擬機都是基于物理機運行。
?
其中,物理機又叫作虛擬機的宿主機(可簡稱為主機),只要它處于正常運行狀態,就可以一直承載虛擬機的運行。
?
由于虛擬機基于物理機運行,硬件設備都是共享的,在創建多臺虛擬機時,也要考慮到物理機的配置是否能夠承載足夠數量的虛擬機。
在這里插入圖片描述

🍑 硬件虛擬化

硬件虛擬化是對宿主機的硬件進行虛擬化,使硬件對用戶隱藏,并將虛擬化的硬件呈現在用戶面前,如下圖所示。
在這里插入圖片描述
圖中所示的硬件并非真實的物理硬件,而是通過虛擬化技術虛擬出來的,與虛擬機一樣基于物理機硬件。
?
虛擬機的運行需要考慮物理機硬件的配置,例如,將物理機中的網卡取出后,在虛擬機設置中是無法添加網卡的,但只要物理機中有網卡,虛擬機中就可以添加多個網卡。
?
再例如,物理機的內存有 16GB,用戶直接給虛擬機配置 16GB 內存,這也是無法實現的,因為物理機的運行也需要消耗內存。

下面是一些硬件虛擬化的例子👇

Inter-VT(Inter Virtualization Technology,Intel公司的虛擬化技術)。
?
為了解決純軟件虛擬化安全、性能等方面的不足,這種技術可以讓一個 CPU 看起來像是多個 CPU 在工作一樣,從而實現在一臺計算機上同時存在多個操作系統。
?
AMD-V(AMD Virtualization,AMD公司的虛擬化技術)。
?
它是針對 x86 處理器系統架構的一組硬件擴展虛擬化技術,可以簡化純軟件的虛擬化解決方案,改進 VMM(VirtualMachine Manager,虛擬機監視程序)的設計,更充分地利用硬件資源,提高了服務器和數據中心的虛擬化效率。

2. Docker容器

🍑 Docker技術的誕生

容器(Container) 技術是基于虛擬化技術的,它使應用程序可以從一個計算環境快速可靠地轉移到另一個計算環境運行,可以說是一種新型的虛擬化技術。
?
由于容器技術的優越性,越來越多的互聯網公司開始開發容器應用。
?
早在1979年,UNIX系統中就出現了一種 chroot 機制,這是容器技術的維形。
?
2000年,FreeBSD Jails技術出現。它基于 FreeBSD 系統,將計算機分為多個獨立的小型計算系統。
?
2006年,谷歌推出了Process Containers (過程容器)技術,它不僅可以隔離進程,還可以對隔離空間限制計算資源。
?
2008年,出現了第一個完整的容器管理工具——LXC (Linux Container, Linux容器)。
?
2013年,,LMCTFY (Let Me Contain That For you,我為你的程序打包)作為由谷歌開發的開源容器技術,實現了在 Linux 系統中使用容器技術,,LMCTFY 最終成為 Libcontainer 容器管理的重要組成部分。
?
同年,,Docker 技術問世,容器熱度呈爆發式增長,Docker 逐漸成為了容器中的杰出代表,如下圖所示👇
在這里插入圖片描述
Docker 是一個開源的容器引擎,它可以使開發者打包好的應用程序在 Docker 空間中運行起來。
?
當一臺物理機中運行多個 Docker 容器時,就算其中一個容器出故障,也不會影響到整個業務。
?
Docker技術之所以獨特,是因為它專注于開發人員和系統操作員的需求,將應用程序依賴項與基礎架構分開。目前,容器無處不在,在 Linux、Windows、數據中心、公有云中,都可以看到容器的影子,如下圖所示。
?
我們引入集裝箱的概念來輔助理解 Docker 容器。集裝箱被譽為運輸業與世界貿易最重要的發明。
?
早期的貨物運輸時,設法將不同的貨物放在運輸機上和因貨物規格不同而頻繁進行的貨物裝載與卸載等浪費了大量的人力物力。
?
為此人們發明了集裝箱,根據貨物的形狀、大小,使用不同規格的集裝箱進行裝載,然后再放在運輸機上運輸。
?
集裝箱密封,只有貨物到達目的地才需要拆封,在運輸過程中能夠在不同的運輸機上平滑過渡,避免了資源的浪費。
在這里插入圖片描述
Docker 容器就是利用了集裝箱的思想,為應用程序提供基于容器的標準化運輸系統。
?
Docker可以將任何應用及其依賴包打包進一個輕量級、可移植、自包含的容器。容器幾乎可以運行在所有操作系統上。
?
因此才有了那句話 “Build Once,Run Anywhere(生成一次,到處運行)”。Docker的思想從其Logo中也不難看出——一堆可移動的集裝箱,如下圖所示。
在這里插入圖片描述

🍑 容器與虛擬化

傳統的虛擬機技術是模擬出一套硬件,在其上運行一套完整的操作系統,擁有自己獨立的內核。
?
虛擬機包含應用程序、必需的庫或二進制文件,以及一個完整的 Guest 操作系統。
?
而容器沒有進行硬件虛擬,容器包含應用程序和它所有的依賴,容器中的應用進程直接運行在宿主機的內核上,與宿主機共享內核,因此容器比傳統的虛擬機更加輕便。
?
容器技術與虛擬化技術都對需要運行的東西進行隔離,形成一個獨立的運行空間,與宿主機系統互不干擾。虛擬化技術是基于系統的隔離,它對物理層面的資源進行隔離,如下圖所示。
在這里插入圖片描述
而容器技術與之不同,容器的隔離空間中運行的是應用程序,隔離是基于程序的,不需要將系統隔離,如下圖所示。
在這里插入圖片描述
相較于虛擬化,容器是更加快捷方便的技術,它的部署與遷移都十分快速,結構更加精簡,運行速率更高。
?
而虛擬化技術需要系統隔離,結構腑腫,無論是部署還是遷移都要消耗大量時間,每次創建都要新建系統,為用戶的操作帶來不便。

🍑 性能差別

虛擬化與容器還有著性能上的區別,如下表所示。
在這里插入圖片描述
Docker容器的操作系統是共享的,虛擬化的操作系統是獨立的,所以后者的隔離性更強,但也注定結構復雜,無法被廣泛應用到企業中。
?
如今,容器技術已進入成熟階段,為開發人員與運維人員提供了更大的靈活性。容器可以快速部署,提供不變的基礎架構。它們還取代了傳統的修補過程,使組織可以更快地響應問題,并使應用程序更易于維護。
?
容器化之后,應用程序可以部署在任何基礎架構上,如虛擬機、服務器以及運行不同虛擬機管理程序的各種公共云。許多企業從在虛擬化基礎架構上運行容器開始,發現無須更改代碼即可輕松地將其遷移到云。
?
容器本身具有固有的安全性。Docker容器在應用程序之間以及應用程序與主機之間創建隔離層,并通過限制對主機的訪問來減少主機對外暴露的面積,從而保護主機與主機上的其他容器。
?
在服務器上運行的Docker容器具有與在虛擬機上運行時相同的高級限制,來保證業務的安全性。
?
Docker容器還可以通過保護虛擬機本身并為主機提供深度防御來與虛擬化技術完美結合。
目前,大多數企業都有成熟的虛擬化環境,包括備份、監視、自動化工具以及與之相關的人員和流程。

🍑 Docker優勢

目前,Docker 發展趨勢十分樂觀,在企業中得到了廣泛應用。接下來,我們將對 Docker 的優勢進行詳細介紹。

編排有序

在以往的項目交付過程中,常常出現在開發人員這里能夠正常運行,到了運維人員那里卻無法正常運行的情況,使業務不能在第一時間完成上線,導致交付過程效率低下。
?
Docker 提供了一種全新的發布機制。這種發布機制使用Docker鏡像作為統一的軟件制品載體,以Docker 容器作為統一運行環境,通過 Docker Hub 提供鏡像統一協作,最重要的是使用Dockerfile 定義容器內部行為和容器關鍵屬性來做支撐,從而使整個開發交付周期中軟件環境保持統一,大大提高了產品交付效率。
?
Dockerfile 處于整個機制的核心位置。因為在 Dockerfile 中,不僅能夠定義使用者要在容器中進行的操作,而且能夠定義容器中的軟件運行需要的配置,實現了軟件開發和運維在配置文件上達成統一。運維人員能夠使用 Dockerfile 在不同場合下部署出與開發環境一模一樣的 Docker 容器。

高效易遷移

Docker 容器基于開放式標準,幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人計算機、服務器等。這種兼容性可以讓用戶輕松地把一個應用程序從一個平臺直接遷移到另外一個平臺。
?
Docker 是一款輕量級應用,在一臺機器上運行的多個 Docker 容器可以共享這臺機器的操作系統內核,能夠做到快速啟動,只需占用很少的服務器資源。鏡像是通過文件系統層進行構造的,并共享一些公共文件,這樣就能有效降低磁盤用量,使用戶能夠更快地下載鏡像。

快速部署

公司進行業務遷移的時候(例如,公司的 IDC 機房要進行搬遷,業務要遷移到云服務器上),通常需要將所有應用在云服務器上重新部署,這些煩瑣的工作極大地浪費了人力,并降低了工作效率。
?
利用Docker容器可以簡化這項工作,實現快速部署。人們只需要在云服務器上運行相應的容器,無須考慮環境因素。
?
Docker 賦予應用的隔離性還獨立于底層的基礎設施。Docker 默認提供最強的隔離,因此應用出現間題也只是單個容器的問題,不會影響到整臺機器。

3. 容器生態系統

Docker 容器能有今天的蓬勃發展,與它生態系統的支持是分不開的。這一套完整的生態系統就是 Docker 發展的基礎,為 Docker 提供了一整套技術支持,包括核心技術、平臺技術、支持技術。

🍑 核心技術

容器的核心技術是用來支持容器在主機上運行起來的技術,如下圖所示
在這里插入圖片描述

容器規范

雖然 Docker 是最常用的容器之一,但容器不是只有 Docker,還有其他的容器,如 rkt。
?
為了容器技術能夠有更加良好的發展,各個容器技術的開發公司聯合成立了 OCI ( Open Container Initiative,開放容器計劃)組織。OCI組織的主要目的就是定制一套完整的容器規范,以保證各個容器之間能夠兼容。
?
目前已經發布了兩個容器規范,分別是 runtime spec(運行環境規范) 與 image format spec(鏡像格式規范),如下圖所示。
在這里插入圖片描述
這兩個規范保證了不同公司開發出來的容器能夠在不同的環境下運行,保證了容器的可移植性與互操作性。

容器 runtime

容器 runtime 是指容器的運行環境,用來包容容器的運行。
?
例如,要養一株花,就要給它陽光、空氣和水,來營造一個舒適的環境。容器也是一樣,想要讓它運行起來就要給它相應的環境。
?
目前有三種主流的容器runtime,如下圖所示。
在這里插入圖片描述
LXC (Linux Containers ) 是一款比較老的容器 runtime,最初 Docker 在 Linux 系統中就是用LXC 作為容器 runtime的,如下圖所示👇
在這里插入圖片描述
rkt 是Core OS 公司開發的容器 runtime, 目前是 Docker 默認使用的容器 runtime, 如下圖所示。👇
在這里插入圖片描述
runC 是 Docker 公司自己專門為 Docker 容器開發的 runtime,與 rkt 一樣都是符合 OCI 規范的。

管理工具

管理工具是任何一款應用程序必備的要素,否則將無法對應用進行管理。
?
例如,開車時,司機需要通過方向盤等來對汽車進行操作,用戶則需要通過管理工具來對容器進行操作,如下圖所示。
?
容器的管理工具不僅為用戶提供管理界面,還與 runtime 進行交互,所以不同的 runtime 對應不同的管理工具。
?
LXC對應的容器管理工具是 Ixd。
在這里插入圖片描述
runC 對應的容器管理工具是 Docker Engine,分為 deamon 與 CLI 兩部分。
?
rkt 對應的容器管理工具是 rktCLI。

定義工具

容器的定義工具用于定義容器的內容與屬性,使用戶隨心所欲地創建自己想要的容器,如下圖所示。
在這里插入圖片描述
Docker Image 就是 Docker 鏡像,用戶會先根據自己的要求創建一個鏡像,再根據配置好的鏡像創建出容器。DockerImage 相當于一幅設計藍圖,用戶將藍圖規劃完成之后,Docker 程序會按照藍圖創建容器。
?
Dockerfile 是一個文本文件,它包含了在創建鏡像時需要使用的命令,這些都是用戶事先配置完成的。在創建鏡像時,只要指定一個 Dockerfile,Docker 程序就會按照 Dockerfile 中的命令進行鏡像的創建。
?
ACI (App Container Image,應用程序容器鏡像)也是一種容器鏡像,只不過它是由 CoreOS 公司開發的,專門用于 rkt 容器。

容器倉庫

容器倉庫并不是用來存放容器的,而是用來存放鏡像的。
?
用戶可以將使用過的鏡像上傳到容器倉庫中,下次使用時再從容器倉庫中下載需要的鏡像,并且倉庫中的鏡像在一定范圍內是共享的。各類容器倉庫如圖所示。👇
在這里插入圖片描述
Docker Registry 支持企業自己搭建私有倉庫。
?
Docker Hub 是 Docker 公司為用戶提供的公有倉庫,里面有許多 Docker 鏡像,為廣大用戶提供了極大的便利。
?
Quay.io 也是公有倉庫,只不過是由紅帽(Red Hat)公司提供的。

容器OS

容器 OS(Operating System,操作系統)專門用于容器的運行。
?
雖然幾乎所有的系統都可以通過容器runtime來運行容器,但容器OS比起其他系統更加輕巧,更加適宜容器的運行,容器OS中的容器運行起來更加高效。常見的容器OS如圖所示。
在這里插入圖片描述

🍑 平臺技術

在容器普及之前,企業為了便于管理,服務器都是分布式部署,容器平臺技術支持容器集群在分布式環境中運行,如圖所示。
在這里插入圖片描述

容器編排引擎

企業根據業務需求隨時可能會對容器進行創建、遷移或銷毀。容器編排引擎為工程師們提供了更方便的容器集群管理方式。常見的容器編排引擎如圖所示。
在這里插入圖片描述
Docker Swarm 是 Docker 公司于2014年12月發布的容器編排引擎。
?
Kubernetes 其實是 Google(谷歌)公司早就開發出來的,直到2014年才啟用。Kubernetes同時支持 Docker 容器與 rkt 容器,是目前國內企業中最常用的容器編排引擎之一。
?
Mesos 是一個分布式內核,Marathon 是一個框架,二者結合即可為企業提供完整的容器集群管理引擎。

容器管理平臺

容器管理平臺與容器編排引擎一樣用于管理容器集群,但容器管理平臺是位于容器編排引擎之上的平臺, 它可以兼容各類容器編排引擎。
?
容器管理平臺將編排引擎的功能抽象化地呈現在Web頁面中,使用戶的管理方式更加簡單。常見的容器管理平臺如圖所示。
在這里插入圖片描述

容器PaaS

PaaS (Platform as a Service,平臺即服務) 是指將研發平臺或環境作為一種服務,通過商業模式提供給用戶或企業。
?
容器 PaaS 就是基于容器的 PaaS,開發人員無須對低層設施進行操作,直接在 PaaS 上進行研發。常見的容器 PaaS 如圖所示。
在這里插入圖片描述

🍑 支持技術

容器支持技術是用來支持容器設備的技術,有了這些技術的支持,容器才能完整地運行并運用到企業中,如圖所示。
在這里插入圖片描述

容器網絡

容器運行在物理機中,一臺物理機中又可能會有多個容器。
?
由于業務的架構不同,容器與容器之間或者容器與其他設備之間,都可能需要網絡支持,但它們又相互隔離。
?
容器網絡技術的出現解決了各個設備之間復雜的網絡問題。常見的容器網絡技術如圖所示。
在這里插入圖片描述
Docker Network 是 Docker 容器本身的網絡技術,Flannel、Weave與 Calico 都是主流的第三方容器網絡技術,企業根據業務的不同需求選擇不同的容器網絡技術。

服務發現

容器集群是動態的,訪問量增大就會自動創建容器,訪問量減小就會自動銷毀容器,還會根據業務需要進行容器遷移。
?
在這樣一系列的變動之后,業務信息也發生改變,服務發現技術將這些變動之后的最新信息通知客戶機,讓客戶能夠準確地訪問服務。常見的服務發現技術如圖所示。
在這里插入圖片描述

容器監控

在傳統的服務集群中,為確保業務的正常運行,需要對業務進行監控管理。容器集群是動態的,這無疑給容器監控帶來了挑戰。常見的容器監控工具如圖所示。
在這里插入圖片描述
docker ps/top/stats 是 Docker 自帶的命令行形式的監控工具,docker stats API 是通過接口使用戶可以獲取容器狀態的工具。

數據管理

容器集群既然為用戶提供服務,就會產生數據,為保證這些數據的安全性,就有了容器的數據管理技術。
?
數據管理技術可以使容器集群發生變化時,不對持久化數據造成損失,并且完整地保留新的數據。常見的數據管理技術如圖所示。
在這里插入圖片描述

日志管理

在用戶訪問網站時,Web 服務會將訪問信息記錄到特定的文件當中,這些文件就是日志文件。
常見的日志管理工具如圖所示。
在這里插入圖片描述
Docker Logs 是 Docker 容器自帶的日志管理工具。Logspout 通過容器接口從各個容器中收集日志信息,將收集到的日志信息發送給后續的程序進行處理,最終日志信息被寫入日志系統。

容器安全

容器的安全性是企業工程師們時刻要關注的,也是整個企業都需要重視的事情。常見的容器安全工具如圖所示。
在這里插入圖片描述
Docker 本身也是有安全機制的,它通過對資源的限制與對信息的過濾來提高容器的安全性。另外,還有其他的第三方安全工具,如 Docker Bench、Clair 等。
?
Docker Bench 會按照相關安全規范來對容器進行一系列檢查。
?
Clair 通過對鏡像文件的掃描來發現容器的潛在風險。

4. 總結

本篇文章介紹了容器的基本概念、虛擬化技術、Docker容器相對于傳統虛擬化技術的優勢,以及Docker容器在企業項目中存在的必要性。
?
我們可以清晰地感受到 Docker 容器在生產環境中帶給我們的巨大便利,以及容器對于企業的重要性。

在這里插入圖片描述


---------------------
作者:飛向星的客機
來源:CSDN
原文:https://blog.csdn.net/m0_63325890/article/details/124675481
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

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

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

相關文章

微服務:事務管理

幾乎所有的信息管理系統都會涉及到事務,事務的目的是為了保證數據的一致性,這里說的一致性是數據庫狀態的一致性。說到數據庫狀態的一致性,相信大家都會想到 ACID :原子性(Atomic):在一個事件的…

js - flex布局測試案例:完美居中

<span>I love flex layout!</span><style>body{display:flex;justify-content:center;align-items:center;font-size:3em;color:#00ffff;}</style>![enter image description here][1]<p>與自己為敵&#xff0c;</p><p>與自己為友&a…

操作數據庫(對戰小游戲)

創建數據庫 1 create database duizhan2 go3 use duizhan4 go5 create table duizhan6 (7 Code varchar(20) not null primary key,8 Name varchar(20) not null,9 Sex varchar(20) not null, 10 Blood int, 11 Attack int, 12 Defence int, 13 Mingzhong…

8-Python3從入門到實戰—基礎之數據類型(集合-Sets)

Python從入門到實戰系列——目錄 集合的定義 集合&#xff08;set&#xff09;和字典類似&#xff0c;也是一組key的集合&#xff0c;但不存儲value&#xff1b;由于key不能重復&#xff0c;所以&#xff0c;在set中&#xff0c;沒有重復的key。創建一個set&#xff0c;需要提供…

Redis的那些事:一文入門Redis的基礎操作

Redis是什么Redis&#xff0c;全稱是Remote Dictionary Service,翻譯過來就是&#xff0c;遠程字典服務。redis屬于nosql非關系型數據庫。Nosql常見的數據關系&#xff0c;基本上是以key-value鍵值對形式存在的。Key-value: 就像翻閱中文字典或者單詞字典&#xff0c;通過指定的…

10種提問型爆文標題句式 直接套用

如果你用1天的時間來寫篇好文章&#xff0c;那你花掉半天時間想一個好標題都不過分&#xff01; 你是不是覺得我有點言過其實了&#xff1f;沒關系&#xff0c;先來問你2個問題&#xff1a; 1、花了很長時間&#xff0c;寫了一篇很牛的賣貨推文&#xff0c;定稿后&#xff0c…

同域和不同域長啥樣

相同域http://www.jiangdou.com/http://www.jiangdou.com/maidou 不同域http://www.jiangdou.comhttp://bbs.jiangdou.comhttps://www.jiangdou.comhttp://www.jiangdou.com:8080轉載于:https://www.cnblogs.com/MaiJiangDou/p/6689133.html

2016 China Joy搶先看,文末有彩蛋!

這里只有你想不到的&#xff0c;沒有你看不到的。 2016 China Joy開幕在即&#xff0c;天氣成了最折磨各種媒體、展商和觀眾的小妖精&#xff0c;一會艷陽天&#xff0c;一會大暴雨&#xff0c;軒軒現在是這樣的&#xff01; 七月底的魔都&#xff0c;熱的那叫一個銷魂&#x…

JdbcTemplate+PageImpl實現多表分頁查詢

一、基礎實體  MappedSuperclass public abstract class AbsIdEntity implements Serializable {private static final long serialVersionUID 7988377299341530426L;public final static int IS_DELETE_YES 1;// 標記刪除public final static int IS_DELETE_NO 0;// 未刪除…

消息隊列選型手冊

前言 消息隊列中間件重要嗎&#xff1f;面試必問問題之一&#xff0c;你說重不重要。我有時會問同事&#xff0c;為啥你用 RabbitMQ&#xff0c;不用 Kafka&#xff0c;或者 RocketMQ 呢&#xff1f; 他給我的回答&#xff1a;“因為公司用的就是這個&#xff0c;大家都這么用…

Jenkins 持續集成國產嵌入式操作系統 RT-Thread 的CI

我們直接在Jenkins的鏡像基礎上進行集成RT-Thread 的編譯環境&#xff0c; 這樣直接使用Shell 命令 最直接了當&#xff0c; 通過 第三方docker等插件&#xff0c; 嘗試了計重方案&#xff0c; 沒有找到理想中的感覺&#xff0c; 如果其他人有想法可以告知一二。 我們有現成的鏡…

codevs原創抄襲題 5960 信使

題目描述 Description?戰爭時期&#xff0c;前線有n個哨所&#xff0c;每個哨所可能會與其他若干個哨所之間有通信聯系。信使負責在哨所之間傳遞信息&#xff0c;當然&#xff0c;這是要花費一定時間的&#xff08;以天為單位&#xff09;。指揮部設在第一個哨所。當指揮部下達…

VC解析XML--使用CMarkup類解析XML

經過今天嘗試MFC解析XML串&#xff0c;也算有了不少收獲&#xff0c;總結一下。 我是使用的CMarkup類對XML進行操作。 CMarkup好象都是先從一個xml文件里面把內容讀出來&#xff0c;再進行解析&#xff0c;搞得我恨不得要把我的CString寫到xml文件里面…

MongoDB精華總結

概述 MongoDB是屬于文檔型的NoSQL數據庫&#xff0c;也就是文檔數據庫。文檔數據庫區別于傳統的其它數據庫&#xff0c;它是用來管理文檔。在傳統的數據庫中&#xff0c;信息被分割成離散的數據段&#xff0c;而在文檔數據庫中&#xff0c;文檔是處理信息的基本單位&#xff0c…

認清性能問題

本文翻譯自 Thinking Clearly About Performance 這是我三年前讀到的一篇關于性能問題的好文&#xff0c;讀完后還覺不過癮&#xff0c;怕理解的不夠遂又翻譯了一遍&#xff0c;這也是當年我的第一次翻譯。 這幾年來每次碰到性能問題&#xff0c;我都會想起這篇文章&#xff0c…

字節也開始縮招了...

閱讀本文大概需要6分鐘。最近和一個字節技術總監聊天&#xff0c;得知他們公司居然也開始縮招了。這真讓人感到意外&#xff0c;畢竟頭條這些年是以極速擴張而聞名。搜了搜新聞還真是&#xff0c;這也意味著互聯網行業最后一個堅挺的大戶也在開源節流了。最近互聯網行業的情況真…

實現打字效果

摘自一個表白網站的效果。 方法&#xff1a; substr() 可在字符串中抽取從 第一個參數表示從指定的下標&#xff0c;第二個參數表示抽取指定數目的字符。 indexOf() 方法可返回某個指定的字符串值在字符串中首次出現的位置&#xff0c;兩個參數&#xff0c;第一位指定的字符串&…

php優化-》常用到的部分優化

1.循環內部盡可能不要聲明變量&#xff1b; 2.在可以用PHP內部字符串操作函數的情況下&#xff0c;盡量不要用正則表達式&#xff1b; 3.foreach效率更高&#xff0c;盡量用foreach代替while和for循環&#xff1b; 4.用單引號替代雙引號引用字符串&#xff1b; 5.盡量的少進行文…

簡述:分布式CAP理論和BASE理論

目錄 一、什么是CAP&#xff1f; Consistency (一致性)&#xff1a; Availability (可用性): Partition Tolerance (分區容錯性): 二、取舍策略 三、Base理論 1、基本可用 2、軟狀態 3、最終一致性 四、常見產品 Ereka Zookeeper 五、總結 一、什么是CAP&#xf…

WinForm(四)一種實現登錄的方式

首先聲明&#xff0c;這只是一種登錄方式&#xff0c;并不是最好的方式&#xff0c;用這個例子為了說明登錄窗體和Application的關系。在登錄前&#xff0c;定義了用戶實體&#xff0c;然后是一個通用的類&#xff0c;存放進程中當前登錄的用戶&#xff0c;所以CurrentUser是靜…