geohash算法以及求最邻近区域的点-golang

geohash算法以及求最邻近区域的点, 对这两个算法封装成了golang package, 写LBS服务程序的时候有用。https://github.com/gansidui/geohashhttps://github.com/gansidui/nearest package main import ( "fmt" "github.com/gansidui/geohash" ) func main() { latitude := 39.92324 longitude := 116.3906 p...阅读全文

开源中国博客 2014-12-30 12:56 bluezwt

Golang计算MD5

Golang计算MD5 1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。既然加密者自己 都无法解密,那这乖僻的加密算法有个毛用阿?哪些场景需要这种有去无回的加密方式呢? 这里先了解下单向加密的特征: 首先,不可解密性在上面已经提到了,目的就是掩藏明文。其次单向加密算法的另外两个特征 使得它更接地气,...阅读全文

开源中国博客 2014-12-30 11:28 YangJunjie

Ubuntu 配置 Go 语言开发环境(Sublime Text 3)

Sublime Text 3安装 gosublime 下载 Sublime Text飞机票:http://www.sublimetext.com/3 安装 gosublime首先,我们需要安装 Sublime Text 的 Package Control 功能,在打开软件后,按下快捷键 Ctrl+`,(`这个符号为英文半角模式下,按下 Tab 键上方、数字键1左边的那个按键),此时会打开一个命令窗口,复制并输入以下内容,最后回车: import urllib.request,os; pf = '...阅读全文

开源中国博客 2014-12-29 23:26 Kriry

Golang性能优化

> 文章主要是参考**雨痕学堂(微信订阅号)**及其他网友的博客然后根据自己的理解整理而成。 ## string与[]byte相互转换 在写程序的过程中经常遇到string与[]byte的相互转换,但是这种转换是有代价的,string与[]byte并不共享底层内存空间,所以每次转换都伴随着内存的分配与底层字节的拷贝。 我们可以借助unsafe完成指针类型转换,避开内存分配与复制,从而提升性能。**属于黑魔法,尽量不要用。** ```go /* struct string{ uint8 *str;...阅读全文

shanks's blog 2016-04-28 10:42:54 shanks

golang错误处理

golang错误处理方式一直是很多人诟病的地方,很多人都吐槽说一半的代码是 if err != nil { /* 错误处理 */ },严重影响正常的处理逻辑,我最开启也反感这种错误处理机制,每调用完一个函数都需要check一下,自定义函数也都要增加一个error类型的返回值,但是查了很多资料慢慢理解这种错误机制的好处。因为调用每一个函数都可能发生错误,及时在错误发生的地方做处理更容易构建复杂的大型系统。 ## 异常与错误 错误与异常是很容易混淆的地方,错误指的是可能出现问题的地方出现了问题,比如...阅读全文

shanks's blog 2016-01-13 17:02:37 shanks

GO 语言学习

安装: sudo apt-get installgolang-go export GOROOT=$HOME/go exportPATH=$PATH:$GOROOT/bin 一,hello world 程序 package main //这个包的名称 import “fmt” //包含 “fmt”,fmt里有输入输出 func main(){ fmt.Printf(“Hello world!\n”); } 注意: main()函数,大括号“{”要跟函数名同一行,如果像c语言那样,编译器会报错的。 ...阅读全文

CSDN博客 2013-04-27 22:33 juxuny

Go语言如何深度拷贝对象

深度复制可以基于reflect包的反射机制完成, 但是全部重头手写的话会很繁琐. 最简单的方式是基于序列化和反序列化来实现对象的深度复制: func deepCopy(dst, src interface{}) error { var buf bytes.Buffer if err := gob.NewEncoder(&buf).Encode(src); err != nil { return err } return gob.NewDecoder(bytes.NewBuffer(buf.Byt...阅读全文

开源中国博客 2013-12-11 17:30 chai2010

Go 项目结构层次

今天测试了一下go 使用包名和目录结构来识别 工程结构和构建顺序, 发现很好用,可以免去C/C++ 中写Makefile的步骤。 1. 首先,加入现在我们在工程目录位于 /home/work/dev/etl/worker/test/go/projectCal 下面 则最好是将GOPATH 包含此路径。 2. go的工程一般包含三个目录 ---- bin // 存放编译后可以执行的文件的目录 ---- src // 存放源文件的地方,里面可以再建子目录 ---- pkg // 存放编译后的包文件的...阅读全文

CSDN博客 2014-12-10 20:52 aceai

go并发学习

go极简的25个关键字很给力,让程序员把更多的精力投入到业务逻辑上;反观C++各种奇技无穷仍让你多年后还在感叹它的魔力。</pre><strong><span style="font-size:18px">概念:</span></strong><p></p><p> 并发):1、多个执行实例在单个CPU上交替进行,在逻辑上表现为同一时刻发生,但在物理上是串行的。</p><p> 并行):1、多个执行实例在多个CPU上并行执行。</p><p> 可以这么理解,并发是一种程序算法实现在单个CPU上模拟同一...阅读全文

CSDN博客 2014-12-25 11:54 x_focus

《Go语言编程》[4.4 并发通信]代码thread.c和thread.go错误

thread.c程序pthread_create函数第三个参数为线程函数的起始地址,文中并无add函数,源代码如下: thread.c编译时会报未声明错误: 根据语境推测应该是count,替换如下: 重新编译,gcc编译时在最后加参数-lpthread,否则编译报对 pthread_create和pthread_join未定义的引用如下: 应当是行末最后加入-lpthread编译,正确编译命令: gcc -lpthread thread.c -o main thread.go程序无z变量,应当是...阅读全文

开源中国博客 2014-12-24 23:19 董松

go语言工程管理

1.建立工程 1---设置$GOPATH环境变量 如在~/.bashrc中加入如下语句export $GOPAHT=/home/jj/goproj (别忘了source ~/.bashrc) 2--建立工程目录 cd /home/jj mkdir goproj cd goproj mkdir src (此文件夹必须命名为src) mkdr bin (此文件夹可任意命名) 3--在src目录下添加源文件 cd ./src vim main.go (main 这个名字不是必须的可以是任意名字) mk...阅读全文

CSDN博客 2014-03-28 08:20 plc_jianghao

基于 Web 的 Go 语言 IDE - Wide 1.1.0 发布!

发布 1.1.0 这个版本改进了很多细节,已经完全可以用于正式项目的开发 同时我们上线了 Wide 在线服务 到目前,我们提供了 Wide 和 Solo 两个在线服务,详情请看这里。 Wide 是什么 Wide 是一个基于 Web 的 Go 语言团队 IDE。 在线开发:打开浏览器就可以进行开发、全快捷键 智能提示:代码自动完成、查看表达式、编译反馈、Lint 实时运行:极速编译、实时结果输出 团队协同:统一开发环境,分布式开发,代码分享 DevOps! 另外,除了使用上面我们提到的 Wide ...阅读全文

ITEYE资讯 2014-12-24 88250

[翻译]理解 Go 语言的内存使用

许多人在刚开始接触 Go 语言时,经常会有的疑惑就是“为什么一个 Hello world 会占用如此之多的内存?”。Understanding Go Lang Memory Usage 很好的解释了这个问题。不过“简介”就是“简介”,更加深入的内容恐怕要读者自己去探索了。另外,文章写到最后,作者飘了,估计引起了一些公愤,于是又自己给自己补刀,左一刀,右一刀…… ————翻译分隔线———— 理解 Go 语言的内存使用 2014年12月22日,星期一 温馨提示:这仅是关于 Go 语言内存的简介,俗话...阅读全文

mikespook 的博客 2014/12/24 mikespook

NSQ源码剖析之nsqd

## NSQ简介 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。 NSQ 由 3 个守护进程组成: nsqd 是接收、保存和传送消息到客户端的守护进程。 nsqlookupd 是管理的拓扑信息,维护着所有nsqd的状态,并提供了最终一致发现服务的守护进程。 nsqadmin 是一个 Web UI...阅读全文

shanks's blog 2015-11-28 16:15:3 shanks

golang编码规范

目录[-]golang编码规范gofmt注释命名控制结构函数(必须)错误处理panicimport缩写参数传递接受者 golang编码规范注:此文档参考官方指南Effective Golang和Golang Code Review Comments进行整理,力图与官方及社区编码风格保持一致。gofmt大部分的格式问题可以通过gofmt解决,gofmt自动格式化代码,保证所有的go代码一致的格式。正常情况下,采用Sublime编写go代码时,插件GoSublilme已经调用gofmt对代码实现了格...阅读全文

ITEYE博客 2014-12-23 stephen830

Go语言编程--读后感

图灵出的《Go语言编程》拿到手后稍稍有点失望,书太薄了,才230页。阅读完后,说实话,作为Go语言入门书籍,实用性比不上邢星翻译的那本GO中文学习书。把它当作Go语言工具书,内容和老外写的又差的太远。所以,我的结论是:还行,不是最好的,也不是最差的。对于Go语言有兴趣而又不了解的朋友,值得买来看看。但对于Go语言的职业开发者,建议还是看老外写的Go语言工具书。例如,《The.Way.To.Go.A.Thorough.Introduction.To.The.Go.Programming.Langu...阅读全文

CSDN博客 2012-10-06 19:50 cometwo