前言

Go语言现在在服务端的网络编程领域越来越火,尤其像IM即时通讯应用这种富网络应用且对服务端网络性能要求极高的场景,很高兴看到Golang发布了1.8正式版,希望在多核架构横行的时代多一些这种顺应时代而生的技术。

Go语言简介

Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。
 
谷歌大约2007年开始开发Go,并于2008年投入了一组全职员工。谷歌当初将该语言设计为一款系统编程语言,可以被用于网络服务器、存储系统和数据库中。但是谷歌认为,该语言还有望被用于其它领域。

Go适合用来做什么

  • 服务器编程:以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等;
  • 分布式系统,数据库代理器等;
  • 网络编程:这一块目前应用最广,包括IM应用、消息推送技术、Web应用、API应用、下载应用;
  • 内存数据库:前一段时间google开发的groupcache,couchbase的部分组件;
  • 云平台:目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。

Go 1.8版主要更新内容

  • Go 1.7中为64位x86系统引入的编译器后端现在用于所有体系结构,在这些体系结构下可以看到显着的性能改进。例如,我们的基准程序所需的CPU时间在32位ARM系统上减少了20-30%。在此版本中,对于64位x86系统也有一些性能提升。编译器和链接器跑得更快。编译时间应该比Go 1.7缩短约15%。在这一领域还有更多的工作要做:希望未来版本的编译速度更快。

  • 垃圾收集暂停应明显更短,通常在100微秒以下,通常低至10微秒。

  • HTTP服务器添加对HTTP/2 Push的支持,允许服务器向客户端推送。这对于消除网络延迟非常有用。 HTTP服务器还添加了对优雅停机的支持,允许服务器完成正在运行的请求之后关闭从而最小化停机时间。

  • context(添加到Go 1.7中的标准库)提供了取消和超时机制。 Go 1.8在更多的标准库中添加了对context的支持,包括database/sql和net包以及net/http包中的Server.Shutdown。

  • 现在使用新添加的Slice函数使得对slice进行排序更简单。

更多新版本的添加、改进和修复内容,以及上面列出的改进的详细信息请查看Go 1.8发行说明:https://golang.org/doc/go1.8

http://www.52im.net/article-216-1.html

Go语言v1.8正式发布,有显著的性能提升和变化(go适合服务器编程、网络编程)的更多相关文章

  1. 11. Go 语言网络编程

    Go 语言网络编程 Go语言在编写 web 应用方面非常得力.因为目前它还没有 GUI(Graphic User Interface 图形化用户界面)的框架,通过文本或者模板展现的 html 界面是目 ...

  2. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  3. GO语言练习:网络编程 ICMP 示例

    1.代码 2.编译及运行 1.Go语言网络编程:ICMP示例代码 icmptest.go package main import ( "fmt" "net" & ...

  4. GitHub的实现是否是基于此语言的支持网络编程性呢?

    我觉好像是的,我之前很奇怪为什么那样就可以引用了,后来发现GitHub中的java  JavaScript  phton等语言都支持网络编程.

  5. Linux下C语言的socket网络编程

    关于详细的服务器建立的步骤以及相关的socket套接字的知识我已经在python socket编程的文章中提到过了,大家可以参看那一篇博客来历接socket套接字编程的内容,由于要是用C相关的API所 ...

  6. 《Go语言网络编程》第一章:体系

    原书地址:http://tumregels.github.io/Network-Programming-with-Go 如果不知道想要构建什么,是不可能创建一个系统的.而且如果不知道它工作的环境,也同 ...

  7. 网络编程 -- RPC实现原理 -- NIO多线程 -- 迭代版本V1

    网络编程 -- RPC实现原理 -- 目录 啦啦啦 V1——设置标识变量selectionKey.attach(true);只处理一次(会一直循环遍历selectionKeys,占用CPU资源). ( ...

  8. 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V1 -- 入门应用

    网络编程 -- RPC实现原理 -- 目录 啦啦啦 V1——Netty入门应用 Class : NIOServerBootStrap package lime.pri.limeNio.netty.ne ...

  9. 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用

    网络编程 -- RPC实现原理 -- 目录 啦啦啦 V1——RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjec ...

随机推荐

  1. 今天犯了个小错误:_dataArray.count>1 和_dataArray.count>0搞混淆了

    _dataArray.count>1 和_dataArray.count>0搞混淆了:当数据为一条时,条件不成立.应该_dataArray.count>=1  或者>0   ( ...

  2. erlang连接mysql

    http://blog.csdn.net/flyinmind/article/details/7740540 项目中用到erlang,同时也用到mysql.惯例,google. 但是,按照网上说的做, ...

  3. WIN内核线程池函数

    线程池 (本章节中样例都是用 VS2010 编译调试的) 线程池编写必须在 Windows Vista 操作系统(以及以上版本号的操作系统)下,且 C++ 编译器版本号至少是 VS2008 线程池的功 ...

  4. Xamarin.Forms开发APP

    Xamarin.Forms+Prism(1)—— 开发准备 准备: 1.VS2017(推荐)或VS2015: 2.JDK 1.8以上: 3.Xamarin.Forms 最新版: 4.Prism 扩展, ...

  5. 如何在spring quartz类中拿到ServletContext

    ContextLoader.getCurrentWebApplicationContext().getServletContext() web.xml里加个: <listener> < ...

  6. 生成式模型(generative) vs 判别式模型(discriminative)

    Andrew Ng, On Discriminative vs. Generative classifiers: A comparison of logistic regression and nai ...

  7. Distributed Symmetric Multiprocessing Computing Architecture

    Example embodiments of the present invention includes systems and methods for implementing a scalabl ...

  8. erlang工作前新手学习指引路线

    Erlang学习总结,新手指引 要具体的写erlang入门技术网上有非常多,我写的肯定没有那些大牛写的好,自己也实习了快一个月,也做一个总结,给后erlang初学兴趣者提供些拙见吧 第一步搭建学习环境 ...

  9. Memory device control for self-refresh mode

    To ensure that a memory device operates in self-refresh mode, the memory controller includes (1) a n ...

  10. qt的pos()和globalpos()(globalpos是相对于桌面的)

    参考:http://www.cppblog.com/izualzhy/archive/2011/03/21/142408.html 原文粘贴: 新建一个窗口程序,然后创建一个QMenu对象.在构造函数 ...