go语言
ZzzJing@
容器/前端
展开
-
go语言学习备忘(竞态与锁)
基于调度器的内部算法,一个正运行的 goroutine 在工作结束前,可以被停止并重新调度。调度器这样做的目的是防止某个 goroutine 长时间占用逻辑处理器。当 goroutine 占用时间过长时,调度器会停止当前正运行的 goroutine,并给其他可运行的 goroutine 运行的机会。 下图从逻辑处理器的角度展示了这一场景。在第 1 步,调度器开始...原创 2019-12-25 14:37:47 · 161 阅读 · 0 评论 -
go语言学习备忘(并发)
并发与并行 并行是让不同的代码片段同时在不同的物理处理器上执行。并行的关键是同时做很多事情,而并发是指同时管理很多事情,这些事情可能只做了一半就被暂停去做别的事情了。在很多情况下,并发的效果比并行好,因为操作系统和硬件的总资源一般很少,但能支持系统同时做很多事情。这种“使用较少的资源做更多的事情”的哲学,也是指导 Go 语言设计的哲学。Go语言使用goroutine来实现并发。 ...原创 2019-12-25 13:40:57 · 119 阅读 · 0 评论 -
go语言学习备忘(方法)
如果一个函数有接收者,那么这个函数就叫方法。 Go 语言里有两种类型的接收者:值接收者和指针接收者。如下: // user 在程序里定义一个用户类型 type user struct { name string email string } // notify 使用值接收者实现了一个方法 func (u user) notify() { fmt.Printf("Sending Use...原创 2019-12-19 19:20:49 · 155 阅读 · 0 评论 -
go语言学习备忘(切片)
数组: 在 Go 语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。 数组是一种非常有用的数据结构,因为其占用的内存是连续分配的。由于内存连续,CPU能把正在使用的数据缓存更久的时间。而且内存连续很容易计算索引,可以快速迭代数组里的所有元素。数组的类型信息可以提供每次访问一个元素时需要在内存中移动的距离。既然数组的每个元素类型相同,又是连续分配,就可以以固定速度索...原创 2019-12-13 12:08:26 · 148 阅读 · 0 评论 -
go语言学习备忘(init)
init函数: 每个包可以包含任意多个 init 函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的 init 函数都会安排在 main 函数之前执行。 init 函数用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。 比如: package postgres import ( "database/sql" ) func init() { ...原创 2019-07-24 17:07:29 · 105 阅读 · 0 评论