主頁 > 軟體設計 > Docker系列文-----Docker三大核心概念以及實戰(nginx與MySQL)(2)

Docker系列文-----Docker三大核心概念以及實戰(nginx與MySQL)(2)

2021-08-13 07:18:15 軟體設計

Docker系列文-----Docker三大核心概念以及實戰(nginx與MySQL)(2)

  • Docker三大核心概念
    • 一.鏡像(Image)
    • 二.容器(Container)
    • 三.倉庫(Repository)
  • Docker的基本命令介紹
      • 1.查看自己的docker版本
      • 2.查看所有可以安裝的docker版本
      • 3.查看自己的Docker行程是否運行
      • 4.查找自己所需要的鏡像:
      • 5.只下載鏡像,不開啟容器
      • 6.查看自己有哪些鏡像
      • 7.創建一個容器
      • 8.啟動容器
      • 9.查看正在運行的容器:
      • 10.停止運行容器
      • 11.重新開啟容器
      • 12.徹底洗掉容器:
      • 13.查看容器的日志
      • 14.查看某個容器里的行程的行程
      • 15.進入容器內部
  • Nginx實戰
    • 先體驗一下nginx能帶來的服務
      • 1.yum install方式安裝nginx
      • 2.開啟nginx服務并檢測
      • 3.關閉防火墻和selinux,并且設定開機不要自啟
      • 4.進入nginx存放網站首頁的目錄
      • 5.測驗nginx服務 訪問自己虛擬機的ip
    • Docker啟動nginx容器:
      • 1.下載好nginx的鏡像檔案后啟動容器
      • 2.查看nginx容器是否在運行
      • 3.然后可以訪問192.168.2.21:8080 然后里面就是訪問docker的nginx的80埠
  • MySQL實戰
    • Ubuntu系統:
      • 0.小技巧tips
      • 1.下載mysql的image:(ubuntu)
      • 2.確保本地的mysql服務關閉
      • 3.啟動容器
      • 4.連接測驗
    • Centos8系統:
      • 1.下載mysql鏡像:
      • 2.啟動容器
      • 3.訪問測驗
    • 如果遇到Bug、Error~
    • 小心得:

Docker三大核心概念

一.鏡像(Image)

鏡像是Docker運行容器的前提,Docker運行容器前需要本地存在對應的鏡像,如果鏡像不存在本地,Docker會嘗試先從默認鏡像倉庫下載(默認使用Docker Hub公共注冊服務器中的倉庫),用戶也可以通過配置,使用自定義的鏡像倉庫,

  1. Docker鏡像類似于虛擬機鏡像,可以將它理解為一個只讀的模板,
  2. 一個鏡像可以包含一個基本的作業系統環境,
  3. 官方的Docker Hub倉庫以及提供了數十萬個鏡像供大家開放下載,
    Docker Hub網站

二.容器(Container)

Docker容器類似于一個輕量級的沙箱,Docker利用容器來運行和隔離應用,容器是從鏡像創建的應用運行的一個實體,可以將其創建、啟動、開始、停止、洗掉,而這些容器都是彼此互相隔離、互不可見的,
可以把容器看作是一個簡易版的Linux系統環境(包括root用戶權限、行程空間、用戶空間和網路空間等)以及運行在其中的應用程式打包而成的盒子,

三.倉庫(Repository)

Docker倉庫類似于代碼倉庫,它是Docker集中存放鏡像檔案的場所,
一個容易與之混淆的概念是注冊服務器(Registry),實際上注冊服務器是存放倉庫的具體服務器,每個服務器上可以有多個倉庫,而每個倉庫下面有多個鏡像,從這方面來說,倉庫可以被認為是一個具體的專案或目錄,例如對于倉庫地址dl.dockerpool.com/ubuntu來說,dl.dockerpool.com是注冊服務器地址,ubuntu是倉庫名,

Docker的基本命令介紹

1.查看自己的docker版本

[root@sc-docker ~]# docker -v
Docker version 20.10.8, build 3967b7d

2.查看所有可以安裝的docker版本

[root@sc-docker ~]# yum list docker-ce --showduplicates|sort -r
docker-ce.x86_64               3:20.10.8-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.8-3.el8                 @docker-ce-stable
docker-ce.x86_64               3:20.10.7-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.6-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.5-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.4-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.3-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.2-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.1-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.0-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:19.03.15-3.el8                docker-ce-stable 
docker-ce.x86_64               3:19.03.14-3.el8                docker-ce-stable 
docker-ce.x86_64               3:19.03.13-3.el8                docker-ce-stable 
已安裝的軟體包
上次元資料過期檢查:0:36:19 前,執行于 2021年08月11日 星期三 10時19分27秒,
可安裝的軟體包

3.查看自己的Docker行程是否運行

[root@sc-docker ~]# ps aux|grep docker
root       12879  0.0  2.3 1517348 88696 ?       Ssl  06:08   0:09 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       15775  0.0  0.0  12324  1044 pts/0    S+   10:58   0:00 grep --color=auto docker

dockerd:docker deamon—》docker守護行程:一直在運行的,對外提供服務的

4.查找自己所需要的鏡像:

第一個顯示的一定是官方庫,STARS越多收藏的次數越多,有部分是個人或者企業鏡像,個人也能夠提交鏡像至倉庫

[root@sc-docker web]# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        15288     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2058                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   815                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   228                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   150                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   138                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        130                  [OK]
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   105                  [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co…   70                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   56                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   55                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  46                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   24                   [OK]
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   19                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   15                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
flashspys/nginx-static            Super Lightweight Nginx Image                   10                   [OK]
mailu/nginx                       Mailu nginx frontend                            9                    [OK]
navidonskis/nginx-php5.6          Docker nginx + php5.6 on Ubuntu                 7                    [OK]
devilbox/nginx-stable             Devilbox's Nginx stable (based on official N…   4                    
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          2                    [OK]
wodby/nginx                       Generic nginx                                   1                    [OK]
arnau/nginx-gate                  Docker image with Nginx with Lua enabled on …   1                    [OK]
centos/nginx-110-centos7          Platform for running nginx 1.10 or building …   0

5.只下載鏡像,不開啟容器

pull 從別人那里拉取下來----》下載
push 推上去—》上傳

[root@sc-docker web]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
33847f680f63: Already exists 
5cb67864e624: Pull complete 
1a2b594783f5: Pull complete 
b30e406dd925: Pull complete 
48901e306e4c: Pull complete 
603d2b7147fd: Pull complete 
802aa684c1c4: Pull complete 
715d3c143a06: Pull complete 
6978e1b7a511: Pull complete 
f0d78b0ac1be: Pull complete 
35a94d251ed1: Pull complete 
36f75719b1a9: Pull complete 
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

上面默認下載最新版的MySQL,可以下載指定版本的MySQL------>mysql:tag

[root@sc-docker web]# docker pull mysql:5.7.35

6.查看自己有哪些鏡像

[root@sc-docker ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB
centos        latest    300e315adb2f   8 months ago   209MB

7.創建一個容器

注意 :create不能接-d 因為只是創建容器沒有run,-d表示行程,此時行程并沒有啟動
創建一個容器 不啟動

[root@sc-docker web]# docker create --name sc-nginx-cali-6 -p 8088:80 nginx 
ff959e6e08bcd17adc230220dd6ccf5e3180a5d92dffb1ea9ccf261a1c867ccb

8.啟動容器

可以理解為:docker run = docker create + docker start
簡單版:

docker run --name sc-nginx-1  -d -p 8081:80   nginx

復雜版:

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

1.–name sc-nginx-1 指定容器的名字
2.-v引數中,冒號":"前面的目錄是宿主機目錄,后面的目錄是容器內目錄(掛載)
-v /web:/usr/share/nginx/html:ro 資料卷:可以實作宿主機和容器直接的資料共享
/web 是宿主機的目錄
/usr/share/nginx/html 是容器里的系統的目錄的路徑
ro 只讀
3.-d 在后臺啟動一個容器行程 deamon
4.-p 埠的映射:iptables的DNAT 8080:80 訪問宿主機的8080埠,轉發到容器里的80埠
8080:80:訪問宿主的8080埠可以轉接到容器的80埠
發布:將容器的服務發布到外界
原理:dnat
5.daocloud.io/nginx 到daocloud.io網站去下載nginx的鏡像

點擊進入daocolud官網

9.查看正在運行的容器:

[root@sc-docker web]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED       STATUS         PORTS                                   NAMES
1bd4455d581a   daocloud.io/nginx   "/docker-entrypoint.…"   3 hours ago   Up 3 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   sc-nginx-4

接-a選項查看更全的資訊 而且可以顯示沒有在Up狀態的容器

[root@sc-docker web]# docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED        STATUS                    PORTS                                   NAMES
1bd4455d581a   daocloud.io/nginx   "/docker-entrypoint.…"   3 hours ago    Up 3 minutes              0.0.0.0:8080->80/tcp, :::8080->80/tcp   sc-nginx-4
7317d5762013   centos              "/bin/bash"              13 hours ago   Exited (0) 3 hours ago 

10.停止運行容器

[root@sc-docker web]# docker stop sc-nginx-4
sc-nginx-4

11.重新開啟容器

[root@sc-docker web]# docker start sc-nginx-4
sc-nginx-4

12.徹底洗掉容器:

一個容器正在運行的時候不能夠直接洗掉,必須stop之后才能洗掉

[root@sc-docker web]# docker rm sc-nginx-4
Error response from daemon: You cannot remove a running container 1bd4455d581a8db0258dde45e8b9db0eed38bb6071a563a2897bfa5466beb681. Stop the container before attempting removal or force remove

如下圖所示這樣為洗掉成功(確認結果可以用docker ps -a查看)

[root@sc-docker web]# docker rm sc-nginx-4
sc-nginx-4

13.查看容器的日志

docker logs +容器名

[root@sc-docker web]# docker logs sc-nginx-cali-1

14.查看某個容器里的行程的行程

docker top +容器名

[root@sc-docker web]# docker top sc-nginx-cali-1
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                21414               21394               0                   15:57               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 21462               21414               0                   15:57               ?                   00:00:00            nginx: worker process

15.進入容器內部

-i --interactive(相互作用的) 可以互動

-t 創建一個終端
-it 一般一起使用
進入容器內部運行/bin/bash這個命令

[root@sc-docker web]# docker exec -it sc-nginx-cali-1 /bin/bash
root@e24c5644f935:/# hostname
e24c5644f935

Nginx實戰

nginx是一個web服務器軟體,搭建一個自己的網站(靜態)

先體驗一下nginx能帶來的服務

1.yum install方式安裝nginx

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

2.開啟nginx服務并檢測

[root@sc-docker ~]# ss -anplut|grep nginx
tcp     LISTEN   0        128              0.0.0.0:80            0.0.0.0:*       users:(("nginx",pid=18114,fd=8),("nginx",pid=18113,fd=8),("nginx",pid=18112,fd=8))
tcp     LISTEN   0        128                 [::]:80               [::]:*       users:(("nginx",pid=18114,fd=9),("nginx",pid=18113,fd=9),("nginx",pid=18112,fd=9))
[root@sc-docker ~]# systemctl start nginx
[root@sc-docker ~]# ps aux|grep nginx
root       18112  0.0  0.0 119156  2192 ?        Ss   11:26   0:00 nginx: master process /usr/sbin/nginx
nginx      18113  0.0  0.2 151804  7972 ?        S    11:26   0:00 nginx: worker process
nginx      18114  0.0  0.2 151804  7972 ?        S    11:26   0:00 nginx: worker process
root       18116  0.0  0.0  12324   972 pts/0    S+   11:26   0:00 grep --color=auto nginx

3.關閉防火墻和selinux,并且設定開機不要自啟

[root@sc-docker ~]# setenforce 0
[root@sc-docker ~]# systemctl stop firewalld
[root@sc-docker ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@sc-docker ~]# vim /etc/selinux/config 
----------------------------------------------------
將SELINUX=enforce
修改為disabled 重啟后永久生效

4.進入nginx存放網站首頁的目錄

[root@sc-docker ~]# cd /usr/share/nginx/html/
index.html ---》首頁---》打開網站看到的第一個頁面
[root@sc-docker html]# vim index.html 
--------------------------------------
可以用html語言修改這個頁面 修改完什么樣子之后訪問此ip地址的80埠首頁就是什么樣子

5.測驗nginx服務 訪問自己虛擬機的ip

在瀏覽器中輸入自己的ip地址:80
在這里插入圖片描述

Docker啟動nginx容器:

1.下載好nginx的鏡像檔案后啟動容器

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

2.查看nginx容器是否在運行

[root@sc-docker html]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS         PORTS                                   NAMES
c74a86eedfce   daocloud.io/nginx   "/docker-entrypoint.…"   10 seconds ago   Up 6 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   sc-nginx-2
[root@sc-docker html]# ss -anplut|grep 8080
tcp     LISTEN   0        128              0.0.0.0:8080          0.0.0.0:*       users:(("docker-proxy",pid=19021,fd=4))                                        
tcp     LISTEN   0        128                 [::]:8080             [::]:*       users:(("docker-proxy",pid=19027,fd=4))         

3.然后可以訪問192.168.2.21:8080 然后里面就是訪問docker的nginx的80埠

訪問的是主機的/web檔案 映射到docker容器的nginx下的/usr/share/nginx/html檔案
如圖即為成功(圖上是8088埠,此例子訪問8080埠即可)
在這里插入圖片描述




MySQL實戰

前提:(確保系統中都存在MySQL服務器)
centos:
yum install mariadb mariadb-server
mariadb 是客戶端的軟體包
ubuntu:
xiaoxiong@root:~$ sudo apt install mariadb-server
mariadb-server:提供mysql資料庫的服務

Ubuntu系統:

0.小技巧tips

在Ubuntu中重新使用root用戶,可以省去繁瑣的sudo操作:
root@root:/home/xiaoxiong# sudo passwd root
New password: 
Retype new password: 
passwd: password updated successfully
root@root:/home/xiaoxiong# su - root

1.下載mysql的image:(ubuntu)

xiaoxiong@root:~$ sudo docker pull mysql:5.7.35

2.確保本地的mysql服務關閉

service stop mysql

3.啟動容器

docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD=‘sanchuang123’ -d mysql:5.7.35 -P 3306:3306
–name:指定容器的容器名
-e :指定環境變數 MYSQL_ROOT_PASSWORD的環境變數
-d:守護行程 deamon
mysql:tag ---->tag用來指定mysql的版本
-P:埠映射 從本機的3306埠映射到docker里的3306埠

root@root:/home/xiaoxiong# docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD='sanchuang123' -d -p 3306:3306 mysql:5.7.35
9c0d35a1a1585f6358905d86f922206179231f9aea092f54d848a03fcfcdc98b

4.連接測驗

root@root:/home/xiaoxiong# mysql -uroot -psanchuang123 -h 192.168.63.147 -P 3306
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

  • 測驗成功

Centos8系統:

1.下載mysql鏡像:

docker pull mysql:5.7.35

2.啟動容器

docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD=‘sanchuang123’ -d -p 3306:3306 mysql:5.7.35

[root@sc-docker html]# docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD='sanchuang123' -d -p 3306:3306 mysql:5.7.35
1468f427a37bc37792f656cfb08aa46605526330e31e5027a6c50a4e79658342
[root@sc-docker html]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS             PORTS                                                  NAMES
1468f427a37b   mysql:5.7.35        "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds       0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   sc-mysql-1

3.訪問測驗

可以是其他服務器(使用另一臺虛擬機來訪問)
-h 指定連接服務器的ip地址

[root@sc-docker html]# mysql -h 192.168.2.21 -uroot -p'sanchuang123'
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

如果遇到Bug、Error~

在上述命令都沒有錯誤的情況下:
如果訪問不進去,報錯

 ERROR 2002 (HY000): Can't connect to MySQL server on '192.168.63.147' (115)

重啟一下docker的服務再docker start剛剛的容器 80%能夠修復

service docker restart

小心得:

不論是在Centos還是Ubuntu系統中,ps aux|grep mysql這個命令是可以捕捉到你使用docker容器創建的mysqld行程的
但是需要注意:

root@root:~# ps aux|grep mysql
systemd+   34414  0.0  9.8 1377300 197804 ?      Ssl  09:50   0:06 mysqld
mysql      38050  8.0  3.8 1710584 77356 ?       Ssl  11:56   0:00 /usr/sbin/mysqld
root       38134  0.0  0.0   6432   736 pts/0    S+   11:56   0:00 grep --color=auto mysql

如上圖所示

  1. root 執行的是grep命令 不計入真正的MySQL服務
  2. mysql執行的是本地(虛擬機)的MySQL服務
  3. 而systemd+執行的則是虛擬機產生的MySQL服務

在Docker服務啟動的時候,雖然你的防火墻是關閉的,但是Docker服務會往你的防火墻規則(Iptables)里寫入一些規則,這時候不要重啟防火墻,否則后面的操作會報錯,如果報錯,需要清除防火墻規則,然后重啟Docker服務則可以解決問題



再次感謝各位看官!!!
萬字長文建議收藏

在這里插入圖片描述

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

標籤:其他

上一篇:最新版Spring Cloud Alibaba微服務架構-Openfeign服務呼叫篇

下一篇:英集芯IP5513,IP5516,IP5518,IP6816集成MCU耳機充電倉解決方案

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