亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

構(gòu)建方式

對(duì)比于其他語(yǔ)言的程序,Go語(yǔ)言的跨平臺(tái)能力是真的強(qiáng),拿.Net和JAVA來(lái)說(shuō)吧,.Net在.Net core出現(xiàn)之前是不能跨平臺(tái)的,只能在windows上編譯運(yùn)行,即使是.net core出現(xiàn)以后,跨平臺(tái)的程序也是相當(dāng)?shù)穆闊6鴍ava雖然一直都可以跨平臺(tái),但是運(yùn)行JAVA程序的機(jī)器上也必須要有JAVA程序運(yùn)行環(huán)境JRE。而相對(duì)于Go程序,跨平臺(tái)就簡(jiǎn)單的多了,只需要在編譯指定目標(biāo)程序運(yùn)行的架構(gòu)和環(huán)境即可編譯出指定操作系統(tǒng)和架構(gòu)的程序。

 #  cpu架構(gòu)
 go env -w GOARCH=amd64  
 #  程序運(yùn)行的最終系統(tǒng),linux、windows、darwin(蘋果macos系統(tǒng))
 go env -w GOOS=linux  
 #  window編譯設(shè)置Cgo模塊關(guān)閉,因?yàn)閣indows上做cgo開發(fā)太麻煩,如果引用了Cgo庫(kù)庫(kù),那么請(qǐng)?jiān)趌inux環(huán)境開發(fā)、編譯  
 go env -w CGO_ENABLED=0   
  #  編譯出最終可執(zhí)行文件,進(jìn)入根目錄(GinSkeleton所在目錄,也就是 go.mod 所在的目錄)
  #  編譯時(shí)建議追加參數(shù):-ldflags "-w -s"  ,同時(shí)會(huì)壓縮編譯后的體積。
  #  -w 表示去除調(diào)試信息,禁止gdb調(diào)試,
  #  -s 表示去除符號(hào)表(符號(hào)表在鏈接時(shí)起著按符號(hào)尋址的作用,靜態(tài)編譯后用不到)
  #  追加參數(shù)編譯后的程序體積也會(huì)比原來(lái)減少25%左右.
  #   -trimpath  表示去除絕對(duì)路徑信息,只保留基于 go.mod 開始的相對(duì)路徑信息
  # web|api|cli 三個(gè)目錄選擇其一即可,表示編譯的入口目錄  
  go build -o demo  -ldflags "-w -s"  -trimpath  cmd/(web|api|cli)/main.go

以上是指定了go的環(huán)境變量后執(zhí)行的go build命令進(jìn)行目標(biāo)程序的構(gòu)建,這種方式會(huì)一直生效的,如果不讓他一直生效,可以在構(gòu)建的時(shí)候臨時(shí)指定環(huán)境變量,下面以window的環(huán)境為例,來(lái)介紹臨時(shí)指定環(huán)境變量的方式構(gòu)建可以在Linux環(huán)境下運(yùn)行的可執(zhí)行程序:

set GOARCH=amd64
set GOOS=linux 
set CGO_ENABLED=0
#在go程序的根目錄執(zhí)行構(gòu)建命令
go build -o demo .

可以根據(jù)不同的架構(gòu)和操作系統(tǒng)將其編寫為不同的.bat的可執(zhí)行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫成腳本文件放置在程序的根目錄,這樣在構(gòu)建的時(shí)候就不用再敲命令了,直接運(yùn)行腳本就可以了。

運(yùn)行方式

Java程序編譯打包后為war包或者是java包,必須執(zhí)行java -jar 命令或者將其放置到Tomcat的指定目錄下,運(yùn)行tomcat程序。而Go語(yǔ)言編寫的程序最終為可執(zhí)行的文件(window下編譯出的是.exe的可執(zhí)行文件),只需要將其賦予可執(zhí)行的權(quán)限就可以直接運(yùn)行了。

容器方式

構(gòu)建JAVA程序的鏡像需要指定java的基礎(chǔ)鏡像,否則就需要在鏡像中安裝java的運(yùn)行環(huán)境了,下面展示的是構(gòu)建的一個(gè)JAVA程序的鏡像,構(gòu)建出來(lái)鏡像的體積相對(duì)比較大

#Docker run -itd --name eladmin -p 8000:8000 -v f:/docker/eladmin/config/:/usr/local/config/ -v f:/docker/eladmin/file:/home/eladmin/file -v f:/docker/eladmin/avatar:/home/eladmin/avatar eladmin:v1
# 基礎(chǔ)鏡像使用java
FROM java:8
# 作者
MAINTAINER limingqi <[email protected]>
# VOLUME 指定了臨時(shí)文件目錄為/tmp。
# 其效果是在主機(jī) /var/lib/docker 目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp
#VOLUME /tmp
# 將jar包添加到容器中并更名為App.jar
#ADD demo-0.0.1-SNAPSHOT.jar app.jar
WORKDIR /usr/local
ARG JAR_FILE=eladmin-system/target/eladmin-system-1.0.jar
COPY ${JAR_FILE} app.jar
COPY eladmin-system/src/main/resources/config/ config/
EXPOSE 8000
# 運(yùn)行jar包
RUN bash -c 'touch app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

而Go程序制作出的鏡像就不需要安裝任何的依賴環(huán)境,因?yàn)樗诖虬臅r(shí)候就已經(jīng)將依賴的包一塊打包到一起了

# 指定基礎(chǔ)鏡像
FROM busybox
#指定工作目錄
WORKDIR /demo
# copy可執(zhí)行文件demo到工作目錄
COPY demo .
#授權(quán)
RUN chmod +x demo
#對(duì)外暴露端口
EXPOSE 8080
# 執(zhí)行 可執(zhí)行文件。
CMD ["./demo"]

拿著這個(gè)鏡像就可以到處運(yùn)行了。

通過(guò)對(duì)比我們可以發(fā)現(xiàn),如果沒(méi)有之前的技術(shù)和業(yè)務(wù)的積累,重新開發(fā)一個(gè)新的項(xiàng)目,使用go去開發(fā)無(wú)疑是最容易上手的,所以現(xiàn)在很多公司都使用go進(jìn)行開發(fā),也逐漸將其他語(yǔ)言的項(xiàng)目逐步的用go語(yǔ)言進(jìn)行改造。其實(shí)用什么語(yǔ)言不重要,合適的才重要,開發(fā)項(xiàng)目在選擇語(yǔ)言的時(shí)候也會(huì)綜合多方面來(lái)考慮選擇合適的語(yǔ)言和架構(gòu),畢竟很多公司都不是搞研究的,都需要項(xiàng)目來(lái)賺錢,所以開發(fā)的速度、客戶的滿意度、項(xiàng)目交付的時(shí)間才是驅(qū)動(dòng)公司技術(shù)的主要因素。

我們個(gè)人也應(yīng)該不斷完善自己的技術(shù)棧,不應(yīng)該太依靠某種語(yǔ)言,最重要的還是自己的架構(gòu)思想和底層架構(gòu)知識(shí),只有掌握了這些才能夠不被社會(huì)和公司“優(yōu)化”。

分享到:
標(biāo)簽:語(yǔ)言
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定