go 语言中的 channel 与协程间通信
go 中有一种数据类型 chan
,它本身的用途是消息通道,用来在 goroutines 间实现接收、发送消息。同时有缓存功能,因此可视它为 跨 协程队列。
注意,是语言级别上的支持,不同函数库支持。这一点可以让它的表达语法设计得更简单。
这个跨协程消息通信功能,可以非常简单地实现其它语言中较麻烦的并发任务系统、工作队列系统。
go 中有一种数据类型 chan
,它本身的用途是消息通道,用来在 goroutines 间实现接收、发送消息。同时有缓存功能,因此可视它为 跨 协程队列。
注意,是语言级别上的支持,不同函数库支持。这一点可以让它的表达语法设计得更简单。
这个跨协程消息通信功能,可以非常简单地实现其它语言中较麻烦的并发任务系统、工作队列系统。
golang 被广泛用在命令行、web 后台服务等领域。通常我们自己编写小程序时,在命令行启动后,使用ctrl+c
来终止进程。一般情况下不会有问题。但如果你的任务是资源消耗型或者长任务,特别是有远程 web 访问或者数据库操作的,为了避免资源泄漏,较好的做法是在退出前对使用的资源进行清理,有远程连接或者数据连接的,应该断开或者关闭,这些都是需要手工定制的。
无意中接触到苹果电脑,苹果电脑的操作系统 macos 在外观设计上,除用户交互外,还融合了视觉设计。经常使用 macos 的用户,会发现使用的软件风格比较一致。并且比 windows 上的程序界面要和谐很多,至少 windows 10之前。
另外,还有一些长相漂亮的软件,当然 windows 平台上也有,只不过平时没有接触到。
有悟截取一些软件界面,供大家欣赏欣赏。
有时通过 jetbrains、vscode 这些 ide 的界面操作来运行项目,反而不懂简单的命令。绝大部分编程语言都有在命令行编译并运行方式的功能,有悟收集当前一些主流开发语言(java、go、c/c++、javascript/typescript、rust)的命令行编译并运行的命令。
golang 开发者福音: 随着 go 1.17发布,期待已久的 泛型 ,也就是 类型参数,即将被正式支持了。目前已发现泛型相关的代码已被合并到 go 的代码库中。而且可以通过 go1.17 编译运行简单的例子。
var
是 javascript 中用来声明变量的关键字。使用它所声明的变量,与在其它编程语言的声明的变量有不同的表现行为,即作用域表现不同。没有搞清楚它之前,很容易在你的 javascript 中为程序留下 bug。
看完本文之后,你将了解 var
本身的问题,以及如何避免。
使用 hugo 来生成静态网页,速度就像子弹一样,会飞。hugo 提供了 getJSON 和 getCSV 两个函数,用于生成页面文件时,获取外部的数据,这样就可以为页面添加外部内容。 但如果这些外部数据,按照某一种频率更新,那么 hugo 就需要相应的更新。
但是 hugo 的开发模式并不监控这些外部资源,怎么办?
我们使用 hugo 来生成静态网页,大部分情况下,就是让它生成 html 文件。生成的静态网站文件,一般都托管在web 服务,或者目前技术界非常流行的 github pages,netlify。但对于能否用 hugo 来生成其它格式(如 json)的文件,貌似从未思考过。因为 json 文件也可以作为静态文件一同在 web服务托管服务上被访问。如果能使用 hugo 来直接生成 json,那么意味着不需要引入新工具。
今天,有悟尝试一下,看如何使用 hugo 来生成 json 文件。
写博客文章是自媒体的一种初级形式,至今这种形式还非常重要。但是有一些个人,建站是为了某些特殊的商业或者获利目的,采用从互联网上爬取别人的文章来为自己的网站添加内容,这部分内容并没有受到原作者的授权,不是合法的转载。在互联网上存在大量这样的事件。有悟也不知道怎么解决。但是部分自媒体平台开始对发表者所发布的内容原创性加以保护,这是一种非常好现象,特别是拥有比较大流量的平台。意味着你的文章不是原创的,发布到该平台,就可能会被认为是侵权。
在不知道如何申诉版权之前,至少我们应该做的是对作品进行著作权声明,至少可以让一部分有法律意识的人采用正确的方式来引用你的原创性作品。
现在的开发人员,几乎都用 git 来作源代码的版本管理。有可能你就每天不断的使用的 git 下载别人的开源代码。不过,是否是有碰过这样的问题,某个开源库代码很大,只是想要下载或者复制其中某个目录到本地电脑,有办法避免下载整个代码库吗?