How the Go runtime implements maps efficiently (without generics)

https://dave.cheney.net/2018/05/29/how-the-go-runtime-implements-maps-efficiently-without-generics

前半部分介绍了hashmap的基本概念,后半部分介绍了Go的runtime如何实现map key的hash计算。Go没有泛型,也不是用interface{}来实现。map操作的实现会编译器重写为对runtime函数的调用,比如runtime.mapaccess1()。然后使用一个结构体maptype来保存key的信息,因为编译的时候就能知道key的类型,所以会为不同类型的key指定好hash函数,在运行的时候直接调用即可。

Verifying PostgreSQL backups made easier with new open-source tool

https://cloudplatform.googleblog.com/2018/07/verifying-postgresql-backups-made-easier-with-new-open-source-tool.html

Google Cloud开源了自己开发的Postgres backup校验工具,使用Postgres的checksum功能来校验一个backup数据是否正确。Checksum功能需要在初始化数据库的时候开启,initdb --data-checksums

XARs: An efficient system for self-contained executables

https://code.fb.com/data-infrastructure/xars-a-more-efficient-open-source-system-for-self-contained-executables/

基于一种基于FUSE的按需加载文件系统的思想来实现数据包的分发。基本思路是把要打包的应用、依赖以及数据,放到一个squashfs archive中,然后在要运行的时候使用FUSE挂载,然后执行。对于Python来说,这个squashfs中已经包含了virtualenv环境,所以对运行的操作系统没有依赖。基于同样的思路,也可以用来打包Node或者Lua应用。

Gracefully Scaling to 10k PostgreSQL Connections for $35/mo

https://medium.com/futuretech-industries/ten-thousand-high-availability-postgresql-connections-for-35-mo-part-one-4b7a2d61c51e

https://medium.com/futuretech-industries/postgres-raffle-10k-connections-35-mo-part-two-b4c2e0c86e37?ref=stackshare

介绍了PgBouncer的使用和配置。

Do You Know the New Names for Linux Network Interfaces?

https://blog.learningtree.com/new-names-linux-network-interfaces/

介绍了Linux下的网络设备名称为什么从 eth0变成 enp2s0这种。

Portable Cloud Programming with Go Cloud

https://blog.golang.org/go-cloud

Google推出了Go Cloud。Go Cloud是一套开源框架,目的是帮助用户实现可以跨云的应用程序。基本思路就是用户只有在云服务的设置逻辑上调用不同云的SDK,而使用云资源的时候,则不需要区分是哪个云。这么做的好处是,主要的业务逻辑都是在资源的使用上的,云服务的设置逻辑其实很少。所以能减少用户的重复代码。

The right way to handle YAML in Go

http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/

原来YAML可以简写成JSON的形式,然后用 json.Unmarshal()来解析到一个结构体。

Go code refactoring : the 23x performance hunt

https://medium.com/@val_deleplace/go-code-refactoring-the-23x-performance-hunt-156746b522f7

介绍如何一步一步的优化一个简单的程序,以获得23倍的性能提升。


知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。