前言:前幾天有粉絲問我,網上java面試題總是參差不齊,希望我為他整理一套全面的java面試題,并且這套java面試題有個要求,必須能夠讓他20天就能看完這些面試題,他說現在很多面試題我看都得看3個月才能看完,然後我才能去找工作,但是自己得時間有限是以想讓我幫他總結一套萬能面試java求職筆記。接下來我将會至少分為12個章節進行闡述這套Java求職筆記,感興趣的可以堅持看完!覺得不錯的可以點個贊。
1為什麼寫這套Java求職筆記
很早的時候我就想寫一些Java求職方向的一些文章,由于很長時間耽擱了加上,有粉絲背景問我,可不可以幫他總結一些java求職筆記,他看了很多Java技術有很多技術,很迷茫不知道學哪些,我笑着說,不要着急,無論你到什麼時候你都會迷茫,因為技術一直在更新,謝謝你信任我,解救你的迷茫唯一辦法就是多看LRyab部落格,就是這樣我帶着粉絲的問題,開始編寫了這套Java求職筆記,看完這套求職筆記,我相信很多人都會找到屬于自己的心儀工作。
2DevOps&Docker容器化技術知識大綱
3DevOps&Docker容器化技術
3.1DevOps簡介
DevOps 就是開發(Development)、測試(QA)、運維(Operations)這三個領域的合并。
DevOps是一種思想、一組最佳實踐、以及一種文化。DevOps落地實施,從組織架構、設計人員、流程、人員分工、人員技能到工具,變化很大,要求很高,完全颠覆了現有的開發運維模式,建設風險很高。
DevOps落地困境包括:
- 涉及的部門多(開發中心、品質控制部門、生産運作部門);
- 流程改造複雜;
- 責任邊界需要重新劃分;
- 自動化是核心問題。
如下圖,傳統開發和運維之間存在一堵牆,開發人員想改變而運維人員想要穩定。另外,傳統開發工具與運維工具也存在一堵牆,并沒有打通成為一條工具鍊。
3.2CICD
持續內建(Continuous Integration ,CI)
在傳統軟體開發過程中,內建通常發生在每個人都完成了各自的工作之後。在項目尾聲階段,通常內建還要痛苦的花費數周或者數月的時間來完成。持續內建是一個将內建提前至開發周期的早期階段的實踐方式,讓建構、測試和內建代碼更經常反複地發生。
開發人員通常使用一種叫做CI Server 的工具來做建構和內建。持續內建要求史蒂夫和安妮能夠自測代碼。分别測試各自代碼來保證它能夠正常工作,這些測試通常被稱為單元測試(Unit tests)。
代碼內建以後,當所有的單元測試通過,史蒂夫和安妮就得到了一個綠色建構(green build)。這表明他們已經成功地內建在一起,代碼正按照測試預期地在工作。然而,盡管內建代碼能夠成功地一起工作了,它仍未為生産做好準備,因為它沒有在類似生産的環境中測試和工作。在下面持續傳遞部分你可以了解到持續內建後面發生了什麼。
持續傳遞(Continuous Delivery)
Continuous Delivery (CD) 持續傳遞是持續內建的延伸,将內建後的代碼部署到類生産環境,確定可以以可持續的方式快速向客戶釋出新的更改。如果代碼沒有問題,可以繼續手工部署到生産環境中。
持續部署(Continuous Deploy)
如果真的想獲得持續傳遞的好處,應該盡早部署到生産環境,以確定可以小批次釋出,在發生問題時可以輕松排除故障。于是有了持續部署。
我們通常将這個在不同環境釋出和測試的過程叫做部署流水線
持續部署是在持續傳遞的基礎上,把部署到生産環境的過程自動化。
3.3DevOps 與 CICD的差別及聯系
DevOps是CICD思想的延伸,CICD是DevOps的基礎核心,如果沒有CICD自動化的工具和流程,DevOps是沒有意義的。
4Docker容器化技術
1.Docker能幹什麼?
首先,Docker是容器技術的一種實作。
- 簡化配置:源代碼、運作環境、配置都能夠打包到一個容器裡,這個容器可以運作在不同的環境裡,這樣開發、測試、生産環境會保持高度一緻。
- 代碼流水化管理
- 整合伺服器
- 調試能力
- 提升開發效率
- 多租戶
- 隔離應用
- 快速部署
什麼是容器
- 對軟體及其依賴的标準化打包
- 能夠實作應用之間互相隔離
- 共享同一個OS Kernel
- 可以運作在很多主流作業系統上
4.1Docker常用指令
1、Docker容器資訊##檢視docker容器版本
docker version
##檢視docker容器資訊
docker info
##檢視docker容器幫助
docker --help
2、鏡像操作
2.1、鏡像檢視
##列出本地images
docker images
##顯示鏡像完整資訊
docker images --no-trunc
2.2、鏡像搜尋
##搜尋倉庫MySQL鏡像
docker search mysql
## --filter=stars=600:隻顯示 starts>=600 的鏡像
docker search --filter=stars=600 mysql
## --no-trunc 顯示鏡像完整 DESCRIPTION 描述
docker search --no-trunc mysql
## --automated :隻列出 AUTOMATED=OK 的鏡像
docker search --automated mysql
2.3、鏡像下載下傳
##下載下傳Redis官方最新鏡像,相當于:docker pull redis:latest
docker pull redis
##下載下傳倉庫所有Redis鏡像
docker pull -a redis
##下載下傳私人倉庫鏡像
docker pull bitnami/redis
2.4、鏡像删除
##單個鏡像删除,相當于:docker rmi redis:latest
docker rmi redis
##強制删除(針對基于鏡像有運作的容器程序)
docker rmi -f redis
##多個鏡像删除,不同鏡像間以空格間隔
docker rmi -f redis tomcat nginx
##删除本地全部鏡像
docker rmi -f $(docker images -q)
2.5、鏡像建構
##(1)編寫dockerfile
cd /docker/dockerfile
vim mycentos
##(2)建構docker鏡像
docker build -f /docker/dockerfile/mycentos -t mycentos:1.1
3、容器操作
提示:對于容器的操作可使用CONTAINER ID 或 NAMES。
3.1、容器啟動
##建立并啟動容器,參數:-i 以互動模式運作容器;-t 為容器重新配置設定一個僞輸入終端;--name 為容器指定一個名稱
docker run -i -t --name mycentos
##背景啟動容器,參數:-d 已守護方式啟動容器
docker run -d mycentos
注意:此時使用"docker ps -a"會發現容器已經退出。這是docker的機制:要使Docker容器背景運作,就必須有一個前台程序。解決方案:将你要運作的程式以前台程序的形式運作。
##啟動一個或多個已經被停止的容器
docker start redis
##重新開機容器
docker restart redis
3.2、容器的進入與退出
##使用run方式在建立時進入
docker run -it centos /bin/bash
##關閉容器并退出
exit
##僅退出容器,不關閉
快捷鍵:Ctrl + P + Q
##直接進入centos 容器啟動指令的終端,不會啟動新程序,多個attach連接配接共享容器螢幕,參數:--sig-proxy=false 確定CTRL-D或CTRL-C不會關閉容器
docker attach --sig-proxy=false centos
##在 centos 容器中打開新的互動模式終端,可以啟動新程序,參數:-i 即使沒有附加也保持STDIN 打開;-t 配置設定一個僞終端
docker exec -i -t centos /bin/bash
##以互動模式在容器中執行指令,結果傳回到目前終端螢幕
docker exec -i -t centos ls -l /tmp
##以分離模式在容器中執行指令,程式背景運作,結果不會回報到目前終端
docker exec -d centos touch cache.txt
3.3、檢視容器
##檢視正在運作的容器
docker ps
##檢視正在運作的容器的ID
docker ps -q
##擷取鏡像redis的元資訊
docker inspect redis
##擷取正在運作的容器redis的 IP
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis
3.4、容器的停止與删除
##停止一個運作中的容器
docker stop redis
##殺掉一個運作中的容器
docker kill redis
##删除一個已停止的容器
docker rm redis
##删除一個運作中的容器
docker rm -f redis
##删除多個容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
## -l 移除容器間的網絡連接配接,連接配接名為 db
docker rm -l db
## -v 删除容器,并删除容器挂載的資料卷
docker rm -v redis
3.5、生成鏡像
##基于目前redis容器建立一個新的鏡像;參數:-a 送出的鏡像作者;-c 使用Dockerfile指令來建立鏡像;-m :送出時的說明文字;-p :在commit時,将容器暫停
docker commit -a="DeepInThought" -m="my redis" [redis容器ID] myredis:v1.1
3.6、容器與主機間的資料拷貝
##将rabbitmq容器中的檔案copy至本地路徑
docker cp rabbitmq:/[container_path] [local_path]
##将主機檔案copy至rabbitmq容器
docker cp [local_path] rabbitmq:/[container_path]/
##将主機檔案copy至rabbitmq容器,目錄重命名為[container_path](注意與非重命名copy的差別)
docker cp [local_path] rabbitmq:/[container_path]
Docker更多實戰參考以前部落格内容
5個人說明
我是LRyab部落格,專注電商項目實戰開發,擅長網站搭建與技術問題指導,經驗是由一點一點積累的,思維也是由一天一天訓練出來的。謝謝大家的閱讀,原創不易,如果你認為文章對你有所幫助,就點個贊感謝大家支援,你的點贊是我持續寫作的動力!