摘要: 锁的常见概念 互斥: 同一时刻只有一个线程执行 临界区:一段需要互斥执行的代码 细粒度锁: 用不同的锁对受保护资源进行精细化管理。 细粒度锁可以提高并行度,是性能优化的一个重要手段 死锁 :一组互相竞争资源的线程因互相等待,导致“永久”阻塞的现象 。 用锁的最佳实践 1. 永远只再更新对象的成员变量 阅读全文
posted @ 2019-09-12 19:22 迪丽热BUG 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 创建文件hello_world.go 运行指令: go run hello_world.go 编译指令: go build hello_world.go 应用程序入口语法说明 1. 必须是main包: package main 2. 方法名必须是main: func main() 3. packag 阅读全文
posted @ 2019-09-12 16:15 迪丽热BUG 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 学习目标 掌握错误处理 掌握自定义错误处理 掌握defer关键字的使用 错误处理 GO没有异常处理机制 Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义如下: type error interface { ​ Error() string } 可以通过errors.New快速 阅读全文
posted @ 2019-09-12 16:14 迪丽热BUG 阅读(162) 评论(0) 推荐(0) 编辑
摘要: go语言不支持隐式类型转换,别名和原有类型也不能进行隐式类型转换 go语言不支持隐式转换 变量 变量声明 声明变量不需要使用分号作为结束符 变量的初始化 冒号和等号的组合:= 声明并赋值 出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误 var a int a := 2 会导致类似如下 阅读全文
posted @ 2019-09-12 16:13 迪丽热BUG 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 并发编程三要素 1. 原子性: 一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。 2. 有序性: 程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序) 3. 可见性: 一个县城对共享变量的修改,另一个线程能够立刻看到。 一、原子性 线程切换会带来 阅读全文
posted @ 2019-09-12 16:05 迪丽热BUG 阅读(1431) 评论(0) 推荐(0) 编辑