【Golang】跟着源码学技巧系列(一)对象池sync.Pool
在源码中学习一些技巧
……专注于IT互联网,Web技术,Go语言(golang)、.Net,.Net Core,Node.js,前端框架、项目管理、软件架构
只有原创,没有转载,只有实践,才会成文。
在源码中学习一些技巧
……在前端项目中,在开发中,通过npm启动devServer后,任何即时的代码修改,都会重启devServer,就算是node.js后端项目,也有nodemon监听代码文件的变动,当代码改变之后,便会自动重启;这样大大方便了我们开发人员,提高了开发效率。那么Go中是否有如此方便的工具?因为在实际开发过程中,确实有很多这种情况需要重新运行,比如:
web开发中,针对前端请求修改request参数结构体字段的tag值;Golang中出场率最高的数据类型是切片,切片是基于数组类型做的一层封装的 引用类型。它非常灵活,支持自动扩容。
……es6中有扩展运算符,形如...,三个点, 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。 在Golang中也是有...,但是好像却没有名字,可能是博主孤陋寡闻吧。
有些工作内容,站在程序员的角度:写3天的代码,节省N天的工作量。不为什么,就喜欢省事的感觉。
……有这么一种说法,懒人创造了世界。他们懒得走路,所以发明了汽车;懒得爬楼梯,所以发明了电梯;懒得扇扇子,所以发明了电风扇、空调。懒说明了怕麻烦,博主其实就是一个怕麻烦的人。博主的博客Garfield-加菲的博客就是通过Hugo自动生成的静态网站,首先强调一点,我喜欢Hugo,它使我能够专注于markdown的编写,其他一切事情都交给Hugo,这也符合我懒的特点。
对于业务层面的开发,就离不开数据库的访问。
……goroutine的栈在其生命周期开始时很小,可能只有2KB,但是它并不固定,可按需增大或减小。虽然我们可以无脑创建很多goroutine来执行操作,但是如果程序出现意外,goroutine可能会暴涨占据内存,一切就变得不可控,比如我们通过循环来创建goroutine,当循环条件满足,创建巨额的goroutine,严重时系统会崩溃。博主也是通过杨旭老师的TCP端口扫描器中发现了这个问题。
Socket网路编程对于B/S项目来说,几乎不会涉及;但是如果涉及游戏服务器开发,或者上位机服务器开发,自定义通信协议,Socket网络编程就变得常见了。
goroutine是Golang特有,类似于线程,但是线程是由操作系统进行调度管理,而goroutine是由Golang运行时进行调度管理的用户态的线程。