主頁 > 軟體設計 > CloudStack+KVM 虛擬機部署測驗詳細流程

CloudStack+KVM 虛擬機部署測驗詳細流程

2020-10-10 16:31:23 軟體設計

目錄

基本介紹

部署準備

開始部署

1.查看并修改虛擬機網路

2.創建manager節點

2.配置manage節點

2.克隆為agent節點

3.配置NFS服務

4.安裝MySQL服務

5.設定網路橋接

6.安裝CloudStack

(1)網路源

(2)本地源

7.配置CloudStack

8.創建資源域

9.注冊ISO,添加實體,創建模板

可能遇到的問題


基本介紹

本文旨在介紹如何在本機虛擬機里部署一套CloudStack環境的測驗流程,包括一臺管理節點(manager)和一臺計算節點(agent),其中,manager節點會搭建作為二級存盤的NFS服務,agent會搭建用于鏡像下載的nginx服務器,

本文使用KVM創建虛擬機,通過libvirtd管理虛擬機,

最后一個部分,是常見的問題與解決方案,會持續更新一段時間,有問題可以自行去尋找,

部署準備

軟體安裝:

VMWare Workstation,XShell

資源下載:

CentOS-7-x86_64-Minimal-1810.iso //系統鏡像

cloudstack-common-4.13.1.0-1.el7.x86_64.rpm

cloudstack-management-4.13.1.0-1.el7.x86_64

cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm

systemvmtemplate-4.11.3-kvm.qcow2.bz2

本文所用所有資源的百度云分享鏈接:https://pan.baidu.com/s/1AiuZUF5JvudgIgFjc_8j4Q 提取碼:oy3h

開始部署

1.查看并修改虛擬機網路

首先,打開Wmware Workstation,選擇選單欄“編輯”->虛擬網路編輯器,查看VMnet8的子網地址,

每臺機器VMnet8被分配的子網地址都不相同,但在每個網段中,本機都默認為1,網關都默認為2,

以本機“192.168.100.0”網段為例,在該網段中,默認本機的IP地址為“192.168.100.1”,默認網關的IP地址為“192.168.100.2”,

而若是“192.168.67.0”網段,則默認本機的IP地址為“192.168.67.1”,默認網關的IP地址為“192.168.67.2”,

請注意并修改后續操作中IP地址,以保證在VMnet8的網段中,

若想更改網段,可以點擊右下角“更改設定”,以管理員權限打開虛擬網路編輯器,修改左下角子網IP,

默認DHCP分配IP范圍為128-254,可以點擊“DHCP設定”調整,本文調整如下,開放地址范圍為192.168.100.100-192.168.100.254,

綜上,本機虛擬網路相關的資訊如下:

地址范圍:192.168.100.100-192.168.100.254
網關:192.168.100.2
子網掩碼:255.255.255.0

2.創建manager節點

本文先創建manager節點虛擬機,安裝必要的軟體后,會克隆該虛擬機作為agent節點,再分別部署各自節點,

本文manager節點IP設定為192.168.100.100,agent節點IP設定為192.168.100.101,可自行修改為其他,但注意必須在DHCP范圍內,

在VmWare Station 中新建虛擬機,在新建向導中依次選擇“典型”、“稍后安裝作業系統”、“Linux”、“CentOS 7 64位”,

命名該虛擬機為Manager,避免混淆,

磁盤容量為默認20G足可,在最后一步中點擊“自定義硬體”,按下圖配置,

Manager節點推薦記憶體為2G,

處理器內核2顆,開啟Intel VT-x/EPT,

CD驅動器加載CentOS的iso鏡像,并確定已勾選啟動時連接,

再洗掉多余的聲卡和列印機硬體,

點擊“關閉”并點擊“完成”,

再次編輯該虛擬機設定,點擊左下角添加,添加硬碟,

添加新硬碟

一路點“下一步”,最后完成新硬碟添加,

啟動虛擬機,開始鏡像安裝,點擊虛擬螢屏,按上下鍵選擇“Install CentOs 7”,進入可視化安裝界面,

第一步,選擇中文,

選擇“中文”

點擊“繼續”,等待依賴檢索完成,依次配置“安裝位置”、“網路和主機名”,

配置“安裝目標位置”
配置“網路和主機名”

選擇“IPv4 設定”,選擇“手動分配,點擊"Add”,

添加靜態IP地址“192.168.100.100”,子網掩碼“255.255.255.0”,網關“192.168.100.2”,

請根據自己VMnet8的實際網段與自己設定的manager節點靜態IP進行修改,

在下方DNS服務器輸入阿里DNS服務器223.5.5.5,

如下圖所示,點擊“保存”和“完成”,

配置“ens33”

點擊“開始安裝”,

安裝中

在安裝時,設定ROOT密碼,本文設定為12345,若密碼過于簡單,點擊兩次完成也可以完成設定,

安裝完成后,重啟,

2.配置manage節點

打開XShell,新建會話,

點擊“用戶身份驗證”,輸入root和ROOT密碼,

保存并連接,驗證主機密鑰,選擇“接受并保存”,

在XShell中完成以下配置,

(1)設定IP映射

設定后可以直接通過Hostname,訪問到對應節點,

復制一下指令到XShell會話框中,按回車執行,

vi /etc/hosts

在該檔案新的一行中插入以下內容:

192.168.100.100 manager
192.168.100.101 agent

小提示

按I鍵進入INSERT模式,

按ESC,輸入“:wq”保存并退出,輸入“:q!"不保存退出,

按ESC,按兩下D洗掉游標所在行,

(2)關閉防火墻

systemctl disable firewalld
systemctl stop firewalld

然后設定selinux為permissive模式

修改config檔案

vi /etc/selinux/config 

找到selinx并改成

SELINUX=permissive

重啟生效

reboot

查看selinux

getenforce 

(3)時區設定(非必要)

timedatectl set-timezone  Asia/Shanghai

查看時區

timedatectl

(4)安裝EPEL

yum -y install epel*

重建本地倉庫快取

yum clean all && yum makecache

安裝VIM,用以編輯檔案,

yum -y install vim

安裝lrzsz,用以向虛擬機發送檔案,

yum -y install lrzsz

(5)安裝時間同步模塊

yum -y install chrony

修改組態檔

vim /etc/chrony.conf

將服務器修改為阿里云的時間同步服務器

找到以下四行

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

修改為

server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst

重啟chronyd服務

systemctl restart chronyd

(5)安裝NFS服務

yum -y install nfs-utils

編輯組態檔

vim /etc/sysconfig/nfs

取消如下項的注釋,其中,RQUOTAD_PORT需要手動添加,

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

啟動服務并設定開機啟動,

systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs

查看新增硬碟

fdisk -l
新增磁盤/dev/sdb

格式化硬碟,建立ext4檔案系統,“Process anyway?”選擇“y”,

mkfs.ext4 /dev/sdb

至此,兩節點的通用配置已完成,

2.克隆為agent節點

關閉manager節點,在庫中,右鍵manager節點,選擇“管理”->“克隆”,進入克隆虛擬機向導,

依次選擇“克隆當前狀態”、“創建完整克隆”,命名為“agent”,然后點擊完成,

由于克隆后agent節點IP與manager沖突,建議先在虛擬機內部修改完靜態IP地址后,再通過XShell配置,

開啟agent虛擬機,輸入賬戶root,密碼12345,

修改host名

vim /etc/hostname

修改manager為agent

修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33

將IPADDR修改為192.168.100.101,修改后如下,

重啟虛擬機

reboot

在XShell中,創建新會話,名稱為“agent”,主機為192.168.100.101,賬號為root,密碼為12345,

在XShell的會話中完成后續配置,

3.配置NFS服務

前面已經配置過檔案,此步驟只需設定共享目錄,請注意各個操作與其操作節點,避免混淆,

manager節點

創建掛載點

mkdir -p /export/secondary

硬碟掛載

 echo "/dev/sdb  /export/secondary  ext4 defaults 0 0"  >> /etc/fstab

快速掛載

mount -a

查看掛載

df -h

結果如下

設定共享目錄

vim /etc/exports

添加

/export/secondary *(rw,async,no_root_squash,no_subtree_check)

重新匯入共享目錄配置

exportfs -a

agent節點

創建掛載點

mkdir -p /export/primary

硬碟掛載

echo "/dev/sdb  /export/primary  ext4 defaults 0 0"  >> /etc/fstab

快速掛載

mount -a

設定共享目錄

vim /etc/exports

添加

/export/primary *(rw,async,no_root_squash,no_subtree_check)

重新匯入共享目錄配置

exportfs -a

驗證共享

manager 節點查看 agent的共享目錄

showmount -e agent

agent 節點查看 manager 的共享目錄

showmount -e manager

4.安裝MySQL服務

manager節點

yum -y install mariadb-server mariadb

編輯 mariadb 組態檔

vim /etc/my.cnf

在mysqld 模塊下加入

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
bind-address = 0.0.0.0

啟動mariadb 并設定為開機啟動

systemctl enable mariadb
systemctl start mariadb

執行資料庫初始化安全操作

mysql_secure_installation

初始未設定密碼按回車跳過,選擇設定密碼,設定為12345,移除匿名用戶,不屏蔽遠程登錄等,其他按回車選擇默認,

賦予 root 遠程登錄權限

請注意并修改下方操作中的密碼為自己設定的密碼

mysql -uroot -p12345 -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '12345' WITH GRANT OPTION";

5.設定網路橋接

agent節點

yum -y install net-tools bridge-utils

編輯網卡橋接檔案 cloudbr

vim /etc/sysconfig/network-scripts/ifcfg-cloudbr0

修改后內容如下,靜態IP根據自己實際情況修改,

TYPE=Bridge
BOOTPROTO=none
DEVICE=cloudbr0
ONBOOT=yes
IPADDR=192.168.100.101
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=223.5.5.5
STP=yes

設定網卡檔案

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改后如下

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ad4d6e67-ae59-4a3c-9270-7045700517cd"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=cloudbr0

重新啟動網路服務

systemctl restart network

查看 網橋 和路由

brctl show route -n

至此,基本環境安裝已經完成,建議拍攝快照,以免后期配置錯誤,功虧一簣,

6.安裝CloudStack

(1)網路源

manager和agent節點

配置網路源檔案,兩臺節點配置相同

vi /etc/yum.repos.d/cloudstack.repo

添加

[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos7/4.13/
enabled=1
gpgcheck=0

manager節點

yum -y install cloudstack-management

agent 節點

yum -y install cloudstack-agent

(2)本地源

官方下載地址:

http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-management-4.13.1.0-1.el7.x86_64.rpm
http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm
http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-common-4.13.1.0-1.el7.x86_64.rpm

本文提供的百度云里下載,

本文使用lrzsz進行檔案發送,若遇問題,也可以使用WinSCP等其他軟體發送,

manager節點

將cloudstack-common和cloudstack-management兩個rpm檔案,分別拖入XShell會話框,發送給虛擬機,

發送中

執行下述指令進行本地安裝,

yum -y install cloudstack-common-4.13.1.0-1.el7.x86_64.rpm cloudstack-management-4.13.1.0-1.el7.x86_64.rpm

安裝程序或以后使用程序中,有任何問題,可以通過日志查看,

tail -f /var/log/cloudstack/management/management-server.log

初始化資料庫,創建新用戶cloud,

最后,root:12345為root賬號及root密碼,密碼不同請修改,

cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:12345

啟動management

cloudstack-setup-management

agent 節點

將cloudstack-common和cloudstack-agent兩個rpm檔案,分別拖入XShell會話框,發送給虛擬機,

執行下述指令進行本地安裝,

yum -y install cloudstack-common-4.13.1.0-1.el7.x86_64.rpm cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm 

manager節點

安裝KVM模板

在二級存盤中安裝KVM模板,以下兩種方式二選一

a.網路源安裝

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-u http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.3-kvm.qcow2.bz2  \
-h kvm -F

b.本地源

官方地址:

http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.3-kvm.qcow2.bz2

本文提供的百度云里下載,

同上述程序,拖入會話即可,

注意:當前檔案夾是否為root,不是請先“cd /root”,或者修改下述代碼中路徑,

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt  \
-m /export/secondary \
-f /root/systemvmtemplate-4.11.3-kvm.qcow2.bz2 \
-h kvm –F

agent 節點

配置libvirt

編輯QEMU VNC組態檔

vim /etc/libvirt/qemu.conf

取消注釋

vnc_listen="0.0.0.0"

配置/etc/libvirt/libvirtd.conf檔案

vim /etc/libvirt/libvirtd.conf

取消注釋或添加

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

小提示

可以按下ESC,使用“/+搜索詞”,如“/listen”進行搜索,

配置/etc/sysconfig/libvirtd檔案

vim /etc/sysconfig/libvirtd

取消注釋

LIBVIRTD_ARGS="--listen"

重啟libvirtd 并設定為開機自啟

systemctl restart libvirtd
systemctl enable libvirtd

請注意,這一步配置錯導致libvirt服務啟動失敗,會導致后續創建資源域時無法添加主機,解決方法看文章最后的QA,

7.配置CloudStack

默認訪問埠為manager節點IP的8080埠,

打開瀏覽器,訪問http://192.168.199.100:8080/client/,

默認賬號為admin,默認密碼為password,選擇語言為“簡體中文”,登陸,

初次登陸選擇左下角“我以前使用過”,

選擇左下角“全域設定”,搜索并修改以下設定,

cpu.overprovisioning.factor 2.0               //CPU超配
mem.overprovisioning.factor 2.0               //記憶體超配,即2GB變4GB
secstorage.allowed.internal.sites 0.0.0.0/0   //從該網段下載ISO或模板,后期搭建ngix服務器可修改
management.network.cidr 192.168.100.0/24      //管理網段,可不修改,但會有警報資訊

在manager節點中,重啟cloudsatck-management服務

systemctl restart cloudstack-management

重啟時間較長,請耐心等候,可以觀察日志檔案,了解啟動行程,

tail -f /var/log/cloudstack/management/management-server.log

8.創建資源域

重新登錄,選擇左下角“基礎架構”,選擇“資源域”,點擊工具列“+ 添加資源域”,

配置如下即可,

請注意,“添加主機”這一步,是添加計算節點作為集群的默認主機,而不是管理節點,

點擊“啟動資源域”,等待創建完成,然后啟動即可,

9.注冊ISO,添加實體,創建模板

如下,等待系統VM創建成功后,開始后續步驟,

agent節點

創建一個NGINX 服務器當作鏡像下載站,

安裝 nginx 軟體

yum -y install nginx

編輯 nginx 組態檔

vim  /etc/nginx/nginx.conf 

在access_log /var/log/nginx/access.log main一行后加上

autoindex on;# 顯示目錄
autoindex_exact_size on;# 顯示檔案大小
autoindex_localtime on;# 顯示檔案時間

清空 /usr/share/nginx/html 目錄

小心謹慎

cd /usr/share/nginx/html
rm -rf *

將準備好的ISO鏡像放進去,本文使用的是虛擬機的鏡像,直接拖入會話框,傳送至/usr/share/nginx/html目錄,

重啟nginx 服務,設定為開機啟動

systemctl enable nginx
systemctl start nginx

可通過瀏覽器直接訪問agent節點IP地址查看,

注冊ISO

選擇左側“模板”->選擇視圖“ISO”,點擊工具列“注冊ISO”,

依次填寫所有資訊,URL可以從192.168.100.101網頁中復制鏈接,

點擊“確定”,點擊該ISO,點擊“資源域”,查看狀態,

安裝完成后,如下所示,

添加實體

依次選擇左邊“實體”->工具列“添加實體”,

選擇ISO創建,

選擇剛剛注冊的ISO,

計算方案選擇Medium,分配記憶體為1GB,可在“服務方案”中修改,

其余一律默認即可,最后填寫資訊,

啟動VM,等待VM創建并運行,

選擇該虛擬機快速查看->查看控制臺,

在彈出的控制臺網頁中,安裝ISO即可,

安裝程序同虛擬機大致一樣,不同的是網路只需打開即可,不需要設定靜態IP和主機名,

安裝完成后,重啟,

至此,一臺可以用于生產的實體已經部署完成,后續可以安裝其他生產環境,本文僅做測驗,安裝系統即可,

創建模板

接下來是,將安裝有生產環境的示例創建模板,用以創建更多實體,

關閉實體,“快速查看”->停止,

等待停止后,點擊“查看卷”,

選擇“快速查看”->“創建模板”,

填寫資訊后,創建即可,

以后添加實體時,選擇該模板即可創建一模一樣的實體,

可能遇到的問題

Q:安裝軟體時一直切換鏡像,最后也不下載,這是怎么回事?

A:有兩種可能

1.沒有配置DNS服務器,

沒有配置網橋的話,配置網路

vi /etc/sysconfig/network-scripts/ifcfg-ens33

添加DNS服務器

DNS1=223.5.5.5

配置網橋了的話,在網橋檔案里添加DNS,

vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0

2.網關配置錯誤

本文使用的VMnet8網段為192.168.100.0-192.168.100.254網段,其中192.168.100.2為虛擬網關地址,每個人的網段號不同,請根據自己的網段查看網關是否正確,

查看組態檔,注意其中GATEWAY欄位是否正確,

vi /etc/sysconfig/network-scripts/ifcfg-ens33

Q:管理節點重啟后,CloudStack 的WEB UI上不去,這是怎么回事?

A:一般是Server還在啟動中,稍等即可,

可以通過查看日志的方式排除問題,

tail -f /var/log/cloudstack/management/management-server.log

Q:系統VM創建失敗,日志顯示“can't create development for vm”,這是為什么?

A:這可能有兩個原因造成:

1.agent節點硬體資源不足

本文建議的4GB記憶體加2核,再加上2倍超配,經多次試驗完全能滿足要求,

2.沒有安裝KVM模板

如果日志中報錯“Not such file or directory”,然后指向/export/secondary里的template檔案夾,那么就是這個原因,按照第6部中的“安裝KVM模板”步驟完成即可,

Q:日志報資料庫中列錯誤,怎么處理?

A:按照第6步中,初始化資料庫的步驟,重新創建用戶,安裝management,

Q:資源域創建最后一步添加主機時報錯,說“Unable to add the host”,查找management的日志,找到以下錯誤,怎么解決?

A:這是在agent節點配置libvirt時出現了問題,建議先檢查自己在第六步配置libvirt時出現了什么問題,

有快照建議恢復到配置之前,

無快照,按照以下方法重新安裝libvirt,

卸載libvirt及其依賴

yum remove libvirt*

然后按照第六步中的程序重新安裝,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/166395.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