Go语言中文网 为您找到相关结果 121

等待5年,Go 2.0终于要来了!

蛰伏5年,Go Language 2.0 终于要来了!早在今年8月份,Go团队便提出了2.0版本的设计草案,包括两大主题:错误处理和泛型。而今天,团队开发人员发话了:“是时候采取行动了!”Go 1和Go 2主要的区别在于决策的制定——Go 1的诞生是一个小团队的努力,而Go 2将更受其社区的影响。目前在Go 2的提案中,大约有120个未解决的问题被标记为Go 2的提案,每一个问题都与重要的库或语言更改相关,而这些问题通常不能满足当前Go 1的兼容性。开发人员将这些提案分类为Go2Cleanup、NeedsDecision等,以便后续的执行操作。在Go语言的生态中,拥有数以万计的程序员和代码,因此,所有的决策和改变必须谨慎,以免对稳定的生态造成破裂。因此,Go团队认为,需要实施新的提案评估流程...阅读全文

从Maven,Gradle到Go

为什么要有依赖管理工具? 谈依赖管理之前,我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个“Hello World”,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传过去。依赖管理工具出现之前大多数都是这样搞的。 但如果再复杂些,依赖库本身也有依赖怎么弄呢?将依赖压缩打包,然后放个rea...阅读全文

Go1.7改善了编译速度并且会生成更快的代码

Go1.7的开发周期正在接近它的下一个里程碑,Go的提交者Dave Cheney报告了子即将发布的版本中,团队成员在语言工具链上的努力。 Cheney称,基于当前的开发状态,Go1.7将会很容易就成为最好的Go发布版本。提升工具链的努力主要聚焦在如下两个方面: 编译和链接的时间; 代码生成。 当谈到编译时间,Go编译器自从C转到了Go的影响而一直以来的较慢的性能。这个问题已经被讨论很多次并且最近的完成的工作目标就是减少编译器内存使用来改善链接时间。这项改进和Go1.5.3相比大约减少了20-30%的总编译时间,如下图所示: 代码生成,如上文所述,是Go1.7的另一个主要关注点。新的后端改用SSA,和LLVM以及其他编译器着的一样,以启用代码生成的很多优化。这些优化包含更好的无用代码的消除,寄...阅读全文

Go性能优化技巧1/10

字符串(string)作为一种不可变类型,在与字节数组(slice, [ ]byte)转换时需付出 “沉重” 代价,根本原因是对底层字节数组的复制。这种代价会在以万为单位的高并发压力下迅速放大,所以对它的优化常变成 “必须” 行为。 首先,须了解 string 和 [ ]byte 数据结构,并确认默认方式的复制行为。 ![source](http://studygolang.qiniudn.com/160428/a01e98e972abb87f20d0dc9edaa1fd17.jpg) ![gdb](http://studygolang.qiniudn.com/160428/4069f099cbb9753061fb4acf82227a46.jpg) 动态演示: [https://as...阅读全文

怎么调用Service生命周期中 onStartCommand方法的返回值 ?

在Android开发中,调用Context的startService方法启动Service的生命周期时,如果Android面临内存匮乏,可能会销毁掉你当前运行的Service,然后待内存充足的时候可以重新创建Service,Service被Android系统强制销毁并再次重建的行为依赖于Service中onStartCommand方法的返回值。 而Service onStartCommand方法中,常用的返回值主要有:START_NOT_STICKY、START_STICKY和START_REDELIVER_INTENT三种,这三个值都是Service中的静态常量。下面小编就和大家分享下这三种返回值的具体的含义及使用情况。 START_NOT_STICKY ...阅读全文

mysql连接池不能回避的wait timeout问题

感谢我们的木木同学给了我写这篇文章的灵感和机会。起因我们的项目组一直在使用albianj作为开发框架在开发应用。使用至今倒也是没有出现很大的问题,但最近加过监控的接口基本上都会在使用一段时间后,突然之间执行数据库操作变得很慢。虽然会变慢,但持续的时间比较短,一般1分钟左右,然后会自动恢复正常。但是过了一段时间,这个现象又会出现,周而复始。从监控看,发生的时间点并无规律,有的时候一天发生3次,有的也会有4-5次。虽然从规律上并无法去查找,那就只能从别的地方想办法:增加一些详细的日志,从日志上看一下问题所在。详细日志版本刚刚上去,立刻就发生问题了。如下图:看一下左下角的曲线图,突然飙高,然后在1500ms的高位不下来。经过查找日志(PS:sorry。写文章的时候日志已经被自动清除,没法截图了),...阅读全文

博文 2017-09-05 05:41:29 94geek的大嘴

golang对mysql的基本操作

golang 操作mysql 导入数据库驱动 import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) mysql连接配置 const ( USERNAME = "root" PASSWORD = "*******" NETWORK = "tcp" SERVER = "localhost" PORT = 3306 DATABASE = "blog" ) 建立连接 dsn := fmt.Sprintf("%s:%s@%s(%s:%d)/%s",USERNAME,PASSWORD,NETWORK,SERVER,PORT,DATABASE) DB,err := sql.Open("mysql",dsn) if...阅读全文

博文 2018-07-17 21:34:46 我的饭卡呢

Go 性能优化技巧 10/10

垃圾回收不是万能的,Go 一样存在资源泄露问题。 ##SetFinalizer 虽然垃圾回收器能很好地处理循环引用,可一旦加上 SetFinalizer,事情就不那么美妙了。 ![gc1](http://studygolang.qiniudn.com/160614/9610a9ee5f2f443fceb1bcb271b9bc84.jpg) ![gc2](http://studygolang.qiniudn.com/160614/b7a72410161fdb53585cc0e2178a680d.jpg) 显然,这些对象并未被释放。在标准库文档里有这样的描述: > Finalizers are run in dependency order: if A point...阅读全文

Mesos 架构以及源码浅析

Mesos 按照官方的介绍,是分布式操作系统的内核。目标是 ”Program against your datacenter like it’s a single pool of resources”,即可以将整个数据中心当做一台电脑一样使用。可以说这个目标是所有宣称自己是DCOS的系统的共同目标,本文从架构和源码层面分析Mesos以及周边框架,看看Mesos是如何实现这个目标的,当前距这个目标还有多大差距。最后比较了一下Mesos和Kubernetes这两个都受Google的Borg影响的系统的异同。 阅读对象:对Mesos或者分布式系统感兴趣的技术人 设计理念以及架构 引用Mesos paper里的一句话,来说明Mesos的设计理念: define a minimal interface...阅读全文

博文 2017-02-09 19:54:11 jolestar

Go 中的对象的生命周期

尽管 Go 语言很简单,Go 的开发人员仍然发现了许多创建和使用 Go 中对象的方法。在本篇博客中,我们将介绍对象管理的三步法 - ***实例化, 初始化,以及启动***。我们还会将其与其他的创建、使用对象的方法进行对比,并审查(评估)每种方法的优缺点。 ## 我们的目标 这似乎是一个愚蠢的问题,但是,我们在 Go 中创建和使用对象的目的到底是什么?为了与 Go 的风格的统一,我优先考虑了以下事项: * 足够简单 * 足够灵活 * 文档友好 除此之外,我们也应当说明哪些事情不是我们的目标。我们应该假设知道最终使用的用户的能力水平,所以我们就不需要提供过多的障碍。 使用我们代码的用户应该可以使用[RTFM](https://www.urbandictionary.com/define.php?...阅读全文

博文 2019-01-01 22:10:09 barryz

《Golang 入门系列五》golang的常量、变量、数组

前言:本文主要介绍常量和变量的使用,以及关于变量的可见性规则、引用类型和值类型的区别。 一、常量 常量表达式的值在编译期计算,而不是在运行期。常量的值不可修改,这样可以防止在运行期被意外或恶意的修改。 1.1 常量的声明 常量的定义格式: const identifier [type] = value 显式定义常量: const a string = "Tom" 隐式定义常量:(这里用了类型推导) const a = "Tom" 多个相同类型常量定义: const first_name, last_name = "T", "om" 示例: package main import ( "fmt" ) const first_name, last_name = "T", "om" func ma...阅读全文

博文 2018-03-11 22:33:05 IT--小哥

Docker收购 Tutum,进一步完善容器生态

应用程序开发领域最近颇为热闹,最近两年Docker在该领域的热度在持续上升,这家公司的估值已经超过十亿美元,跻身独角兽俱乐部。它的客户不仅有众多科技公司,还包括投资公司高盛(Goldman Sachs),同时它还与Amazon、Microsoft等科技巨头建立了合作伙伴关系。尽管已经有超过15万的应用运行在Docker容器上,要说服大公司使用docker构建,尤其是运行app,仍然需要一些时日。 上周三,Docker宣布收购初创公司Tutum,这一举动促使docker向稳定性的目标更进一步,不管是应用在开发还是生产环境的稳定性。此举意味着Docker正在慢慢释放四月份融到的9500万美元,通过收购的方式将自身业务的短板补上,这次主要体现在应对生产环境上。具备应对生产环境的能力以后,Do...阅读全文

Go 1.5 实现自举、引入并发垃圾收集器

在经历了几个Beta版本和一个rc版本之后,Go 1.5终于正式发布了。这是一个很重要的版本,实现方面有很多变化。因为这个版本仍然遵循Go 1兼容性承诺,开发团队预计,所有的Go程序应该都可以和以前一样编译和运行。二进制和源码包已提供下载。 在实现方面,最大的变化有以下几点: 编译器和运行时是完全用Go语言编写的(还有少量汇编),实现了自举。实现中不再涉及C语言,所以构建时也就不需要C编译器了。 并发的垃圾收集器,可能的情况下,垃圾收集可以和其他goroutine并发进行,可以极大降低响应时间。 默认情况下,Go程序运行时的GOMAXPROCS会被设置为可用的核数,之前默认为1。 对internal packages的支持扩展到所有repositories,不再是仅供核心包...阅读全文

Android开发中 React Native生命周期如何划分?

熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期。今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android中,React Native组件的生命周期,大致分为三个阶段,分别是: 1、组件第一次绘制阶段,这个阶段主要是组件的加载和初始化; 2、组件在运行和交互阶段,这个阶段组件可以处理用户交互,或者接收事件更新界面; 3、组件卸载消亡的阶段,这个阶段主要是组件的清理工作。 在Android React Native组件的整个生命周期中,还有10个回调函数,不得不知。 1、object getDefaultProps()在组件类创建的时候调用一次,然后返回值被缓存下来。...阅读全文

golang gc 问题(转的)

在实际使用go语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究。本文对研究的结果进行一下总结。 什么是垃圾回收? 曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开发者的噩梦。如何解决这个头疼的问题呢?过去一般采用两种办法: 内存泄露检测工具。这种工具的原理一般是静态代码扫描,通过扫描程序检测可能出现内存泄露的代码段。然而检测工具难免有疏漏和不足,只能起到辅助作用。 智能指针。这是c++中引入的自动内存管理方法,通过拥有自动内存管理功能的指针对象来引用对象,是程序员不用太关注...阅读全文

博文 2016-05-07 15:00:00 jackluo

Golang WebAssembly 前端开发 - 2. Golang/JS 交互.md

Golang 标准库中的 syscall/js 包提供了一系列接口。其中 js.Global() 返回一个 js.Value 类型的结构体,它指代 JS 中的全局对象,在浏览器环境中即为 window 对象。可以通过其 Get() 方法获取 window 对象中的字段,也是 js.Value 类型,包括其中的函数对象,并使用其 Invoke() 方法调用 JS 函数。 另一方面,可以使用 js.Value 类型的 Set() 方法向 JS 中注入字段,包括用 js.NewCallback() 封装的 Golang 函数,这样就能在 JS 中调用 Golang 的函数。Golang 函数必须是 func(args []js.Value) 形式的,使用 args 参数接收 JS 调用的参数,且没...阅读全文

博文 2019-01-02 23:34:44 Platanuses

go mobile 得生命周期事件

生命周期事件,就是状态从一个阶段切换成另外一个状态时触发的事件。所以我们可以看到 lifecycle.Event 的定义如下: 生命周期一共有下面四个阶段: lifecycle.StageDead, lifecycle.StageAlive, lifecycle.StageVisible, lifecycle.StageFocused, 具体定义如下图: 一个可以用来分析各个事件先后顺序的代码: // +build darwin linux package main import "log" import "golang.org/x/mobile/app" import "golang.org/x/mobile/event/lifecycle" import "golang.org/x/mo...阅读全文

go局部变量的存储空间是堆还是栈?

go局部变量的存储空间是堆还是栈? 编译器会自动选择在栈上还是在堆上分配局部变量的存储空间,但可能令人惊讶的是,这个选择并不是由用var还是new声明变量的方式决定的。 var global *int func f() { var x int x = 1 global = &x } func g() { y := new(int) *y = 1 } f函数里的x变量必须在堆上分配,因为它在函数退出后依然可以通过包一级的global变量找到,虽然它是在函数内部定义的;用Go语言的术语说,这个x局部变量从函数f中逃逸了。相反,当g函数返回时,变量y将是不可达的,也就是说可以马上被回收的。因此,y并没有从函数g中逃逸,编译器可以选择在栈上分配*y的存储空间(译注:也可以选择在堆上分配,然后由Go语...阅读全文

博文 2017-12-07 08:04:45 卢春风

Go基本概念(1)

1.Go 的安装 1.1需要提前安装JDK 1.2安装Go server ubuntu系统: 预先下载好.deb安装包 dpkg -i go-server-${version}.deb 服务状态查看,启动,停止 sudo /etc/init.d/go-server status sudo /etc/init.d/go-server start sudo /etc/init.d/go-server stop Redhat安装: 预先下载好rpm包 rpm -i go-server-${version}.noarch.rpm 服务状态查看,启动,停止 相关安装文件: /var/lib/go-server 二进制文件,数据库文件 /etc/go pipeline配置文件/var/log/go-se...阅读全文

博文 2014-12-23 17:00:08 biheyu

Go 1.7 中值得关注的几个变化

零、从Release Cycle说起 从Go 1.3版本开始,Golang核心开发Team的版本开发周期逐渐稳定下来。经过 Go 1.4 、 Go1.5 和 Go 1.6 的实践,大神 Russ Cox 在 Go wiki 上大致定义了 Go Release Cycle 的一般流程: 半年一个major release版本。 发布流程启动时间:每年8月1日和次年2月1日(真正发布日期有可能是这个日子,也可能延后几天)。 半年的周期中,前三个月是Active Development,then 功能冻结(大约在11月1日和次年的5月1日)。接下来的三个月为test和polish。 下一个版本的启动计划时间:7月15日和1月15日,版本计划期持续15天,包括讨论这个major版本中要实现的主要功能...阅读全文

博文 2016-08-18 04:00:03 wming0523

PaaS 系统 Kel

Kel 是一个开源的基于 [Kubernetes](http://www.oschina.net/p/kubernetes) 构建的 PaaS 系统,采用 Python 和 Go 语言开发。Kel 可简化管理 Web 应用发布和托管整个软件生命周期。Kel 帮助开发和运维人员轻松管理他们的应用架构,通过一组工具和组件让 K8S 使用非常简单。 Kel 包括如下组件: * kel-api * kel-router * kel-identity * kel 命令行客户端 * kelctl * kel-cluster Kel 使用 Apache 许可证,同时可由 Eldarion 公司提供商业支持...阅读全文

到下一个千亿级视频市场需要多久 趣拍和阿里云说只要3小时

“以前需要10个技术人员组成开发团队,奋战半年才能上线的视频功能,有了我们和阿里云的短视频一站式解决方案后,最少只需要1个人用3个小时就能完成。”趣拍创始人王强宇说。 作为一名拥有18年创业史的创业老兵,王强宇始终没有忽视开发者的真正需求。早在趣拍的创业初期,王强宇就观察到,对许多APP的开发者而言,他们都非常希望能上线自己的视频功能,但囿于开发能力、人员成本等劣势,只靠自己的力量还无法实现。 要将趣拍的视频能力开放,让更多开发者使用这个功能,成为王强宇推出趣拍SDK时的初衷。 受这个梦想驱动,2015年7月,趣拍SDK诞生。在没有任何市场推广的情况下,趣拍SDK的讨论群从无到有,瞬间聚集了数百开发者,吸引数百应用接入,覆盖过亿用户。 但王强宇并未就此止步,他考虑到,...阅读全文

Go Commons Pool发布以及Golang多线程编程问题总结

趁着元旦放假,整理了一下最近学习Golang时,『翻译』的一个Golang的通用对象池,放到 github Go Commons Pool开源出来。之所以叫做『翻译』,是因为这个库的核心算法以及逻辑都是基于 Apache Commons Pool 的,只是把原来的Java『翻译』成了Golang。 前一段时间阅读kubernetes源码的时候,整体上学习了下Golang,但语言这种东西,学了不用,几个星期就忘差不多了。一次Golang实践群里聊天,有人问到Golang是否有通用的对象池,搜索了下,貌似没有比较完备的。当前Golang的pool有以下解决方案: sync.Pool sync.Pool 使用很简单,只需要传递一个创建对象的func即可。 var objPool = sync.Po...阅读全文

博文 2016-01-19 10:37:26 jolestar

运维架构服务监控Open-Falcon

摘要:监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。一、 介绍监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的...阅读全文

博文 2017-10-12 08:38:14 肆虐的悲傷

CNCF 首个云原生存储项目ROOK

Rook将文件、数据块和对象存储系统引入到Kubernetes集群,与其他正在使用存储的应用程序和服务一起无缝运行。通过这种方式,云原生集群可以在公有云和本地部署中自给自足并且具备可移植性。该项目的开发目的是使企业能够通过动态应用编排,为在本地和公有云环境中运行的分布式存储系统实现数据中心现代化。 与传统的建立一个需要多年才能成熟的存储系统不同,Rook专注于Ceph这样经过实际测试的存储系统转变成一系列在Kubernetes上无缝运行的云原生服务。Rook深入Kubernetes,为安全、策略、配额、生命周期管理和资源管理提供无缝的体验。 云原生初创公司首席执行官兼Rook项目的开发人员Bassam Tabbara表示,开源软件意味着存储密集型工作负载不再需要在云原生环...阅读全文

Go语言核心技术(卷1):基本单元2

三.变量 1声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int类型的零值,0;如果i是bool类型,则为false;i是float64类型,则为0.0;i为string类型,则为"";i为interface类型,则为nil;i为引用类型,则为nil;如果i是struct,则是将struct中所有的字段初始化为对应类型的零值。 这种初始化机制可以保证任何一个变量都是有初始值的,这样在做边界条件条件检查时不需要担心值未初始化,可以避免一些潜在的错误,相信C和C++程序员的体会更加深入。 var s string fmt.Println(s) // "" 这里的s是可...阅读全文

博文 2016-03-14 23:00:04 abv123456789

Apache的Mesos和Google的Kubernetes 有什么区别?

Apache的Mesos和Google的Kubernetes 有什么区别?本文来自StackOverFlow上的一个问题,主要讨论Mesos和Kubernetes的区别,相信我们很多人也有同意的疑问。 Kubernetes的开发者Craig回答了这个问题,同时masi也做了概述,不一定对,供读者参考。Kubernetes主要针对容器集群,而 Mesos适用于任何的框架和应用,所以Kubernetes可以运行于Mesos上。Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。它可以完美运行在现代的操作系统环境(比如CoreOS 和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。Kubernetes使用Golang开发,具有轻量化、模块化、便...阅读全文

Golang圣经----读书笔记

前言 Go语言起源 Golang发展历程 Go语言项目 "软件的复杂性是乘法级相关的-----Rob Pike" 简洁的设计需要在工作开始的时候舍弃不必要的想法,并且在软件的生命周期内严格区别好的改变和坏的改变。通过足够的努力,一个好的改变可以在不破坏原有完整概念的前提下保持自适应,正如Fred Brooks所说的“概念完整性”;而一个坏的改变则不能达到这个效果,它们仅仅是通过肤浅的和简单的妥协来破坏原有设计的一致性。只有通过简洁的设计,才能让一个系统保持稳定、安全和持续的进化。 本书的组织 基础 第一章包含了本教程的基本结构,通过十几个程序介绍了用Go语言如何实现类似读写文件、文本格式化、创建图像、网络客户端和服务器通讯等日常工作。 第二章描述了Go语言程序的基本元素结构、变量、新类型定义...阅读全文

博文 2017-03-05 19:42:34 紫若丹枫

非技术型产品新人如何看待开发给出的工期?

非技术出身的产品经理,想必在从事产品工作前都会问,做产品需要技术基础吗?而大部分人都会告诉你,产品经理不会技术也可以。真是这样么? 那对于非技术出身的产品经理而言,如何看待开发给出的工期呢?比如在我面前说一个月,在老板面前说一个周,这个怎么破? 其实,对于非技术出身的产品经理,很难判断开发工期,但也不是完全没法解决,我们可以通过以下这两个方面提升自己来解决。 一方面,作为产品经理,你需要有长期的经验积累。做产品,有一方面的能力叫做技术理解力,技术理解力对于非技术出身的产品经理非常重要,应该不断的去学习跟产品相关的技术、大概逻辑,不用了解具体的细节,但应该大概知道大概逻辑,复杂程度,大概框架,并进行一定的学习,多和技术同学请教,培养自己的技术理解力。 另一方面,工期的评...阅读全文

Go Commons Pool 1.0 发布

Go commons pool是一个通用的go语言对象池,基于Java版本的Apache Commons Pool改写。Go commons pool实现了Java版本的主要功能,改写了大多数Java版本的测试用例,测试覆盖率达到90%,性能测试结果和Java版本的相近,已经可以用于生产环境,于是发布1.0版本。 Go commons pool保留了Java版本的主要功能,包括: 自定义的 PooledObjectFactory. 丰富的设置选项,可以精确控制对象的生命周期。详细参看ObjectPoolConfig。 对象池是否是 LIFO (后进先出) 或者是 FIFO (先进先出) 对象池的容量控制 对象池对象的验证配置 获取对象时是否阻塞以及最大等待时间配置 对象池对象的回收机制配置(...阅读全文

使用Kubernetes 构建自动化平台

编者按:本文由Wercker CTO Andy Smith 分享,他分享了Kubernetes如何帮助他们节省时间并加速开发。本文是关于Kubernetes 1.3新功能一系列深入文章的第九篇。 我们在Wercker运行数百万容器执行用户的CI/ CD工作。这些容器的生命周期大多是短暂的,构建、测试和部署完成后,这些容器的生命周期随之结束。 虽然多数容器的生命是短暂的,但我们倾向于持续运行我们的基础设施。通常情况下我们需要跨多节点运行多个容器,所以一个高度可扩展的调度程序就显得非常有必要。我们决定使用Kubernetes。 Wercker 是容器中心自动化平台,它帮助开发人员构建、测试并部署应用程序。 我们支持任何数量的pipelines,从代码构建、测试微服务间的A...阅读全文

为什么选择使用Go语言

为什么选择使用Go语言 国内很多云创业公司都会选择把Go作为首要语言,例如DaoCloud。为什么会选择Go呢?与其他语言的应用相比,它有什么优点呢? 1、学习曲线 它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。 2、效率 Go拥有接近C的运行效率和接近PHP的开发效率,这就很有利的支撑了上面大家追求快速的需求。 3、出身名门、血统纯正 之所以说Go出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。...阅读全文

Go 语言的下一个大版本:Go 2.0 被安排上了!

今年 8 月 Go 开发团队公布了 Go 2.0 的设计草案,包括错误处理和泛型这两大主题。现在备受瞩目的 Go 2.0 又有了新动向 —— 昨日 Go 开发团队在其官方博客表示,Go 2 已经被安排上了!目前 Go 2 已进入确定变更提案的阶段,并公布了提案评估流程。废话不多说,先来看看 Go 2.0 有哪些值得关注的内容:1.最大程度保持对 1.x 的兼容,以避免分裂 Go 语言生态系统2.采用增量升级的方式,而非单独发布重大更新版本3.实施新的提案评估流程,以评估尚未解决且被标记为提案的 issue4.将会在 Go 1.13 版本中选择 Go 2 部分的提案背景早在2017年的 GopherCon 大会上,Russ Cox(Go 核心开发团队的技术 leader)就已经正式开始思考 G...阅读全文

博文 2019-06-27 20:40:13 开源中国

区块链100讲:Hyperledger Fabric 中的链码(智能合约)

image 1 链码概念 网络运行环境我们已经启动完成,现在我们从开发者的角度来认识一下完成交易所必须的智能合约(在 Hyperledger Fabric 中被称之为 Chaincode,也就是链上代码)的相关知识,以便于理解账本中的数据到底是通过什么方式进行操作。 Chaincode:链上代码,简称链码,一般是指由开发人员使用Go语言(也支持Java等语言)编写的应用程序代码,提供分布式账本的状态处理逻辑。链码被部署在Fabric的网络节点中,能够独立运行在具有安全特性的受保护的 Docker 容器中,以 gRPC 协议与相应的 peer 节点进行通信,以操作(初始化或管理)分布式账本中的数据。可以根据不同的需求开发出不同的复杂的应用。 链码分类 在 Hyperledger Fabric ...阅读全文

博文 2018-12-01 22:35:05 宇宙永恒

Docker和rkt快别争了,k8s才是容器生态的中心

![alt 文本]( http://blog.tenxcloud.com/wp-content/uploads/2016/10/1918-steam-engine.jpg) 开源项目 CRI-O ,其前身为 OCID ,官方简介是“ OCI-based implementation of Kubernetes Container Runtime Interface ”。作为接口,它使得 Kubernetes 不依赖于传统的容器引擎(比如 Docker ),也能够管理容器化工作负载。 该项目通过与 Kubernetes (或其商业版 CoreOS Tectonic )协作,可以帮助 DevOps 人员来管理容器的整个“生命周期”。 开发人员需要使用容器引擎构建镜像,通常情况...阅读全文

迈向Go 2的下一步

Go 2 又有进展了,近日 Go 团队在博客公布了关于 Go 2 下一步的计划。根据此前的报道,Go 2 并非一个单独的重大更新版本,而是通过“增量(incremental)更新”的方式以逐渐抵达 "Go 2.0",所以期间的版本都能看到 Go 2 的影子。当前状态Go 团队表示正准备推出 Go 1.13,有望在今年 8 月初发布。经历长时间的开发后,这会是首个包括对语言特性进行具体更改的重要版本,而不仅仅是针对规范的小调整。为了实现这些变化,Go 团队从一小系列可行的提案开始,这些提案很大一部分来自 GitHub 中被标记为提案的 issue 列表。此文讲述过关于提案新的评估流程,团队希望所选择的提案对语言的改动较小,而且几乎没有争议,这样是为了保证经历完全程后,最终能实现这些提案。另外,...阅读全文

博文 2019-06-27 20:42:23 开源中国

学习go语言能做什么样的工作?

载请注明出处:www.oldboyedu.comGo语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。Go语言成功案例Nsq:Nsq 是由Go语言开发的高性能、高可用消息队列系统,性能非常高,每天能处理数十亿...阅读全文

博文 2018-11-09 16:36:01 大数据hadoop

Mirantis决定采用Kubernetes作为 Openstack的生命周期管理工具

Mirantis是OpenStack的主要贡献者,今天他宣布将使用Kubernetes作为底层编排引擎重写其私有云平台。我们认为这是推进OpenStack和Kubernetes 社区伟大的一步。 Openstack的用户将会享受到Kubernetes带来的巨大的效率、可管理性与弹性的提升,同时他们的应用将能够使用更多的云原生模式。 在一个平台上管理基于容器与虚拟机的应用也让Kubernetes社区更加有信心。 ## 云原生路径 谷歌花了十几年时间开发、应用和提炼云原生计算的原则。云原生应用是: ● 容器封装,应用程序是由封装好的、可在多种环境重用的单元组成的 ● 动态调度,提高基础设施的效率和降低操作开销 ● 基于微服务,松耦合的组件大大...阅读全文

干货速递 ▎Kubernetes有状态集群服务部署与管理(上)

2016年12月2日,时速云架构师张寿红应邀参加ArchSummit2016全球架构师峰会,并在微服务与容器实践专场做了《Kubernetes有状态集群服务部署与管理》的干货分享。 ![](http://blog.tenxcloud.com/wp-content/uploads/2016/12/ArchSummit%E5%8C%97%E4%BA%AC2016%E5%BC%A0%E5%AF%BF%E7%BA%A204.jpg) 现场演讲图 由于篇幅关系,第一部分Kubernetes相关概念略过不提,本文将结合分享内容,对《Kubernetes有状态服务部署与管理》之**K8S存储系统**做重点阐述。对K8S有状态服务特性:**Init Container** 和 **Pet ...阅读全文

API网关使用教程

课程介绍 API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成,向合作伙伴、开发者开放功能和数据。 产品详情:https://www.aliyun.com/product/apigateway 课时列表 • 课时1:创建一个 API • 课时2:如何调用 API • 课时3:如何生成和使用 SDK • 课时4:如何设置流量控制 • 课时5:这些地方容易出错 开始学习http://click.aliyun.com/m/27880/ ...阅读全文

依赖管理工具漫谈--从Maven,Gradle到Go

本文从Maven谈起,分析了Maven的主要思想以及Gradle对Maven的改进,最后谈了下Go语言面临的依赖管理问题。 为什么要有依赖管理工具? 谈依赖管理之前我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个『Hello World』,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传...阅读全文

你使用Kubernetes命名空间的方式对吗?

## 简介 Kubernetes 中有不少概念,这些概念在 RESTful API 中表现为对象 (“resource” 或 “kinds”)。 其中一个比较重要的概念是 namespace (命名空间)。 Kubernetes中,命名空间将单个集群分拆成多个虚拟的集群。本文的主题是命名空间的应用场景。 首先我们举个生活中的例子,做一个类比:命名空间就像家族的姓氏。比如一个家族的姓是”张”,有个家族成员叫”张三”,那么在这个家族中,大家说 “三”,我们可以唯一地确定是 “张三”。但是在家族外,如果要唯一确定这个人,则必须带上姓: “张三”,或者更准确一点 “赵家庄的张三”。 命名空间定义了一个逻辑分区,实现了一定程度上的隔离,它使得单个集群可以由多个用户(组) 使用,...阅读全文

使用Docker保护软件供应链安全

在Docker内部,我们花了很多时间讨论一个话题:如何将运行时安全和隔离作为容器架构的一部分?然而这只是软件流水线的一部分。 我们需要的不是一次性的标签或设置,而是需要将安全放到软件生命周期的每个阶段。 由于软件供应链上的人、代码和基础设施一直在改变,交互也越来多,组织(公司)必须将安全纳入供应链的核心部分。 考虑一个实际存在的产品:如电话,仅仅考虑到最终产品的安全性是不够的。除了决定使用什么样的防盗包装,你可能也想知道材料的来源,以及他们是如何组装,包装,运输。因为,重要的是我们还要确保手机不被改造或运输途中被盗。 ![](http://blog.tenxcloud.com/wp-content/uploads/2016/09/%E4%BE%9B%E5%BA%94%...阅读全文

Git超实用总结,再也不怕记忆力不好了

**欢迎大家前往[腾讯云+社区](https://cloud.tencent.com/developer/?fromSource=waitui),获取更多腾讯海量技术实践干货哦~** > 本文由[腾讯工蜂](https://cloud.tencent.com/developer/user/3246935?fromSource=waitui)发表于[云+社区专栏](https://cloud.tencent.com/developer/column/6041?fromSource=waitui) # Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码。 Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易...阅读全文

博文 2018-10-16 10:54:50 qcloudcommunity

golang 执行 command

```golang```中会经常遇到要 fork 子进程的需求。go 标准库为我们封装了 ```os/exec```标准包,当我们要运行外部命令时应该优先使用这个库。这里我简单结合```context``` 和 ```Cmd``` 模块写一个通用的执行 command 方法。代码如下: ```go package main import ( "context" "os/exec" "syscall" ) func RunCmd(ctx context.Context, cmd *exec.Cmd) error { cmd.SysProcAttr = &syscall.SysProcAttr{ Setpgid: true, } if err := cmd.Start(); err != nil...阅读全文

Go适合做什么?为何这么多人偏爱Go语言?

Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 到现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go适合做什么?为何这么多人偏爱Go语言? 哪些大公司在使用Go语言: 1、Google 这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更...阅读全文

博文 2019-06-04 16:32:59 全栈弄潮儿