前言:前幾天有粉絲問我,網(wǎng)上java面試題總是參差不齊,,希望我為他整理一套全面的java面試題,,并且這套java面試題有個要求,,必須能夠讓他20天就能看完這些面試題,他說現(xiàn)在很多面試題我看都得看3個月才能看完,,然后我才能去找工作,,但是自己得時間有限所以想讓我?guī)退偨Y(jié)一套萬能面試java求職筆記。接下來我將會至少分為12個章節(jié)進(jìn)行闡述這套Java求職筆記,,感興趣的可以堅持看完,!覺得不錯的可以點(diǎn)個贊。 1為什么寫這套Java求職筆記 很早的時候我就想寫一些Java求職方向的一些文章,,由于很長時間耽擱了加上,,有粉絲后臺問我,可不可以幫他總結(jié)一些java求職筆記,,他看了很多Java技術(shù)有很多技術(shù),,很迷茫不知道學(xué)哪些,我笑著說,,不要著急,,無論你到什么時候你都會迷茫,因?yàn)榧夹g(shù)一直在更新,,謝謝你信任我,,解救你的迷茫唯一辦法就是多看LRyab博客,就是這樣我?guī)е劢z的問題,,開始編寫了這套Java求職筆記,,看完這套求職筆記,我相信很多人都會找到屬于自己的心儀工作,。 2DevOps&Docker容器化技術(shù)知識大綱3DevOps&Docker容器化技術(shù)3.1DevOps簡介DevOps 就是開發(fā)(Development),、測試(QA)、運(yùn)維(Operations)這三個領(lǐng)域的合并,。 DevOps是一種思想,、一組最佳實(shí)踐、以及一種文化,。DevOps落地實(shí)施,,從組織架構(gòu)、設(shè)計人員,、流程,、人員分工、人員技能到工具,,變化很大,,要求很高,完全顛覆了現(xiàn)有的開發(fā)運(yùn)維模式,,建設(shè)風(fēng)險很高,。 DevOps落地困境包括:
如下圖,傳統(tǒng)開發(fā)和運(yùn)維之間存在一堵墻,,開發(fā)人員想改變而運(yùn)維人員想要穩(wěn)定,。另外,傳統(tǒng)開發(fā)工具與運(yùn)維工具也存在一堵墻,,并沒有打通成為一條工具鏈,。 3.2CICD持續(xù)集成(Continuous Integration ,CI) 在傳統(tǒng)軟件開發(fā)過程中,,集成通常發(fā)生在每個人都完成了各自的工作之后,。在項(xiàng)目尾聲階段,通常集成還要痛苦的花費(fèi)數(shù)周或者數(shù)月的時間來完成,。持續(xù)集成是一個將集成提前至開發(fā)周期的早期階段的實(shí)踐方式,,讓構(gòu)建、測試和集成代碼更經(jīng)常反復(fù)地發(fā)生,。 開發(fā)人員通常使用一種叫做CI Server 的工具來做構(gòu)建和集成,。持續(xù)集成要求史蒂夫和安妮能夠自測代碼。分別測試各自代碼來保證它能夠正常工作,,這些測試通常被稱為單元測試(Unit tests),。 代碼集成以后,當(dāng)所有的單元測試通過,,史蒂夫和安妮就得到了一個綠色構(gòu)建(green build),。這表明他們已經(jīng)成功地集成在一起,代碼正按照測試預(yù)期地在工作,。然而,,盡管集成代碼能夠成功地一起工作了,它仍未為生產(chǎn)做好準(zhǔn)備,,因?yàn)樗鼪]有在類似生產(chǎn)的環(huán)境中測試和工作,。在下面持續(xù)交付部分你可以了解到持續(xù)集成后面發(fā)生了什么。 持續(xù)交付(Continuous Delivery) Continuous Delivery (CD) 持續(xù)交付是持續(xù)集成的延伸,,將集成后的代碼部署到類生產(chǎn)環(huán)境,,確保可以以可持續(xù)的方式快速向客戶發(fā)布新的更改,。如果代碼沒有問題,,可以繼續(xù)手工部署到生產(chǎn)環(huán)境中,。 持續(xù)部署(Continuous Deploy) 如果真的想獲得持續(xù)交付的好處,應(yīng)該盡早部署到生產(chǎn)環(huán)境,,以確??梢孕∨伟l(fā)布,在發(fā)生問題時可以輕松排除故障,。于是有了持續(xù)部署,。 我們通常將這個在不同環(huán)境發(fā)布和測試的過程叫做部署流水線 持續(xù)部署是在持續(xù)交付的基礎(chǔ)上,把部署到生產(chǎn)環(huán)境的過程自動化,。 3.3DevOps 與 CICD的區(qū)別及聯(lián)系DevOps是CICD思想的延伸,,CICD是DevOps的基礎(chǔ)核心,如果沒有CICD自動化的工具和流程,,DevOps是沒有意義的,。 4Docker容器化技術(shù)1.Docker能干什么? 首先,,Docker是容器技術(shù)的一種實(shí)現(xiàn),。
什么是容器
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官方最新鏡像,相當(dāng)于:docker pull redis:latest docker pull redis ##下載倉庫所有Redis鏡像 docker pull -a redis ##下載私人倉庫鏡像 docker pull bitnami/redis 2.4,、鏡像刪除 ##單個鏡像刪除,,相當(dāng)于:docker rmi redis:latest docker rmi redis ##強(qiáng)制刪除(針對基于鏡像有運(yùn)行的容器進(jìn)程) docker rmi -f redis ##多個鏡像刪除,不同鏡像間以空格間隔 docker rmi -f redis tomcat nginx ##刪除本地全部鏡像 docker rmi -f $(docker images -q) 2.5,、鏡像構(gòu)建 ##(1)編寫dockerfile cd /docker/dockerfile vim mycentos ##(2)構(gòu)建docker鏡像 docker build -f /docker/dockerfile/mycentos -t mycentos:1.1 3,、容器操作 提示:對于容器的操作可使用CONTAINER ID 或 NAMES。 3.1,、容器啟動 ##新建并啟動容器,,參數(shù):-i 以交互模式運(yùn)行容器;-t 為容器重新分配一個偽輸入終端;--name 為容器指定一個名稱 docker run -i -t --name mycentos ##后臺啟動容器,,參數(shù):-d 已守護(hù)方式啟動容器 docker run -d mycentos 注意:此時使用"docker ps -a"會發(fā)現(xiàn)容器已經(jīng)退出,。這是docker的機(jī)制:要使Docker容器后臺運(yùn)行,就必須有一個前臺進(jìn)程,。解決方案:將你要運(yùn)行的程序以前臺進(jìn)程的形式運(yùn)行,。 ##啟動一個或多個已經(jīng)被停止的容器 docker start redis ##重啟容器 docker restart redis 3.2、容器的進(jìn)入與退出 ##使用run方式在創(chuàng)建時進(jìn)入 docker run -it centos /bin/bash ##關(guān)閉容器并退出 exit ##僅退出容器,,不關(guān)閉 快捷鍵:Ctrl + P + Q ##直接進(jìn)入centos 容器啟動命令的終端,,不會啟動新進(jìn)程,多個attach連接共享容器屏幕,,參數(shù):--sig-proxy=false 確保CTRL-D或CTRL-C不會關(guān)閉容器 docker attach --sig-proxy=false centos ##在 centos 容器中打開新的交互模式終端,,可以啟動新進(jìn)程,參數(shù):-i 即使沒有附加也保持STDIN 打開,;-t 分配一個偽終端 docker exec -i -t centos /bin/bash ##以交互模式在容器中執(zhí)行命令,結(jié)果返回到當(dāng)前終端屏幕 docker exec -i -t centos ls -l /tmp ##以分離模式在容器中執(zhí)行命令,,程序后臺運(yùn)行,,結(jié)果不會反饋到當(dāng)前終端 docker exec -d centos touch cache.txt 3.3、查看容器 ##查看正在運(yùn)行的容器 docker ps ##查看正在運(yùn)行的容器的ID docker ps -q ##獲取鏡像redis的元信息 docker inspect redis ##獲取正在運(yùn)行的容器redis的 IP docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis 3.4,、容器的停止與刪除 ##停止一個運(yùn)行中的容器 docker stop redis ##殺掉一個運(yùn)行中的容器 docker kill redis ##刪除一個已停止的容器 docker rm redis ##刪除一個運(yùn)行中的容器 docker rm -f redis ##刪除多個容器 docker rm -f $(docker ps -a -q) docker ps -a -q | xargs docker rm ## -l 移除容器間的網(wǎng)絡(luò)連接,,連接名為 db docker rm -l db ## -v 刪除容器,并刪除容器掛載的數(shù)據(jù)卷 docker rm -v redis 3.5,、生成鏡像 ##基于當(dāng)前redis容器創(chuàng)建一個新的鏡像,;參數(shù):-a 提交的鏡像作者;-c 使用Dockerfile指令來創(chuàng)建鏡像,;-m :提交時的說明文字,;-p :在commit時,將容器暫停 docker commit -a="DeepInThought" -m="my redis" [redis容器ID] myredis:v1.1 3.6,、容器與主機(jī)間的數(shù)據(jù)拷貝 ##將rabbitmq容器中的文件copy至本地路徑 docker cp rabbitmq:/[container_path] [local_path] ##將主機(jī)文件copy至rabbitmq容器 docker cp [local_path] rabbitmq:/[container_path]/ ##將主機(jī)文件copy至rabbitmq容器,,目錄重命名為[container_path](注意與非重命名copy的區(qū)別) docker cp [local_path] rabbitmq:/[container_path] |
|