Go语言为并发而生

  硬件制造商正在为处理器添加越来越多的内核以来提高性能。所有数据中心都在这些处理器上运行,今天的应用程序使用多个微服务来维护数据库连接,消息队列和维护缓存。所以,开发的软件和编程语言应该能够轻松的支持并发,并且应该能够随着CPU核心数量的增加而变得可扩展

  但是大多数的编程语言都是九十年代的单线程环境,虽然其中有一些语言的框架在不断的提高多核资源的使用效率,但是仍旧需要开发人员去花费大量的时间去搞懂这些框架的运行原理后才能够熟练的掌握

  Go语言发布于2009年,当时多核处理器已经上市了。Go语言在多核并发上拥有了原生的优势,Go语言从底层原生支持并发,无需第三方库、开发者的编程经验和开发经验。

  很多公司,其中特别是中国互联网公司,即将或者已经完成了使用Go语言的改造旧系统的过程。经过Go语言重构的系统能够使用更少的硬件资源获得更高的并发和I/O吞吐表现,充分挖掘硬件设备的潜力。

  Go语言的并发是基于goroutine的,goroutine类似于线程,但并不是线程。可以将goroutine理解成为一种虚拟的线程。Go语言运行的时候会参与调度goroutine,并将goroutine合理的分配给每个CPU中,最大限制的使用CPU的限制。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松的创建数百万个goroutine。

  goroutine的特点:

    1. 具有可增长的分段堆栈。这也就意味着它们只会在需要的时候才会使用更多内存
    2. goroutine的启动时间比线程快
    3. goroutine原生支持利用channel安全的进行通信
    4. goroutine共享数据结构时无需使用互斥锁

Go的性能非常强悍

  和其他高级语言相比,Java、Python这种高级语言在运行的时候需要先将人类可读的代码翻译成字节码,然后由专门的解释器转变成处理器可以理解的二进制的文件

  Go语言也是编译型语言,它直接将人类可读的代码编译成了处理器可以直接接受的二进制文件,执行效率更高,性能更好

Go前言的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 任务调度系统界面 http: ...

  2. Nova PhoneGap框架 第一章 前言

    Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...

  3. .NET 基础一步步一幕幕[面向对象前言]

    面向对象前言 2017年的第一篇博文,好久不写博文了,赶紧补上,感觉在以前的<.NET 基础一步步一幕幕>系列博客中,简短的小知识点已经介绍的差不多的(PS:如果还有别的基础知识点我没有介 ...

  4. 从零开始编写自己的C#框架(1)——前言

    记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后 ...

  5. 关于xml加载提示: Error on line 1 of document : 前言中不允许有内容

    我是在java中做的相关测试, 首先粘贴下报错: 读取xml配置文件:xmls\property.xml org.dom4j.DocumentException: Error on line 1 of ...

  6. [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言

                                  目       录 前言 前言 刚参加工作,使用过VB.VC开发软件,随着C#的崛起,听说是C++++,公司决定以后开发软件使用C#,凭借在 ...

  7. modelsim实用教程--前言

    前言 Modelsim是一款专业的仿真软件,特别是在Quartus II 11.0之后的版本,都没有配套自身的仿真软件,所以Modelsim成了在FPGA设计流程中的进行功能仿真的首选仿真软件之一. ...

  8. .NET 基础 一步步 一幕幕 [前言]

    .NET 基础 一步步 一幕幕 [前言部分] 本人小白一枚,虽然说从去年就开通博客了,到现在也没有写多少东东,虽然工作了,也没有更好得总结.故此重新祭出博客园法宝,修炼技术,争取早日走上大神之位. 故 ...

  9. UDS(ISO14229-2006) 汉译(No.0 前言)

    UDS protocol 前言 ISO(国际标准化组织)是国际标准机构(ISO成员体)的世界性联合会.国际标准的拟定工作通常由ISO技术委员会负责.为每一个主题而建立的技术委员会由对其感兴趣的成员机构 ...

  10. 1-学习前言&C语言概述

    [C语言]01-学习前言&C语言概述 参考自 http://www.cnblogs.com/mjios/archive/2013/03/12/2956508.html#label2 C语言是我 ...

随机推荐

  1. BASS HOME

     http://www.un4seen.com/

  2. R语言 基本语法

    R语言基本语法 我们将开始学习R语言编程,首先编写一个"你好,世界! 的程序. 根据需要,您可以在R语言命令提示符处编程,也可以使用R语言脚本文件编写程序. 让我们逐个体验不同之处. 命令提 ...

  3. QueryList 内容过滤

    <?php require 'vendor/autoload.php'; use QL\QueryList; $html =<<<STR <div id="de ...

  4. NX二次开发-NXOPEN更改工程图视图名字baseView1->SetName("LSY");

    NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_obj.h> #include <u ...

  5. java系列(1/4)基础阶段-MySQL(2/13)

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停 ...

  6. ionic-CSS:ionic Range

    ylbtech-ionic-CSS:ionic Range 1.返回顶部 1. ionic Range ionic Range 是一个滑块控件,ionic 为 Range 提供了很多种默认的样式.而且 ...

  7. Lombok 常用注解

    Lombok Lombok 能以简单的注解形式来简化 java 代码,提高开发人员的开发效率.例如开发中经常需要写的 javaBean,都需要花时间去添加相应的 getter/setter,也许还要去 ...

  8. SpringMVC(day1搭建SpringWebMvc项目)

    MVC和webMVC的区别 Model(模型) 数据模型,提供要展示的数据,因此包含数据和行为,行为是用来处理这些数据的.不过现在一般都分离开来:Value Object(数据) 和 服务层(行为). ...

  9. python下pip使用bug汇总

    PS:以下操作全部基于win10 64位操作系统 pip安装任何包都出现问题: Cannot unpack file /tmp/pip-KzJgHD-unpack/simple 报错: Cannot ...

  10. Android代号、版本及API级别之间的对应关系

    参考链接:Codenames, Tags, and Build Numbers  |  Android Open Source Project