制造業(yè)央企,七年老程序員,精通JAVA “HELLO WORLD”、SHELL腳本 ECHO “HELLO WORLD”的編寫(xiě),擁有1分鐘裝完DOCKER,五分鐘裝完K8S集群,等“牛逼技能”。
混沌初開(kāi),乾坤始奠
純純內(nèi)外網(wǎng)隔離,只能通過(guò)特定U盤(pán)拷貝,不能用npm,maven,docker倉(cāng)庫(kù),聽(tīng)到這里是不是你已經(jīng)在準(zhǔn)備提桶跑路。開(kāi)始開(kāi)發(fā)部署,Centos7安裝一個(gè)vim找半小時(shí)的依賴(lài),java升級(jí)個(gè)jar包版本花半天時(shí)間,npm工程只要有更新就直接拷貝所有內(nèi)容(包括node_moudle)到內(nèi)網(wǎng)開(kāi)發(fā),到這里我辭職報(bào)告都打好了。
為有犧牲多壯志,敢教日月?lián)Q新天
心態(tài)轉(zhuǎn)變
從“既然無(wú)法改變,就設(shè)法去享受,效率差就差,多摸摸魚(yú)他不好嗎?”到“我也該有做一點(diǎn)事情的必要了”。
計(jì)劃實(shí)施
說(shuō)干就干,組織眾多開(kāi)發(fā)同仁,慷慨激昂一番,大家不出意外,都支持你,這是為全體研發(fā)人員謀福利。
寫(xiě)出計(jì)劃,實(shí)施方案,技術(shù)設(shè)計(jì),我們有了倉(cāng)庫(kù)服務(wù)器;
部署nexus,開(kāi)通端口,開(kāi)通maven、npm、yum、docker等倉(cāng)庫(kù),我們有了倉(cāng)庫(kù)服務(wù);
在外網(wǎng),下載全量Centos7.9的rpm包,梳理經(jīng)常使用到的maven開(kāi)發(fā)依賴(lài)、npm依賴(lài)并下載,轉(zhuǎn)儲(chǔ)docker常用鏡像;
在內(nèi)網(wǎng),使用安全u盤(pán)拷貝,執(zhí)行批量上傳腳本
天不生我程序員,開(kāi)發(fā)萬(wàn)古如長(zhǎng)夜
全部搞定,公司研發(fā)人員終于可以在內(nèi)網(wǎng)有限度的使用這些倉(cāng)庫(kù)了,大家都說(shuō)你活真好!!!
主要腳本及技術(shù)
倉(cāng)庫(kù)服務(wù)
主要采用nexus,一個(gè)服務(wù)就支持了N多倉(cāng)庫(kù),真好。
maven依賴(lài)轉(zhuǎn)移
拷貝外網(wǎng)開(kāi)發(fā)機(jī)器的maven緩存
-
在相應(yīng)目錄執(zhí)行
<pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java" cid="n724" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit;">find . -type f -not -path './import.sh' -not -path '/.' -not -path '/^archetype-catalog.xml' -not -path '/^maven-metadata-local.xml' -not -path '/^maven-metadata-deployment*.xml' | sed "s|^./||" | xargs -I '{}' curl -u "admin:123" -X PUT -v -T {} "http://xxxxxxx.com/repository/maven-releases/"/{} ;</pre>
配置自己的settings.xml,即可使用
npm依賴(lài)轉(zhuǎn)移
在外網(wǎng)下載前端依賴(lài)
<pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java" cid="n733" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 0px; width: inherit;">cat
package-lock.json|sed` `'s/,/\n/g'` `|grep"resolved"|sed` `'s/\"resolved\": \"/curl -O -L /g'` `|sed's/"/ /g'| ``sed's/?.*//'| sh</pre>-
在內(nèi)網(wǎng)上傳依賴(lài)到倉(cāng)庫(kù)
<pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="java" cid="n737" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit;">#設(shè)置倉(cāng)庫(kù)
npm config set registry http://xxxxx.com/repository/npm-xxgs/登錄
npm login
創(chuàng)建上傳腳本
touch batch-npm.sh
輸入以下內(nèi)容
find ./ -name "*.tgz" | while read i
do
echo{i}
npm publish -registry http://xxxxx.com/repository/npm-xxgs/ ${i} --force-registry
done運(yùn)行腳本上傳
./batch-npm.sh</pre>
docker鏡像
比較簡(jiǎn)單,保存鏡像,載入鏡像基本就可以完成,此處不多說(shuō)
總結(jié)
在這個(gè)過(guò)程中,感覺(jué)最麻煩的是npm的處理,經(jīng)歷過(guò)使用yarn下載,已經(jīng)寫(xiě)好的工具包下載,但都有一些版本號(hào)不一致的問(wèn)題,最后使用自制腳本下載,才保證了版本號(hào)的一致性。
春節(jié)過(guò)后,大家都會(huì)有一個(gè)新的開(kāi)始。每個(gè)人都想要拿更高的工資,想去更大的平臺(tái),Java作為編程界第一大語(yǔ)言,使用人數(shù)最多也最成熟,沖刺大廠相對(duì)來(lái)說(shuō)競(jìng)爭(zhēng)壓力也大。
放假在家期間花了很長(zhǎng)時(shí)間去搜羅整理Java核心技術(shù)文,整理了一些文檔分享給老鐵們。無(wú)論是為開(kāi)年跳槽做準(zhǔn)備還是學(xué)習(xí)蓄力的,都可以看看。
需要本文中PDF的點(diǎn)擊這里,就能免費(fèi)領(lǐng)取了!
(整理資料不易,大家耐心看完~)
核心知識(shí)點(diǎn)
這部分可以說(shuō)是非常關(guān)鍵且基礎(chǔ)的,涉及JVM,Mysql,并發(fā),Spring,Mybatis,Redis,MQ,Zookeeper,Netty,Dubbo,Spring Boot,Spring Cloud,數(shù)據(jù)結(jié)構(gòu)與算法,設(shè)計(jì)模式,網(wǎng)絡(luò)與操作系統(tǒng)等相關(guān)技術(shù)領(lǐng)域的知識(shí)點(diǎn)。
1.Java并發(fā)編程(涉及Java多線程的工作原理及應(yīng)用、Java線程池的工作原理及應(yīng)用,以及鎖、進(jìn)程調(diào)度算法等內(nèi)容)

2.分布式緩存的原理及應(yīng)用 (涉及分布式緩存介紹、Ehcache原理及應(yīng)用、Redis原理及應(yīng)用、分布式緩存設(shè)計(jì)的核心問(wèn)題等內(nèi)容)

3.數(shù)據(jù)結(jié)構(gòu)(涉及鏈表、二叉排序樹(shù)和隊(duì)列及其Java實(shí)現(xiàn)等內(nèi)容)

4.Java并發(fā)編程

5.Java中的常用算法(涉及二分查找算法、冒泡排序算法、插入排序算法、快速排序算法,以及希爾排序算法等內(nèi)容)

6.設(shè)計(jì)模式 (涉及常見(jiàn)的23種經(jīng)典設(shè)計(jì)模式)

7.網(wǎng)絡(luò)與負(fù)載均衡原理 (涉及TCP/IP、HTTP、常用負(fù)載均衡算法和LVS原理等內(nèi)容)

8.JVM原理 (涉及JVM運(yùn)行機(jī)制、JVM內(nèi)存模型、常用垃圾回收算法和JVM類(lèi)加載機(jī)制等內(nèi)容)

9.數(shù)據(jù)庫(kù)及分布式事務(wù)(數(shù)據(jù)庫(kù)的基本概念及原則、數(shù)據(jù)庫(kù)的并發(fā)操作和鎖、數(shù)據(jù)庫(kù)分布式事務(wù))

擁有這套面試寶典,相信大家在今年的金三銀四面試中,必定可以脫穎而出,沖進(jìn)大廠。本次是作為福利免費(fèi)分享,需要本文中PDF的點(diǎn)擊這里,就能免費(fèi)領(lǐng)取了!