對(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)的程序。

成都創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今,先為城中等服務(wù)建站,城中等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為城中企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
以上是指定了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í)行程序:
可以根據(jù)不同的架構(gòu)和操作系統(tǒng)將其編寫(xiě)為不同的.bat的可執(zhí)行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫(xiě)成腳本文件放置在程序的根目錄,這樣在構(gòu)建的時(shí)候就不用再敲命令了,直接運(yùn)行腳本就可以了。
Java程序編譯打包后為war包或者是java包,必須執(zhí)行java -jar 命令或者將其放置到tomcat的指定目錄下,運(yùn)行tomcat程序。而Go語(yǔ)言編寫(xiě)的程序最終為可執(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ì)比較大
而Go程序制作出的鏡像就不需要安裝任何的依賴(lài)環(huán)境,因?yàn)樗诖虬臅r(shí)候就已經(jīng)將依賴(lài)的包一塊打包到一起了
拿著這個(gè)鏡像就可以到處運(yùn)行了。
通過(guò)對(duì)比我們可以發(fā)現(xiàn),如果沒(méi)有之前的技術(shù)和業(yè)務(wù)的積累,重新開(kāi)發(fā)一個(gè)新的項(xiàng)目,使用go去開(kāi)發(fā)無(wú)疑是最容易上手的,所以現(xiàn)在很多公司都使用go進(jìn)行開(kāi)發(fā),也逐漸將其他語(yǔ)言的項(xiàng)目逐步的用go語(yǔ)言進(jìn)行改造。其實(shí)用什么語(yǔ)言不重要,合適的才重要,開(kāi)發(fā)項(xiàng)目在選擇語(yǔ)言的時(shí)候也會(huì)綜合多方面來(lái)考慮選擇合適的語(yǔ)言和架構(gòu),畢竟很多公司都不是搞研究的,都需要項(xiàng)目來(lái)賺錢(qián),所以開(kāi)發(fā)的速度、客戶的滿意度、項(xiàng)目交付的時(shí)間才是驅(qū)動(dòng)公司技術(shù)的主要因素。
我們個(gè)人也應(yīng)該不斷完善自己的技術(shù)棧,不應(yīng)該太依靠某種語(yǔ)言,最重要的還是自己的架構(gòu)思想和底層架構(gòu)知識(shí),只有掌握了這些才能夠不被 社會(huì) 和公司“優(yōu)化”。
上周從零學(xué)習(xí)了golang,語(yǔ)法簡(jiǎn)單關(guān)鍵字少,寫(xiě)個(gè)爬蟲(chóng)熟悉一下語(yǔ)法結(jié)構(gòu)。
首先選用了原生的net/http包,基本上涵蓋了所有的get/post請(qǐng)求,各種參數(shù)都可以設(shè)置,網(wǎng)上google到html頁(yè)面解析goquery神器,很輕松就可以解決頁(yè)面解析問(wèn)題。
首先就寫(xiě)了個(gè)爬取匯率的爬蟲(chóng)。然后重寫(xiě)之前php的一個(gè)請(qǐng)求類(lèi),請(qǐng)求類(lèi)的邏輯有點(diǎn)混亂不清晰,往往把兩個(gè)不同的功能合并到一起寫(xiě),粒度大,后來(lái)發(fā)現(xiàn)了一個(gè)好用的框架——colly,之后再試試好不好用
Windows 10 Golang
依賴(lài)包:goquery
較常用的方法有Find和Each
爬取中國(guó)銀行的匯率牌價(jià)表,golang依賴(lài)net/http包和goquery包
唯一的難點(diǎn)是對(duì)于goquery方法的使用,需要閱讀官方文檔:
使用原生的net/http包基本上可以解決大多數(shù)的網(wǎng)頁(yè)請(qǐng)求,使用goquery可以解決頁(yè)面解析問(wèn)題
可以利用golang的協(xié)程特性進(jìn)行異步多協(xié)程爬取
增加安全性可以通過(guò)幾個(gè)方面進(jìn)行改進(jìn):
1.首先可以限制爬蟲(chóng)的爬取速度
2.每次對(duì)網(wǎng)頁(yè)的請(qǐng)求都隨機(jī)選用一個(gè)客戶端
3.選用IP代理池,防止IP誤封(及限制ip訪問(wèn)次數(shù))
構(gòu)造請(qǐng)求代理ip網(wǎng)站的鏈接→獲取網(wǎng)頁(yè)內(nèi)容→ 提取網(wǎng)頁(yè)中IP地址和端口號(hào)→驗(yàn)證IP的有效性并存儲(chǔ)
輕量級(jí)反爬蟲(chóng)方案
淺談JSP
golang帶json的Http請(qǐng)求
Get/Post
HTTP請(qǐng)求中的Form Data和Request Payload的區(qū)別
HTTP Json請(qǐng)求
net/http:
golang HTTP操作
python建立爬蟲(chóng)代理ip池
爬蟲(chóng)黑科技之讓你的爬蟲(chóng)程序更像人類(lèi)用戶的行為
特點(diǎn):事件監(jiān)聽(tīng),通過(guò)callback執(zhí)行事件處理
基于colly開(kāi)發(fā)的web管理界面
用Post,不要用PostForm,至於編碼可以自己用2樓的方法然后urlencode,附上代碼片段
resp, err := http.Post(reqUrl, "application/x-www-form-urlencoded", strings.NewReader(fmt.Sprintf( "__VIEWSTATE=%s__EVENTVALIDATION=%stxtUid=000000000txtPwd=xxxxxxxxselKind=1selKind=1btLogin=%B5%C7%C2%BD", url.QueryEscape(viewstate), url.QueryEscape(eventvalidation), )),)
整理一下golang中各種http的發(fā)送方式:
方式一 使用http.Newrequest
先生成http.client - 再生成 http.request - 之后提交請(qǐng)求:client.Do(request) - 處理返回結(jié)果,每一步的過(guò)程都可以設(shè)置一些具體的參數(shù),
方式二 先生成client,之后用client.get/post..
client結(jié)構(gòu)自己也有一些發(fā)送api的方法,比如client.get,client.post,client.postform..等等。基本上涵蓋了主要的http請(qǐng)求的類(lèi)型,通常不進(jìn)行什么特殊的配置的話,這樣就可以了,其實(shí)client的get或者post方法,也是對(duì)http.Newerequest方法的封裝,里面還額外添加了req.Header.Set("Content-Type", bodyType)一般用的話,也是ok的
方式三 http. Get/Post..
具體實(shí)現(xiàn)的時(shí)候,還是采用的先前提到的模式,先生成一個(gè)默認(rèn)的client,之后調(diào)用http.Newrequest方法。
文章名稱(chēng):go語(yǔ)言提高post速度 go語(yǔ)言 效率
本文來(lái)源:http://www.yijiale78.com/article16/dohejgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、服務(wù)器托管、網(wǎng)站收錄、網(wǎng)站改版、微信公眾號(hào)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)