文章
全部技术笔记,按发布时间排序。
Solidity v0.6.0 主要功能和破坏性更新示例
重载关键字 和 C++ 中面向对象继承类似,Solidity 提供了 virtual 和 override 关键字。继承抽象合约或者合约接口需要加上 overide 关键字。 回退函数更改 异常捕获 当进行外部非低级调用时,异常会冒泡到上层,v6.0 加入 try...catch 可以捕获到下层异常。 try 后接外部
Go1.14 重要新特性
语言变更 内嵌接口方法集允许部分重叠 接口(interface)是方法集合,方法必须有唯一的非空名称。 之前的接口规范:一个接口 T 可以在方法集中使用接口 E,这里的 E 称之为 T 的内嵌接口,使得 E 中的所有公有和私有方法被添加到接口 T 中。 所以如下所示的 ReadWriteCloser 多个内嵌接口拥有同
解决 nodejs 在 macOS Catalina (v10.15) 无法使用 node-gyp 问题
升级到 macos v10.15 之后,nodejs无法正常编译 c++ 库,node-gyp 文档给了解决方案,本篇是其的简短翻译。 --- 当升级到 macOS Catalina 或者使用 Software Update 会造成 node-gyp 安装失败。一般在 npm install 的时候会遇到下面这个错误:
基于x509的认证授权技术
认证方式有很多,比如使用用户名密码的BasicAuth,使用 AccessToken 的 OAuth 2.0 等等,还有一个这篇文章要写的基于 X509 的认证方式,这个不太常见,目前我就在k8s api server中见到。 认证的本质就是获取并确定请求方的身份。回想一下在 TLS 中确认身份的情况,在握手中服务端要
age:一个现代化的加密工具
age:一个现代化的加密工具 age 是 golang crypto 库的维护者之一的 FiloSottile 写的一个现代化加密工具,目前正处在 Beta 阶段。 age 的是 Actual Good Encryption 的缩写,有点 PGP(Pretty Good Privacy) 的意思,说起来作者本身的想法就
谷歌和苹果发布的COVID-19密切接触者追踪应用是如何保护用户隐私的?
最近谷歌和苹果公司作为竞争对手不常见的联合起来,发布了一个COVID-19 Contract Tracing应用,也就是密切接触者追踪应用。其实现原理并不复杂,简单而言就是用户使用蓝牙将个人相关信息传递附近的手机上,如果有人确诊了,可以将这个人的信息上传到服务端,然后再推送给其它相关手机上,这样就能判断一个人是否有感染
Go linter: io.ReadFull 不需要判断返回值长度
io.ReadFull 返回从Reader读取的字节数量和错误信息 ReadFull 经常出现在其它辅助函数中,比如随机数生成函数 rand.Read 除了判断 err 是否不为空之外,经常有代码还会判断这个 n 的长度是否和 b 的长度一样,其实这是没必要的,io.ReadFull 内部保证了如果 err == ni
Go slice 技巧
翻译: https://github.com/golang/go/wiki/SliceTricks --- 追加 复制 切割(cut) 删除 不保护删除 注意:如果元素类型是指针或者一个结构体内含有指针,上述的切割和删除会有内存泄露的风险,被删除的元素仍然被 a 引用,而不被垃圾回收处理,下面的代码可以处理这些问题:
Go: 清空 Slice 的两种方法:[:0]和nil
如果要清空一个slice,那么可以简单的赋值为nil,垃圾回收器会自动回收原有的数据。 nil slice 和普通 slice一样可以使用 cap len 内置函数,以及被 for range 遍历。本质和 empty slice 性质一样,零长度和零容量,当然也可以使用 append 操作。 但是如果还需要使用 sl
Go: big.Int 常用辅助函数
深拷贝 判断值是否大于、小于或等于 0 如果 x 0 返回 +1 如果判断是否为 0 那么也可以用这个,如果 BitLen() 返回 0 那么就是值为 0 转化为固定长度的 bytes 转化为 bytes 很简单,直接使用 Bytes() 即可,但转化的 bytes 只有值的最小字节长度。 如果要转化为固定长度,在 g