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

go proxy 设置

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout,则是因为Go 1.13设置了默认的GOSUMDB=sum.golang.org,这个网站是...阅读全文

博文 2019-10-09 18:32:46 aside section ._1OhGeD

Go 1.13设置代理

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout,则是因为Go 1.13设置了默认的GOSUMDB=sum.golang.org,这个网站是...阅读全文

博文 2019-09-26 14:33:27 aside section ._1OhGeD

Go 中的 init 函数

main 标识符是随处可见的,每一个 Go 程序都是从一个叫 main 的包中的 main 函数开始的,当 main 函数返回时,程序执行结束。 init 函数也扮演着特殊的角色,接下来我们将描述下 init 函数的属性并介绍下怎么使用它们。 init 函数在包级别被定义,主要用于: - 初始化那些不能被初始化表达式完成初始化的变量 - 检查或者修复程序的状态 - 注册 - 仅执行一次的计算 - 更多其它场合 除了下面将要讨论到的一些差异外,你还可以在正则函数中放置任何[有效](https://golang.org/ref/spec#FunctionBody)的内容。 ## 包的初始化 要想使用导入的包首先需要初始化它,这是由golang的运行系统完成的,主要包括(顺序很重要): 1. 初始...阅读全文

博文 2018-07-28 22:25:25 flexiwind

golang调用dll

//调用方式 func WindowVersion1() { h, err := syscall.LoadLibrary("kernel32.dll") if err != nil { fmt.Printf("Error: %s\n", err) return } defer syscall.FreeLibrary(h) proc, err := syscall.GetProcAddress(h, "GetVersion") if err != nil { fmt.Printf("Error: %s\n", err) return } r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0) major := byte(r) minor :=...阅读全文

博文 2014-10-04 19:27:11 陈好

Golang加密系列之AES

这里我们只讨论使用aes加密算法,pkcs7padding,CBC模式模式进行加密。 加密代码: func Encrypt(plantText, key []byte) ([]byte, error) { block, err := aes.NewCipher(key) //选择加密算法 if err != nil { return nil, err } plantText = PKCS7Padding(plantText, block.BlockSize()) blockModel := cipher.NewCBCEncrypter(block, key) ciphertext := make([]byte, len(plantText)) blockModel.CryptBlocks(c...阅读全文

博文 2015-09-02 11:00:01 君子藏锋

百度云虚拟主机做网站有哪些优势?

众所周知百度是国内最大的搜索引擎、最大的中文网站。百度推出的云服务器、云虚拟主机、域名服务等质量可靠,对于客户的网站来说,能够保证访问的速度、稳定和安全。 百度云虚拟主机是最新的的容器技术、热迁移技术和百度生态能力提供的新一代网站主机服务,能够保证高性能、高可靠性、高安全性和高易用性等,即使是零基础的站长也可以轻松搞定网站的部署、发布、运维、推广,这无论是对企业还是个人网站来说都有非常大的作用。 ![虚拟主机.jpg](https://static.studygolang.com/180420/59974fa5a2ba4eec783545b7a6caebd8.jpg) 那么百度云虚拟主机的优势又有哪些? 高稳定 基于百度云的核心技术,故障服务方面可秒级热迁移...阅读全文

另一种blast2go的思路

blast2GO是用序列相似性得到go的信息,而网上很多软件要么针对某个蛋白的,要么就是只能网上运行的,还有就是只有windows的,烦- - 但如果用名字对应会怎么样,尝试了一番记录如下: 我们的序列先进行blast Nr库得到的是比对的蛋白序列,名字有gi号和refseq号; NCBI FTP里面有个gene2go的文件,发现是geneid对应go号; 又从FTP里面发现了gene2refseq文件,是geneid对应gi号; 好了,由此我们可以把这三者进行了串联,结果发现了350多条对应关系,而blast2go的结果有303,\(^o^)/~! 但是我将两者取了交集之后,发现只有5个!只有5个!只有5个!!!瞬间伐开心。。。 所以我在想是不是有几种情况要考虑: 首先是过滤,我们blas...阅读全文

博文 2016-01-16 12:00:01 skenoy

go语言设计哲学

世界是并行的----先不说宇宙,就整个地球来说,世界万物都是并行发生的;天生对并发支持良好的go语言更容易描述并行的世界; 世界是由物质组合构成的---微观世界:由小的粒子组合成大的粒子;宏观世界:由小的物体组合成大的物体; 继承只能描述现实世界的一小部分,使用继承是不全面的;go的设计选择的是组合,这个和现实世界比较吻合的设计,表现力更强; 世界是标准化的---随着生产力的发展,社会分工越来与详细,越来越多行业有了国际标准,任何一个国家的、任何一个公司只要按照这个标准生产器件,就能装配到一台机器上;IBM/PC就是硬件模块化和接口化一个最成功的例证; 软件也可如此,go的接口是duck模型,面向接口编程,而不需要显示的声明,将语言能做的事情交给语言做; 正交性--几何上的正交指的是两个向量...阅读全文

博文 2015-04-30 20:30:29 hittata

微信公众号小游戏怎么做

微信公众号小游戏怎么做 现在的推广模式更多倾向于移动端,怎么样能够做好移动端的推广?很多人第一时间会想到利用移动的社交软件来进行,从最开始的QQ、微博,到现在的微营销、再到微信公众的运营。整个移动端的推广都在演变。微信公众号的推广一般利用:抽奖、小游戏、活动、优惠券等来吸引用户关注微信公众号。那微信游戏怎么制作呢?微信公众号游戏能让用户在增加用户对公众号的好感,如果游戏做的有趣,可玩性高,自然而然的就会转发的朋友圈,这样能为你的公众号吸引更多的用户关注。 微信小游戏是微信公众号与用户常用的的互动方法,通过游戏互动的形式让用户对你的公众号增加好感,进一步的提升用户的粘性。像之前比较火的,通过公众号的AI问答模式,通过用户发送关键字到公众号上获取信息,进入预先设定好的页面,在问答页面上,通过...阅读全文

产品级 Go 语言微服务框架Go Chassis

Go Chassis 是华为云 CSE 开源的一个用 Go 语言编写的微服务快速开发框架。借助 CSE Go Chassis 进行微服务开发可最大化地降低开发门槛,提升产品上线速度,同时可以获得微服务运行时高可靠性保证、运行时动态治理等一系列开箱即用的能力。 作为业界首款商用级别的Go语言微服务框架,Go Chassis 已具备支持企业级应用的核心特性: **可定制的通信协议**:除了现有支持的 HTTP/ Highway RPC 协议外,用户可自行扩展协议。支持 Go Chassis 开发的应用与使用 Java Chassis 开发的应用互相通信,企业在进行微服务架构选择有更大的自由。 **使微服务更加健壮**:完善的服务治理(负载均衡、限流、熔断、降级等等),保障 Go 微...阅读全文

Google公布实现Go 1.5自举的计划

Google最近公布了实现Go 1.5自举(Bootstrap)的计划。相关文档的作者是Go核心开发者Russ Cox,他在Go语言上已经耕耘了接近6年。据Russ介绍,Google就“如何从Go源码树中去除所有的C程序”已经酝酿了一年。 自举(Bootstrapping) 是这样的过程,“用要编译的目标编程语言编写其编译器(或汇编器)”。一般而言,自举有几个优势,比如: 用于测试被自举的语言; 支持使用通常更为高级、提供更多高级抽象的语言来编写编译器; 编译器也可以得益于语言层面的任何改进。 如前所述,Google在一年前就开始了从Go源码树中去除C代码的努力,转换计划分为5个步骤: 第1阶段——开发一个从C语言到Go语言的翻译器,将现有的C编译器翻译成Go语言的。这一阶段利用了一个事实:...阅读全文

博文 2015-02-24 14:00:06 u012275397

golang中container/heap包用法

heap包对任意实现了heap接口的类型提供堆操作。(小根)堆是具有“每个节点都是以其为根的子树中最小值”属性的树。树的最小元素在根部,为index 0. heap是常用的实现优先队列的方法。要创建一个优先队列,实现一个具有使用(负的)优先级作为比较的依据的Less方法的Heap接口,如此一来可用Push添加项目而用Pop取出队列最高优先级的项目。 type Interface type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() interface{} // remove and return element Len() - 1. } 可以看出,这个堆结构继...阅读全文

博文 2015-11-26 11:00:03 chenbaoke

Go1.3中新增对Native Client的支持

创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 什么是Native Client? Native Client is a sandbox for running compiled C and C++ code in the browser efficiently and securely, independent of the user's operating system. Portable Native Client extends that technology with architecture independence, letting developers compile their code once to ru...阅读全文

博文 2015-10-23 01:00:01 abv123456789

go.image/tiff 的一些问题

最近给 go.image/tiff 增加了 Tile/Gray/Gray16/RGB16bit 等格式的支持. 还有一些特性以后会陆续完善. Go语言图像库的基本思路是能尽量提供完善的解码功能(当然只支持文件的第一个图像). 而编码功能则比较有限, 主要是支持基本的不同颜色模型, TIFF特有的特性应该不会完整支持. 最近有用户反馈生成的tiff在Mac系统不能正常浏览(Issue6421). 而我自己的Win7/64可以正常打开有问题的图像. 用 tiffinfo 也没有看到什么异常的Tag(有问题的已经修改之后). 之后无意中用GIMP也不能打开Mac有问题的tiff影像. 既然问题已经重现, 查找原因就容易多了. 初步分析之后, 发现问题主要是针对非RGB的图像(灰度和调色板). 然后...阅读全文

博文 2014-10-06 06:14:32 chai2010

golang 生成随机数

真随机和伪随机概念 先大概了解一下伪随机和真随机的概念。根据密码学原理,要想对一个“随机数”进行随机性检验有以下几个标准: 统计学伪随机性 - 在给定的随机比特流样本中,1 的数量大致等于 0 的数量,也就是说,“10”“01”“00”“11” 四者数量大致相等。说人话就是:“一眼看上去是随机的”。 密码学安全伪随机性 - 就是给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。 真随机性 - 其定义为随机样本不可重现。 根据以上几个标准,其对应的随机数也就分为以下几类: 伪随机数 - 满足第一个条件的随机数。 密码学安全的伪随机数 - 同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出 真随机数 -同时满足三个条件的随机数 golang 实现伪随机 pac...阅读全文

博文 2020-05-09 19:32:42 顶尖少爷

【推广】阿里云双11活动开始预热 云服务器限时2折起

一年一度的阿里双11活动预热早已来袭,点火炬、淘宝站队、抓黄金猫等应接不暇。 作为阿里巴巴旗下的云服务,2017年阿里云双11活动已于1024程序员日启动。  小编将根据不同活动给大家播报如何撸阿里云双11优惠。   ##2017阿里云双11狂欢主会场>>http://click.aliyun.com/m/32992/ 爆款云服务器 · 限时2折起  活动介绍: - 1核1G云服务器 ¥720/3年; - 1核2G云服务器 ¥1200/3年; - 2核4G云服务器 ¥1500/3年; - 4核8G云服务器 ¥5800/3年  撸福利指南:做为全球云服务市场的金字塔顶端俱乐部的阿里云,其招牌产品阿里云云服务区(ECS)以安全性,便捷性,稳定性深受国内外开...阅读全文

[魔都] Go 语言(Golang)程序员!手机社交 App!精英团队和办公环境!你懂的!

如果你人在魔都,懂得用 Go 语言来开发服务器端程序,请联系我们吧! #### 我们在做什么 #### 我们目前在做三款手机社交 App,一款针对直人,一款针对 Gay,一款针对 Lesbian。我们的团队成员都个性十足很有意思,各种 Style 各种性取向。我们的薪水也很有竞争力。如果你感兴趣加入加入我们的大家庭,请一定给我们投简历喔! #### 工作职责 #### 1. 根据产品需求,完成服务器端接口设计和实现; 2. 配合 Android/iOS 客户端开发组,进行接口联调; 3. 维护服务器代码,及时修复 QA 团队反馈的 bug。 #### 岗位要求 #### 1. 对技术有好奇心,有年轻的学习心态; 2. 有使用过 Linux 的...阅读全文

8月10日相约阿里云数据库MySQL金融版线上发布会!

摘要: 2017年8月10日,云栖社区将迎来一场特殊的直播——阿里云数据库MySQL金融版线上发布会。 届时,我们不仅请到了阿里云金融业务部总监九河、阿里云数据库掌门人褚霸以及阿里云数据库产品专家乙休来一起宣布这个好消息,同时还邀请到一位在金融界绝对是重磅级人物的神秘嘉宾,一起来聊一聊产品发布背后的故事。 2017年8月10日下午14:00,云栖社区将迎来一场特殊的直播——阿里云数据库MySQL金融版线上发布会。 届时,我们不仅请到了阿里云金融业务部总监九河、阿里云数据库掌门人褚霸以及阿里云数据库产品专家乙休来一起宣布这个好消息,同时还邀请到一位在金融界绝对是重磅级人物的神秘嘉宾,一起来聊一聊产品发布背后的故事! 那么,MySQL金融版又是一个什么样的数据库呢? 顾名...阅读全文

负载均衡--golang实现一致性hash算法

有没有好奇过redis、memcache等是怎么实现集群负载均衡的呢? 其实他们都是通过一致性hash算法实现节点调度的。 讲一致性hash算法前,先简述一下求余hash算法: hash(object)%N 一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(object)%(N+1) 。 1 和 2 的改变都会出现所有服务器需要进行数据迁移。 一致性HASH算法 一致性HASH算法的出现有效的解决了上面普通求余算法在节点变动后面临全部缓存失效的问题: type ...阅读全文

博文 2018-08-09 23:34:51 豆瓣奶茶

(转)Erlang和Go的并行化concurrent比较

说到concurrent,一般会想到Erlang和Go语言,这两种语言的主打特性都是concurrent,Erlang有着20多年的历史,是为简化开发电信大并发和高可靠性应用而发明的语言,Go是Google从2007年开始设计,2009年opensource出来的,Go属于一种system language,opensource的就算这两种语言吧,公司内私有的语言则有TNSDL,SDL的一个变种,以前写过一篇SDL和Erlang比较的文章(http://bookjovi.iteye.com/blog/1233299),这三种concurrent语言各有不同,下面看看: 1)语言设计 Erlang的实现基于虚拟机beam,Go是编译型语言,有着独成一体的compiler(不同于gcc,Go很好...阅读全文

博文 2015-02-10 01:00:02 vanadiumlin

Erlang .vs. Golang

最近研究了一阵子 Erlang , 他有20岁,而 Golang 才 5岁。 Erlang 是纯解释性的,动态的,没有数据类型的, 属于 lisp 语言家族。 而 Golang 是纯编译的, 静态的,严格数据类型的,属于 C语言家族。 Erlang 最早祭起“并发编程”的大旗,是 “并发导向”(Current Orient )的语言,强调并发运行的成员; 而 Golang 对“并发” 强调的 成员之间的通道 chan 。各有所长吧。
不过, 我 还真的不喜欢 lisp 风格, 非常不适应; 而 Golang 的 C风格则让人人通体舒泰。
Golang 的门槛相对很低, 学习曲线也极平滑。 相对比而言, Golang 的优越不是一星半点 ...阅读全文

Go接口

Go语言的编程哲学因为有接口而趋近完美 1.其他语言的接口: C++,Java等主流编程语言中,接口主要作为不同组件之间的契约存在。对契约的实现是强制的,你必须声明你的确实现了该接口。 为了实现该接口,你必须从该接口继承 interface IFoo { void Bar(); } class Foo implements IFoo { // Java文法 // ... } class Foo : public IFoo { // C++文法 // ... } IFoo* foo = new Foo; Java中抽象类和接口的区别: 1.抽象类,子类继承时,有些方法可以不用重写,关系是is-a;而implement一个接口,则需要实现其全部方法,关系是has-a。 抽象类中的非abstrac...阅读全文

博文 2015-06-17 23:08:23 luan_tianjiao

MySQL金融版发布会:4个男人能擦出的火花

摘要: 2017年8月10日,云栖社区将迎来一场特殊的直播——阿里云数据库MySQL金融版线上发布会。 届时,我们不仅请到了阿里云金融业务部总监九河、阿里云数据库掌门人褚霸以及阿里云数据库产品专家乙休来一起宣布这个好消息,同时还邀请到一位在金融界绝对是重磅级人物的神秘嘉宾,一起来聊一聊产品发布背后的故事。 2017年8月10日下午14:00,云栖社区将迎来一场特殊的直播——阿里云数据库MySQL金融版线上发布会。 届时,我们不仅请到了阿里云金融业务部总监九河、阿里云数据库掌门人褚霸以及阿里云数据库产品专家乙休来一起宣布这个好消息,同时还邀请到一位在金融界绝对是重磅级人物的神秘嘉宾,一起来聊一聊产品发布背后的故事! 那么,MySQL金融版又是一个什么样的数据库呢?顾名思义,它就是一款...阅读全文

Canonical 用 Go 做了这五个超酷的项目

前不久,Google 的 Go 问鼎 TIOBE 排行榜,成为 2016 年年度编程语言。Go 因其易学性及务实性受到大家的喜爱。抛开长篇累牍的理论,Go 更注重的是实践经验,因此越来越多的用户将其应用到工业环境中。在 Canonical 中也一样!作为 Go 的支持者,我们用 Go 做了五个超酷的项目: 1、Juju Juju 堪称是“DevOps工作经验的结晶”,能使用 Charms 将应用程序体系结构部署到 EC2,OpenStack,Azure,HP 数据中心,甚至是基于 Ubuntu 的笔记本电脑。它使得开发和部署过程中团队间的对话和工作流程变得极为清晰明了。 2、Snapcraft Snapd 和 snap工具使系统能够使用 .snap 文件。 为每个 Linux 桌面,服务器,...阅读全文

博文 2017-01-24 17:00:09 编辑部的故事

活动 | Contentos联合举办的链游“绿洲黑客松”大赛圆满结束

9月20日至22日,Contentos联合Binance Labs、Celer Network、Cocos-BCX共同举办的游戏绿洲黑客松大赛(Game Oasis Hackathon)活动圆满结束。来自全国50多名优秀的开发者,经过3天的激烈比拼,最终完成一个个兼具可玩性和游戏资产非同质化的区块链游戏,为区块链游戏的大规模成产和推广提供了可能。 基于Contentos公链开发的FAST游戏团队,凭借融合了跨链交易技术的牧场收获游戏FARMO得到了第三名的好成绩。FARMO将风靡一时的收菜游戏与跨链、不可替代通证等区块链元素结合,让所有的投入和产出都记录上链,依存于合约;独特的跨链交易技术,让玩家可以在三条链间自由选择,自由交易。 (图为FAST团队展示FARMO游戏) 该黑客松大赛采用“线...阅读全文

博文 2019-09-26 16:33:12 内容链Contentos

Go语言资料收集——来自 【wonderfo】

Go语言相关资料还是不少,wonderfo收集了这些资料,供大家查阅。 https://github.com/wonderfo/wonderfogo/wiki 提醒:由于资源很多,大家有选择的看吧。**一定要注意**的是,如果有些资料2012-03-29号之前写的,且没有更新过,要注意兼容性问题,即Go1正式版跟之前差别有些大...阅读全文

【互联网安全】阿里云安全专家为你详细解读内容安全及防护

课程介绍 由于互联网的开放性和匿名性,导致各种违规内容层出不穷,其中包括高危敏感信息,色情、赌博、欺诈等影响社区民生的信息,垃圾广告等,如何通过技术手段来防范,阿里云安全专家风边为你详细解读。 课时列表 • 课时1:为什么要重视内容安全 • 课时2:互联网有害信息的分类 • 课时3:产生互联网有害信息的原因剖析 • 课时4:如何有效地发现有害信息 • 课时5:如何有效地从源头遏制有害信息的产生 开始学习http://click.aliyun.com/m/27928...阅读全文

走进TypeScript

国内很多技术文章千篇一律,大多从官网复制粘贴,如果要学习TypeScript语法细节,去看官网最好不过了。 本文将从两个不同的角度带你走进TypeScript. 以下简称'TS'. 用TS有什么好处? TS的发展前景如何? 首先,看下TS的定义: TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. TypeScript是一个编译到纯JS的有类型定义的JS超集。 TS遵循当前以及未来出现的ECMAScript规范。TS不仅能兼容现有的JavaScript 代码,它也拥有兼容未来版本的JavaScript的能力。大多数TS的新增特性 都是基于未来的JavaScript提案,这意味着许多TS...阅读全文

博文 2018-10-14 00:34:40 乘着风

GO与Java的DES ECB加解密算法互换

Java默认DES算法使用DES/ECB/PKCS5Padding工作方式,在GO语言中因为ECB的脆弱性,DES的ECB模式是故意不放出来的,但实际情况中有时我们并不需要那么安全,以下代码完成与java默认DES算法的互通,为了能更好的与各种语言互通,建议在java中还是明确指明工作模式,如:DES/CBC/PKCS5Padding package main import ( "bytes" "crypto/des" "errors" "log" ) func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) log.Println("程序开始....") key := []byte{0xD5, 0x92, 0x86, 0x02, ...阅读全文

博文 2015-10-28 20:00:06 scybs

【互联网安全】阿里云安全专家为你详细解读内容安全及防护

课程介绍 由于互联网的开放性和匿名性,导致各种违规内容层出不穷,其中包括高危敏感信息,色情、赌博、欺诈等影响社区民生的信息,垃圾广告等,如何通过技术手段来防范,阿里云安全专家风边为你详细解读。 课时列表 • 课时1:为什么要重视内容安全 • 课时2:互联网有害信息的分类 • 课时3:产生互联网有害信息的原因剖析 • 课时4:如何有效地发现有害信息 • 课时5:如何有效地从源头遏制有害信息的产生 开始学习http://click.aliyun.com/m/27928/ ...阅读全文

golang internals

[golang internals From Genius][1] 中文的go语言内部细节的资料几乎没有,所以自己研究了一下 声明:本文内容主要来自本人对源代码的研究,以及网上找到的一些资料的整理,不保证完全正确性 函数调用协议 编译过程分析 runtime中的调度器相关 系统的初始化 interface的实现 [1]: http://www.cnblogs.com/genius0101/archive/2012/04/16/2447147.htm...阅读全文

CNCF 首个云原生存储项目ROOK

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

企业如何真正使用Docker

企业喜欢Docker。在许多企业的2016战略规划上,Docker已成为科技创业公司和金融服务集团的宠儿,尽管Docker还非常“年轻”。 众所周知,企业不需要在“DevOps改造”到某个阶段才能开始使用Docker。他们不需要一个微服务模型或一批全栈工程师。事实上,Docker多年IT改造最合适的选择,实际上可以帮助大团队更快地实现DevOps最佳实践。 混合云是将近一半企业的目标,其中大部分都在采用DevOps工具链。企业招聘云顾问,整合数据中心,打破工程团队之间壁垒,新应用程序迁移到AWS或其他公共云。 ### 精通混合云 尽管混合云想象中有灵活性的好处,但是跨多个复杂系统管理安全性和可伸缩性不是一件轻而易举的事情。绝大多数企业的内部应用程序受困于内部依赖,网络...阅读全文

go中的main函数和init函数

Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。 Go程序会自动调用init()和main(),所以你不需要在任何地方调用这两个函数。每个package中的init函数都是可选的,但package main就必须包含一个main函数。 程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用...阅读全文

博文 2016-02-14 04:00:00 yangyangye

老司机带你用 Go 语言实现 Raft 分布式一致性协议

老司机带你用 Go 语言实现 Raft 分布式一致性协议   随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。   为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。任何一个分布式系统都无法同时满足 Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性)这三个基本需求,最多只能满足其中两项。 但是,一个分布式系统无论在 CAP 三者之间如何权衡,都无法彻底放弃一致性(Consistency),如果真的放弃一致性,那么就说明这个系统中的数据根本不可信,数据也就没有意义,那么这个系统也就没有任何价值可言。...阅读全文

博文 2017-02-09 06:00:24 chauncy

Go Modules与GOPROXY三分钟学会

前言: 随着Go 1.13发布,GOPROXY默认值proxy.golang.org在中国大陆不能被访问。七牛云顺势推出goproxy.cn,以利于中国开发者更好使用Go Modules,它是非盈利性的项目,首先感谢七牛云。Windows下使用教程:(1)升级到Go1.13(2)运行 //开启mod(3)运行 //设置七牛云goproxy代理可以通过运行go env查看(2)、(3)步骤是否设置成功 (4)在项目跟目录下执行go mod init 执行成功后生成go.mod文件其他指令 go get -u /...阅读全文

Go中error类型的nil值和nil

先看C语言中的类似问题:空字符串。 const char* empty_str0 = ""; const char* empty_str1 = "\0empty"; const char* empty_str2 = NULL; 以上3个字符串并不相等,但是从某种角度看,它们都是对应空的字符串。 empty_str0 指向一个空的字符串,但是empty_str0本身的值是有效的。 empty_str1 指向一个非空的字符串,但是字符串的第一个字符是'\0'。 empty_str2 本身是一个空的指针。 Go的error是一个interface类型,error的nil问题和C语言的字符串类似。 参考官方的error文档说明: http://golang.org/doc/go_faq.html#n...阅读全文

博文 2014-10-25 10:34:21 chai2010

一致性hash算法原理及golang实现

概述 这里存在一种场景, 当一个缓存服务由多个服务器组共同提供时, key应该路由到哪一个服务.这里假如采用最通用的方式key%N(N为服务器数目), 这里乍一看没什么问题, 但是当服务器数目发送增加或减少时, 分配方式则变为key%(N+1)或key%(N-1).这里将会有大量的key失效迁移,如果后端key对应的是有状态的存储数据,那么毫无疑问,这种做法将导致服务器间大量的数据迁移,从而照成服务的不稳定. 为了解决类问题,一致性hash算法应运而生. 1. 一致性hash算法特点 在分布式缓存中, 一个好的hash算法应该要满足以下几个条件: 均衡性(Balance) 均衡性主要指,通过算法分配, 集群中各节点应该要尽可能均衡. 单调性(Monotonicity) 单调性主要指当集群发生...阅读全文

博文 2016-09-10 16:00:01 u010511236

游戏测试技术综述

近两年,IT业一直经历着“寒冬”,但是游戏软件业却呈现出了勃勃生机。网络游戏仅在中国游戏市场出现不过两三年,正式投入商业运营的游戏数目已超过100款,但众所周知,都是国外的(主要是韩国的游戏)统治着国内大部分的市场,国内游戏软件想要突围而出,主要从二个方面,一是可玩性,由于中国有上下五千年的传统文化,博大精深,是我们得天独厚的优势,二是游戏的质量,游戏测试作为游戏开发中质量保证的最重要的环节,在游戏设计与开发的过程中发挥着越来越重要的作用。    游戏测试作为软件测试的一部分,它具备了软件测试所有的一切共同的特性:测试的目的是发现软件中存在的缺陷。测试都是需要测试人员按照产品行为描述来实施。产品行为描述可以是书面的规格说明书,需求文档,产品文件,或是用户手册,源代码,或是工作的可执行程...阅读全文

Golang的一致性哈希实现

Golang的一致性哈希实现 一致性哈希的具体介绍,可以参考:http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 1 import ( 2 "hash/crc32" 3 "sort" 4 "strconv" 5 "sync" 6 ) 7 ​ 8 const DEFAULT_REPLICAS = 100 9 type SortKeys []uint32 10 ​ 11 func (sk SortKeys) Len() int { 12 return len(sk) 13 } 14 ​ 15 func (sk SortKeys) Less(i, j int) bool { 16 return sk[i] < sk[j] 17...阅读全文

博文 2016-04-21 03:00:03 ldaniel

基于AMQP实现的golang消息队列MaxQ

---- *背景* ---- 饿厂此前一直是重度rabbitmq使用者,在使用的过程中遭遇了大量的问题,性能问题、故障排查问题等。Rabbitmq是用erlang开发的,该语言过于小众,实在无力在其之上再做运维和开发。痛定思痛,我们于是决定自研一个消息队列,为了降低业务层的接入难度,所以该消息队列需要兼容AMQP协议,这样就可以在业务层完全无感知的情况下接入MaxQ。 ------------ *什么是AMQP协议?* ------------ AMQP(Advanced Message Queuing Protocol),是一套消息队列的七层应用协议标准,由摩根大通和iMatrix在2004年开始着手制定,于2006年发布规范,目前最新版是AMQP 1.0,MaxQ基于AMQP 0.9.1...阅读全文

博文 2017-09-09 13:16:23 饿了么

深入浅出 Raft - 基本概念

引子 因为一直在跟 Raft 打交道,虽然对 Raft 很熟悉了,但如果你要我去给一个完全不知道什么是 Raft 的人讲 Raft,我觉得难度还是非常大的。所以我决定使用我一贯罗里吧嗦,用比喻和讲故事的方式,来尝试说说 Raft。 如果你跟你孩子一起看过小猪佩奇,你大概就能知道我为啥用了这么怪的取名。如果没看过的,强烈推荐你去看看,这真的是一部很不错的儿童动画。 日志和状态机 兔小姐准备在泥坑小镇成立一家银行(就叫泥坑银行吧)。对于银行储蓄系统的设计,兔小姐找来了猪爸爸。 兔小姐:『猪爸爸,我们要保证,无论怎样用户的金钱不能有错误。假如客户存了 100 块钱,那么他的账户就会多出来 100 块钱,不会是 101,也不会是 99。』 猪爸爸:『好的,兔小姐,我觉得我们可以这样。如果一个客户来存...阅读全文

博文 2017-10-16 02:43:35 siddontang