Go语言

What?Go语言是什么?

      go语言是谷歌2009发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全,支持并发进程。同样该语言是一个开源的编程语言,让构造简单,可靠且高效的软件变得容易。go语言支持面向对象,而且具有真正的闭包和反射等功能。

Why?Go语言为什么出现?

       谷歌内部代码越来越多,越来越复杂,再加上内部多语言的交互和多程序员,分布式的编译系统和数百万的服务器。

        造成了如下痛点:编译慢,失控的依赖,每个工程师只是用了一个语言里面的一部分,程序难以维护(可读性查,文档不清晰等),更新的花费越来越长,交叉编译困难。

         解决的问题:消除各种缓慢和笨重,改进各种低效和扩展性。用于解决工程上的问题,使编译变得更舒适和方便。

Who?谁创建的?

          Robert Griesemer, Rob Pike 和 Ken Thompson

When?什么时候?

           2007年开始开发,2009年谷歌进行开源。

Where?哪里?

           现常用在什么系统中:

           1.服务器编程:处理日志,数据打包,虚拟机处理,文件系统等。

            2.分布式系统,数据库代理器:如ETCD

            3.数据库: Groupcache,Couchbase部分组件。

            4.云平台。

优点:

1.学习曲线,容易上手。

2.效率高。

3.出身名门,血统纯正。

4.自由高效:组合思想,无侵入式的接口。

特性:静态语言,天生并发,内置GC,安全性高,语法简单,交叉编译和编译快速。(具有运行快,开发快和部署快的特性。)

5.强大标准库:互联网应用,系统编程和网络编程。

6.部署方便:二进制文件,Copy部署。

7.简单的并发。

8.稳定性。提供软件生命周期(开发,测试,部署,维护等)

Go语言成功项目

1.nsq:https://nsq.io/

 A realtime distributed messaging platform:一个开源的消息队列系统,性能非常高。

2.docker: https://www.docker.com/  http://www.docker.org.cn/

Futrue proof your windows apps and drive continuous innovation 虚拟机打包工具,可以实现PAAS平台的组件。

3.packer: https://www.packer.io/

Build Automated Machine Images 用来生成不同平台的镜像文件

4.  skynet http://www.skynet.com.my/

Is the best way to protect you shipment against the lost or damage. 分布式调度框架。

5.doozer https://www.merriam-webster.com/dictionary/doozer

分布式同步工具

6.Heka https://hekad.readthedocs.io/en/v0.10.0/

Heka is an open source stream processing software system developed by Mozilla. Heka is a “Swiss Army Knife” type tool for data processing, useful for a wide variety of different tasks。 mazila开源的日志处理系统。

7.tsuru https://tsuru.io/

Tsuru is an extensible and open source Platform as a Service software. 开源的平台即服务的PAAS平台。

8.groupcache:用于google下载系统的缓存系统。

9.god:类似redis的缓存系统,但是支持分布式和扩展性。

10.gor:网络流量抓包和重放工具。

缺点:

1.不支持版本。

2.go的goroutine一旦启动后,不同版本之间切换不收程序控制,runtime调度的时候,需要严谨的逻辑,不然会出现休眠一段时间后,结束突然再冒出来执,会导致逻辑出错等情况。

3.GC延迟大,大并发下,处理大日志,GC没有那么快。

4.pkg下面的图片处理库很多bug,使用成熟产品和成熟库接口比较靠谱。 从选择golang角度上来,选择可以很轻松的兼顾运行性能,开发效率和维护难度。

 

参考文献:

go语言:

https://baike.baidu.com/item/Go%E8%AF%AD%E8%A8%80/3246011?fr=aladdin

go语言教程:

http://www.runoob.com/go/go-tutorial.html

我为什么选择使用go语言:

https://blog.csdn.net/csdn265/article/details/53312313

为什么要使用go语言?go语言的优势在哪里?

https://www.zhihu.com/question/21409296?sort=created

最后来张美图看看。

Go语言_第1张图片

你可能感兴趣的:(每天学一点,go,go,性能,高并发,大数据)