-
golang struct to buf
所属栏目:[大数据] 日期:2020-12-16 热度:159
struct to buf packagemainimport("bytes""encoding/binary""reflect""io""errors""fmt")funcwriteBuf(wio.Writer,vreflect.Value)(nint,errerror){newBuf:=bytes.NewBuffer(nil)fori:=0;iv.NumField();i++{switchv.Field(i).Type().Kind(){casereflect.Stru[详细]
-
Go内存模型学习笔记
所属栏目:[大数据] 日期:2020-12-16 热度:180
Go内存模型学习笔记 Go内存模型保证了一个Goroutine对某个变量的读取可以观测到另一个Goroutine对同一个变量的写。 注:内存模型的存在允许编译器进行比较重要的优化,即便是简单的优化也可能会影响到共享变量的读写顺序,从而导致条件竞争(race condition[详细]
-
Golang实现的KMP字符串匹配算法
所属栏目:[大数据] 日期:2020-12-16 热度:104
算法的细节可以参考网上的资料或数据结构的相关教材,这里直接上代码了~ 鉴于本人技艺浅陋,有的地方写的可能不合理,代码略长,如果有改进之处,请留言指点,算法本身测试过了: package mainimport ("fmt")func GetNextValueArray(sub []byte) (next []int[详细]
-
golang学习(一)之安装
所属栏目:[大数据] 日期:2020-12-16 热度:63
golang简介 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。 golang官网 http://golang.org/ goland安[详细]
-
Golang mgo驱动指定Mongo服务器读取
所属栏目:[大数据] 日期:2020-12-16 热度:62
Replica Sets搭建 服务器采用Replica Sets搭建,可参考Deploy a Replica Set 读模式 Mongod的读模式共有五种: primary. 在主节点上进行所有的读操作 primaryPreferred. 优先在主节点上进行读操作,如果主节点不可用,再从从节点操作。 secondary.所有的读操[详细]
-
Golang的time.Unix()函数可能存在的一个BUG
所属栏目:[大数据] 日期:2020-12-16 热度:154
fmt.Printf("math.MaxInt64totime.Unix=[%s]n",time.Unix(math.MaxInt64,0))fmt.Printf("math.MaxInt64/10totime.Unix=[%s]n",time.Unix(math.MaxInt64/10,0))fmt.Printf("math.MaxInt64/100totime.Unix=[%s]n",time.Unix(math.MaxInt64/100,0))fmt.Print[详细]
-
对GoLang里的slice要谨慎使用append操作
所属栏目:[大数据] 日期:2020-12-16 热度:50
结论:GoLang里对slice一定要谨慎使用append操作。cap未变化时,slice是对数组的引用,并且append会修改被引用数组的值。append操作导致cap变化后,会复制被引用的数组,然后切断引用关系。 代码和注释如下: package main import ( "fmt" ) func main() { a[详细]
-
golang的简单文件读写
所属栏目:[大数据] 日期:2020-12-16 热度:118
本文将对 Golang 的 IO 操作进行简单的介绍。 1、 创建新文件 simpleio.go ,并写入文件。 package mainimport ( "os" //"encoding/csv")func main(){ f,err:=os.Create("haha.txt") if err != nil { panic(err) } f.WriteString("this is test file") defer[详细]
-
Golang实现的红黑树
所属栏目:[大数据] 日期:2020-12-16 热度:109
红黑树 是一种基于二叉查找树的数据结构,它具有如下性质: (1) 二叉查找树的性质它都有 (2) 每个节点都有一个颜色属性,每个节点或是红的或是黑的 (3) 根节点必须是黑的 (4) 每个叶子节点(nil节点)为黑 (5) 如果一个节点为红的,那么它的两个孩子都是黑的 ([详细]
-
我为什么放弃Go语言
所属栏目:[大数据] 日期:2020-12-16 热度:128
我为什么放弃Go语言 作者:庄晓立(Liigo) 日期:2014年3月 原创链接:http://blog.csdn.net/liigo/article/details/23699459 转载请注明出处:http://blog.csdn.net/liigo 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正[详细]
-
Golang(2)Language Basic
所属栏目:[大数据] 日期:2020-12-16 热度:84
Golang(2)Language Basic go install com/sillycat/easygoapp/math go install com/sillycat/easygoapp The first command will generate the pkg directory,the second will generate the bin directory. go run src/com/sillycat/easygoapp/main.go This c[详细]
-
GO语言 代码的嵌套——各种状态的组合
所属栏目:[大数据] 日期:2020-12-16 热度:131
原创翻译文章,转载请注明出处:服务器非业余研究-sunface 对于代码风格的争议由来已久:程序员在一段代码中到底该使用多少嵌套或者缩进结构。请先看看下面两个例子: 在第一个例子中,如果我们想在高亮代码附近进行debug,那么我们需要记住哪些呢? func (g[详细]
-
Go语言 关于go error处理风格的一些讨论和个人观点(上)
所属栏目:[大数据] 日期:2020-12-16 热度:70
原创文章,转载请注明出处:服务器非业余研究-sunface 最近看谷歌go group里面有很多讨论go error处理风格的问题,颇有启发,现在跟大家分享一下,首先请看一个提问: Hi folks, When I look at a lot of go code,I see the following pattern: //当我看了许[详细]
-
Go语言 Go1.1新调度器详解
所属栏目:[大数据] 日期:2020-12-16 热度:158
原创翻译文章,转载请注明出处:服务器非业余研究-sunface 简介 Go1.1更新中最重要的特性之一就是由Dmitry Vyukov开发的全新的调度器。新的调度器能极大的提高Go并行程序的性能并且不需要对程序进行修改,因此我认为应该写一篇文章为大家介绍下新版的调度器[详细]
-
Go语言 关于go error处理风格的一些讨论和个人观点(下)
所属栏目:[大数据] 日期:2020-12-16 热度:82
原创文章,转载请注明出处:服务器非业余研究-sunface 对于Go来说错误如何处理是非常关键和重要的,这里我总结了一些方法可以避免错误的错误处理机制(具体见关于go error处理风格的一些讨论和个人观点(上)) 1.错误代码常用风格: 以下两个例子第一个例子明[详细]
-
Go语言 Go加密之DES
所属栏目:[大数据] 日期:2020-12-16 热度:129
接着RSA加密解密,我们继续来看看DES的加密解密 一、DES简介 DES(Data Encryption Standard)是对称加密算法,也就是加密和解密用相同的密钥。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模[详细]
-
Go语言 nil和interface详解
所属栏目:[大数据] 日期:2020-12-16 热度:86
golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。对[详细]
-
Go语言 unsafe的妙用
所属栏目:[大数据] 日期:2020-12-16 热度:73
unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。uintptr和unsafe.Pointer的区别就是:unsafe.Pointer只是单纯的通[详细]
-
Go语言 单元测试
所属栏目:[大数据] 日期:2020-12-16 热度:116
Go语言提供了完善的单元测试支持,开发人员可以方便的编写测试代码,保证自己代码的质量。在目前的例子中,一般看到都是普通函数的例子。下面我将通过类方法的单元测试例子来展示一下Go语言的魅力。 首先是代码所在的文件xml.go: 1 2 3 4 5 6 7 8 9 10 11 12[详细]
-
Go语言 详解reflect
所属栏目:[大数据] 日期:2020-12-16 热度:133
原创文章,转载请注明出处:服务器非业余研究-sunface 首先,reflect包有两个数据类型是最重要的,一个是Type,一个是Value。 Type就是定义的类型的一个数据类型,Value是值的类型 具体的Type和Value里面包含的方法就要看文档了: http://golang.org/pkg/ref[详细]
-
Go语言 常用日志记录方法
所属栏目:[大数据] 日期:2020-12-16 热度:79
Go目前标准包中日志只是方便的实现日志记录的功能,这些日志都是基于fmt包的打印再结合panic之类的函数来进行一般的打[详细]
-
Go语言 指针
所属栏目:[大数据] 日期:2020-12-16 热度:113
Go语言保留着C中值和指针的区别,但是对于指针繁琐用法进行了大量的简化,引入引用的概念。所以在Go语言中,你几乎不用担心会因为直接操作内寸而引起各式各样的错误。Go语言的指针,基本上只剩下用于区分 byref 和 byval 语义。 运算符就是简单的 和 * 一个[详细]
-
Go语言 时间处理详解
所属栏目:[大数据] 日期:2020-12-16 热度:176
编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学[详细]
-
Go语言 goroutine背后的系统知识
所属栏目:[大数据] 日期:2020-12-16 热度:84
Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统[详细]
-
Go语言 美妙的channel(上)
所属栏目:[大数据] 日期:2020-12-16 热度:99
在 Go 编程语言 中,channel 是一个闪耀的特性。它提供了一种强大的、在不使用锁或临界区的情况下,从某个 goroutine 向其他 goroutine 发送数据流的方法。 今天我想讨论关于 channel 的两个重要的特性,这些特性不但使其在控制数据流方面极为有用,而且用在[详细]
