主頁 > 軟體工程 > GitLab CI-CD 學習筆記

GitLab CI-CD 學習筆記

2023-02-12 07:32:48 軟體工程

概述

1. CI/CD

CI(持續集成)指開發人員一天內進行多次合并和提交代碼操作,并通過自動化測驗,完成構建

CD(持續部署)指每次代碼更改都會自動部署到對應環境

CI/CD 結合在一起,可以加快開發團隊交付成果的效率,減少時間成本

2. Gitlab-CI/CD

gitlab-ci 是 gitlab8.0 之后自帶的一個持續集成系統,中心思想是每一次 push 到 gitlab 就會觸發一次腳本執行,腳本內容包括測驗、編譯、部署等一系列內容

gitlab-ci 的腳本需要 gitlab-runner 來執行,代碼 push 之后,webhook 檢查到代碼變化,就會觸發 gitlab-ci,分配到各個 Runner 來運行相應的腳本


gitlab-ce

1. 安裝 gitlab-ce

gitlab 有 ce 和 ee 兩個版本,ce 是社區版,開源免費,ee 是企業版,需要付費

下面以 Ubuntu18.04.6 為例,安裝 gitlab-ce

安裝依賴軟體

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

添加 gitlab 軟體源鏡像

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

安裝 gitlab-ce

sudo apt-get install gitlab-ce

如果命令列能看到 Gitlab 的 Logo 列印,就說明安裝成功了

打開 gitlab 組態檔

vim /etc/gitlab/gitlab.rb

為了能在瀏覽器訪問 gitlab,還需要配置 gitlab 的訪問地址和埠

# ip:port 改成自己的,也可以用域名
external_url 'http://192.168.66.100:82'

多載配置并重啟

gitlab-ctl recofigure
gitlab-ctl restart

在瀏覽器輸入 http://192.168.66.100:82 即可訪問 gitlab,當然了,前提是你的埠要放開

初始用戶名為 root,初始密碼記錄在 /etc/gitlab/initial_root_password 檔案,密碼有效期為 24 小時,建議登錄后盡快修改密碼

登錄以后,就可以創建專案了,其余的基本的 git 操作這里就不贅述了

2. 其他問題

gitlab-ctl recofigure 程序,有可能出現卡在 ruby_block[wait for logrotate service socket] action run 的情況,解決辦法如下:

  • ctrl + c 強行結束

  • 運行 systemctl restart gitlab-runsvdir

  • 再次運行 gitlab-ctl recofigure

安裝結束以后,訪問 web 端報 502,最可能的原因是埠被占用了,需要修改埠

vim /etc/gitlab/gitlab.rb
# 修改為沒有被使用的埠即可
puma['port'] = 9091

gitlab-runner

1. 安裝 gitlab-runner

下面以 Ubuntu18.04.6 為例,安裝 gitlab-runner

添加 gitlab 軟體源鏡像

curl https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

安裝 gitlab-runner

sudo apt-get install gitlab-runner

2. gitlab-runner 注冊

首先獲取 gitlab-ci 的 token:專案主頁->Setting->CI/CD->Runners Expand

使用命令注冊 gitlab-runner

gitlab-runner register

按照步驟輸入:

  1. GitLab instance URL:如上圖所示 URL
  2. registration token:如上圖所示 Token
  3. description:關于該 Runner 的描述
  4. tags:用于標記該 Runner,后續需要使用這個 tag 來指定 gitlab-runner
  5. optional maintenance note:沒搞懂有啥用,隨意寫
  6. Enter an executor:選擇執行器,gitlab-runner 提供了許多執行器,可用在不同場景中運行構建,這里選擇 shell

完成以后,重繪頁面,即可在 Runners Expand 看到新增了一個 Runner

3. 簡單示例

下面我們簡單測驗一下 Runner 是否能正常運行,隨意新建一個 SpringBoot 專案

在根目錄下創建一個 .gitlab-ci.yml 檔案,這里只是簡單輸出一段陳述句

stages:
  - deploy

deploy-job:
  tags:
    - prod
  stage: deploy
  script:
    - echo "hello world!!!"

push 到 gitlab 后,會發現腳本已經自動執行了,綠勾代表執行成功

點擊綠勾,在下方 Pipeline 點擊 deploy-job 可以查看執行程序


pipeline 語法

1. job & script

.gitlab-ci.yml 檔案中可以定義一個或多個作業(job),每個作業獨立執行,必須有唯一的名稱(不能使用關鍵字)以及包含一個 script,這里定義了三個作業 build、test、deploy,script 可以是 shell 命令

build:
	script: 
	  - echo "build"
test:
	script: 
	  - echo "test"
deploy:
	script: 
	  - echo "deploy"
	  - echo "finish"

2. before_script & after_script

before_script 用于定義一個命令,在每個作業運行之前運行,before_script 失敗將導致整個作業失敗,其他作業不再執行,如果在作業中定義了 before_script,則該作業不會運行全域的 before_script

after_script 用于定義一個命令,在每個作業運行之后運行,作業失敗不影響 after_script 的運行,如果在作業中定義了 after_script,則該作業不會運行全域的 after_script

before_script:
	- echo "before script"
build:
	before_script: 
		- echo "before script in buildjob"
	script: 
		- echo "build"
	after_script:
		- echo "before script in buildjob"
test:
	script: 
		- echo "test"
deploy:
	script: 
		- echo "deploy"
		- echo "finish"
		
after_script:
	- echo "after script"

3. stages & stage

用于定義作業可以使用的階段,并且是全域定義的,同一階段的作業并行運行,不同階段按順序執行

before_script:
	- echo "before script"
	
stages:
	- build
	- test
	- deploy

build:
	before_script: 
		- echo "before script in buildjob"
	stage: build
	script: 
		- echo "build"
	after_script:
		- echo "before script in buildjob"
test:
	stage: test
	script: 
		- echo "test"
		
deploy:
	stage: deploy
	script: 
		- echo "deploy"
		- sleep 5
		
after_script:
	- echo "after script"

4. .pre & .post

.pre 始終是整個 pipeline 的第一個運行階段,.post 始終是整個 pipeline 的最后一個運行階段,無法修改,用戶自定義的 stage 則在這兩者之間,如果一個 pipeline 僅包含 .pre 和 .post,則不會創建 pipeline

before_script:
	- echo "before script"
	
stages:
	- build
	- test
	- deploy
	
codescan:
	stage: .pre
	script: 
		- echo "codescan"

build:
	before_script: 
		- echo "before script in buildjob"
	stage: build
	script: 
		- echo "build"
	after_script:
		- echo "before script in buildjob"
test:
	stage: test
	script: 
		- echo "test"
		
deploy:
	stage: deploy
	script: 
		- echo "deploy"
		- sleep 5
		
after_script:
	- echo "after script"

5. variables

定義變數,可以定義 pipeline 變數、job 變數,job 變數優先級最高

before_script:
	- echo "before script"
	
variables:
	DOMAIN: example.com

stages:
	- build
	- test
	- deploy
	
codescan:
	stage: .pre
	script: 
		- echo "codescan"

build:
	before_script: 
		- echo "before script in buildjob"
	stage: build
	script: 
		- echo "build"
		- echo "$DOMAIN"
	after_script:
		- echo "before script in buildjob"
test:
	stage: test
	script: 
		- echo "test"
		
deploy:
	stage: deploy
	script: 
		- echo "deploy"
		- sleep 5
		
after_script:
	- echo "after script"

6. tags

用于指定特定的 job 在特定的 runner 運行,如果 job 不指定 tags,則默認在共享的 runner 運行

windows_job:
	stages: 
		- build
	tags:
		-windows
	script:
		- echo "windows job"

linux_job:
	stages: 
		- build
	tags:
		-linux
	script:
		- echo "linux job"

7. allow_failure

allow_failure 表示是否允許作業失敗,默認值 false 不允許失敗,改為 true 后,如果該作業失敗也不會被阻塞

job1:
	stage: test
	script: 
		- "..."
	allow_failure: true

8. when

when 用于控制作業運行:

  • on_success:前面階段的所有作業成功才執行該作業,默認 on_success
  • on_failure:前面階段出現失敗時執行
  • always:總是執行作業
  • manual:手動執行作業
  • delayed:延遲執行作業
job1:
	stage: test
	script: 
		- "..."
	when: delayed	# 表示延遲30s執行
	start_in: "30"

9. retry

配置作業失敗后重試作業的次數

job1:
	stage: test
	script: 
		- "..."
	retry: 2

也可以精確匹配到某一錯誤,即出現某一錯誤時才重試

job1:
	stage: test
	script: 
		- "..."
	retry: 
		max: 2
		when: 
			- script_failure	# 腳本失敗時重試

10. timeout

作業級別的超時可以超過專案級別的超時,但不能超過 Runner 特定的超時

job1:
	stage: test
	script: 
		- "..."
	timeout: 3h

11. parallel

配置要并行運行的作業的實體數,此值必須大于等于 2 并小于等于 50,這將創建 N 個并行運行的同一作業實體

job1:
	stage: test
	script: 
		- "..."
	parallel: 5

12. rules

rules 允許按順序評估單個規則,直到匹配為止:

  • if:如果條件匹配,多條件匹配可以使用 && ||

    variables:
    	DOMAIN: example.com
    
    job1:
    	stage: test
    	script: 
    		- "..."
    	rules:	# DOMAIN值匹配,則手動運行,否則
    		- if: '$DOMAIN == "example.com"'
    		  when: manual
    		- if: '$DOMAIN == "example2.com"'
    		  when: delayed
    		  start_in: '5'
    		- when: on_success
    
  • changes:指定檔案發生變化

    job1:
    	stage: test
    	script: 
    		- "..."
    	rules:
    		- changes: 
    			- fimeName # 檔案名
    		  when: manual
    		- when: on_success
    
  • exists:指定檔案存在

    job1:
    	stage: test
    	script: 
    		- "..."
    	rules:
    		- exists: 
    			- fimeName # 檔案名
    		  when: manual
    		- when: on_success
    

13. workflow-rules

workfolw 關鍵字適用于整個管道,并確定是否創建管道

variables:
	DOMAIN: example.com

workflow:
	rules:
		- if: '$DOMAIN == "example.com"'
		  when: always	# 默認always,可以設定never
		- when: never

14. cache

存盤編譯專案時所需的運行時依賴項,指定專案作業空間中需要在 job 之間快取的檔案或目錄

全域 cache 定義在 job 之外,針對所有 job 生效,job 中的 cache 優于全域

cache:
	paths:	# 在全域定義快取
		- my/files

job:
	script: "..."
	cache:
		key: job	# 為快取設定唯一key,會為該job分配一個獨立的cache
		paths:	# 在job中定義快取,快取target目錄下的所有.jar檔案,該快取將覆寫全域快取
			- target/*.jar
		# policy: pull # pull:不下載快取,push不上傳快取,默認會在job執行之前下載快取,并在結束之后上傳快取

15. artifacts

用于指定作業成功或失敗時應附加到作業的檔案或目錄的串列,可在 Gitlab UI 中下載

build:
	script:
		- mvn package
	artifacts:
		name: "$ARTIFACTS_NAME"	# 指定所創建的制品名稱,默認為artifacts,下載為artifacts.zip
		paths:
			- target/*.jar
		when: always	# 制品創建條件,on_success:作業成功時創造制品,on_failure:作業失敗時創建制品,always:總是創建制品
		expire_in: 1 week	# 制品有效期,從存盤到gitlab開始算起,默認30天

16. dependencies

獲取當前階段之前的制品

build:
	stage: build
	script:
		- mvn package
	artifacts:
		name "$ARTIFACTS_NAME"
		paths: 
			- target/*.jar

deploy:
	dependencies:
		- build
	stage: deploy
	script: 
		- ...	# 部署制品

17. needs

可以讓作業無需按照階段順序運行,下述的例子表示:deploy-a 在 build-a 完成之后就可以執行,deploy-b 在 build-b 完成之后就可以執行

stages:
	- build
	- deploy
	
build-a:
	stage: build
	script: 
		- ...

build-b:
	stage: build
	script: 
		- ...
		
deploy-a:
	stage: deploy
	script:
		- ...
	needs: ["build-a"]

deploy-b:
	stage: deploy
	script:
		- ...
	needs: ["build-b"]

18. include

可以引入外部 yaml 檔案,使用合并功能可以自定義和覆寫本地定義的 CI/CD 配置

local

引入同一存盤庫的檔案,使用相對于根目錄的完整路徑進行參考,必須保證走到同一分支

假設有 ci/localci.yml 檔案

stages:
	- deploy
	
deploy-job:
	stage: deploy
	script: ...

在 .gitlab-ci.yml 引入 ci/localci.yml 檔案,如果存在相同名稱的作業,它們的配置會進行合并,并且原檔案 .gitlab-ci.yml 的配置優先生效

include:
	local: "ci/localci.yaml"
	
stages:
	- build
	- test
	- deploy
	
build-job:
	stage: build
	script: ...

test-job:
	stage: test
	script: ...

file

引入其他專案的 yaml 配置

include:
	project: demo/demo-java-service
	ref: master
	file: .gitlab-ci.yml

template

引入官方提供的模板,可以訪問 https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates 查看有哪些模板

include:
	template: Auto-DevOps.gitlab-ci.yml

remote

引入遠程檔案

include:
	remote: "https://gitlab.com/awesome-project/raw/master/.gitlab-ci-template.yml"

19. extends

繼承作業配置,相同配置覆寫,不同則繼承

.tests:
	script: mvn test
	stage: test
	only:
		refs:
			- tags

test-job:
	extends: .tests
	script: mvn clean test
	only:
		variables:
			- $RSPEC

最終得到的作業配置如下

test-job:
	stage: test
	script: mvn clean test
	only:
		variables:
			- $RSPEC
		refs:
			- tags

20. trigger

當 gitlab 從 trigger 定義創建的作業啟動時,將創建一個下游管道,允許創建多專案管道和子管道:

  • 多專案管道:跨多個專案設定流水線,以便一個專案的管道可以觸發另一個專案的管道

    stagging:
    	variables:
    		ENVIROMENT: stagging	# 該變數會傳遞給下游管道,如果上下游定義了相同名稱的變數,上游變數將優先
    	stage: deploy
    	trigger:
    		project: demo/demo-java-service	# 指定下游專案的完整路徑
    		branch: master	# 指定專案的分支名稱
    		strategy: depend	# 將自身狀態從觸發的管道合并到源作業
    
  • 父子管道:同一專案的管道可以觸發一組同時運行的子管道

    子管道 ci/child.yml

    stages:
    	- build
    
    child-build-job:
    	stage: build
    	script: ...
    

    父管道

    stages:
    	- deploy
    	
    stagging:
    	stage: deploy
    	trigger:
    		include: ci/child.yml
    		strategy: depend21
    

21. image

首先注冊一個作業型別為 docker 的 runner,只要使用該型別的 runner,所有運行操作都會在容器中運行

gitlab-runner register \
	--non-interactive \
	--executor "docker" \
	--docker-image alpine:latest \	# 默認使用該鏡像
	--url "http://192.168.1.200:30088/"	\
	--registration-token "JRzzw2j1Ji6aBjwvkxAv" \
	--description "docker-runner" \
	--tag-list "docker" \
	--run-untagged="true" \
	--locked="false" \
	--access-level="not_protected"

默認注冊 runner 會指定一個基礎鏡像,如果全域指定 image 則所有作業使用該鏡像創建容器并運行,如果全域未指定 image,則查看 job 中是否有指定,有則按照 job 指定的鏡像創建容器并運行,否則使用默認鏡像

image: maven:3.6.3-jdk-8	# 全域定義

...

deploy-job:
	stage: deploy
	tags:
		- docker
	script: ...
	image: maven:3.6.3-jdk-8	# 區域定義

22. services

作業期間運行的另一個 Docker 服務鏡像,將其 link 到 image 定義的 Docker 鏡像,這樣可以在構建期間訪問該服務鏡像

...

services:
	- name: mysql:latest
	  alias: mysql

build-job:
	stage: build
	tags:
		- docker
	script: ...
	image: maven:3.6.3-jdk-8	# 區域定義

23. environment

可用于在 gitlab ui 追蹤作業運行情況,

deploy-job:
	stage: deploy
	tags:
		- docker
	script: ...
	environment:
		name: production	# 應用名稱
		url: http://www.baidu.com	# 應用地址 

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

標籤:其他

上一篇:破解練習-CRACKME001

下一篇:破解練習-CRACKME001

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

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more