golang中开启gctrace

如何开启打印gc信息 只要在程序执行之前加上环境变量GODEBUG gctrace =1 ,如: GODEBUG gctrace =1 ./xxxx.exe or GODEBUG gctrace =1 go run main.go 程序将会显示gc信息,如下 gc 1 @2.104s 0%: 0.018+1.3+0.076 ms clock, 0.054+0.35/1.0/3.0+0.23 ms cpu, 4->4->3 MB, 5 MB goal, 4 P gc 2 @2.241s 0%: 0...阅读全文

开源中国博客 2017-03-26 15:00:41 xloogson

Golang、python中登录开源中国,并发表博客。

GO、python用不了十几分钟可以做出来,易语言的话,可能几分钟完事,国产易语言感觉快捷啊。 type loginSave struct { returnCk []*http.Cookie } type oschina interface { login(user string, pass string) string save(title string, content string) string } func main() { user := "xxxxxx@qq.com"//帐号 pa...阅读全文

开源中国博客 2017-03-26 13:00:32 大洋的顶端

go语言实现7大排序算法

package main import ( "fmt" "math/rand" "time" // "os" // "os/signal" ) const ( num = 100000 rangeNum = 100000 ) func main() { randSeed := rand.New(rand.NewSource(time.Now().Unix() + time.Now().UnixNano())) var buf []int for i := 0; i < num; i++ { bu...阅读全文

开源中国博客 2017-03-25 12:00:35 徐学良

Mac上安装Go环境和VS Code

1.下载SDK 到https://golang.org下载对应的SDK(需要翻墙) Mac版本如下: 1.1 安装版:go1.8.darwin-arm64.pkg下载完成之后,直接双击打开安装即可1.2 压缩版:go1.8.darwin-arm64.tar下载完成后需要解压,然后自己移动到要存放的路径下,并且配置环境变量等信息。 2.安装Go环境 选择1.8版本的安装版,双击安装。安装完成后,打开terminal ,输入如下命令,查看安装的版本: go version 3.配置环境变量 打开te...阅读全文

简书 2017.03.24 12:20 许瘦子来世

使用GO开发WebSocket服务器(windows环境)(一):搭建环境

一、下载安装go 过程不赘述,一路下一步。默认会安装在C:\GO,建议不要修改,否则指不定会发生什么奇奇怪怪的BUG。安装完成后需要配置GOPATH环境变量,环境变量目录为工程根目录,我的是D:\code\MCChatServer 注意GOPATH要大写 二、安装vscode 依然一路下一步,安装完成后打开软件,安装VScode的GO插件。在VScode左侧选择第5个选项,在上方搜索栏里输入go,选择作者为lukehoban的插件安装 安装完成后,重启VScode。然后在项目跟目录下创建一个后缀...阅读全文

Segmentfault 2017-03-24 17:01:54 远程智力英雄

老司机带你用 Go 语言实现 Paxos 算法

老司机带你用 Go 语言实现 Paxos 算法  在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistence),等同于所有节点访问同一份最新的数据副本; 可用性(Availability),每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据; 分区容错性(Network partitioning),以实际效果而言,分区相当于对通信的时限要求...阅读全文

Chauncy's Blog 2017-03-15 chauncy

老司机带你用 Go 语言实现 MapReduce 框架

老司机带你用 Go 语言实现 MapReduce 框架  MapReduce 是 Google 提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。简而言之,就是将任务切分成很小的任务然后一个一个区的执行最后汇总,这就像小时候我们老师经常教育我们一样,大事化小,小事化了(瞬间感觉那时候老师好言简意赅啊!!!)思想就这么一个思想,那么按照这个思想在现代软件定义一切的世界里面,我们怎么运用这样的方式来解决海量数据的处理,这篇就告诉你一个这样的一个简单的实现使用 Go 语言。 上车了  简单...阅读全文

Chauncy's Blog 2017-01-16 chauncy

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

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

Chauncy's Blog 2017-03-23 16:20:49 chauncy

kubernetes容器网络接口(CNI) midonet网络插件的设计与实现.md

相关原理概述 先来讲讲什么是CNI? CNI(容器网络接口)是一种操作容器网络规范,包含方法规范,参数规范等。CNI只关心容器的网络连接,在容器创建时分配网络资源,并在删除容器时删除分配的资源。因为这个焦点,CNI有广泛的支持,规格易于实现。CNI接口只需要实现两个方法,一个创建容器时调用,一个删除容器时调用。 image Kubernetes如何支持和运行遵循CNI规范的插件 kubernetes首先以插件的形式完成(pod)容器的网络资源设置。内置的插件包括:cni,kubenet,host...阅读全文

简书 2017.03.23 14:41 好雨科技

Golang包管理工具Glide,你值得拥有

“依赖地狱”是每个程序员在成长之路上都会面临的情况,首先我们通过语义化版本来控制软件的版本,然后在我们的项目里通过指定软件版本来达到控制依赖的目的。 如:你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2...。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使用旧版本,势必引起未知的问题。所以,你需要意识到包依赖管理的重要性。 在Go语言中,我比较推荐大家使用Glide作为包管理器。它能够自动识别Godeps的包管理,十足的很方便。本节介绍...阅读全文

简书 2017.03.22 23:43 陈_在路上

Golang 持久化

持久化 程序可以定义为算法+数据。算法是我们的代码逻辑,代码逻辑处理数据。数据的存在形式并不单一,可以存在数据库,文件。无论存在什么地方,处理数据的时候都需要把数据读入内存。如果直接存在内存中,不就可以可以直接读了么?的确,数据可以存在内存中。涉及数据存储的的过程称之为持久化。下面golang中的数据持久化做简单的介绍。主要包括内存存储,文件存储和数据库存储。 内存存储 所谓内存存储,即定义一些数据结构,数组切片,图或者其他自定义结构,把需要持久化的数据存储在这些数据结构中。使用数据的时候可以直...阅读全文

简书 2017.01.07 12:32 人世间

Gin实战:Gin+Mysql简单的Restful风格的API

我们已经了解了Golang的Gin框架。对于Webservice服务,restful风格几乎一统天下。Gin也天然的支持restful。下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全。我们先以一个单文件开始,然后再逐步分解模块成包,组织代码。 It works 使用Gin的前提是安装,我们需要安装gin和mysql的驱动,具体的安装方式就不在赘述。可以参考Golang 微框架Gin简介和Golang持久化。 创建一个文件夹用来为项目,新建一个文件main.go: ☁ newland tre...阅读全文

简书 2017.03.22 21:53 人世间

反驳《Golang、Rust的执行速度的对照,让人大吃一惊。》——不会别瞎说

首先我无意引战,但是今天看到某位同学的文章里有某些错误,不得不指正一下。原文地址:http://studygolang.com/articles/96281. 测量时间的时候我们使用 `std::time::SystemTime::elapsed` 即可,不必蹩脚的使用两个 system 输出出来还得手动算一下。(当然你说对Rust不熟也就无所谓了)2. 最重要一点。 执行 rust 代码的时候请用 `--release` ,cargo 项目请直接执行 `cargo run --release`...阅读全文

Go语言中文网 2017-03-22 14:11:15 wayslog

Golang、unity3d设置聊天游戏服务器的思路。

今天打开我原来的编写的unity3d游戏代码,一看发现还有个聊天的功能没有加上去。 我的想法是这样。 聊天具体流程是这样,先登录帐号,获取token,验证帐号可以POST或者直接TCP验证,一般来说直接POST提交,返回token,token的算法网站服务器在设置。 帐号验证成功后先连接GO语言编写的聊天服务器,服务器返回随机加密密钥,服务器同时保存密钥,甚至可以隔断时间生产新的密钥,客户端根据密钥解密后同时把密钥保存本地,再次加密提交握手协议,验证成功后,提交根据保存在本地密钥进行加密toke...阅读全文

开源中国博客 2017-03-21 14:00:43 大洋的顶端

Go语言并发机制初探

Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。这篇文章学习 goroutine 的应用及其调度实现。 一、Go语言对并发的支持 使用goroutine编程 使用 go 关键字用来创建 goroutine 。将go声明放到一个需调用的函数之前,在相同地址空间调用运行这个函数,这样该函数执行时便会作为一个独立的并发线程。这种线程在Go语言中称作goroutine。...阅读全文

云栖社区 2017-03-15 18:43:56 邴越

Golang context 包入门

概述 Golang 的 context Package 提供了一种简洁又强大方式来管理 goroutine 的生命周期,同时提供了一种 Requst-Scope K-V Store。但是对于新手来说,Context 的概念不算非常的直观,这篇文章来带领大家了解一下 Context 包的基本作用和使用方法。 1. 包的引入 在 go1.7 及以上版本 context 包被正式列入官方库中,所以我们只需要import "context"就可以了,而在 go1.6 及以下版本,我们要 import "...阅读全文

云栖社区 2017-02-16 17:02:13 coolbit

Excelize - Golang 操作 Office Excel 文档类库

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github....阅读全文

云栖社区 2017-03-02 18:26:19 xuri

动手实现一个JSON验证器

最近做毕设的时候,有个功能需要验证JSON字符串的合法性,最简单的做法是直接用Go的第三方JSON库做一个反序列化,但这样做给我有种杀鸡用牛刀的感觉,毕竟我不需要真正的反序列化它,单纯的验证和反序列化的性能差距直观感觉上还是比较大的。 分析 既然要验证JSON的有效性,那么必然需要清楚的知道JSON格式,这个在JSON官网已经给我们画出来了: 从官方的图上面可以看出,JSON的组成一共有五部分: object: 以左大括号({)开头表示对象的开始。 array: 以左中括号([)开头表示数组的开...阅读全文

Segmentfault 2017-03-20 15:01:24 疯狂的爱因斯坦