主頁 > 軟體設計 > Linux進階 | Docker部署nginx的web服務,VOLUME的使用詳解,實作資料持久化!

Linux進階 | Docker部署nginx的web服務,VOLUME的使用詳解,實作資料持久化!

2021-09-01 14:09:56 軟體設計

創作不易,來了的客官點點關注,收藏,訂閱一鍵三連?😜


前言

運維之基礎——Linux,我是一個即將畢業的大學生,超超,如果你也在學習Linux,不妨跟著萌新超超一起學習Linux,拿下Linux,一起加油,共同努力,拿到理想offer!


系列文章

Linux進階 | 2萬字總結最詳細的Docker的安裝、底層隔離機制和簡單使用!建議收藏,持續更新?

Linux | 詳解系統監控和常用命令(top free dstat)

Linux | 超超講解SSH的原理與SSH的實作!建議收藏?

Linux | 萬字總結用戶與組的權限那些事兒!建議收藏!


概述

Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用介面,它是目前最流行的 Linux 容器解決方案,本期內容為Docker第二期,通過本期內容將會掌握docker的如何創建容器、容器之間的網路連接、如何實作容器的資料持久化以及volume的使用,


目錄

前言

概述

超超Docker學習思維導圖

云服務(cloud server)

云計算(cloud computing)

nginx的初探

nginx的安裝和web服務的部署

yum方式安裝

使用docker啟動nginx web服務

容器之間網路連接

容器的資料保存——資料持久化

容器的結構有什么問題?

容器的結構問題如何解決?

容器的資料如何保存?

正常停止容器,容器里的資料會丟失嗎?

volume(資料卷)

volume是什么?

volume的常用命令

實作volume掛載的兩種方法

方法一:-v

方法二:--mount

練習

練習一:volume練習題

練習二:創建centos和Ubuntu鏡像的容器


超超Docker學習思維導圖

Docker思維導圖將持續更新,歡迎大家訂閱Linux欄目!


云服務(cloud server)

Iass(基礎設施即服務):給其他個人或企業提供虛擬機(cpu,記憶體,網卡等),(賣云服務器)

Pass(平臺即服務):云平臺對外提供某個軟體的服務,例如資料庫平臺,對外提供資料庫服務(賣功能)

Saas(軟體即服務):提供一種軟體,(賣軟體)

Baas:區塊鏈服務


云計算(cloud computing)

云計算的好處:節約成本,集中力量做事情,集中調度

openstack :開源且免費的云計算軟體,將多臺服務器的資源整合,然后再分配,分配成一個個虛擬機,

公用云:公開給所有人(個人、企業、等)可以購買并使用的云,例如阿里云、谷歌云、騰訊云,

b2b:business to business 企業和企業之間做業務

b2c:business to sustomer 企業與個人做業務

私有云:只是自己使用,不對外公開的云,例如阿里云,騰訊云,華為云,ucloud,七牛云等,

混合云:一部分是公用云,另外一部分是私有云,不同業務使用不同的云,但是云之間有聯系,

云原生:對于k8s而言,k8s是docker,集群容器的編排工具,K8s是用來管理不同機器上的docker容器,


nginx的初探

Nginx 是高性能的 HTTP 和反向代理的web服務器,處理高并發能力是十分強大的,能經受高負載的考驗,有報告表明能支持高達 50,000 個并發連接數,

其特點是占有記憶體少,并發能力強,事實上nginx的并發能力確實在同型別的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等,


nginx的安裝和web服務的部署

yum方式安裝

1.yum命令安裝

[root@docker ~]# yum install nginx -y

2.執行并查看nginx行程

[root@docker ~]# systemctl start nginx
[root@docker ~]# ps aux|grep nginx
root      347450  0.0  0.0  12324  1056 pts/0    S+   22:59   0:00 grep --color=auto nginx

3.關閉防火墻并設定開機不啟動

[root@docker ~]# service firewalld stop

Redirecting to /bin/systemctl stop firewalld.service

[root@docker ~]# systemctl disable firewalld

Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@docker ~]# getenforce

Enforcing

4.編輯一個網站,編輯好后直接在網站輸入IP地址即可進入編輯好的頁面

[root@docker ~]# cd /usr/share/nginx/html/

[root@docker html]# vim index.html

[root@docker html]# cat index.html

<html>

<head>

<title>chaochao</title>

</head>

<body>

<p>name:chaochao</p>

<p>sex:male</p>

<p>tel:1517388321</p>

<img src=1.jpg>

<a href=rep.html>reputation</a>

</body>

</html>

[root@docker html]# vim rep.html

[root@docker html]# cat rep.html

<html>

<head>

<title>reputation</title>

</head>

<body>

<p>name:lizhichao</p>

<p>sex:male</p>

<p>tel:1517388321</p>

<img src=2.jpg>

<a href=http://www.baidu.com>girl</a>

</body>

</html>

效果圖:

使用docker啟動nginx web服務

1.新建一個/web目錄存放web有關檔案

mkdir /web

cp /usr/share/nginx/html/* /web

2.運行命令

命令:

docker run --name sc-nginx-1 -v /web:/usr/share/nginx/html:ro -d -p 8080:80 daocloud.io/nginx

命令列解釋:

docker run --> 啟動容器

--name sc-nginx-2 --> 指定容器的名字

-v /web:/usr/share/nginx/html:ro --> 資料卷: 可以實作宿主機和容器直接的資料共享

/web --> 是宿主機里的目錄,需要自己新建

/usr/share/nginx/html --> 是容器里的系統的目錄的路徑

ro --> 只讀

-d --> deamon,在后臺啟動一個容器行程

-p 8080:80 --> 埠的映射:通過iptables的DNAT實作,8080:80 訪問宿主機的8080埠,轉發到容器里的80埠

daocloud.io/nginx --> 到daocloud.io網站去下載nginx的鏡像,可以直接用nginx鏡像

示例:

[root@docker web]# docker run --name chaochao-1 -v /web:/usr/share/nginx/html:ro -d -p 8070:80  daocloud.io/nginx
a7d27274426109a6644991560dd20b2e4ac6bd818b1c80cb20e49e7f008be63f

注:若命令執行失敗,需要重新啟動docker

[root@sc-docker web]# service docker restart 
Redirecting to /bin/systemctl restart docker.service
#重啟 docker 服務 ,會重新去添加docker自定義鏈在iptables里

容器之間網路連接

作用:網路埠的映射不是唯一的方法使一個container訪問另外一個container,容器之間可以使用主機名訪問 ,但Docker也具有一個linking system,我們可以將多個container連接在一起,相互之間發送連接資訊,當container被連接,關于來源container的資訊將被發送給接收container,這將是接收資訊放能夠看到來源container的資訊,

命令:docker run -d --name chao-nginx-1 --link chao-redis-1:redis nginx

# 將chao-redis-1這個容器起一個別名叫redis,目的是在chao-nginx-1這個容器的/etc/hosts添加一個決議記錄,

[root@docker ~]# docker run -d --name chao-redis-1 -p 6379:6379 redis

4f06900d478807c9839991566051cf25439f9a46d9adcbeb308bed10afed1db0

[root@docker ~]# docker ps

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                           NAMES

4f06900d4788   redis          "docker-entrypoint.s…"   6 seconds ago   Up 3 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp       chao-redis-1

[root@docker ~]# docker run -d --name chao-nginx-1 --link chao-redis-1:redis nginx

# 查看:

[root@docker ~]# docker exec -it chao-nginx-redis1 /bin/bash

root@7123e3a3b5c1:/# cat /etc/hosts

127.0.0.1        localhost

::1        localhost ip6-localhost ip6-loopback

fe00::0        ip6-localnet

ff00::0        ip6-mcastprefix

ff02::1        ip6-allnodes

ff02::2        ip6-allrouters

172.17.0.7        redis 4f06900d4788 chao-redis-1

172.17.0.8        7123e3a3b5c1

root@7123e3a3b5c1:/#

容器的資料保存——資料持久化

容器的結構有什么問題?

1.關倍訓重啟容器,該容器的資料不會被影響,但是洗掉該容器,資料就會丟失,因為容器的資料是不會影響到鏡像
2.存在于聯合檔案系統中,不易于宿主機的訪問
3.容器間資料共享不方便

容器的結構問題如何解決?

實作資料持久化,將容器的資料保存到磁盤中

容器的資料如何保存?

啟動Docker時發現存盤目錄依舊是/var/lib/docker,但是實際上是存盤在資料盤(volume)的,你可以在資料盤上看到容量變化,

正常停止容器,容器里的資料會丟失嗎?

不會,會保存到/var/lib/docker/volumes/,

volume(資料卷)

volume是什么?

Docker Volume,通常翻譯為資料卷,用于保存持久化資料,當我們將資料庫例如MySQL運行在Docker容器中時,一般將資料通過Docker Volume保存在主機上,這樣即使洗掉MySQL容器,資料依然保存在主機上,有效保證了資料的安全性,這篇博客將通過簡單的實踐幫助大家理解什么是Docker Volume,

volume的常用命令

查看volume: docker volume ls

查看卷的詳細資訊:docker volume inspect 資料卷名

新建volume: docker volume create chaochao

示例:

[root@docker web]# docker volume ls

DRIVER    VOLUME NAME

local     1845f87e990a3184728530d26a7b0d2c273c1de20ac3c88ff0e37d13e7f0a54c

[root@docker web]# docker volume create chaochao

chaochao

[root@docker web]# docker volume ls

DRIVER    VOLUME NAME

local     1845f87e990a3184728530d26a7b0d2c273c1de20ac3c88ff0e37d13e7f0a54c

local     chaochao

[root@docker web]# docker volume inspect chaochao

[

    {

        "CreatedAt": "2021-08-12T22:33:25+08:00",

        "Driver": "local",

        "Labels": {},

        "Mountpoint": "/var/lib/docker/volumes/chaochao/_data",

        "Name": "chaochao",

        "Options": {},

        "Scope": "local"

    }

實作volume掛載的兩種方法

方法一:-v

[root@docker web]# docker run -d --name xuzz-3  -v chaochao:/usr/share/nginx/html nginx

58d99df640b7662f4ff625e7cde9d0e7f40250992f8fd1ad39bc48aeca162ddb

# 需要80埠才可以訪問web服務,chaochao是創建的volume

效果:

方法二:--mount

[root@docker web]# docker run -d --name lizhichao-nginx --mount source=chaochao,target=/usr/share/nginx/html/ -p 8060:80 nginx:latest

2710b596777b80fc9755a43a4070494b6fb7d682a2fa895a91d690e63bfed04d

[root@docker web]# cd /var/lib/docker/volumes/

[root@docker volumes]# ls

1845f87e990a3184728530d26a7b0d2c273c1de20ac3c88ff0e37d13e7f0a54c  chaochao

backingFsBlockDev                                                 metadata.db

[root@docker volumes]# cd chaochao/

[root@docker chaochao]# ls

_data

[root@docker chaochao]# cd _data/

[root@docker _data]# cp /web/* . 

cp:是否覆寫'./index.html'? y

[root@docker _data]# ls

1.jpg  50x.html  index.html  rep.html

效果圖:

練習

練習一:volume練習題

1.創建一個卷,在卷里創建一個index.html首頁檔案,內容welcome to chaochao

2.創建2個容器名字自己定義:rose-1 rose-2,啟動nginx,使用新建卷

3.測驗訪問

[root@docker ~]# docker volume ls

DRIVER    VOLUME NAME

local     1845f87e990a3184728530d26a7b0d2c273c1de20ac3c88ff0e37d13e7f0a54c

local     chaochao

[root@docker ~]# docker volume create lizhichao

lizhichao

[root@docker ~]# docker volume ls

DRIVER    VOLUME NAME

local     1845f87e990a3184728530d26a7b0d2c273c1de20ac3c88ff0e37d13e7f0a54c

local     chaochao

local     lizhichao

[root@docker ~]# docker volume inspect lizhichao

[

    {

        "CreatedAt": "2021-08-12T23:08:58+08:00",

        "Driver": "local",

        "Labels": {},

        "Mountpoint": "/var/lib/docker/volumes/lizhichao/_data",

        "Name": "lizhichao",

        "Options": {},

        "Scope": "local"

    }

]

[root@docker ~]# cd /var/lib/docker/volumes/lizhichao/_data

[root@docker _data]# ls

[root@docker _data]# vim index.html

[root@docker _data]# ls

index.html

[root@docker _data]# docker run -d --name chao-nginx1 -p 8001:80 --mount source=lizhichao,target=/usr/share/nginx/html/ nginx:latest

e88ca98c52cb0e4c1c51771dc70de93f8958387c3067dd0fbb0cfd5fecb71f6b

[root@docker _data]# docker run -d --name chao-nginx2 -p 8002:80 --mount source=lizhichao,target=/usr/share/nginx/html/ nginx:latest

4cb9497e4b830a0eec6406d5be362adaf643982dc16a9cbcb68781b7d746bef2

測驗效果:

練習二:創建centos和Ubuntu鏡像的容器

1.拉取centos:7和Ubuntu的鏡像,并進入其中一個鏡像創建的容器

2.在里面安裝軟體 tree,nginx

3.鏡像匯出

4.在另外一臺機器里匯入

centos7

[root@docker ~]# docker pull centos/python-35-centos7 #下載centos7鏡像

在容器內自己安裝鏡像:

[root@docker ~]# docker run -it -d --name lizhichao -p 8880:66 centos:7  #-p 做埠映射的時候,其實背后就是在iptables里添加DNAT和SNAT策略

Unable to find image 'centos:7' locally

7: Pulling from library/centos

2d473b07cdd5: Pull complete

Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e

Status: Downloaded newer image for centos:7

67b50ec7b21b899725a05c5fab60106dfc2cdb4239db7a92a0addd1c5e6d9389

[root@docker ~]# docker ps

CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS                                   NAMES

67b50ec7b21b   centos:7   "/bin/bash"   24 seconds ago   Up 20 seconds   0.0.0.0:8880->66/tcp, :::8880->66/tcp   lizhichao

進入互動式環境:

[root@docker ~]# docker exec -it lizhichao /bin/bash

[root@67b50ec7b21b /]# hostname

67b50ec7b21b

[root@67b50ec7b21b /]# yum install tree -y

Loaded plugins: fastestmirror, ovl

Determining fastest mirrors

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was

連不上網,下載不了,怎么辦?解決步驟如下!

[root@docker ~]# echo 1 >/proc/sys/net/ipv4/ip_forward

[root@docker ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

接著作答:

[root@docker ~]# docker run -it -d --name lizhichao2 -p 8888:68 centos:7 

5f13988c81497674e2d8c8c7fe52ceec66e99b6ca6d9054372ce9fef452355ca

 # 在centos7鏡像創建lizhichao2容器

[root@docker ~]# docker ps

CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS                                   NAMES

5f13988c8149   centos:7   "/bin/bash"   5 seconds ago   Up 3 seconds   0.0.0.0:8888->68/tcp, :::8888->68/tcp   lizhichao2

[root@docker ~]# docker exec -it lizhichao2 /bin/bash  # 進入容器

[root@5f13988c8149 /]# hostname

5f13988c8149

[root@5f13988c8149 /]# ping www.baidu.com #檢查是否能上網

PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.

64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=127 time=28.9 ms

64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=127 time=28.0 ms

^C

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1004ms

rtt min/avg/max/mdev = 28.010/28.490/28.971/0.509 ms

[root@5f13988c8149 /]# yum install tree vim -y 下載tree、vim包

[root@5f13988c8149 /]# vim chaochao.sh

[root@5f13988c8149 /]# bash chaochao.sh  # 檢驗是否成功

i am chaochao

ubuntu:

lizhichao@chaochao:~$ sudo docker pull ubuntu #拉去Ubuntu鏡像

lizhichao@chaochao:~$ sudo docker run -it --name ubuntu-chaochao-1 -d ubuntu  #創建一個容器并進入互動環境

d21b0ebe1fd336a346da6fdf47dd1dbc1f12f1c1a6c0585455ca6135c89fe46e

lizhichao@chaochao:~$ hostname

chaochao

lizhichao@chaochao:~$ sudo docker exec -it ubuntu-chaochao-1 /bin/bash #進入新建容器的互動式環境

root@d21b0ebe1fd3:/# hostname

d21b0ebe1fd3

root@d21b0ebe1fd3:/# cat /etc/issue

Ubuntu 20.04.2 LTS \n \l

ubuntu匯出:

lizhichao@chaochao:~$ sudo scp ubuntu-chao.tar root@192.168.232.132:/root  #scp傳遞到另外一臺服務器上

The authenticity of host '192.168.232.132 (192.168.232.132)' can't be established.

ECDSA key fingerprint is SHA256:H9UmgdDuOZykWs7ysydLjxzCS2tyNNrbylAGIa6pBgc.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '192.168.232.132' (ECDSA) to the list of known hosts.

root@192.168.232.132's password:

ubuntu-chao.tar                                                                    100%   72MB  44.0MB/s   00:01 

在centos上面查看并接收:

[root@docker ~]# cd /root

[root@docker ~]# ls

anaconda-ks.cfg  ubuntu-chao.tar

[root@docker ~]# docker load -i ubuntu-chao.tar

7555a8182c42: Loading layer [==================================================>]  75.16MB/75.16MB

Loaded image: ubuntu:lates

創作不易,客官點個贊,評論一下吧!超超和你一起加油?😜

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

標籤:其他

上一篇:Linux進階 | 萬字詳解Docker鏡像的制作,手把手學會!

下一篇:不帶www的域名強制跳轉到www域名,Nginx服務器rewrite重寫

標籤雲
其他(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