摘要:年容器大火,圍繞著容器技術(shù)的發(fā)展也涌現(xiàn)了許多新項(xiàng)目。項(xiàng)目類本節(jié)綜述了目前開源社區(qū)和互聯(lián)網(wǎng)公司圍繞容器技術(shù)開發(fā)的相關(guān)項(xiàng)目。是公司開源項(xiàng)目,旨在為提供守護(hù)進(jìn)程。
2015年容器大火,圍繞著容器技術(shù)的發(fā)展也涌現(xiàn)了許多新項(xiàng)目。同時(shí),許多“老”項(xiàng)目也開始支持容器作為運(yùn)行環(huán)境。下面介紹這些項(xiàng)目:
規(guī)范標(biāo)準(zhǔn)類容器使用了Linux內(nèi)核的特性,Docker的成功也主要在于其充分挖掘了此類特性。但Docker流行之后,社區(qū)開始思考怎么定義一套完整的容器規(guī)范標(biāo)準(zhǔn),使容器的規(guī)范不再局限于Docker。同時(shí),Docker僅僅定義了一個(gè)容器,多容器的互聯(lián)也需要規(guī)范標(biāo)準(zhǔn)。下面提到的項(xiàng)目是目前主流的標(biāo)準(zhǔn),有的并非為容器而生,但也在為容器規(guī)范化做出努力。
OCF
OCF(Open Container Format)是由OCI(Open Container Initiative)發(fā)布的一套容器規(guī)范和運(yùn)行時(shí)環(huán)境,其初步版本基于Docker鏡像和運(yùn)行時(shí),但是最終目的是定義一套不受任何軟硬件平臺(tái)、不受任何公司和項(xiàng)目束縛的容器標(biāo)準(zhǔn)。OCI由各大廠商組成,包括谷歌、紅帽、華為等。OCF對(duì)標(biāo)準(zhǔn)容器規(guī)范指定了5條規(guī)則:
標(biāo)準(zhǔn)化操作:例如,創(chuàng)建容器、刪除容器、打包容器等操作都必須標(biāo)準(zhǔn)化;
內(nèi)容無關(guān)性:不管容器內(nèi)部?jī)?nèi)容是什么,上述操作不能有任何行為上的變化;
平臺(tái)無關(guān)性:在任何OCI支持的平臺(tái)上,上述操作都必須能夠無差別執(zhí)行;
為自動(dòng)化而設(shè)計(jì):標(biāo)準(zhǔn)容器是為自動(dòng)化而生,其規(guī)范必須滿足自動(dòng)化條件;
企業(yè)級(jí)交付:標(biāo)準(zhǔn)容器需要適用于企業(yè)級(jí)流水線交付任務(wù)。
下面簡(jiǎn)要介紹OCF標(biāo)準(zhǔn)。目前,OCI定義一個(gè)容器包含如下內(nèi)容:
config.json
runtime.json
rootfs/
config.json表示與容器相關(guān)的配置,例如啟動(dòng)容器之后執(zhí)行的命令,容器的環(huán)境變量等
runtime.json表示與host相關(guān)的配置,例如對(duì)cgroup、namespace的支持
rootfs表示容器可見的根目錄,即容器中的“/”目錄。OCF對(duì)其內(nèi)容不作約束,常見的子目錄有l(wèi)ib, bin等等。
任何基于OCF規(guī)范實(shí)現(xiàn)的命令行工具,都可以解析上述內(nèi)容并管理容器,例如runC(click here),TODO。
目前為止,OCI主要精力集中在容器運(yùn)行環(huán)境,之后,OCI還將對(duì)容器打包、驗(yàn)證、分發(fā)等模塊進(jìn)行標(biāo)準(zhǔn)化??偠灾?,OCI是繼Docker大火之后,社區(qū)對(duì)容器標(biāo)準(zhǔn)的一種嘗試,現(xiàn)在已經(jīng)得到非常多大公司的認(rèn)可。
appCappC是CoreOS提出的容器運(yùn)行標(biāo)準(zhǔn),早于OCF標(biāo)準(zhǔn)。CoreOS目前是OCI成員之一,在大力推進(jìn)OCI的發(fā)展,appC和OCI最終可能會(huì)合并為一個(gè)標(biāo)準(zhǔn)。不同于OCI,appC更加成熟,其內(nèi)容除了容器運(yùn)行時(shí)環(huán)境,還包括:
打包規(guī)范:appC定義了如何將一個(gè)應(yīng)用打包(tar文件),如何保持環(huán)境變量、掛載點(diǎn)等內(nèi)容。相比之下,OCF僅定義了目錄結(jié)構(gòu)。
鏡像驗(yàn)證:appC定義了如何驗(yàn)證鏡像內(nèi)容未被修改過,如何保證鏡像安全傳輸;
鏡像傳輸:appC定義了鏡像傳輸?shù)臋C(jī)制,包括https, bittorrent等,這一點(diǎn)與Docker的centralized hub有明顯的區(qū)別。
目前基于appC規(guī)范已經(jīng)有不少實(shí)現(xiàn),如Jetpack, Kurma, rkt等。其中rkt是CoreOS對(duì)appC的標(biāo)準(zhǔn)實(shí)現(xiàn)。
NuleculeDocker對(duì)應(yīng)用的打包方式僅僅局限于單個(gè)容器層面,我們可以使用Dockerfile描述一個(gè)容器配置,然后打包、分發(fā)鏡像,之后該容器便可以在任何Linux機(jī)器上運(yùn)行。但是,Docker缺少一個(gè)多容器運(yùn)行的標(biāo)準(zhǔn):既如何描述一個(gè)由多容器組成的應(yīng)用。目前一些基于Docker的集群管理系統(tǒng)已經(jīng)能夠支持多容器的部署,比如Docker Swarm,Kubernetes,但是這些系統(tǒng)并沒有定義一個(gè)標(biāo)準(zhǔn)的、通用的、可移植的格式。此外,此類系統(tǒng)的特點(diǎn)是將多容器應(yīng)用的部署當(dāng)做系統(tǒng)的狀態(tài),即他們更多的是強(qiáng)調(diào)應(yīng)用的調(diào)度、互聯(lián)、監(jiān)控,而非應(yīng)用的部署。缺少?gòu)?fù)合應(yīng)用的支持,使Docker的許多特點(diǎn)黯然失色,因?yàn)閷?shí)際生產(chǎn)環(huán)境中的應(yīng)用必然是由多應(yīng)用構(gòu)成的。例如:我們現(xiàn)在可以很方便地部署一個(gè)redis容器,但是部署redis cluster容器很困難,更不用說基于redis cluster的應(yīng)用。
紅帽公司在2015年提出了Nulecule,該項(xiàng)目定義了一個(gè)多容器應(yīng)用部署的規(guī)范,包括應(yīng)用的元數(shù)據(jù)、依賴、參數(shù)配置等等。應(yīng)用發(fā)布者只需要依照Nulecule的規(guī)范提供應(yīng)用的構(gòu)成方式,然后將此構(gòu)成方式打包成Docker鏡像發(fā)布。Nulecule的打包方式可以參考:點(diǎn)擊這里。 具體來講,Nucecule包括以下文件:
|- Dockerfile
|-artifacts
│ ? └── kubernetes
│ ? ? ? |- pod.json
│ ? ? ? └── service.son
|- Nulecule
└── README.md
Dockerfile將該目錄所有文件打包成Docker鏡像;
Nulecule文件是具體的應(yīng)用描述,例如每個(gè)組件的容器鏡像,還包括上面提到的依賴、參數(shù)配置等;
artifacts目錄包括底層集群管理系統(tǒng)所使用的配置文件。
Nulecule本身只是一個(gè)規(guī)范文檔,紅帽公司基于Nulecule實(shí)現(xiàn)了Project Atomic,包括命令行工具atomic。運(yùn)行一個(gè)應(yīng)用和運(yùn)行一個(gè)容器的方式幾乎相同,例如:使用下述命令即可啟動(dòng)一個(gè)應(yīng)用:“atomic run company/myapp:v0.1”。其中鏡像company/myapp:v0.1為前文提到的打包后的Docker鏡像。
TOSCATOSCA(Topology and Orchestration Specification for Cloud Applications),是OASIS維護(hù)的一套用于描述應(yīng)用和基礎(chǔ)設(shè)施的標(biāo)準(zhǔn),包括服務(wù)組件類型、組件關(guān)系、操作方式(例如,部署,補(bǔ)丁,關(guān)機(jī))等等。這些描述獨(dú)立于創(chuàng)建服務(wù)的供應(yīng)商、任何特定的云服務(wù)提供商或托管服務(wù)的技術(shù)。采用TOSCA標(biāo)準(zhǔn)的項(xiàng)目主要有OpenStack Heat,Cloudily等。
TOSCA并非為容器而生,有人將TOSCA和Nulecule做對(duì)比,認(rèn)為Nulecule可以粗略地理解成容器版的TOSCA 。盡管有相似之處,但TOSCA包含了大量規(guī)范細(xì)則,涉及面非常廣。
Cloud Native經(jīng)過長(zhǎng)期發(fā)展,云計(jì)算領(lǐng)域逐漸認(rèn)識(shí)到應(yīng)用架構(gòu)模式已經(jīng)成為云計(jì)算發(fā)展的瓶頸,因此,國(guó)外幾乎所有互聯(lián)網(wǎng)公司聯(lián)合成立了Cloud Native Computing Foundation,來促進(jìn)云計(jì)算的發(fā)展,旨在提高企業(yè)對(duì)上述模式的采納程度。簡(jiǎn)單來講,cloud native指的是:
容器為載體:使用容器作為應(yīng)用運(yùn)行、交付的載體,可以提高開發(fā)效率、增大代碼重用率、簡(jiǎn)化部署等;
動(dòng)態(tài)管理:建立一套中心管理系統(tǒng)(私有云或公有云)來動(dòng)態(tài)調(diào)度容器、機(jī)器資源,提高運(yùn)維效率,機(jī)器使用率;
微服務(wù)架構(gòu):利用服務(wù)依賴解耦合來提高敏捷性,降低代碼維護(hù)開銷。
項(xiàng)目類本節(jié)綜述了目前開源社區(qū)和互聯(lián)網(wǎng)公司圍繞容器技術(shù)開發(fā)的相關(guān)項(xiàng)目。這里只列舉出了較為完善和流行的項(xiàng)目。
Docker Machine
Docker Machine是Docker公司為解決Docker安裝、環(huán)境配置等問題而開發(fā)項(xiàng)目,現(xiàn)在已經(jīng)支持10余種云平臺(tái)和虛擬機(jī)軟件,包括AWS、OpenStack、VirtualBox等。創(chuàng)建一個(gè)支持Docker的機(jī)器只需要使用命令:“docker-machine create –d virtualbox default” 。Docker Machine屏蔽了底層資源的復(fù)雜性,使得開發(fā)人員可以自動(dòng)化創(chuàng)建、刪除機(jī)器資源,盡可能地避免在平臺(tái)差異性上消耗精力。
Swarm
Swarm是Docker公司為解決容器集群化而開發(fā)的項(xiàng)目。Swarm將多臺(tái)主機(jī)抽象成一臺(tái)主機(jī),用戶可以像使用一臺(tái)主機(jī)般使用Docker。例如,當(dāng)使用命令“docker run app”時(shí),Swarm會(huì)根據(jù)集群狀態(tài)將容器調(diào)度到一臺(tái)遠(yuǎn)程的服務(wù)器運(yùn)行,用戶同樣可以使用“docker ps”來查看當(dāng)前容器狀態(tài)。對(duì)于用戶而言,Swarm的調(diào)度是透明的。Swarm極大程度地兼容了Docker的API,同時(shí)有效地調(diào)度集群資源,向容器集群化邁出了一大步。Swarm還在不斷開發(fā)中,需要解決容器互聯(lián)、數(shù)據(jù)共享等迫切問題。
Compose
Compose是Docker公司解決容器編排的項(xiàng)目,其前身是Fig項(xiàng)目。Compose解決的問題類似Nulecule規(guī)范,既如何部署多容器應(yīng)用。不管是Docker本身也好,Machine、Swarm等項(xiàng)目也好,都集中在了單容器應(yīng)用,Compose很大程度上是對(duì)前面項(xiàng)目的補(bǔ)充。用戶向Compose提交一個(gè)yaml文件,包含所有容器的配置,例如各自的端口、容器互聯(lián)信息等;Compose根據(jù)該文件內(nèi)容,啟動(dòng)容器。Compose的具體格式,可以參考:https://docs.docker.com/compo...
Mesos
Mesos是一套資源管理與調(diào)度平臺(tái),目前可以支持上千臺(tái)機(jī)器的管理任務(wù)。Mesos對(duì)資源的管理方式是獨(dú)有的兩層調(diào)度:Mesos核心調(diào)度器負(fù)責(zé)管理所有機(jī)器資源,并為上層Framework提供計(jì)算資源。Framework是第二層調(diào)度器,它根據(jù)核心調(diào)度器提供的資源判斷是否滿足需求,如果滿足需求,則運(yùn)行Framework所管理的任務(wù);否則重新像核心調(diào)度器申請(qǐng)資源。常見的Framework有Marathon, Chronos,分別負(fù)責(zé)長(zhǎng)時(shí)間運(yùn)行的服務(wù)和Cron任務(wù),其他Framework還包括常用的大數(shù)據(jù)平臺(tái),例如Spark、Hadoop等。
Kubernetes
Kubernetes來自于Google內(nèi)部的大規(guī)模集群管理工具Borg,根據(jù)官方說法“Kubernetes代表了Google過去十余年設(shè)計(jì)、構(gòu)建和管理大規(guī)模容器集群的經(jīng)驗(yàn)”。簡(jiǎn)單地說,Kubernetes是一個(gè)管理跨主機(jī)的容器化應(yīng)用的系統(tǒng),支持多容器部署、高可用性、應(yīng)用彈性伸縮、跨主機(jī)網(wǎng)絡(luò)、負(fù)載均衡、服務(wù)發(fā)現(xiàn)等應(yīng)用級(jí)功能,同時(shí)支持集群自恢復(fù)機(jī)制、資源調(diào)度、資源隔離、監(jiān)控等集群級(jí)功能。Kubernetes是目前唯一遵循“一切皆容器”的項(xiàng)目,既所有功能都是基于“應(yīng)用容器化”實(shí)現(xiàn),并穩(wěn)定而快速地發(fā)展著。
Hyper
Hyper是HyperHQ公司發(fā)布了的一個(gè)開源項(xiàng)目,初衷是結(jié)合Docker容器和虛擬機(jī)的優(yōu)點(diǎn),可以在hypervisor上運(yùn)行Docker鏡像的引擎。根據(jù)Hyper官方的說法,他們與Docker的核心區(qū)別在于Hyper沒有使用Container技術(shù),而是通過VM直接運(yùn)行Docker鏡像,是一個(gè)完全基于虛擬化的解決方案。
Containerd
Containerd是docker公司開源項(xiàng)目,旨在為runC提供守護(hù)進(jìn)程。Containerd沿襲了docker C/S的結(jié)構(gòu),server守護(hù)進(jìn)程的核心是一個(gè)eventloop,負(fù)責(zé)監(jiān)聽容器的創(chuàng)建,銷毀,快照等事件;client名為ctr,通過gRPC與server通信。Containerd還處在非常早期的階段,功能還并不完善。docker公司發(fā)布該項(xiàng)目的主要是表明其對(duì)容器生態(tài)環(huán)境的支持,也同時(shí)汲取runC高級(jí)特性對(duì)docker進(jìn)行互補(bǔ)。
Clear Container
Clear Container是由intel推出的Clear Linux( Clear Linux是Intel提供的面向云場(chǎng)景的linux發(fā)行版)中的一項(xiàng)技術(shù), 通過將虛擬機(jī)和容器結(jié)合起來,旨在提供安全容器。官方宣稱目標(biāo)是讓用戶可以充分使用虛擬機(jī)的隔離,同時(shí)擁有容器的部署能力。
RancherOS
RancherOS是Rancher Labs的一個(gè)開源項(xiàng)目,其宗旨是開發(fā)一個(gè)支持docker的最小化操作系統(tǒng)。在RancherOS中,所有應(yīng)用都采用容器,包括系統(tǒng)程序udev, rsyslog等;同時(shí),RancherOS用docker daemon取代了傳統(tǒng)的初始化系統(tǒng)如sysvinit、systemd。承載初始化任務(wù)的docker daemon稱為系統(tǒng)Docker,該系統(tǒng)docker會(huì)創(chuàng)建一個(gè)特殊的系統(tǒng)服務(wù)容器,即用戶Docker,來負(fù)責(zé)管理用戶的docker容器,避免了用戶對(duì)系統(tǒng)docker容器的直接操作。具體系統(tǒng)結(jié)構(gòu)可以參加github項(xiàng)目主頁:https://github.com/rancher/os
CoreOS
CoreOS本身是Linux的一個(gè)發(fā)行版,但與其他發(fā)行版(如Centos、Ubuntu)有著很大的區(qū)別:CoreOS是為容器集群而生。不同于許多基于Linux做容器管理、編排系統(tǒng)的項(xiàng)目,CoreOS將這些功能并入了操作系統(tǒng)中。這樣,每個(gè)裝有CoreOS的主機(jī)就可以隨時(shí)隨地加入一個(gè)CoreOS集群而不需要額外配置。對(duì)開發(fā)人員而言,無論集群中有多少CoreOS主機(jī),操作方法都是相同的。CoreOS主要開發(fā)了兩個(gè)項(xiàng)目來達(dá)到這一目的:etcd和Fleet。etcd是分布式的鍵值存儲(chǔ)系統(tǒng),主要負(fù)責(zé)CoreOS集群中節(jié)點(diǎn)間的服務(wù)發(fā)現(xiàn)和配置共享;etcd提供多種功能來保證集群的高可用性。Fleet是分布式的systemd系統(tǒng)。對(duì)用戶而言,與操作單機(jī)systemd無差別,fleet會(huì)將用戶的systemd unit動(dòng)態(tài)分發(fā)到集群中。
Project Atomic
Project Atomic是紅帽公司開發(fā)的操作系統(tǒng),專門為運(yùn)行容器而作了優(yōu)化。Project Atomic采用docker運(yùn)行容器、kubernetes管理容器,使用systemd做系統(tǒng)服務(wù),rpm-ostree做系統(tǒng)包管理。其中rpm-ostree實(shí)現(xiàn)了Atomic升級(jí),是紅帽主推的功能之一。它的核心原理是升級(jí)操作系統(tǒng)是原子操作。Atomic會(huì)將需要升級(jí)的內(nèi)容保存在專門的目錄,分開存儲(chǔ),如此以來,Atomic可以將操作系統(tǒng)的變更進(jìn)行版本控制,當(dāng)出現(xiàn)問題,可以快速回滾到上一個(gè)版本。
Ubuntu Core
Ubuntu是一個(gè)專為云平臺(tái)和智能設(shè)備打造的全新ubuntu操作系統(tǒng)。Canonical公司對(duì)Ubuntu Core的核心優(yōu)勢(shì)做出以下幾點(diǎn)評(píng)論:安全:Snappy應(yīng)用受Canonical的AppArmor內(nèi)核安全系統(tǒng)限制,該系統(tǒng)提供了嚴(yán)格的、基于MAC的隔離和人性化的安全配置文件。可靠性:Snappy可以提供可靠的更新,在自動(dòng)修復(fù)安全問題的同時(shí),它還能夠更快地更新云上的服務(wù)器。更好的開發(fā)體驗(yàn):創(chuàng)建snappy Ubuntu應(yīng)用比傳統(tǒng)打包方式簡(jiǎn)單許多。擴(kuò)展性:Ubuntu Core支持許多模塊化框架,它們可以由與Canonical合作的供應(yīng)商提供。ubuntu core包含四層:Application, Framework, Ubuntu Core和Enablement層。Application層將所有應(yīng)用進(jìn)行了隔離,因此用戶可以下載安裝任意的應(yīng)用;fromework曾用來擴(kuò)張ubuntu core,例如docker即是ubuntu core中的一個(gè)framework,為ubuntu core提供運(yùn)行容器的框架。Ubuntu Core層即Canonical提供的最小OS,用戶可以通過snappy命令行安裝多個(gè)ubuntu core,來對(duì)系統(tǒng)進(jìn)行原子更新。Enablement層是硬件層,由設(shè)備提供商或者Canonical公司提供。Canonical公司有意將snappy安裝模式引入到新的ubuntu桌面系統(tǒng),使snappy包管理和debian packages (deb)共存。至于是否snappy會(huì)代替dpkg,還有待時(shí)間的考量。
Microsoft Nano
Nano是Windows Server帶來一個(gè)全新的Nano Server選項(xiàng)。這是微軟配合Docker所產(chǎn)生的一個(gè)底層的OS. 據(jù)微軟稱,Nano Server體積非常苗條、極為精簡(jiǎn),極佳優(yōu)勢(shì),剝離了GUI,專注于云基礎(chǔ)設(shè)施、云應(yīng)用程序以及容器。
VMware Photon
Vmare Photon是Vmware為vSphere而優(yōu)化的Linux發(fā)行版,專門為運(yùn)行容器而生,支持多項(xiàng)容器技術(shù)如docker, rkt和pivatal garden container。Vmware Photon的設(shè)計(jì)也遵循了其他最小化OS,具有運(yùn)行快,體積苗條,強(qiáng)化容器安全等優(yōu)點(diǎn)。Photon的主要使用對(duì)象是采用了Vmware虛擬化技術(shù)的客戶 - Photon可以使他們輕松地在已有的基礎(chǔ)設(shè)施中運(yùn)行容器,并得到企業(yè)級(jí)的支持。
原文作者:
才云科技首席技術(shù)官 鄧德源
曾為美國(guó)谷歌(Google)集群管理組核心成員(Cluster Management Team),主要參與開發(fā)集群管理系統(tǒng):該系統(tǒng)為谷歌所有運(yùn)維工程師提供統(tǒng)一的集群管理入口,是谷歌自動(dòng)化運(yùn)維的重要組成部分,其主要職責(zé):管理運(yùn)維工程師提交的生產(chǎn)環(huán)境變更請(qǐng)求,自動(dòng)化風(fēng)險(xiǎn)分析,自動(dòng)化生產(chǎn)環(huán)境準(zhǔn)備工作,以及各種集群容錯(cuò)處理。此系統(tǒng)保證了系統(tǒng)升級(jí)、軟硬件錯(cuò)誤等均能及時(shí)被發(fā)現(xiàn)并處理,保證谷歌集群能24/7小時(shí)不間斷工作。在谷歌期間作為核心成員參加了開發(fā)基于容器集群的谷歌開源項(xiàng)目(Kubernetes),一度成為全球前十的貢獻(xiàn)者和貢獻(xiàn)最高的華人。該項(xiàng)目將谷歌多年內(nèi)部使用容器的經(jīng)驗(yàn)以開源的形式呈現(xiàn)給所有開發(fā)者,被稱為谷歌用來顛覆現(xiàn)有云計(jì)算市場(chǎng)和技術(shù),在谷歌內(nèi)部受到極高的重視和優(yōu)先級(jí),在開源和云計(jì)算社區(qū)也獲得了極高地反響。
于2013年獲美國(guó)頂級(jí)計(jì)算機(jī)學(xué)府Carnegie Mellon University (CMU)大學(xué)電子與計(jì)算機(jī)工程學(xué)位,專修操作系統(tǒng)、分布式計(jì)算等方向。2011年畢業(yè)于電子科技大學(xué)機(jī)械與自動(dòng)化專業(yè)。于2010年參與亞太機(jī)器人大賽,代表電子科大獲全國(guó)第一名,后代表中國(guó)隊(duì)在埃及獲金牌。
(如果需要轉(zhuǎn)載,請(qǐng)聯(lián)系我們哦,尊重知識(shí)產(chǎn)權(quán)人人有責(zé);)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26521.html
摘要:效果圖為了讓效果更明顯,特意設(shè)置了兩邊字體大小不同關(guān)鍵代碼父容器子容器這里要提一下的是,只對(duì)于內(nèi)聯(lián)元素或者內(nèi)聯(lián)內(nèi)容有效,比如說為塊級(jí)元素標(biāo)簽設(shè)置行高,實(shí)際上是為標(biāo)簽中的內(nèi)聯(lián)文字設(shè)置了行高。允許指定負(fù)長(zhǎng)度值和百分比值。 前言 先扯一段廢話來引入好了。又很久沒有寫文章了(間接性躊躇滿志,持續(xù)性混吃等死),幾個(gè)月了登上來看到有人收藏和點(diǎn)贊,感到很慚愧,最近主要精力花費(fèi)在react和redux...
摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書一本書看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...
閱讀 2457·2023-05-11 16:55
閱讀 3572·2021-08-10 09:43
閱讀 2688·2019-08-30 15:44
閱讀 2514·2019-08-29 16:39
閱讀 646·2019-08-29 13:46
閱讀 2078·2019-08-29 13:29
閱讀 985·2019-08-29 13:05
閱讀 752·2019-08-26 13:51