今天是第二天的课程,学习了go的协程及通道等知识,有很多地方不懂,一边查资料一边听课效率还可以。作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,加油~\n\n这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时候觉得编程语言恰恰是最简单的,而通过一门编程语言能够解决实际问题或深入底层才是其价值所在,并且当我们学好一门编程语言后(尤其C和C++),其他编程语言都非常类似,殊途同归,学起来也很迅速。 今天主要学习的内容还是挺多的: *协程是一种用户级的轻量线程,它由程序员控制调度,而不是操作系统。 *协程可以看作是一种特殊的线程,但不同于操作系统线程,它是在用户空间进行调度,不需要操作系统上下文进行切换。 *协程之间的切换由程序员自己决定,因此可减少线程切换的开销,提高程序的并发性。 *协程通常需要配合多线程一起使用,一个线程中可以包含多个协程,线程之间也可以创建协程。 *在 Go 语言中,协程(goroutine)的调度是有 Go 运行时(runtime)进行管理的,而不是操作系统调度。这意味着Go 中协程的创建、销毁、切换等操作都是有Go语言运行时库自己管理,而不需要操作系统的线程调度机制。 这是对协程知识的笔记,因为自己是大一刚刚学习编程,今天这么多知识我简单理解就是做项目的时候可能有很多客户,然后我们需要一个程序有许多的线,或者理解为人工客服去服务每一个客户,这就需要在一个项目中有多条路子,也就是线程,而Go语言里面的协程可以理解为一种更加高级的线程,相较于普通的线程它更加轻便灵活。 以下是对goroutine的笔记: *goroutine 是一种特殊的线程,是由 Go 运行时进行调度管理的,每个 goroutine 只需要最少只需要 几KB空间,创建、切换、销毁基本对系统消耗少之又少,goroutine 奉行通信实现内存共享,而不是共享内存实现数据通信,使用 Channel 来实现协程之间的通信。*goroutine 使用方便,通过一个 go 关键字就可以启动执行一个 goroutine,通过 main() 函数创建的 goroutine 依附于 main goroutine,main()函数结束,其他 goroutine 也会随之而结束,所以在开发中我们还要结束其他手段来高效运用。Go语言优势l 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。l 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。l 语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。 是在网上找的资料,然后理解了一下,其实就是管道,然后可以让数据更快,节省空间。