主頁 > 軟體設計 > ??Docker超詳細基礎教程,快速入門docker首選??(萬字長文建議收藏)

??Docker超詳細基礎教程,快速入門docker首選??(萬字長文建議收藏)

2021-09-06 08:50:52 軟體設計

一、docker概述

1.什么是docker

Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協議開源,
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實作虛擬化,
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器性能開銷極低,
Docker 從 17.03 版本之后分為 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),

簡單來說,docker是一個用來裝應用的容器,就像杯子可以裝水,筆筒可以放筆,書包可以放書,可以把深度學習放在docker中,可以把網站放入docker中,可以把任何想得到的程式放在docker中,

2.docker思想

2.1 集裝箱

如果沒有集裝箱,運輸貨物的時候,東西零散容易丟失,但是一旦有了集裝箱,那么貨物就會被裝載在里面,運輸的時候就不容易丟失了,目前我們需要將程式部署到一臺新的機器上,可能會啟動不起來,比如缺失庫或者組態檔等,那我們如果將程式想象成貨物,我們只需要用一個集裝箱將這些程式打包好,就可以在部署后保證程式可以正常運行,而docker就是這個集裝箱

2.2 標準化

運輸方式:

如果我們把臺式機的應用部署到服務器上,我們可能選擇用移動硬碟拷過去,而有了docker,我們就可以將這個程序標準化,
docker運輸東西通過一個超級碼頭,任何地方需要貨物都由鯨魚先送到超級碼頭,然后再由鯨魚從超級碼頭把貨物送到目的地,
在剛才例子中,我們只需要在臺式機執行一個docker命令,把鯨魚派過來,把程式送到超級碼頭去,再在服務器上執行一個docker命令,然后由鯨魚把程式從超級碼頭送到服務器上去,

存盤方式:

當我們把程式存盤到服務器上時,因為下次我們有可能還要修改存盤目錄,所以我們需要記住這個目錄,而有了docker之后我們就不用記住了程式在哪里了,我們使用的時候只需要一條命令就行了,

API介面:

docker提供了一系列rest api的介面,包含了對docker也就是對我們的應用的一個啟動停止查看洗掉等等,有了docker,通過docker命令就可以對其進行操作,

2.3 隔離

我們在使用虛擬機時有自己的cpu、硬碟、記憶體,完全感覺不到外面主機的存在,docker也差不多,不過它更輕量,我們創建虛擬機可能要幾分鐘,但是docker只需要一秒,最底層的技術是linux一種內核的限制機制,叫做LXC,
LXC是一種輕量級的容器虛擬化技術,最大效率的隔離了行程和資源,通過cgroup、namespace等限制,隔離行程組所使用的物理資源,比如CPU,MEMORY等等,這個機制在7、8年前已經加入到linux內核了,直到2013年docker出世的時候才火起來,大家可能奇怪為什么這么好的技術埋沒這么多年都沒人發現呢?
英雄造時勢,時勢造英雄,如果沒有云計算、敏捷開發、高頻度的彈性伸縮需求,沒有IT行業這么多年長足的發展,也就沒有docker,

3.為什么選擇docker?

作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢

  1. 更高效的利用系統資源,
  2. 更快速的啟動時間
  3. 一致的運行環境
  4. 持續交付和部署
  5. 更輕松的遷移
  6. 更輕松的維護和擴展

4.走進docker

鏡像就是上面說的集裝箱,倉庫就是超級碼頭,容器就是我們運行程式的地方,docker運行程式的程序,就是去倉庫把鏡像拉到本地,然后用一條命令把鏡像運行起來變成容器,
build:構建,就是構建鏡像.
ship:運輸,運輸鏡像,從倉庫和主機運輸.
run:運行的鏡像就是一個容器.
build,ship,run和鏡像,倉庫,容器是一一對應的,

4.1 鏡像

鏡像的英文名叫image,前面我們講到了集裝箱,鯨魚拖著的所有集裝箱就是一個鏡像,

從本質上來說鏡像就是一系列檔案,可以包括我們應用程式的檔案,也可以包括我們應用的運行環境的檔案,既然是檔案,那么是以什么樣的格式在本地保存的呢?

說到存盤格式,就要提到linux的一個存盤技術,叫做聯合檔案系統,它是一種分層的檔案系統,可以將不同的目錄掛到同一個虛擬檔案系統下,

比如test1下有三個檔案夾,test2下有兩個檔案夾,還有一個readme檔案,聯合檔案系統就是可以在一個檔案夾(test)中看到多個檔案夾(test1,test2)中的內容,

通過這種方式可以實作檔案的分層,test1可以把它看作第一層,test2可以把它看作第二層,每一層有每一層自己的檔案,docker就是利用了這種分層的概念實作了鏡像存盤,

鏡像的存盤格式如下圖所示,

這張圖是分層的,最下面一層,上面也是一層層的好像集裝箱羅列在一起,這就是鏡像最直觀的存盤方式,下面是作業系統的引導,上面是linux作業系統,再上面是一些相關的軟體,如果是我們自己的程式,就可以是tomcat,jdk,再往上是應用代碼,每一層是我們自己都可以控制得,最上面一層先忽略不看,因為這是和容器有關的,注意一點,docker鏡像系統的每一層都是只讀的,然后把每一層加載完成之后這些檔案都會被看成是同一個目錄,相當于只有一個檔案系統,docker的這種檔案系統被稱之為鏡像,

4.2 容器

為了便于理解,大家可以把容器想象成虛擬機,每個虛擬機都有自己的檔案系統,可以把上圖整個一部分看成是檔案系統,與虛擬機系統的區別是這里面的檔案系統是一層一層的,并且最下面的n層都是只讀的,只有上面一層是可寫的,為什么要有可寫的這層呢?大家的程式運行起來,勢必會要寫一些日志,寫一些檔案,或者對系統的某一些檔案做一些修改,所以容器在最上面一層創建了可讀可寫的檔案系統

因為鏡像的每一層都是只讀的,所以在程式的運行程序中要寫鏡像檔案時,它會把檔案的每一層拷到檔案的最上層,然后再對它進行修改,修改之后,當我們的應用讀一個檔案時會從頂層進行查找,如果沒有才會找下一層,

由于容器的最上一層是可以修改的,鏡像是不能修改的,這樣就能保證鏡像可以生成多個容器獨立運行,沒有任何干擾,

4.3 倉庫

我們的鏡像是要在其它機器上運行,如何進行傳輸呢?

這就用到了docker倉庫,我們要先把我們的鏡像傳到docker倉庫中,再由目的地把docker倉庫拉過去,這就完成了這樣的一次傳輸程序,

誰提供了這樣的倉庫呢?docker自己提供了hub.docker.com,但是非常慢為了解決這個問題,國內很多公司也在做自己的倉庫,

二、docker安裝

因為在虛擬機中安裝的是linux的redhat7.4,所以接下來將介紹如何在redhat中安裝docker,以下方法通用于linux內核,只是安裝包有可能不同,

安裝需滿足以下要求:

  • 64位作業系統
  • 3.1及以上的Linux內核
  • iptables版本在1.4及以上
  • git版本在1.7及以上
  • A ps executable, usually provided by procps or a similar package.
  • XZ Utils 4.9 or higher
  • A properly mounted cgroupfs hierarchy; a single, all-encompassing cgroup mount point is not sufficient.

通過 uname -r 命令查看你當前的內核版本,

1.在線安裝

1.1 如果安裝過請先卸載

yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine

1.2 安裝依賴設定yum倉庫

安裝依賴:

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

設定倉庫:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

1.3 安裝docker

yum install docker-ce docker-ce-cli containerd.io

1.4 啟動并加入開機啟動

systemctl start docker

systemctl enable docker

1.5 驗證是否安裝成功

docker version

docker run hello-world

能夠看到輸出 Hello from Docker! 就OK了!

2.離線安裝

在某些情況下,我們可能需要離線安裝docker,那么接下來將詳細介紹如何實作docker的離線安裝,

2.1 下載docker壓縮包

從download.docker.com下載對應的docker包,我這里下載的是docker-18.03.1-ce.tgz版本,如果有需要可以直接私信我,

2.2 解壓檔案

[root@devops-102 ~]# tar -xvzf docker-18.03.1-ce.tgz 

2.3 將檔案移動到系統目錄下 excutable path

ps:本步驟為可選步驟,也可以把解壓路徑放到PATH變數中,

$ sudo cp docker/* /usr/bin/

執行后會看到 API listen on /var/run/docker.sock 的提示,表示docker已經在運行了,

2.4 啟動Dockerd

$ sudo dockerd &

2.5 驗證

$ sudo docker run hello-world

能夠看到輸出 Hello from Docker! 就OK了!

2.6 設定開機自啟動

systemctl start docker       

systemctl enable docker

三、docker基礎操作

當我們安裝好docker后,由于我做深度學習方面的研究,所以我們需要安裝相應的深度學習環境,以配置pytorch環境為例,接下來會一步步介紹如何構建一個屬于自己的鏡像,

1.鏡像基本操作

1.1 抓取鏡像

首先我們進入dockerhub網站選擇一個我們需要的鏡像,

然后輸入:

docker pull pytorch/pytorch

通過此命令可以docker遠程倉庫拉取鏡像到本地,

docker pull [options] NAME[:TAG]

name是拉取鏡像的名稱;TAG表示是可選的,如果不選表明時latest,如果選擇表明是指定版本的,
options是拉去的一些引數,當不加請求地址的時候回去docker的官網拉取鏡像,

1.2 查看鏡像

docker images 

通過此命令可以查看當前存在哪些鏡像,

docker images [options] [REPOSITORY[:TAG]]

options是選項,后面是指定鏡像的名稱,這個用的不多,可能當本地鏡像非常多的時候要指定查看某一個鏡像,
IMAGE ID 其實是一個64位的字串,它可以唯一標識我們的鏡像,這里只顯示了16位,后面的被截掉了

1.3 啟動互動式容器

docker run -it -v /home/admin/workplace:/workspaces --name bert_pytorch pytorch/pytorch /bin/bash

docker run -t -i -v 本地目錄:虛擬目錄 --name 自定義名稱 IMAGE_NAME /bin/bash

-i –interactive=true | false,默認是false
-t –tty=true | false,默認是false
–name 給啟動的容器自定義名稱,方便后續的容器選擇操作
啟動互動式的容器,就是類似虛擬機、云主機的操作方式,操作完一個命令后仍然可以繼續

1.4 洗掉鏡像

docker rmi d77dc4c8ebab

docker rmi 鏡像的標識

標識可以是id或者name,

2.容器的操作

2.1 運行容器

# 簡單操作
docker run 鏡像的標識|鏡像名稱[tag]
# 常用的引數
docker run -d -p 宿主機埠:容器埠 --name 容器名稱 鏡像的標識|鏡像名稱[tag]
# -d: 代表后臺運行容器
# -p: 宿主機埠:容器埠: 為了映射當前Linux的埠和容器的埠
# --name 容器名稱: 指定容器的名稱

2.2 查看正在運行的容器

docker ps [OPTIONS]
# OPTIONS說明:
# -a: 代表查看全部的容器,包括沒有運行
# -q: 只查看容器的標識
# -f: 根據條件過濾顯示的內容
# --format: 指定回傳值的模板檔案
# -l: 顯示最近創建的容器
# -n: 列出最近創建的n個容器
# --no-trunc: 不截斷輸出
# -s: 顯示總的檔案大小

2.3 查看容器的日志

docker logs -f 容器id

# -f: 可以滾動查看日志的最后幾行

2.4 進入到容器內部

docker exec -it 容器id bash

2.5 洗掉容器(洗掉容器前,需要先停止容器)

docker stop 容器id
# 停止指定的容器
docker stop $(docker ps -qa)
# 停止全部容器
docker rm 鏡像id
# 洗掉指定容器
docker rm $(docker ps -qa)
# 洗掉全部容器

2.6 啟動容器

docker start 容器id

3.構建鏡像

構建Docker鏡像,可以保存對容器的修改,并且再次使用,構建鏡像提供了自定義鏡像的能力,以軟體的形式打包并分發服務及其運行環境,Docker中提供了兩種方式來構建鏡像:

  • 通過容器構建:docker commit
  • 通過Dockerfile:docker build

3.1 使用commit命令構建鏡像

docker commit 7843e0556e67 bertpytorch

命令:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

引數:
-a,–author=“”,指定鏡像的作者資訊
-m,–message=“”,提交資訊
-p,–pause=true,commit時是否暫停容器

3.2 使用Dockerfile檔案構建鏡像

Docker允許我們利用一個類似組態檔的形式來進行構建自定義鏡像,在檔案中可以指定原始的鏡像,自定義鏡像的維護人資訊,對原始鏡像采取的操作以及暴露的埠等資訊,比如:

# Sample Dockerfile
FROM ubuntu:16.04
MAINTAINER wgp "Kingdompin@163.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80

命令:docker build [OPTIONS] DockerFile_PATH | URL | -

引數:
–force-rm=false
? –no-cache=false
? –pull=false
? -q,quite=false,構建時不輸出資訊
? –rm=true
-t,tag=“”,指定輸出的鏡像名稱資訊

4.鏡像遷移

我們制作好的鏡像,一般會遷移到其他機器上,Docker提供了幾種鏡像遷移分享給其他人的方式,推薦鏡像遷移應該直接使用Docker Registry,無論是直接使用Docker Hub還是使用內網私有Registry都可以,使用鏡像頻率不高,鏡像數量不多的情況下,我們可以選擇以下兩種方式,

4.1 上傳Docker Hub

首先,需要在Docker Hub上申請注冊一個帳號(人機驗證時需要科學上網),然后我們需要創建倉庫,指定倉庫名稱,

在終端中登錄你的Docker Hub賬戶,輸入docker login,輸入用戶名密碼即可登錄成功,

查看需要上傳的鏡像,并將選擇的鏡像打上標簽,標簽名需和Docker Hub上新建的倉庫名稱一致,否則上傳失敗,給鏡像打標簽的命令如下,

docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]

其中existing-image代表本地待上傳的鏡像名加tag,后面<hub-user>/<repo-name>[:<tag>]則是為上傳更改的標簽名,tag不指定則為latest,

接下來,我們利用push命令直接上傳鏡像,

docker push <hub-user>/<repo-name>:<tag>

我們已經上傳成功,由于之前介紹的分層存盤系統,我們這里是直接對已有的ubuntu鏡像進行上傳,只是重新打了標簽,所以真正上傳的只是變化的部分,

4.2 匯出檔案互傳

Docker 還提供了 docker load 和 docker save 命令,用以將鏡像保存為一個tar檔案,比如這次我們將bertpytorch:latest這個鏡像保存為tar檔案,

docker save -o bertpytorch.tar bertpytorch

docker save -o <倉庫名稱>-<tag>.img <倉庫名稱>:<tag>

查看本地磁盤,即可看見名為bertpytorch的tar包,我們可以將其拷貝給其他機器,再利用load命令重新匯入,

docker load --input bertpytorch.tar

docker save --input <tar>

四、常用linux操作

1.檔案和目錄

cd /home 進入 '/ home' 目錄'
cd .. 回傳上一級目錄
cd ../.. 回傳上兩級目錄
cd 進入個人的主目錄
cd ~user1 進入個人的主目錄
cd - 回傳上次所在的目錄

pwd 顯示作業路徑

mkdir dir1 創建一個叫做 'dir1' 的目錄'
mkdir dir1 dir2 同時創建兩個目錄
mkdir -p /tmp/dir1/dir2 創建一個目錄樹

rm -f file1 洗掉一個叫做 'file1' 的檔案'
rmdir dir1 洗掉一個叫做 'dir1' 的目錄'
rm -rf dir1 洗掉一個叫做 'dir1' 的目錄并同時洗掉其內容
rm -rf dir1 dir2 同時洗掉兩個目錄及它們的內容

cp file1 file2 復制一個檔案
cp dir/* . 復制一個目錄下的所有檔案到當前作業目錄
cp -a /tmp/dir1 . 復制一個目錄到當前作業目錄
cp -a dir1 dir2 復制一個目錄
cp -r dir1 dir2 復制一個目錄及子目錄

linux涉及到docker的基礎命令會不斷更新,建議收藏,不時查閱!!!

如果該文章對您有所幫助,麻煩點贊,關注,收藏三連支持下!

各位的支持和認可,是我創作的最大動力!


參考:

Docker超詳細基礎教程

docker入門(利用docker部署web應用)

Docker 入門到實戰教程(一)介紹Docker

Docker——入門實戰

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297891.html

標籤:其他

上一篇:萬字長文|十大基本排序,一次搞定!

下一篇:開學了,計算機的大學生們,送你們一篇經書,希望你們的四年不負年華!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more