自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五大理由從Python轉(zhuǎn)到Go語言

大數(shù)據(jù)
我認(rèn)為 Go 是很簡單的編程語言,并且適應(yīng)任何的應(yīng)用環(huán)境,甚至比 Javascript 編程還要簡單,這可能是 GO 編程語言能在這幾年很快流行起來的原因吧。

[[201452]]

“ Python 是非常強(qiáng)大的,特別是 Python3 有了異步功能,但是 GO 將完全取代它在大企業(yè)中的存在…”如果你真正理解了引號中的話,你可能會(huì)去嘗試 Go 編程語言。我認(rèn)為 Go 是很簡單的編程語言,并且適應(yīng)任何的應(yīng)用環(huán)境,甚至比 Javascript 編程還要簡單,這可能是 GO 編程語言能在這幾年很快流行起來的原因吧。

我們在使用 Go 語言編程之前有什么呢?

網(wǎng)站 TreeScale.com 主頁和 API 都是基于一些分析工具的網(wǎng)絡(luò)應(yīng)用。下面是我們的技術(shù)棧:

  • React.js 主頁前端
  • Django Python 主頁后端和認(rèn)證服務(wù)
  • Node.js API 服務(wù)
  • PostgreSQL 數(shù)據(jù)庫、Cassandra 日志系統(tǒng)
  • 自定義容器注冊表是使用 Rust 語言

從上面你可以看到基礎(chǔ)的框架是完全的基于微服務(wù)和邏輯分離的(前后端分離),甚至說是完全不同的技術(shù)來實(shí)現(xiàn)的。

為什么我們開始整合 API 服務(wù)和后端到單個(gè)項(xiàng)目中,主要的原因是他們有很多地方是相似的而且通過多種語言或者技術(shù)編程,代碼存在很多重復(fù)的。最終我們需要花費(fèi)很多時(shí)間在個(gè)性化的 Django’s API 服務(wù),特別是在定制 JSON 的響應(yīng)。

一個(gè)月之后我們用 Django 建立的 API 服務(wù),我感覺當(dāng)你開發(fā)一些普通的應(yīng)用使用 Django 是非常棒的,但是當(dāng)你需要更高的性能和一些個(gè)性化的模塊的東西的使用 Django 是會(huì)越來越復(fù)雜的。

為什么選擇 Go 語言編程?

#1 編譯成單一的二進(jìn)制

Golang 是編譯型語言并且 Googe 的開發(fā)者花了很大的功夫在上面。它使用靜態(tài)鏈接實(shí)際上是基于操作系統(tǒng)類型和環(huán)境組合所有的依賴庫文件和模塊到一個(gè)單一的二進(jìn)制文件中,這也意味著如果你想要編譯你的后端應(yīng)用到你的 Linux 操作系統(tǒng)和 X86 架構(gòu)的 CPU 中,你只要下載編譯好的二進(jìn)制應(yīng)用到服務(wù)器,然后可以后端應(yīng)用可以工作了,這是不需要任何的依賴文件的。

#2 靜態(tài)類型系統(tǒng)

對于大規(guī)模應(yīng)用來說類型系統(tǒng)是非常重要的。Python 是很棒的并且有趣的語言但是有些時(shí)候你會(huì)看到一些不尋常的異常因?yàn)楫?dāng)你嘗試將變量作為一個(gè)整型變量的時(shí)候結(jié)果它是一個(gè)字符串類型.

  1. # Django will crash process because of this def some_view(request): 
  2.  
  3. user_id = request.POST.get('id', 0) 

Go 在編譯的時(shí)候告訴你這是一個(gè)編譯器錯(cuò)誤,這就是在愚蠢的問題上贏得時(shí)間的地方。

#3 優(yōu)化

令人驚訝的是,在大多數(shù)的應(yīng)用場景中,Go 語言比 Python(版本2或3)更快。Benchmarking Game 中可以看到對比的結(jié)果,當(dāng)然這是不公平的,這依賴于應(yīng)用類型和用戶用例。

對于我們的案例,Go 語言由于自己的多線程模塊和 CPU 可伸縮性獲得了較好的性能。無論什么時(shí)候我們需要執(zhí)行一些內(nèi)部的請求,我們可以使用 Goroutine 來分別執(zhí)行,這個(gè)比 Python 中的 Threads 在資源開銷上要少上十多倍。由于這些內(nèi)置的語言特性,我們可以節(jié)省大量的資源(內(nèi)存和 CPU )。

#4 Go 不再需要 Web 框架

對于編程語言這是一件十分酷的事情。Go 語言的創(chuàng)造者和社區(qū)內(nèi)置了很多原生的被核心語言支持的工具,在大多數(shù)情況下你都不再需要任何第三方類庫。比如它有內(nèi)置的 http、json、html 模板,你甚至可以不用費(fèi)心去 Github 上尋找第三方類庫就可以構(gòu)建十分復(fù)雜的 API 服務(wù)。

當(dāng)然,Go 也有很多類庫和框架用來構(gòu)建 web 項(xiàng)目,但是我會(huì)建議你不使用第三方類庫來構(gòu)建你的 web 項(xiàng)目或者 API 服務(wù),因?yàn)樵诖蠖鄶?shù)情況下使用原生包會(huì)使你的生活更加輕松。

#5 更好的 IDE 支持和調(diào)試

IDE 支持是當(dāng)你嘗試更改編程語言時(shí)最重要的考慮因素之一。友好的 IDE 平均可以節(jié)省你80%的編程時(shí)間。 Go Plugin For JetBrains IDEA ,同樣提供了其他支持,比如 (Webstorm、PHPStorm 等等…)。這個(gè)插件提供了任何你在項(xiàng)目開發(fā)中需要的服務(wù),強(qiáng)大的 JetBrains IDEA ,可以讓你的開發(fā)如虎添翼。

基于我們的代碼統(tǒng)計(jì),在用 Go 語言重寫項(xiàng)目后我們少寫了64%的代碼。

你不需要調(diào)試不存在的代碼。代碼越少,錯(cuò)誤越少!

結(jié)論

Go 為我們提供了超強(qiáng)的靈活性,一種語言可以適用于所有的用戶場景,而且在所有的用戶場景都可以工作的很好。在我們的 Backend 和 API 服務(wù)中,我們得到了30%的性能優(yōu)化。而且現(xiàn)在我可以實(shí)時(shí)處理日志,轉(zhuǎn)換到數(shù)據(jù)庫中,并且通過 Websocket 處理一個(gè)或多個(gè)服務(wù)!這就是 Go 語言特性所提供的的非常強(qiáng)大的功能。

責(zé)任編輯:龐桂玉 來源: 36大數(shù)據(jù)
相關(guān)推薦

2013-09-25 09:58:33

必應(yīng)

2013-07-17 17:21:49

避免代碼注釋移動(dòng)開發(fā)移動(dòng)互聯(lián)網(wǎng)

2014-07-11 13:56:16

2010-07-28 16:09:53

蘋果

2013-07-16 10:49:11

代碼注釋

2016-09-29 14:39:01

openSUSELinux版本

2011-02-15 08:39:49

2018-02-10 09:48:04

存儲軟件理由

2011-05-18 10:40:19

Windows 7

2011-04-15 10:38:27

VDI

2013-09-17 10:14:22

騰訊搜狗

2012-04-18 09:42:36

數(shù)據(jù)分析Hadoop

2009-08-27 13:02:43

2016-08-10 10:27:30

2011-05-19 10:20:49

2016-06-30 09:21:33

WindowsLinux系統(tǒng)

2017-10-18 15:37:13

PythonGo語言Java

2010-09-02 15:58:46

2010-07-16 10:14:07

2010-07-16 11:02:06

中國科技
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號