雲計算與虛擬化KVM深度實踐

来源:https://www.cnblogs.com/xuliangwei/archive/2018/04/22/8904444.html
-Advertisement-
Play Games

徐亮偉, 江湖人稱標桿徐。多年互聯網運維工作經驗,曾負責過大規模集群架構自動化運維管理工作。擅長Web集群架構與自動化運維,曾負責國內某大型電商運維工作。 個人博客" "徐亮偉架構師之路" "累計受益數萬人。 筆者Q:552408925、572891887 架構師群:471443208 雲計算基本概 ...


徐亮偉, 江湖人稱標桿徐。多年互聯網運維工作經驗,曾負責過大規模集群架構自動化運維管理工作。擅長Web集群架構與自動化運維,曾負責國內某大型電商運維工作。
個人博客"徐亮偉架構師之路"累計受益數萬人。
筆者Q:552408925、572891887
架構師群:471443208

該博客文章同步視頻在51cto上線了,想詳細瞭解的朋友可以點擊下方視頻鏈接地址
[51cto視頻地址傳送門](http://edu.51cto.com/course/13208.html)

雲計算基本概述

雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網路訪問,進入可配置的計算資源共用池(資源包括網路,伺服器,存儲,應用程式,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。

在使用雲計算之前的模式和技術

1、IDC托管
2、IDC租用
3、虛擬主機(賣空間)
4、VPS:虛擬專用主機 openvz(通過超賣技術坑人) xen(不支持超賣)

雲計算之前,傳統數據中心面臨的問題

1、資源利用率低
2、資源分配不合理
3、自動化能力差
4、初始成本高

雲計算是什麼

1、雲計算是一個概念, 不是任何技術(指的是資源使用和交付模式)
2、雲計算使用方法必須通過網路來訪問
3、雲計算的優勢(彈性付費、按需付費、快速擴展)
4、雲計算不用關係底層基礎設施架構

雲計算優勢

1、海量動態資源池,靈活的調配和綁定
2、無處不在的網路訪問
3、隨需應變的自助服務
4、服務應用的可用性
5、快速的彈性伸縮

雲計算服務模型

雲計算分層

IDC 所有都得自行管理
IAAS 基礎設施及服務
PAAS 平臺及服務
SAAS 軟體及服務

雲計算部署模型

![-w300](http://cdn.xuliangwei.com/15235988962356.jpg)

公有雲(阿裡雲、騰訊雲)只有使用權,按需付費(技術層面:數據不安全 道德層面)
私有雲(自建機房,自己搭建,所有自行管理 (局限:資源固定))
混合雲(主要業務放私有雲、當有臨時需求的時候使用公有雲,使用結束不用)

虛擬化技術概述


什麼是KVM, 內核級虛擬化技術Kernel-based Virtual Machine
虛擬化是一種具體的技術,將物理機虛擬成多個相互獨立的虛擬機。
在一臺電腦上同時運行多個邏輯電腦,每個邏輯電腦可運行不同的操作系統,並且應用程式都可以在相互獨立的空間內運行而互不影響,可以實現資源的動態分配、靈活調度、跨域共用,提高資源利用率,服務於各行各業中靈活多變的應用需求。從而顯著提高伺服器的工作效率。

虛擬化的分類

全虛擬化
半虛擬化(qemu模擬網路以及硬碟)
硬體虛擬化(Inter vt-x/EPT) (AMD AMD-v /RVI)
桌面虛擬化 (銀行,操作層面控制-無法複製、無法使用usb、最多手機拍照))
應用虛擬化 (將應用通過瀏覽器進行交付,只需要安裝插件即可實現"貴")

虛擬化使用場景

1.虛擬化可以虛擬出來多個操作系統,它們之間是相互獨立的,所以每個操作系統上所跑的應用程式是相互不影響的。
2.支持異構,linux系統可以虛擬化windows系統,方便不同場景系統的使用。
3.支持快照、克隆、遷移、等功能。

企業案例一
公司有一臺伺服器, 在盤點資產時, 你並不清楚該虛擬機是否能停止, 也不清楚上面運行了什麼, 問技術部門沒有一個人清楚, 只會告訴你, 有可能有用你放著把。
如果這是一臺物理機你看怎麼辦,真的很無奈、想改個啥你都不敢該,只能讓他跑在那裡。

企業案例二
公司這台物理機有沒有用,所有人告訴你,沒事刪把肯定沒有用,然後到店慶的時候,產品經理過來了:我們去年店慶做了一個積分抽獎的活動,我花錢買的,我的代碼哪去了,我的伺服器呢?伺服器早都格式化多少遍了,產品經理說那沒辦法,那麼趕緊聯繫提供商把,提供商倒閉了。怎麼辦,重新做唄。
如果有虛擬機就好辦了,我把虛擬機關了放在那,只要不刪除,是不是永遠都在,哪天用在起來就行了。無非就占點硬碟,分配的時候,可以使用多少分配多少。

虛擬化與雲計算總結

雲計算不等於虛擬化,兩者並不能相互比較。
雲計算是一種資源和使用交互的方式。
虛擬化是一種具體的技術。
雲計算要依賴虛擬化技術來實現的一種通過網路訪問獲取資源,流量,交付的使用模式。(例如:彈性計算)。
虛擬化相當於實幹家,而雲計算是思想家。

安裝KVM虛擬化

KVM需要硬體支持, 所以需要開啟虛擬化支持

1.硬體設備直接在BIOS設置開啟CPU虛擬化
2.個人電腦同樣進入BIOS開啟虛擬化支持
3.VM需要找到對應虛擬機開啟對應的VT-EPT虛擬化技術

//沒有任何內容則表示伺服器沒有啟用虛擬化
[root@kvm-node1 ~]# egrep '(vmx|svm)' /proc/cpuinfo

1.伺服器環境規劃

系統 主機名 IP 記憶體 磁碟
CentOS7 kvm-node1 192.168.56.11 4G 80G
CentOS7 kvm-node2 192.168.56.12 4G 80G

2.基礎環境配置

//查看當前系統版本
[root@kvm-node1 ~]# hostnamectl 
   Static hostname: kvm-node1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 6878674c84644fd381a5e3a82d80cf18
           Boot ID: fd8e37aca7e4421fa5674fc0fff147e9
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

//設定主機名
[root@kvm-node1 ~]# hostnamectl set-hostname kvm-node1

//關閉防火牆
[root@kvm-node1 ~]# systemctl stop firewalld
[root@kvm-node1 ~]# systemctl disable firewalld

//關閉Selinux
[root@kvm-node1 ~]# sed -i '/SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@kvm-node1 ~]# setenforce 0

//配置hosts解析
[root@kvm-node1 ~]# echo "192.168.56.11 kvm-node1" >> /etc/hosts

3.安裝KVM虛擬化工具

//qeum 虛擬化軟體,可以虛擬不同的CPU,以及模擬網卡、音效卡、PCI設備等
//libvirt 用於管理KVM的工具
//virt-install 命令行安裝虛擬機工具
//virt-manager 圖形化管理虛擬機工具
//openssh-askpass 遠程連接KVM主機

[root@kvm-node1 ~]# yum install qemu-kvm qemu-kvm-tools \
libvirt virt-manager virt-install  \
openssh-askpass –y

//KVM是linux內核的一個模塊,模塊不需要安裝只需要載入,通過用戶態程式來管理即可
[root@kvm-node1 ~]# lsmod|grep kvm
kvm_intel             148081  0
kvm                   461126  1 kvm_intel

4.啟動libvirt管理KVM工具

[root@kvm-node1 ~]# systemctl enable libvirtd.service
[root@kvm-node1 ~]# systemctl start libvirtd.service
#註意: 啟動後會新增一塊virbr0網路

5.KVM會給虛擬機分配NAT模式網路,但是在生產情況,強烈推薦使用網橋模式

//配置KVM虛擬機使用的橋接網路, 添加br0網卡
[root@kvm-node1 ~]# brctl addbr br0

//將eth0加入網橋,使用橋接模式,給br設置ip,添加路由網關,關閉防火牆
[root@kvm-node1 ~]# brctl addif br0 eth0 && \
ip addr del dev eth0 192.168.56.11/24 && \
ifconfig br0 192.168.56.11/24 up && \
route add default gw 192.168.56.2

[root@kvm-node1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c29726a96       no              eth0
virbr0          8000.525400e6a3a3       yes             virbr0-nic

創建KVM虛擬機

1.在創建虛擬機之前, 我們需要添加一塊磁碟來存放我們的虛擬機, VM->關機->設置->添加磁碟

//直接使用整塊磁碟
[root@kvm-node1 ~]# mkdir -p /data 
[root@kvm-node1 ~]# mkfs.xfs /dev/sdb
[root@kvm-node1 ~]# mount /dev/sdb /data
#強烈建議加入開機自啟動

2.使用virsh-install創建命令模式創建虛擬機

//掛載系統光碟, 建立ISO鏡像文件
[root@kvm-node1 ~]# dd if=/dev/cdrom of=/data/centos7u4_x86_64.iso

//創建虛擬機磁碟
[root@kvm-node1 ~]# qemu-img create -f qcow2 /data/centos7u4-node1.qcow2 10G

//創建虛擬機實例
virt-install --name centos7u4-node1 \
--virt-type kvm \
--ram 1024 \
--cdrom=/data/centos7u4_x86_64.iso \
--disk path=/data/centos7u4-node1.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
 
//參數概述
--virt-type:指定虛擬機類型(kvm、qemu、xen)
--name:指定虛擬機名稱
--raw:指定虛擬機使用記憶體大小
--cpu:指定cpu的核數(預設為1)
--cdrom:指定虛擬機安裝的ISO鏡像
--disk:指定虛擬機數據存儲磁碟qcow2
--network:指定虛擬機網路類型, 預設nat,常用bridge
--graphics:指定虛擬機可連接方式, 比如VNC
--noautoconsole:不連接虛擬機圖形界面控制台

3.使用vnc客戶端連接KVM虛擬機,進行操作系統安裝

4.安裝CentOS7在啟動前修改內核讓網卡為eth0

5.安裝系統步驟忽略, 但一定要記得配置好對應的地址

創建WIN7虛擬機

1.準備Win7 ISO鏡像

2.創建虛擬機磁碟

[root@kvm-node1 ~]# qemu-img create -f qcow2 win7-node1.qcow2

3.virt-install命令創建Win7虛擬機, 也可以使用virt-manager創建Win7虛擬機

[root@kvm-node1 ~]# virt-install --name win7-node1 \
--virt-type kvm \
--ram 2048 \
--cdrom=/data/win7.iso \
--disk path=/data/win7-node1.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

4.Win7安裝過程, 記憶體與磁碟不夠會導致安裝慢或失敗




管理KVM虛擬機

//虛擬機隨著系統啟動
virsh autostart Name
//關閉虛擬機隨系統啟動
virsh autostart —disable Name

//查看正在運行的KVM虛擬機
[root@kvm-node1 ~]# virsh list
//查看所有KVM虛擬機
[root@kvm-node1 ~]# virsh list --all

//啟動KVM虛擬機
[root@kvm-node1 ~]# virsh start name
//關閉KVM虛擬機
[root@kvm-node1 ~]# virsh shutdown name
//強制關閉KVM虛擬機
[root@kvm-node1 ~]# virsh destroy name

//掛起KVM虛擬機
[root@kvm-node1 ~]# virsh suspend name
//恢復掛起的虛擬機
[root@kvm-node1 ~]# virsh resume name

//編輯KVM虛擬機的xml配置文件
[root@kvm-node1 ~]# virsh edit name
//刪除創建的KVM虛擬機
[root@kvm-node1 ~]# virsh undefine name

KVM虛擬機擴容

KVM虛擬機中有兩種磁碟格式:

raw格式: 直接占用物理磁碟, 寫入快, 性能優, 但占用空間
Qcow2格式: 使用多少占多少磁碟, 支持壓縮、快照、鏡像
註意:raw不支持快照, Qcow2支持快照, 但兩者文件類型是可以相互間轉換

無論磁碟是raw qcow2格式, 擴展思路如下

1.新添加一塊磁碟加入至需要擴容的虛擬主機
2.使用lvm邏輯捲管理方式進行擴展

1.查看當前KVM虛擬機所使用的虛擬磁碟

[root@kvm-node1 ~]# virsh domblklist centos7u4-node1
Target     Source
------------------------------------------------
vda        /data/centos7u4-node1.qcow2

2.創建一塊qcow2虛擬磁碟

[root@kvm-node1 ~]# qemu-img create -f qcow2 /data/centos7u4-node1-disk2.qcow2 10G

3.線上添加虛擬磁碟

//線上添加
[root@kvm-node1 ~]# virsh attach-disk centos7u4-node1 /data/centos7u4-node1-disk2.qcow2 vdb --cache=none --subdriver=qcow2
Disk attached successfully

//查看新增磁碟狀態
[root@kvm-node1 ~]# virsh domblklist centos7u4-node1
Target     Source
------------------------------------------------
vda        /data/centos7u4-node1.qcow2
vdb        /data/centos7u4-node1-disk2.qcow2


//第二種擴容方式方式, 新增如下配置
[root@kvm-node1 ~]# virsh edit centos7u4-node1
<disk type='file' device='disk'>     
  <driver name='qemu' type='qcow2' cache='none'/>      
  <source file='/data/centos7u4-node1-disk2.qcow2'/>      
  <target dev='vdb' bus='virtio'/>      
 </disk>

4.通過vnc連接KVM虛擬機進行磁碟擴容

5.擴容步驟如下

[root@localhost ~]# pvcreate /dev/vdb
[root@localhost ~]# vgextend /dev/vdb centos
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root
[root@localhost ~]# xfs_growfs /dev/centos/root

KVM虛擬機快照

1.查看磁碟格式raw格式需要轉換成qcow2

[root@kvm-node1 ~]# qemu-img info /data/centos7u4-node1.raw 
image: /data/centos7u4-node1.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.2G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

2.必須關閉虛擬機進行磁碟轉換

[root@kvm-node1 ~]# virsh shutdown centos7u4-node1
[root@kvm-node1 ~]# qemu-img convert -f raw /data/centos7u4-node1.raw -O qcow2 /data/centos7u4-node1.qcow2
//convert 將磁碟文件轉換為指定格式的文件
//-f 指定需要轉換文件的文件格式
//-O 指定要轉換的目標格式
//轉換完成後,將新生產一個目標映像文件,原文件保存

3.修改KVM虛擬機配置文件配置文件

[root@kvm-node1 ~]# virsh edit centos7u4-node1
      <driver name='qemu' type='qcow2'/>
      <source file='/data/centos7u4-node1.qcow2'/>

4.對虛擬機當前進行快照拍攝

[root@kvm-node1 ~]# virsh snapshot-create centos7u4-node1    
Domain snapshot 1523494907 created

5.查看虛擬機快照

[root@kvm-node1 ~]# virsh snapshot-list  centos7u4-node1
 Name                 Creation Time             State
------------------------------------------------------------
 1523494907           2018-04-11 21:01:47 -0400 running
 
 //檢查當前虛擬機最新快照版本
[root@kvm-node1 ~]# virsh snapshot-current centos7u4-node1|less

//快照xml文件存放路徑
[root@kvm-node1 ~]# ls /var/lib/libvirt/qemu/snapshot/centos7u4-node1/
1523494907.xml  1523495036.xml

6.恢復快照

[root@kvm-node1 ~]# virsh snapshot-revert centos7u4-node1 1523494907

//確認恢復版本正確
[root@kvm-node1 ~]# virsh snapshot-current centos7u4-node1|grep "1523494907"
  <name>1523494907</name>
  <creationTime>1523494907</creationTime>

7.刪除快照

[root@kvm-node1 ~]# qemu-img info /data/centos7u4-node1.qcow2 
image: /data/centos7u4-node1.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.8G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1523494907             282M 2018-04-11 21:01:48   00:16:25.489
2         1523495036             282M 2018-04-11 21:03:56   00:18:29.210
Format specific information:
    compat: 1.1
    lazy refcounts: false

//刪除最近一個快照
[root@kvm-node1 ~]# virsh snapshot-delete centos7u4-node1 1523495036
Domain snapshot 1523495036 deleted

KVM圖形化管理

1.服務端安裝x11圖形界面工具

[root@kvm-node1 ~]# yum install -y xorg-x11-font-utils xorg-x11-server-utils xorg-x11-utils xorg-x11-xauth xorg-x11-xinit

2.服務端開啟SSH隧道轉發X11

[root@kvm-node1 ~]# vim /etc/ssh/sshd_config
X11Forwarding yes
[root@kvm-node1 ~]# systemctl restart sshd

3.Windows客戶端使用Xshell連接KVM宿主機

第一步: 連接KVM宿主機, 修改其屬性

第二步: 使用xming接受SSH X11圖形轉發

註意: 需要下載對應工具Xming, 然後啟動

第三步:重新連接KVM宿主機, 執行virt-manager

第四步:安裝中文字元,解決界面亂碼問題

[root@kevin ~]# yum install -y dejavu-lgc-sans-fonts
[root@kevin ~]# yum groupinstall -y "Fonts"

//調整字體為中文
[root@kvm-node1 ~]# export LANG=zh_CN.UTF-8

註意:

1.如果使用GUI界面Linux則無需安裝即可使用virt-manager
2.如果是MAC筆記本, 僅能使用Crt開啟X11圖形轉發, 同時必須下載XQuartz支持轉發

KVM虛擬機克隆



KVM虛擬機遷移

KVM可視化管理

1.安裝 WebVirtMgrWebVirtMgr官方參考手冊

[root@kvm-node1 ~]# yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
[root@kvm-node1 ~]# yum -y install gcc python-devel git python-pip libvirt-python libxml2-python python-websockify supervisor nginx novnc
[root@kvm-node1 ~]# pip install numpy

2.安裝要求和安裝PythonDjango環境

[root@kvm-node1 ~]# git clone git://github.com/retspen/webvirtmgr.git
[root@kvm-node1 ~]# cd webvirtmgr
[root@kvm-node1 webvirtmgr]# pip install -r requirements.txt
[root@kvm-node1 webvirtmgr]# ./manage.py syncdb

//用戶信息,回車
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'):
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)

//添加額外的超級用戶
[root@kvm-node1 webvirtmgr]# ./manage.py collectstatic

3.配置Nginx

[root@kvm-node1 webvirtmgr]# cd ..
[root@kvm-node1 ~]#  mv webvirtmgr /var/www/

//在/etc/nginx/conf.d目錄中添加webvirtmgr.conf
[root@kvm-node1 ~]# vim /etc/nginx/conf.d/webvirtmgr.conf
server {
    listen 80 default_server;
    server_name $hostname;
    #access_log /var/log/nginx/webvirtmgr_access_log; 

    location /static/ {
        root /var/www/webvirtmgr/webvirtmgr;
        expires max;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 1024M;
    }
}

//註意: 註釋/etc/nginx/conf/nginx.conf文件中Server段

//設定目錄許可權
[root@kvm-node1 ~]# chown -R nginx:nginx /var/www/webvirtmgr

//啟動nginx,並將其加入開機自啟
[root@kvm-node1 ~]# systemctl start nginx
[root@kvm-node1 ~]# systemctl enable nginx

4.安裝配置Supervisor

//創建文件/etc/supervisord.d/webvirtmgr.ini以下內容
[root@kvm-node1 ~]# vim /etc/supervisord.d/webvirtmgr.ini
[program:webvirtmgr]
command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx

[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx

5.啟動supervisord並加入開機自啟

[root@kvm-node1 ~]# systemctl start supervisord.service 
[root@kvm-node1 ~]# systemctl enable supervisord.service

6.配置ssh認證SSH官方參考資料

[root@kvm-node1 ~]# su - nginx -s /bin/bash
-bash-4.2$ ssh-keygen 
-bash-4.2$ touch ~/.ssh/config
-bash-4.2$ echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config
-bash-4.2$ chmod 0600 ~/.ssh/config
-bash-4.2$ ssh-copy-id root@localhost

-w500

-w500

-w500


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 方法1:響應Ctrl+?快捷鍵 首先在load事件或者keydown事件內註冊事件 註冊的事件如下(檢測Ctrl+V和Ctrl+N): 方法2:響應Ctrl+滑鼠滾輪 說明:所有UI元素都具有PointerWheelChanged事件,響應此事件同時判斷Ctrl狀態判斷用戶操作。例子中響應的UIEl ...
  • .netcore中的數據配置及內容用了json文件代替了之前framework的xml文件,那麼json中的數據該怎麼獲取呢?下麵講解json文件在.net core中的獲取方法. 首先,新建一個.net core web應用程式,然後新建文件夾JsonFile,併在JsonFile文件夾中新建cl ...
  • 感謝兩位兩位大佬: https://blog.csdn.net/l1028386804/article/details/61417166 https://www.cnblogs.com/runningsmallguo/p/6239215.html 1.首先我們要下載好文件memcached.exe, ...
  • 前言:先到微軟的 https://www.iis.net/downloads/microsoft/url-rewrite 下載URL Rewrite 前言:先到微軟的 https://www.iis.net/downloads/microsoft/url-rewrite 下載URL Rewrite ...
  • using System; using System.Security.Cryptography; using System.Text; namespace DimoNetwork.Common.DEncrypt { public enum MD5ResultMode : byte { Strong... ...
  • 我採用asp.net進行演示 送給有緣人吧,可以獲得類似版本號的功能,也可以對比兩個版本號,我這裡是其他需要用逗號分割的 ...
  • 1.首先新建一個winform的項目。 2.確保C#工具箱包含ESRI的相關控制項,如果沒有就需要安裝SDK。 如果VS中依舊不存在esri控制項解決方案如下,以VS2013為例: (1)打開註冊表,定位至HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft ...
  • 一、應用場景 對於B/S應用程式,在部署到正式環境運行的過程中,很有可能出現一些在前期測試過程中沒有發現的一些異常或者錯誤,或者說只有在特定條件滿足時才會發生的一些異常,對於使用ASP.NET MVC開發的應用程式站點,在部署到IIS上後,如果開發人員未對程式進行錯誤處理,那麼一旦程式出現未處理的錯 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...