【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
运行时进行调度管理的用户态的线程。