zoukankan      html  css  js  c++  java
  • GO语言简介

    Go 语言介绍

    Go 即 Golang,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。

    Go 是静态强类型语言,是区别于解析型语言的编译型语言。

    解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。

    编译型语言——源代码编译生成机器语言,然后由机器直接执行机器码即可执行。

    Go 语言特性

    跨平台的编译型语言

    语法接近 C 语言

    管道(channel),切片(slice),并发(routine)

    有垃圾回收的机制

    支持面向对象和面向过程的编程模式

    Go 语言发展(版本 / 特性)

    2009 年 11 月 7 日 weekly.2009-11-06 —— 早期的版本

    2012 年 3 月 28 日 go1 —— 稳定版版的发布

    2013 年 5 月 14 日 go1.1 —— 语言本身的变化、库的变化等。

    2013 年 12 月 01 日 go1.2 —— 提供更好的调度和一个新的语言特性。

    2014 年 6 月 18 日 go1.3 —— 主要是在实现的工作上的变化,以及精准的垃圾回收。

    2014 年 12 月 10 日 go1.4 —— 包含了 2 个很小的语言变更。

    2015 年 8 月 19 日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性。

    2016 年 2 月 7 日 go1.6 —— 语言本身、运行时、和库的实现的变化。

    2016 年 8 月 15 日 go1.7 —— 标准库有显着的性能改进和变化。

    2017 年 2 月 26 日 go1.8 —— 标准库有显着的性能改进和变化。

    2017 年 8 月 24 日 go1.9 —— 是包含语言,标准库,以及运行时的诸多变化。这个版本中的大部分工作都是对运行时和工具的改进。

    2018 年 2 月 16 日 go1.10 —— 大部分更改都在工具链,运行时和库的实现中。

    2018 年 8 月 24 日 go1.11 —— modules 和 WebAssembly 支持。

    Go 语言应用

    谁在用

    Google

    这个不用多做介绍,作为开发 Go 语言的公司,当仁不让。Google 基于 Go 有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在 Github 上 https://github.com/google/ 查看更多 Google 的 Go 开源项目。

    Facebook

    Facebook 也在用,为此他们还专门在 Github 上建立了一个开源组织 facebookgo,大家可以通过 https://github.com/facebookgo 访问查看 facebook 开源的项目,比如著名的是平滑升级的 grace。

    腾讯

    腾讯作为国内的大公司,还是敢于尝试的,尤其是 Docker 容器化这一块,他们在 15 年已经做了 docker 万台规模的实践,具体可以参考 http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

    主要职责是:

    负责腾讯游戏蓝鲸平台后台开发工作
    负责容器相关的开发工作

    和蓝鲸平台,容器开发有关。腾讯作为主要使用 C/C++ 的公司,使用 Go 会方便很多,也有很多优势,不过日积月累的 C/C++ 代码很难改造,也不敢动,所以新业务会在 Go 方面尝试。

    百度

    目前所知的百度的使用是在运维这边,是百度运维的一个 BFE 项目,负责前端流量的接入。他们的负责人在 2016 年有分享,大家可以看下这个 http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend .

    其次就是百度的消息系统,从其最近的 Golang 招聘介绍就可以看出来.

    负责公司手百消息通讯系统服务器端开发及维护

    京东

    京东云消息推送系统、云存储,以及京东商城等都有使用 Go 做开发。

    小米

    小米对 Golang 的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/

    此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用 Golang。

    360

    360 对 Golang 的使用也不少,一个是开源的日志搜索系统 Poseidon,托管在 Github 上,https://github.com/Qihoo360/poseidon.

    还有 360 的推送团队也在使用,他们还写了篇博文在 Golang 的官方博客上 https://blog.golang.org/qihoo

    360 直播在招聘 Golang 开发工程师。

    美团、滴滴、新浪以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang 特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。

    应用领域

    服务开发、并发、分布式、微服务等方向

    Go 语言项目

    docker: 基于 lxc 的一个虚拟打包工具,能够实现 PAAS 平台的组建。

    kubernetes :Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡

    区块链:BTCD 是用 go 语言实现的完整节点的比特币实现

    nsq:bitly 开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息

    packer: 用来生成不同平台的镜像文件,例如 VM、vbox、AWS 等,作者是 vagrant 的作者

    skynet:分布式调度框架

    Doozer:分布式同步工具,类似 ZooKeeper

    Heka:mazila 开源的日志处理系统

    cbfs:couchbase 开源的分布式文件系统

    tsuru:开源的 PAAS 平台,和 SAE 实现的功能一模一样

    groupcache:memcahe 作者写的用于 Google 下载系统的缓存系统

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

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

    Go 语架构

    GOPATH 的工作区包含 bin,src,和 pkg 这三个:

    src——源码(包含第三方的和自己项目的)

    bin——编译生成的可执行程序

    pkg——编译时生成的对象文件

    Go 语言发展前景

    Go 语言将登上语言榜前列,与 C 和 Java 并列前三甲

    Go 语言称霸云计算

    Go 将统治下一个 10 年

  • 相关阅读:
    7.1MongoDB之索引
    7.1MongoDB之排序
    6.30MongoDB之Limit与Skip方法
    6.30Java连接MongoDB进行操作练习
    6.30MongoDB之$type操作符
    6.30MongoDB之条件操作符
    6.30MongoDB之"查"
    6.29MongoDB之"改"
    c# 调用jar包
    sql server SQL 调试:无法启动 T-SQL 调试。未能附加到 SQL Server 进程
  • 原文地址:https://www.cnblogs.com/Gaimo/p/14808146.html
Copyright © 2011-2022 走看看