GIt+jenkins代碼自動上線

来源:https://www.cnblogs.com/zeq912/archive/2018/11/24/10013147.html
-Advertisement-
Play Games

代碼自動上線功能 企業部署代碼上線是件比較麻煩的事情,還好我們有jenkins這個持續集成的軟體可以幫助我們做很多的事情,現在我們就 來測試用jenkins推送代碼上線。 我們這裡測試的是一個html的web頁面監控的代碼上線,做一個簡單的小教程,先不涉及動態語言和資料庫。 準備環境 準備三台伺服器 ...


代碼自動上線功能

企業部署代碼上線是件比較麻煩的事情,還好我們有jenkins這個持續集成的軟體可以幫助我們做很多的事情,現在我們就
來測試用jenkins推送代碼上線。
我們這裡測試的是一個html的web頁面監控的代碼上線,做一個簡單的小教程,先不涉及動態語言和資料庫。

準備環境

準備三台伺服器

伺服器名稱 ip地址 需要的服務 系統
git 10.0.0.200 gitlab centos7
jenkins 10.0.0.201 jenkins centos7
web01 10.0.0.7 nginx centos7

GitLab

GitLab簡介

GitLab 是一個用於倉庫管理系統的開源項目。使用Git作為代碼管理工具,併在此基礎上搭建起來的web服務。可
通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可
以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊
天程式(Wall)進行交流。它還提供一個代碼片段收集功能可以輕鬆實現代碼復用。
常用的網站:
官網:https://about.gitlab.com/
國內鏡像:https://mirrors.tuna.tsinghua.edu.cn/gitlab‐ce/yum/

安裝環境

1、 CentOS 6或者7
2、 2G記憶體(實驗)生產(至少4G)
3、 安裝包:gitlab‐ce‐10.2.2‐ce
4、 禁用防火牆,關閉selinux
https://about.gitlab.com/installation/#centos‐7 # git官網

1、安裝gitlab

[root@git ~]# yum install policycoreutils-python -y       # 安裝依賴  
rz ‐bye gitlab‐ce‐10.2.2‐ce.0.el7.x86_64.rpm                 # 上傳gitlab安裝包 下載方式可通過
國內清華源gitlab‐ce社區版本下載 
[root@git ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm   #安裝gitlab

2、更改gitlab配置文件

[root@git ~]# vim /etc/gitlab/gitlab.rb
更改url地址為本機IP地址 external_url 'http://10.0.0.200'

image.png | left | 826x265

3、gitlab命令及文件

gitlab‐ctl reconfigure                  # 更改配置文件後需重新配置
/opt/gitlab/                            # gitlab的程式安裝目錄
/var/opt/gitlab                         # gitlab目錄數據目錄
/var/opt/gitlab/git‐dfata               # 存放倉庫數據
gitlab‐ctl status                       # 查看目前gitlab所有服務運維狀態
gitlab‐ctl stop                         # 停止gitlab服務
gitlab‐ctl stop nginx                   # 單獨停止某個服務
gitlab‐ctl tail                         # 查看所有服務的日誌

4、Gitlab的服務構成

nginx: 靜態web伺服器
gitlab-workhorse: 輕量級的反向代理伺服器
logrotate:日誌文件管理工具
postgresql:資料庫
redis:緩存資料庫
sidekiq:用於在後臺執行隊列任務(非同步執行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails應用是托管在這個伺服器上面的。(Ruby
Web Server,主要使用Ruby編寫)

gitlab漢化

首先要有git命令

yum install git -y 

1、下載漢化補丁

git clone https://gitlab.com/xhang/gitlab.git  

2、查看全部分支版本

git branch ‐a 

3、對比版本、生成補丁包

git diff remotes/origin/10-2-stable remotes/origin/10‐2‐stable‐zh > ../10.2.2‐zh.diff 

4、停止伺服器

gitlab-ctl stop 

5、打補丁

patch -d /opt/gitlab/embedded/service/gitlab‐rails -p1 < /tmp/10.2.2-zh.diff  

6、啟動和重新配置

gitlab-ctl start 
gitlab-ctl reconfigure

gitlba的網頁操作

通過瀏覽器輸入IP地址進行訪問gitlab
10.0.0.200

1、設置密碼

image.png | left | 826x436

2、修改外觀(也可不修改,只是為了美觀)

image.png | left | 826x598

效果圖

image.png | left | 826x413

3、添加群組和用戶

1、添加群組

image.png | left | 826x377

image.png | left | 708x896

2、添加用戶

image.png | left | 620x840

3、修改用戶密碼

image.png | left | 826x393

image.png | left | 801x870

添加用戶到群組並給與開發許可權

image.png | left | 826x394

4、創建倉庫(項目)

1、手動創建

image.png | left | 826x368

2、克隆一個項目,這裡我們直接克隆一個別人的項目

https://gitee.com/explore/starred/manage-monitor?lang=Html
1.先去上面網站複製克隆地址

image.png | left | 826x416

2.我們選擇克隆方式,選擇組為剛創建的組,項目名稱自定義,我們這裡用的是monitor

image.png | left | 826x586

3.創建成功

image.png | left | 826x400

5、設置分支保護(這是網頁遠程倉庫操作,本地伺服器操作上一篇git使用中有講解)

正常情況下,我們是不允許在master分支上修改內容的,我們只能創建新的分支修改,修改完成後進行合併,這裡我們做分支保護的目的是為了讓其他用戶如dev用戶在修改完代碼內容之後,發起合併請求,root用戶進行審核完成才能進行合併

1、無分支保護情況

我們首先登陸dev用戶,要瞭解dev是開發用戶,root是老大,老大一般做審核,擁有最高許可權
退出root用戶

image.png | left | 787x333

dev用戶登錄時需要重新編輯一次密碼

image.png | left | 826x281

登錄成功後打開我們的項目

image.png | left | 826x175

首先創建一個新的分支,在新分支上修改內容

image.png | left | 826x452

image.png | left | 826x215

我們隨便在test分支上修改一個內容

image.png | left | 826x429

image.png | left | 826x402

這裡我們給他加了一個對不起

image.png | left | 826x525

現在我們請求合併分支

image.png | left | 826x337

image.png | left | 826x260

image.png | left | 826x700

提交完合併請求會發現我們現在是可以合併的,因為沒有設分支保護

image.png | left | 826x473

image.png | left | 826x333

我們查看一下master分支,已經合併成功

image.png | left | 826x452

2、有分支保護情況

登錄root用戶設置分支保護

image.png | left | 826x377

image.png | left | 826x319

選擇保護master分支

image.png | left | 826x585

設置成功

image.png | left | 826x551

這時我們推出root用戶,登錄dev用戶,繼續測試一下,修改test下404.html,這裡我們又加了個“保護”

image.png | left | 826x558

然後我們合併請求(步驟和上面一樣),這時我們不能進行合併,因為有保護,只能root賬戶老大進行合併

image.png | left | 826x463

登錄到root賬戶,查看併合並請求

image.png | left | 826x277

image.png | left | 826x463

合併成功查看一下效果

image.png | left | 826x437

image.png | left | 826x443

jenkins

jenkin簡介

官網 https://jenkins.io/
Jenkins是一個開源軟體項目,是基於Java開發的一種持續集成工具,用於監控持續重覆的工作,旨在提供一個開
放易用的軟體平臺,使軟體的持續集成變成可能。

1、安裝準備

準備jenkins伺服器關閉selinux和防火牆
記憶體2G 50G+硬碟
jenkins 10.0.0.201

2、安裝JDK運行環境和jenkins服務

上傳JDK和jenkins rpm安裝包,使用rpm ‐ivh進行安裝,安裝完JDK運維java測試是否安裝成功

[root@jenkins ~]# rpm -ivh jdk-8u181-linux-x64.rpm
[root@jenkins ~]# rpm -ivh jenkins-2.99-1.1.noarch.rpm

3、配置jenkins

[root@jenkins ~]# vim /etc/sysconfig/jenkins
啟動用戶修改為root 
JENKINS_USER="root" 

image.png | left | 817x527

4、啟動jenkins並加入開機自啟

[root@jenkins ~]# systemctl start jenkins
[root@jenkins ~]# systemctl enable jenkins

jenkins網頁操作

訪問頁面進行配置
預設埠是8080
http://10.0.0.201:8080

1、在伺服器上查看jenkins提示的文件,把密碼粘貼到網頁

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
91e0de6b56374365be1da3ee2ed75254

image.png | left | 826x614

登錄中,可能需要等一段時間

image.png | left | 826x530

2、進入後我們先跳過安裝插件界面

image.png | left | 826x547

開始使用jenkins

image.png | left | 826x630

成功進入jenkins主界面

image.png | left | 826x345

3、我們可以再這裡先修改一下密碼(也可忽略)

image.png | left | 826x415

image.png | left | 826x536

4.插件安裝

image.png | left | 826x502

image.png | left | 832x380.9438202247191

安裝完插件查看一下

image.png | left | 826x432

插件安裝目錄

[root@jenkins jenkins]# ll /var/lib/jenkins/plugins
總用量 80936
drwxr-xr-x 7 jenkins jenkins      124 12月  3 2017 ace-editor
-rw-r--r-- 1 jenkins jenkins  4279042 12月  3 2017 ace-editor.jpi
drwxr-xr-x 4 jenkins jenkins       56 12月  3 2017 ant
drwxr-xr-x 4 jenkins jenkins       56 12月  3 2017 antisamy-markup-formatter
-rw-r--r-- 1 jenkins jenkins   112796 12月  3 2017 antisamy-markup-formatter.jpi
-rw-r--r-- 1 jenkins jenkins    81259 12月  3 2017 ant.jpi
drwxr-xr-x 4 jenkins jenkins       56 12月  3 2017 apache-httpcomponents-client-4-api
-rw-r--r-- 1 jenkins jenkins  1407235 12月  3 2017 apache-httpcomponents-client-4-api.jpi
drwxr-xr-x 4 jenkins jenkins       56 12月  3 2017 authentication-tokens
-rw-r--r-- 1 jenkins jenkins    14638 12月  3 2017 authentication-tokens.jpi
drwxr-xr-x 4 root    root          56 12月  7 2017 blueocean-commons
-rw-r--r-- 1 root    root     1540739 12月  7 2017 blueocean-commons.jpi

jenkins主要的目錄

/usr/lib/jenkins/:jenkins安裝目錄,WAR包會放在這裡 
/etc/sysconfig/jenkins:jenkins配置文件,“埠”,“JENKINS_HOME”等都可以在這裡配置 
/var/lib/jenkins/:預設的JENKINS_HOME 
/var/log/jenkins/jenkins.log:Jenkins日誌文件 

5、創建一個自由風格的項目freestyle‐job

image.png | left | 826x438

image.png | left | 826x621

1、配置項目,丟失舊的構建

image.png | left | 826x479

2、源碼管理將gitlab倉庫和jenkins關聯

這裡我們需要吧jenkins伺服器的公鑰給gitlab
jenkins端生成公鑰

[root@jenkins ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:rm4L5a3Of3URrgcywqOKZtsda5eWoBzZiBsJn/HFztE root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|              .  |
|     . o     . . |
|. .   + E o . o  |
| o * B.oSo o o . |
|  * =o*o    o o  |
|   =.+o.oo . o   |
|  =.++o== .      |
| o...=X=..       |
+----[SHA256]-----+

查看公鑰

[root@jenkins ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHKs/orwn138ROGQicn8yiku6xB0Sn7dqty5KRpE9kc7Z6QFHMms/XWiZetsaGv+uKq9XDExF+5Tt1J6nCHEmrImstr17/u5uSr+YH/9LWxxv5SDJphdwwkUeoN+xMcQ/uJ5r8aWnCfS4wKoPXpoYe22AokkQ4RuxoAud6ZxLU5Bo0rJx3Q8WI0ew67SBI6bxRkwdgjmJhNsZiI8vsEKhZDW8kNlYTz8WuW9jBI/V+qewUeKDiS0O+zbrE7qMhtB+Rj9R/jEHOgOi2ucINWKaOkL7H8rmlhK3WFi3gVmX8Bj6otg2q7HfjZlBXY9sx28U2f8vzOEoGYiM+546PKM6F root@jenkins

把公鑰給gitlab

image.png | left | 826x360

jenkins關聯gitlab

image.png | left | 826x462

這裡報錯原因是第一次連接他會有一個確認伺服器主機的操作,我們需要確認一下

image.png | left | 826x475

複製上面的報錯,如果出現確認主機情況就輸入yes

[root@jenkins ~]# git ls-remote -h [email protected]:zeq/monitor.git 
742c1e0055ccdd69c9626052b5463ed5337ad0c9    refs/heads/master

然後我們刪除url重新粘貼一遍就好了

image.png | left | 826x434

3、構建觸發器

選擇第四個,點擊高級

image.png | left | 826x469

過濾master分支,生成token

image.png | left | 826x529

4、添加gitlab端web鉤子

複製jenkins項目url和token

image.png | left | 826x582

添加到gitlab

image.png | left | 826x474

5、添加構建

在jenkins伺服器上創建一個腳本目錄

[root@jenkins ~]# mkdir /server/scripts -p

編寫一個腳本,把從gitlab拉取過來的代碼推送到web伺服器上

[root@jenkins ~]# vim /server/scripts/do.sh
#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/freestyle-job"
WEB_DIR="/code"
IP=10.0.0.7

get_code_tar(){
        cd $CODE_DIR && tar zcf /opt/web-$DATE.tar.gz ./*
}

scp_code_web(){
        scp /opt/web-$DATE.tar.gz $IP:$WEB_DIR
}

code_tarxf(){
        ssh $IP "cd $WEB_DIR &&mkdir web-$DATE && tar xf web-$DATE.tar.gz -C web-$DATE"

}
ln_html(){
         ssh $IP "cd $WEB_DIR && rm -rf html && ln -s web-$DATE html"
}

main(){

        get_code_tar;
        scp_code_web;
        code_tarxf;
        ln_html;
}
main

因為要推送到web伺服器上,我們要把公鑰給web伺服器

[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

增加構建步驟

image.png | left | 826x329

image.png | left | 826x391

jenkins自由風格項目創建完成,接下來我們開始配置web伺服器

web伺服器操作

因為我們最終操作是實現代碼自動上線到web伺服器,我們要配置web伺服器

1.安裝nginx擴展源

[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2、安裝nginx

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

3、配置nginx

[root@web01 ~]# vim /etc/nginx/conf.d/git_jenkins.conf
server {
        server_name 10.0.0.7;
        listen 80;
        root /code/html;
        index index.php index.html;
}

4.創建代碼存放目錄

[root@web01 ~]# mkdir /code

5、啟動nginx並加入開機自啟動

[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx

進行代碼自動上線測試

整個流程是gitlab上的倉庫master分支只要做了改動就會通知jenkins伺服器,然後jenkins觸發構建器拉取gitlab上的代碼內容,最後執行shell腳本,把代碼推送到web上實現代碼的自動上線。

1、gitlab端操作

為了直觀的看到代碼變化,我們修改主頁index.html文件,這裡我們方便演示,直接在root用戶的master分支進行修改,實際生產環境中是不允許這樣做的,切記。
修改步驟和上面講解gitlab的分支保護步驟一樣,我們修改43行的文字改成張恩清ichn.me

image.png | left | 826x570

image.png | left | 826x538

2、修改完成後查看jenkins端

這裡我們已經自動構建成功了,藍色代表成功,紅色代表失敗

image.png | left | 826x586

3、web端操作

在瀏覽器上輸入web伺服器地址http://10.0.0.7查看效果

image.png | left | 826x422

這樣一個自由風格的jenkins代碼自動上線就創建完成了,接下來我們做一個Pipeline項目

jenkins Pipeline項目

1、什麼是持續集成、持續部署、持續交付

持續集成 (Continuous integration)

是一種軟體開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員
每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發佈,自動
化測試)來驗證,從而儘早地發現集成錯誤。
比如(你家裝修廚房,其中一項是鋪地磚,邊角地磚要切割大小。如果一次全切割完再鋪上去,發現尺寸有誤的話
浪費和返工時間就大了,不如切一塊鋪一塊。這就是持續集成。) 

持續部署(continuous deployment)

是通過自動化的構建、測試和部署迴圈來快速交付高質量的產品。某種程度
上代表了一個開發團隊工程化的程度,畢竟快速運轉的互聯網公司人力成本會高於機器,投資機器優化開發流程化
相對也提高了人的效率。
比如(裝修廚房有很多部分,每個部分都有檢測手段,如地磚鋪完了要測試漏水與否,線路鋪完了要通電測試電路
通順,水管裝好了也要測試冷水熱水。如果全部裝完了再測,出現問題可能會互相影響,比如電路不行可能要把地
磚給挖開……。那麼每完成一部分就測試,這是持續部署。) 

持續交付 (Continuous Delivery)

頻繁地將軟體的新版本,交付給質量團隊或者用戶,以供評審儘早發現生產環境
中存在的問題;如果評審通過,代碼就進入生產階段
比如(全部裝修完了,你去驗收,發現地磚顏色不合意,水池太小,竈台位置不對,返工嗎?所以不如沒完成一部
分,你就去用一下試用驗收,這就是持續交付。)
敏捷思想中提出的這三個觀點,還強調一件事:通過技術手段自動化這三個工作。加快交付速度。

2、pipeline簡介

1、什麼是pipeline

Jenkins 2.0的精髓是Pipeline as Code,是幫助Jenkins實現CI到CD轉變的重要角色。什麼是Pipeline,簡單
來說,就是一套運行於Jenkins上的工作流框架,將原本獨立運行於單個或者多個節點的任務連接起來,實現單個
任務難以完成的複雜發佈流程。Pipeline的實現方式是一套Groovy DSL,任何發佈流程都可以表述為一段Groovy
腳本,並且Jenkins支持從代碼庫直接讀取腳本,從而實現了Pipeline as Code的理念。 

2、pipeline概念

Pipeline 是一個用戶定義的 CD 流水線模式。Pipeline 代碼定義了通常包含構建、測試和發佈步驟的完整的構
建過程。
Node 
    node 是一個機器,它是 Jenkins 環境的一部分,並且能夠執行 Pipeline。同時,node 代碼塊也是腳本式 
Pipeline 語法的關鍵特性。 
Stage 
    Stage 塊定義了在整個 Pipeline 中執行的概念上不同的任務子集(例如“構建”,“測試”和“部署”階段),
許多插件使用它來可視化或呈現 Jenkins 管道狀態/進度。 
Step 
    一項任務。從根本上講,一個步驟告訴 Jenkins 在特定時間點(或過程中的“步驟”)要做什麼。例如,使用 
sh step:sh 'make' 可以執行 make 這個 shell 命令。 

3、jenkins file (語法)

聲明式 腳本式 
腳本式語法格式:

pipeline{ 
agent any 
stages{ 
    stage("get code"){ 
       steps{ 
           echo "get code from scm" 
       } 
    } 
    stage("package"){ 
        steps{ 
            echo "packge code" 
        } 
    } 
    stage("deploy"){ 
        steps{ 
            echo "deploy packge to node1" 
        } 
    } 
} 
} 

4、創建一個pipeline項目 

為了更直觀的看到效果,這裡我把jenkins自由風格的項目先刪除

image.png | left | 826x659

5、配置pipeline項目 

丟棄就得構建和觸發器設置和自由風格項目設置步驟是一樣的

image.png | left | 826x516

設置Definition
第一種方法,直接在jenkins端填寫腳本,這樣的弊端是出現錯誤後要gitlab端和jenkins端來回切換修改比較麻煩

image.png | left | 826x463

手動構建查看效果

image.png | left | 826x414

構建成功,pipeline配置可以看到每一步的日誌,可以知道那個步驟出錯

image.png | left | 826x396

第二種配置方法

image.png | left | 826x596

gitlab端新建一個文件,文件名稱和上面Script Path名稱保持一致

image.png | left | 826x547

這裡標註的名稱是文件名,jenkins,gitlab文件還有腳本內用里的名稱一定要一致

image.png | left | 826x443

附上代碼

pipeline{
agent any
stages{
    stage("get code"){
       steps{
            echo "get code"
       }
    }
    stage("unit test"){
       steps{
            echo "unit test"
} }
    stage("package"){
        steps{
            sh 'tar zcf /opt/web‐${BUILD_ID}.tar.gz ./*  --exclude=./git --exclude=./Jenkinsfile'
} }
    stage("deploy"){
        steps{
            sh 'ssh 10.0.0.7 "cd /code && mkdir web‐${BUILD_ID}"'
            sh 'scp /opt/web‐${BUILD_ID}.tar.gz 10.0.0.7:/code/web‐${BUILD_ID}'
            sh 'ssh 10.0.0.7 "cd /code/web‐${BUILD_ID} && tar xf web‐${BUILD_ID}.tar.gz && rm -rf web‐${BUILD_ID}.tar.gz"'
            sh 'ssh 10.0.0.7 "cd /code && rm -rf html && ln -s web‐${BUILD_ID} /code/html"'
        }
} }
}

做一下測試,還是修改主頁index.html內容,修改方式與上面測試上的步驟一樣
我們這裡修改成歡迎來訪張恩清博客園

image.png | left | 826x555

image.png | left | 826x572

修改完成查看jenkins和web端的效果

image.png | left | 826x341

image.png | left | 826x426

git+jenkins自動上線總結

image.png | left | 800x561.3394216133943

基本流程

客戶提出需求,公司進行分析,分析結束開發開始準備代碼,公司內部測試代碼,初步測試無誤後提交到gitlab伺服器上,然後通過jenkins伺服器推送到測試伺服器上,經過測試發現沒有任何問題以後就可以推送到生產環境上,如果出現bug,那麼開發人員將進行修改,修改完成提出合併請求交給開發經理(開發的老大)進行審核,開發經理審核通過後確認合併,然後gitlab通知jenkins伺服器觸發構建,然後到線上環境。
運維人員則是負責搭建和維護gitlab和jenkins伺服器,配合開發進行代碼的上線。

聲明

此篇文章是本人經過層層實驗,多次操作,確保操作無誤,儘可能讓基礎較差的朋友可以按照文章步驟完成代碼自動上線的操作,由於內容較多,排版和內容上可能會出現小的錯誤,大家可以積極指正,碼字不易,轉載請註明出處,謝謝。


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

-Advertisement-
Play Games
更多相關文章
  • 下載地址:https://ckeditor.com/ckeditor-4/download/ 一、使用方法: 1、在頁面中引入ckeditor核心文件ckeditor.js 2、在使用編輯器的地方插入HTML控制項<textarea> <textarea id="Contents" class="la ...
  • 1】測試工具jmeter環境安裝 1.1】安裝jdk環境 1:必須安裝jdk8.0(我嘗試安裝最新版本不行,好像當時沒有配置好。之後安裝8.0遍可以正常運行) 下載地址:單擊此段 配置jdk環境:滑鼠右鍵點擊桌面電腦→進入屬性→點擊高級系統設置→高級→環境變數 2:系統變數→新建 JAVA_HOM ...
  • DevExpress中的Dashboard這個圖形插件真的很好用, 只需要在設計器綁定數據就行了,完全不用寫後臺代碼.我也是剛學這個插件,可能還有一些我沒有瞭解的知識點,忘各位大佬不吝賜教.我寫這篇博文也是為了給想我一樣剛研究這個插件的博友們一些我的總結,給各位節省一些時間,哈哈. 1. 當我們創建 ...
  • 門禁服務程式已經調試完成,基於項目實時性要求,使用SignalR實現門禁狀態實時獲取和控制。 ...
  • 接著上一章繼續聊這個項目 本章主要會介紹到一下幾點 配置文件強類型model轉化 redis使用 一.基礎類介面的實現 1.首先創建IConfigGeter介面 介面代碼如下: 2.實現介面 介面實現代碼如下 3.創建一個ConfigLocator配置文件獲取器 實現代碼如下: 二.在program ...
  • 今天給大家分享一下採用asp.net core 快速構建小型創業公司後臺管理系統,該項目是我給一個朋友做的,將要用到公司項目,今天分享出來許可權管理模塊喜歡的朋友可以試用用一下。 項目不是一個什麼新項目,也沒有用到什麼牛逼的東西,但裡面融入了我用asp.net core構建管理系統的思考,可以說是思想 ...
  • 1. 內核空間和用戶空間 過去,CPU的地址匯流排只有32位, 32的地址匯流排無論是從邏輯上還是從物理上都只能描述4G的地址空間(232=4Gbit),在物理上理論上最多擁有4G記憶體(除了IO地址空間,實際記憶體容量小於4G),邏輯空間也只能描述4G的線性地址空間。 為了合理的利用邏輯4G空間,Linu ...
  • 1 Linux如何描述物理記憶體 Linux把物理記憶體劃分為三個層次來管理 層次| 描述 | 存儲節點(Node) | CPU被劃分為多個節點(node), 記憶體則被分簇, 每個CPU對應一個本地物理記憶體, 即一個CPU node對應一個記憶體簇bank,即每個記憶體簇被認為是一個節點 管理區(Zone) ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...