-
Golang- import 导入包的语法
所属栏目:[大数据] 日期:2020-12-16 热度:131
一 包的导入语法 在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块,当然Go[详细]
-
读生产环境下go语言最佳实践有感
所属栏目:[大数据] 日期:2020-12-16 热度:71
最近看了一篇关于go产品开发最佳实践的文章,go-in-procution。作者总结了他们在用go开发过程中的很多实际经验,我们很多其实也用到了,鉴于此,这里就简单的写写读后感,后续我也争取能将这篇文章翻译出来。后续我用soundcloud来指代原作者。 开发环境 在so[详细]
-
golang sync WaitGroup
所属栏目:[大数据] 日期:2020-12-16 热度:178
刚才看golang的sync的包,看见一个很有用的功能。就是WaitGroup。 先说说WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 WaitGroup总共有三个方法:Add(delta int),Done(),Wait()。简单的说[详细]
-
golang学习笔记
所属栏目:[大数据] 日期:2020-12-16 热度:132
golang提供的数据类型:Number(include int float),String(String可以通过"+"进行连接)[详细]
-
Golang中使用log(一):Golang 标准库提供的Log
所属栏目:[大数据] 日期:2020-12-16 热度:64
Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路)。不过比手写fmt. Printxxx还是强很多的。至少在输出的位置做了线程安全的保护。其官方手册见 Golang log (天朝的墙大家懂的)。这里给出一个简单使用的例子: pa[详细]
-
进一步认识golang中的并发
所属栏目:[大数据] 日期:2020-12-16 热度:151
如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟。需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发。 并发的意义就是: 让一个程序同时做多件事情! 理解[详细]
-
Golang计算MD5
所属栏目:[大数据] 日期:2020-12-16 热度:82
1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自[详细]
-
我为什么选择go语言
所属栏目:[大数据] 日期:2020-12-16 热度:188
这里,我并不打算引起语言争论的口水仗,我并不是什么大牛,对语言的造诣也不深,只是想通过自己实际的经历,来说说为什么我在项目中选择go。 其他语言的经历 C++ 在接触go之前,我已经有多年的c++开发经验。主要用在游戏服务端引擎开发以及P2P上面,那可是[详细]
-
Golang中不要使用无限循环检查goroutine是否完成工作
所属栏目:[大数据] 日期:2020-12-16 热度:59
在使用goroutine时,我们经常会写出这样的代码: package mainimport ("fmt")var (flag boolstr string)func foo() {flag = truestr = "setup complete!"}func main() {go foo()for !flag {//按照我们的本意,foo()执行完毕后,flag=true,循环就会退出。//[详细]
-
golang:高性能消息队列moonmq的简单使用
所属栏目:[大数据] 日期:2020-12-16 热度:112
在上一篇moonmq的介绍中(这里),我仅仅简短的罗列了一些moonmq的设计想法,但是对于如何使用并没有详细说明,公司同事无法很好的使用。 对于moonmq的使用,其实很简单,样例代码在这里,我们只需要处理好broker,consumer以及publisher的关系就可以了。 首[详细]
-
在golang中使用leveldb
所属栏目:[大数据] 日期:2020-12-16 热度:101
leveldb是一个很强悍的kv数据库,自然,我也希望能在go中使用。 如果有官方的go leveldb实现,那我会优先考虑,譬如这个,但是该库文档完全没有,并且在网上没发现有人用于实战环境,对其能否在生产环境中使用打上问号,保险起见,我还是决定不使用。 因为le[详细]
-
golang使用pprof检查goroutine泄露
所属栏目:[大数据] 日期:2020-12-16 热度:68
有一段时间,我们的推送服务socket占用很不正常,我们自己统计的同时在线就10w的用户,但是占用的socket竟然达到30w,然后查看goroutine的数量,发现已经60w+。 每个用户占用一个socket,而一个socket,有read和write两个goroutine,简化的代码如下: c,_ :=[详细]
-
golang:一个高性能低精度timer实现
所属栏目:[大数据] 日期:2020-12-16 热度:113
在go自带的timer实现中,采用的是通常的最小堆的方式,具体可以参见这里。 最小堆能够提供很好的定时精度,但是,在实际情况中,我们并不需要这样高精度的定时器,譬如对于一个连接,如果它在2分钟以内没有数据交互,我们就将其删除,2分钟并不需要那么精确[详细]
-
Golang以OO的方式实现二叉查找树
所属栏目:[大数据] 日期:2020-12-16 热度:96
二叉查找树 是一种满足如下性质的二叉树: (1) 某个节点的左子树中的所有节点的值都比这个节点的值小 (2) 某个节点的右子树中的所有节点的值都比这个节点的值大 下面有Go实现的非常详尽的代码,采用了Go风格的OO进行了封装。代码中主函数的例子的参照图如下[详细]
-
Golang快速排序算法
所属栏目:[大数据] 日期:2020-12-16 热度:125
package mainimport ("fmt")func QSort(arr []int,start int,end int) {var (key int = arr[start]low int = starthigh int = end)for {for low high {if arr[high] key {arr[low] = arr[high]break}high--}for low high {if arr[low] key {arr[high] = arr[[详细]
-
Golang编码规范
所属栏目:[大数据] 日期:2020-12-16 热度:105
golang编码规范 注:此文档参考官方指南Effective Golang和Golang Code Review Comments进行整理,力图与官方及社区编码风格保持一致。 gofmt 大部分的格式问题可以通过gofmt解决,gofmt自动格式化代码,保证所有的go代码一致的格式。 正常情况下,采用Sublim[详细]
-
Golang编码规范
所属栏目:[大数据] 日期:2020-12-16 热度:85
注:此文是作者所在团队约定的编码规范,参考官方指南Effective Golang和Golang Code Review Comments进行整理,力图与官方及社区编码风格保持一致。 gofmt 大部分的格式问题可以通过gofmt解决,gofmt自动格式化代码,保证所有的go代码一致的格式。 正常情况[详细]
-
golang学习(一)之安装
所属栏目:[大数据] 日期:2020-12-16 热度:165
golang简介 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。 golang官网 http://golang.org/ goland安[详细]
-
golang编程之时间编程
所属栏目:[大数据] 日期:2020-12-16 热度:96
本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间[详细]
-
golang 1.2.1在生产环境中应用应该注意的问题
所属栏目:[大数据] 日期:2020-12-16 热度:98
golang 1.2.1的GC因为算法的问题,在实际应用过程中,对于长时间运行的daemon程序,确实很容易导致内存泄露,有人用cgo来手动管理内存,也有人用pool来管理buffer,这些都很麻烦,还是等1.3发布吧,在golang 1.2.1中,如果注意一些坑,还是很容易写出稳定运[详细]
-
使用golang的http模块构建redis读写查api
所属栏目:[大数据] 日期:2020-12-16 热度:144
前沿: 这两天试着用golang做一些高性能的api,不想把压力到聚合在平台的接口上。平台因为要做很多耗时间的操作,uwsgi下会出现少许错误,找了一圈不知道如何解决该问题。 暂时先绕道而行,先拿简单的接口来做测试,慢慢的把复杂的操作也迁移到golang上。 话[详细]
-
golang的json操作
所属栏目:[大数据] 日期:2020-12-16 热度:82
packagemainimport("encoding/json""fmt""os")typeConfigStructstruct{Hoststring`json:"host"`Portint`json:"port"`AnalyticsFilestring`json:"analytics_file"`StaticFileVersionint`json:"static_file_version"`StaticDirstring`json:"static_dir"`Templa[详细]
-
用Golang自己构造ICMP数据包
所属栏目:[大数据] 日期:2020-12-16 热度:120
ICMP是用来对网络状况进行反馈的协议,可以用来侦测网络状态或检测网路错误。 限于当前Golang在网络编程方面的代码稀缺,资料甚少,所以分享一个用Golang来构造ICMP数据包并发送ping程序的echo消息的实例。 RFC792定义的echo数据包结构: 0 1 2 3 0 1 2 3 4[详细]
-
使用golang学习算法(1)-排序
所属栏目:[大数据] 日期:2020-12-16 热度:175
前言 终于感觉到算法的重要了。于是打算继续学习下。 其实算法跟语言没有啥关系,用啥语言都可以实现关键是思路,最近正好在学习golang。打算把算法的编写使用golang完成。 没有使用IDE,使用的是sublime2+ golang的插件,然后使用命令行进行编译。 开发效率[详细]
-
golang test说明解读
所属栏目:[大数据] 日期:2020-12-16 热度:196
go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件[详细]
