golang语言并发与并行——goroutine和channel的详细理解(一)

如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。 Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。 以下是我入门的学习笔记。 Go语言的goroutines、信道和死锁 goroutine Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。 以下的程序,我们串行地去执行两次loop函数: func loop() { for i := 0; i < 10; i++ { f...阅读全文

2017-03-04 16:24 skh2015java
阅读:35342 评论:12

Go 系列教程 —— 20. 并发入门

欢迎来到我们 [Golang 系列教程](https://studygolang.com/subject/2)的第 20 篇。 **Go 是并发式语言,而不是并行式语言**。在讨论 Go 如何处理并发之前,我们必须理解何为并发,以及并发与并行的区别。 ## 并发是什么? 并发是指立即处理多个任务的能力。一个例子就能很好地说明这一点。 我们可以想象一个人正在跑步。假如在他晨跑时,鞋带突然松了。于是他停下来,系一下鞋带,接下来继续跑。这个例子就是典型的并发。这个人...阅读全文

2018-02-03 12:25:58 heyulong
阅读:22847 评论:7

Golang下的slice拼接

我们使用Python编程都知道,想要拼接两个list为一个list可以有很多方式,比如: # 方式1 : name = ["golang","python","shell"] user = ["xxb","biaoge"] alldata = name+user print(alldata) # 方式2: name = ["golang","python","shell"] user = ["xxb","biaoge"] name.extend(user) print(name) 在Golang...阅读全文

2018.11.23 12:28 BGbiao
阅读:13142 评论:3

Golang并发模型:select进阶

特性 nil的通道永远阻塞,即不执行。 break跳出for? select{}阻塞。 select应用场景 无阻塞的读、写通道 给某个请求/处理,设置超时时间,一旦超时时间内无法完成,则停止处理 有多个通道需要处理,哪个可以处理,就处理哪个 并发系列文章推荐 Golang并发模型:轻松入门流水线模型 Golang并发模型:轻松入门流水线FAN模式 Golang并发模型:并发协程的优雅退出阅读全文

2018.12.08 16:31 shitaibin
阅读:986 评论:0

Golang并发模型:轻松入门select

之前的文章都提到过,Golang的并发模型都来自生活,select也不例外。举个例子:我们都知道一句话,“吃饭睡觉打豆豆”,这一句话里包含了3件事: 妈妈喊你吃饭,你去吃饭。 时间到了,要睡觉。 没事做,打豆豆。 在Golang里,select就是干这个事的:到吃饭了去吃饭,该睡觉了就睡觉,没事干就打豆豆。 结束发散,我们看下select的功能,以及它能做啥。 select功能 在多个通道上进行读或写操作,让函数可以处理多个事情,但1次只处理1个。以下特性也都必须熟记于心: 每次执行select...阅读全文

2018.12.12 12:45* shitaibin
阅读:647 评论:0

go 中 对方法的认识-相当于类(Class)

0x01 前言Go 语言的语法实在有些不一样,与其它面向对象语言相比,Go 的方法似乎有些晦涩。0x02 方法的定义在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。type user struct { name string, email string, } //这是函数的定义 func notify(email string) { fmt.Println("Email is %s", email) } //这是方法的定义 func (u user) n...阅读全文

2018年06月21日 16:41:59 qq_36308324
阅读:6636 评论:2

Go基础(复杂类型):结构体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wd2014610/article/details/80403044 结构体 一个结构体(struct)就是一个字段的集合。 (而 type 的含义跟其字面意思相符。) 下面来写一个简单的例子: package main import "fmt" /** * 一个结构体就是一个字段的集合 */ type Vertex struct { X int Y float64 } func main() { ...阅读全文

2018年05月23日 14:45:39 wd2014610
阅读:1574 评论:0

Golang学习笔记之MD5

1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密, 用这种方法加密过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。 2.常用的单向加密算法有哪些呢? 主要有:BASE64、MD5、SHA、HMAC,其中最为常见的就有MD5,BASE64。这里我们主要介绍最常使用的MD5算法。该算法可以用来得到一个128bit的值,既可以作为K-V中的key,也可以对密码进行加密从而确保其在传输中"不可见"。 3.Golang的加密库都放在crypto目录下...阅读全文

2018.12.24 20:34* 学生黄哲
阅读:725 评论:0