本文来讲讲OPA
推导式(comprehensions),主要涉及三类数据的推导式:object,array,set
我们将以实现判断配置文件数据的不同聚合方式为例展开。
OPA
,全称OpenPolicyAgent
, 底层用Go
实现,它灵活而强大的声明式语言全面支持通用策略定义。
而且,2019年4月2号OPA
正式进入了CNCF
,作为孵化级托管项目,详见声明
目前国内资料还比较少。
个人因为工作接触比较多,打算陆续分享些教程介绍下。
私以为策略引擎的技术选型完全可以多这个选择~~
具体看官方文档 OPA philosophy docs
主要关键词是:
Dig101: dig more, simplified more and know more
今天谈下上文( Dig101-Go之读懂interface的底层设计 )留下的那个问题:
为什么对于以下interface Stringer
和构造类型 Binary
下面代码conversion
会调用转换函数convT64
,而devirt
不会调用?
Dig101: dig more, simplified more and know more
今天我们聊聊万物皆可为的接口(interface)的底层设计。
interface被定义为一组方法的签名。
有了它,我们可以订立方法契约,去抽象和约束实现。
而Go的基础类型,可以认为是没有实现任何方法的空interface,也就是万物皆为的interface。
(Go语言没有泛型,接口可以作为一种替代实现)
接口也被寄予厚望,主力开发Russ Cox曾说过:
从语言设计的角度来看,Go的接口是静态的,在编译时检查过的,在需要时是动态的。如果我可以将Go的一个特性导出到其他语言中,那就是接口。
Go Data Structures: Interfaces
那到底interface是怎么设计的底层结构呢?
又怎么支持的duck typing?
在类型断言时又发生了什么?
带着这些问题,我们往下看
Tips: all for hands-free.
Tips 系列:记录日常解决问题、解放双手的一些小技巧。
目的只有一个:不被重复的琐事麻痹,能偷懒的绝不手软。
今天聊聊如何优雅的使用GDB调试Go程序。
GDB有啥用?
想了解代码底层的话,它是一大利器,更别说定位问题啥的。
具体骚操作见曹大的使用 debugger 学习 golang
但GDB从安装到可用,可能有一大堆问题要解决(尤其在Mac上),我们怎么能优雅的使用它,避免陷入问题中,是本文的重点。
(涉及Docker和Mac两个平台上运行)
Tips: all for hands-free.
Tips 系列:记录日常解决问题、解放双手的一些小技巧。
目的只有一个:不被重复的琐事麻痹,能偷懒的绝不手软。
今天展示的是Mac上如何批量将Word(.doc)表格转换为Excel。
先上效果图:
第一次选择目录后需要点击授权目录权限。
Word另存运行过程在后台,动图上没显示出来,实际Word窗口会一次次打开-另存-关闭。
Update:
增加Go夜读slide
Dig101: dig more, simplified more and know more
经过前边几篇文章,相信你也发现了,struct几乎无处不在。
string,slice和map底层都用到了struct。
今天我们来重点关注下struct的内存对齐,
理解它,对更好的运用struct和读懂一些源码库的实现会有很大的帮助。
Dig101: dig more, simplified more and know more
在golang中,map
是一个不可或缺的存在。
它作为哈希表,简单易用,既能自动处理哈希碰撞,又能自动扩容或重新内存整理,避免读写性能的下降。
这些都要归功于其内部实现的精妙。本文尝试去通过源码去分析一下其背后的故事。
我们不会过多在源码分析上展开,只结合代码示例对其背后设计实现上做些总结,希望可以简单明了一些。
希望看完后,会让你对 map 的理解有一些帮助。网上也有很多不错的源码分析,会附到文末,感兴趣的同学自行查看下。
(本文分析基于 Mac 平台上go1.14beta1版本。长文预警 … )