日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

構建方式

對比于其他語言的程序,Go語言的跨平臺能力是真的強,拿.Net和JAVA來說吧,.Net在.Net core出現之前是不能跨平臺的,只能在windows上編譯運行,即使是.net core出現以后,跨平臺的程序也是相當的麻煩。而java雖然一直都可以跨平臺,但是運行JAVA程序的機器上也必須要有JAVA程序運行環境JRE。而相對于Go程序,跨平臺就簡單的多了,只需要在編譯指定目標程序運行的架構和環境即可編譯出指定操作系統和架構的程序。

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

以上是指定了go的環境變量后執行的go build命令進行目標程序的構建,這種方式會一直生效的,如果不讓他一直生效,可以在構建的時候臨時指定環境變量,下面以window的環境為例,來介紹臨時指定環境變量的方式構建可以在Linux環境下運行的可執行程序:

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

可以根據不同的架構和操作系統將其編寫為不同的.bat的可執行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫成腳本文件放置在程序的根目錄,這樣在構建的時候就不用再敲命令了,直接運行腳本就可以了。

運行方式

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

容器方式

構建JAVA程序的鏡像需要指定java的基礎鏡像,否則就需要在鏡像中安裝java的運行環境了,下面展示的是構建的一個JAVA程序的鏡像,構建出來鏡像的體積相對比較大

#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
# 基礎鏡像使用java
FROM java:8
# 作者
MAINTAINER limingqi <[email protected]>
# VOLUME 指定了臨時文件目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,并鏈接到容器的/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
# 運行jar包
RUN bash -c 'touch app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

而Go程序制作出的鏡像就不需要安裝任何的依賴環境,因為他在打包的時候就已經將依賴的包一塊打包到一起了

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

拿著這個鏡像就可以到處運行了。

通過對比我們可以發現,如果沒有之前的技術和業務的積累,重新開發一個新的項目,使用go去開發無疑是最容易上手的,所以現在很多公司都使用go進行開發,也逐漸將其他語言的項目逐步的用go語言進行改造。其實用什么語言不重要,合適的才重要,開發項目在選擇語言的時候也會綜合多方面來考慮選擇合適的語言和架構,畢竟很多公司都不是搞研究的,都需要項目來賺錢,所以開發的速度、客戶的滿意度、項目交付的時間才是驅動公司技術的主要因素。

我們個人也應該不斷完善自己的技術棧,不應該太依靠某種語言,最重要的還是自己的架構思想和底層架構知識,只有掌握了這些才能夠不被社會和公司“優化”。

分享到:
標簽:語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定