进一步认识golang中的并发

如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟。需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发。 并发的意义就是:让一个程序同时做多件事情! 理解这一点非常重要,是的,并发的目的只是为了能让程序同时做另一件事情而已,并发的目的并不是让程序运行的更快(如果是多核处理器,而且任务可以分成相互独立的部分,那么并发确实可以让事情解决的更快)。记得我学C++那时候开始接触并发,还以为每开一个线程程序就会加速一...阅读全文

2014-04-28 22:24 u011774512
阅读:5274 评论:3

golang sync WaitGroup

刚才看golang的sync的包,看见一个很有用的功能。就是WaitGroup。 先说说WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 WaitGroup总共有三个方法:Add(delta int),Done(),Wait()。简单的说一下这三个方法的作用。 Add:添加或者减少等待goroutine的数量 Done:相当于Add(-1) Wait:执行阻塞,直到所有的WaitGroup数量变成0 ...阅读全文

2014-05-06 20:18 u011511092
阅读:30418 评论:7

golang教程

最近兴趣所致,打算写一本书《build-web-application-with-golang》 目前已经完成了前面两章 1.GO环境配置 1.1. GO安装 1.2. GOPATH 与工作空间 1.3. GO shell命令 1.4. GO开发工具 1.5. 小结 2.GO语言基础 2.1. 你好,GO 2.2. GO基础 2.3. 流程和函数 2.4. struct 2...阅读全文

阅读:20278 评论:0

golang时间处理

golang时间处理 相关包 "time" 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20 时间戳转str格式化时间 s...阅读全文

2014-07-09 13:47 千山万水
阅读:16248 评论:0

golang struct转map

struct转map package main import ( "fmt" "reflect" "time" ) type User struct { Id int64 Username string Password string Logintime time.Time } func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj) v...阅读全文

2014-08-14 14:27 别人说我名字很长
阅读:11330 评论:0

进一步认识golang中的并发

如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟。需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发。 并发的意义就是:让一个程序同时做多件事情! 理解这一点非常重要,是的,并发的目的只是为了能让程序同时做另一件事情而已,并发的目的并不是让程序运行的更快(如果是多核处理器,而且任务可以分成相互独立的部分,那么并发确实可以让事情解决的更快)。记得我学C++那时候开始接触并发,还以为每开一个线程程序就会加速一倍呢...阅读全文

阅读:11655 评论:1

Go语言并发与并行学习笔记(二)

Go语言并发与并行学习笔记(二) Go语言的并发和并行 不知道你有没有注意到一个现象,还是这段代码,如果我跑在两个goroutines里面的话: var quit chan int = make(chan int) func loop() { for i := 0; i < 10; i++ { fmt.Printf("%d ", i) } quit <- 0 } func main() { // 开两个goroutine跑函数loop, loop函数负责打印10个数 go loop() go l...阅读全文

2014-03-25 21:54 yangzhengyi68
阅读:6759 评论:0

Go_Json_Unmarshal_Marshal

Go按照RFC 4627的标准实现了一个json编解码的标准库 func Unmarshal(data []byte, v interface{}) error Unmarshal用于反序列化json的函数 根据data将数据反序列化到传入的对象中 仔细查看代码中的四种情况 1 将json反序列化成struct对象 2 将json反序列化到可以存储struct的slice中 3 将json 反序列化到map中 4 将json反序列化到slice中 package main import ( "e...阅读全文

2014-08-31 21:55 u012807459
阅读:28607 评论:2

database/sql: Stmt的使用以及坑

前言 众所周知,golang操作数据库,是通过database/sql包,以及第三方的实现了database/sql/driver接口的数据库驱动包来共同完成的。 其中database/sql/driver中的接口Conn和Stmt,官方交给第三方实现驱动,并且是协程不安全的。官方实现的database/sql包中的DB和Stmt是协程安全的,因为内部实现是连接池。 如何使用 刚开始接触database/sql包,并且网上的很多使用例子,都类似下面这种方式: db,err := sql.Open...阅读全文

2014年11月8日 郝冠伟
阅读:41395 评论:0