Go语音介绍

news2024/12/24 9:52:47

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万台规模的实践,具体可以参考腾讯万台规模的Docker应用实践_QCon_小盖_InfoQ精选文章 。

主要职责是:

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

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

百度

目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个 InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦 .

其次就是百度的消息系统,从其最近的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年

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【树形DP+换根思想】2022牛客多校加赛 H

登录—专业IT笔试面试备考平台_牛客网 题意: 思路: 这个虽然是树形DP,却用了换根的思想.... 首先,后缀0的个数可以转化成min(cnt2,cnt5),其中cnt2为2的因子个数,cnt5为5的因子个数 然后进行DP 设dp[u]…

面试之多线程(三)

1.进程和线程的区别 根本区别:进程是操作系统分配资源的最小单位;线程是CPU调度的最小单位所属关系:一个进程包含了多个线程,至少拥有一个主线程;线程所属于进程开销不同:进程的创建,销毁&…

基于Vue+ElementUI+Echarts+G2Plot的仪表盘设计器,代码完全开源

简介 🔥DashBoard基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器,具备仪表盘设计、预览、资源管理、组件管理等能力,支持JSON、MySQL、Oracle、PostgreSQL、HTTP、JavaScript、Groovy等数据集接入&#xf…

类加载器的双亲委派机制和源码分析

双亲委派机制 双亲委派就是一个从子到父的过程,然后还有一个从父到子的状态。具体如下: 如果一个类加载器收到了类加载的请求,它会首先去自己的缓存中查找是否加载过这个类(findLoadedClass),如果有,那么直接加载。如果没有就会让父加载器加载,父加载器会先去自己的缓…

自定义elementui的主题

通常情况下,我们使用elementui框架的时候默认组件的主题都是白色的,比如: 但是如果想自定义主题,改变主题颜色,以及各种默认颜色,其实也不难: 配置默认主题,选好后点击下载 在vu…

软件外包开发的PHP开发框架

PHP有许多流行的开发框架,每个框架都有其独特的特点和优势。下面列举的只是一部分PHP开发框架,还有其他一些框架如Slim、Zend Framework等也值得一提。选择合适的框架取决于项目的需求和开发团队的偏好,您可以根据项目规模、复杂性和功能需求…

Golang之路---02 基础语法——异常机制:panic 和 recover

Golang的异常处理 Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作。 在 Golang 中,有不少常规错误,在编译阶段就能提前告警,比如语法错误或类型错误等,但是有些错误仅能在程序运行后才能发生&…

【推荐】通用全面的APP测试用例设计

1、安装卸载 用例编号 测试内容 操作步骤 预期结果 测试次数 测试结果 备注 安装 1 通过第三方软件协助安装是否正常 第三方软件搜索app,安装 目标:支持360、豌豆荚、应用宝等主流辅助工具 1 Pass 2 在不同操作系统下安装是否正常 1、使用测试手机安装 …

面试总被问高并发负载测试,你真的会么?

本文将介绍使用50K并发用户测试轻松运行负载测试所需的步骤(以及最多200万用户的更大测试)。 ❶ 写你的剧本 ❷ 使用JMeter在本地测试 ❸ BlazeMeter SandBox测试 ❹ 使用一个控制台和一个引擎设置每引擎用户数量 ❺ 设置和测试群集(一个…

【环形链表(带环链表)超详细总结】

题目一 给你一个链表的头节点 head ,判断链表中是否有环。 使用快慢指针,如果慢指针等于快指针,就说明是带环链表链表的中间结点 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;…

什么是 webpack?

Webpack 介绍 什么是 webpack? :::tip 官方描述 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个…

Zookeeper基础操作

搭建Zookeeper服务器 windows下部署 下载地址: https://mirrors.cloud.tencent.com/apache/zookeeper/zookeeper-3.7.1/ 修改配置文件 打开conf目录,将 zoo_sample.cfg复制一份,命名为 zoo.cfg打开 zoo.cfg,修改 dataDir路径&#xff0c…

0802|IO进程线程day5 作业(打印时钟在终端上,若终端输入quit,结束时钟)

作业1:守护进程 守护进程的创建(5步): 创建孤儿进程:所有工作都在子进程中执行,从形式上脱离终端控制。 fork(), 退出父进程 创建新的会话组:使子进程完全独立出来,防止兄弟进程对其…

蓝桥杯上岸必背!!!(并查集补更)

蓝桥杯上岸必背!!!(并查集补更) 大家好 我是寸铁💪 冲刺蓝桥杯省一模板大全来啦 🔥 蓝桥杯4月8号就要开始了 🙏 距离蓝桥杯省赛倒数第3天 ❗️ ❗️ ❗️ 还没背熟模板的伙伴们背起来 💪 &…

git 常用命令有哪些

Git 是我们开发工作中使用频率极高的工具,下面总结下他的基本指令有哪些,顺便温习一下。 前言 一般项目中长存2个分支: 主分支(master) 和开发分支(develp) 项目存在三种短期分支 &#xff1a…

大数据技术之Clickhouse---入门篇---SQL操作、副本

星光下的赶路人star的个人主页 积一勺以成江河,累微尘以崇峻极 文章目录 1、SQL操作1.1 Insert1.2 Update 和 Delete1.3 查询操作1.4 alter操作1.5 导出数据 2、副本2.1 副本写入流程2.2 配置步骤 1、SQL操作 基本上来说传统关系型数据库(以 MySQL 为例…

忘记数据库密码如何处理

windows 5.6.51版本及以前 #当前账号设置密码 set password password(123456); #当前账号取消密码 set password ; (1)用管理员身份打开控制台输入 net stop m5(我的电脑MySQL名字为m5,根据自己的更改) (…

爱尔眼科四川省区“同心博爱 光明工程”“西部健康公益行”炉霍站启动

8月1日,“同心博爱 光明工程”“西部健康公益行”炉霍站出征仪式在四川爱尔眼科医院隆重举行。 此次公益活动由民革成都市委会、中共锦江区委统战部指导,如意树爱心促进会主办,民革锦江区总支部、爱尔眼科四川省区支持,四川爱尔眼…

Linux系统CPU和磁盘性能进程分析工具pidstat

一、pidstat对CPU的分析 Linux 上的pidstat(1)工具按进程或线程打印CPU 用量,包括用户态和系统态时间的分解。默认情况下,仅循环输出活动进程的信息。例如: 这个例子捕捉到了系统备份,包含了tar(1)命令,从文件系统读取…

低通、高通、带通、阻通滤波器

目录 低通、高通、带通、阻通滤波器 低通、高通、带通、带阻滤波器的区别 通俗理解: 1、低通滤波器 2、高通滤波器 3、带通滤波器 4、带阻滤波器 5、全通滤波器 低通、高通、带通、阻通滤波器 低通、高通、带通、带阻滤波器的区别 低通滤波器:只…