wio terminal 掌机开发板试用报告

周五收到一款矽递科技的arduino开发板wio terminal,与Arduino和MicroPython兼容,基于ATSAMD51的微控制器,具有Realtek RTL8720DN支持的的无线连接,还带有一个240X320的彩色液晶屏,可以做为树莓派的显示器,很方便了。 话说矽递科技是一家专注物联网硬件解决方案的高新技术企业,全球前三的开源硬件供应商,牛逼了,以至于这款产品的英文资料比中文资料还丰富。

对于硬件相关的领域,我还是一个小白,但是对于物联网或者硬件相关的创客产品,我是非常感兴趣的,这不,拿到这款产品,周末在家就和小朋友一起研究起来。

我给自己的设置的第一个目标就是能写一个hello world的程序,在这款wio terminal显示出来。

阅读全文

实现无限缓存的channel

Go语言的channel有两种类型,一种是无缓存的channel,一种是有缓存的buffer,这两种类型的channel大家都比较熟悉了,但是对于有缓存的channel,它的缓存长度在创建channel的时候就已经确定了,中间不能扩缩容,这导致在一些场景下使用有问题,或者说不太适合特定的场景。

阅读全文

Go sync.Once的三重门

我在极客时间开设的专栏Go 并发编程实战课中,详细介绍了sync.Once并发原语的实现,对于使用这个原语来说,内容已经足够了,但是还是有些同学愿意深入挖掘更深层的设计,并且提出了一些疑问,所以我再专门写一篇文章, 作为这么专栏的补充吧。

阅读全文

轻轻松松打印网页并生成pdf文档

chromedp是一个更快更简单的支持Chrome DevTools Protocol协议的Go库,它是目前最流行的headless浏览器库之一,你可以使用它做很多只能通过浏览器才能执行的任务,比如网页截屏、网页渲染测试、下载视频、模拟登录等,今天我介绍它的一个有用而且很简单的功能:为一个网页生成一个pdf格式的截屏,更多的例子你可以查看官方示例chromedp/examples

阅读全文

rpcx支持websocket协议了!

当前, rpcx支持tcp、kcp、quic、unix domain、http、jsonrpc 2.0等传输协议,并没有考虑websocket的支持,原因在于考虑到微服务更多的是企业内部服务之间的通讯,不太可能暴露给浏览器,企业内部大多采用tcp的方式传输,或者udp族(kcp、quic)方式的传输,但是还是有用户提出希望能支持websocket。

我想websocket可能还是会有一些场景下使用,比如游戏开发,移动端核服务端的通讯等等,所以经过慎重考虑,我决定在 rpcx 1.6.2版本中增加对websocket的支持。

阅读全文

Go 泛型尝鲜

我在二月份的文章利好!极大可能在go 1.17中就能尝试泛型提到,虽然Go泛型会在Go 1.18中正式发布,但是因为各种原因,代码已经开始在master分支中实现,所以极大可能你会在今年9月份发布的Go 1.17中就能尝试使用Go泛型。

那么,现在,可以去掉"可能"这两个字了。在Go 1.17可以确定的说你能够尝试Go泛型编程了,尽管建议你还是在Go 1.18以及以后的版本才正式在产品中使用泛型。

阅读全文