博客迁移

博客迁移

Roy

断断续续写博客居然有8年时间了啊……

5年前,博客从wordpress迁移到了hexo+github静态页面,用着不错之后就一直懒得折腾。但五一假期想写博客发现安装nodejshexo3版本怎么也搞不定,看报错提示似乎是某些依赖库已经不支持老版本了,干脆一不做二不休整体替换成hugo+Mainroad主题。要不电脑里又得装python又得装golang还得装nodejs,也是麻烦。

Golang小技巧

Roy

下划线的妙用

大多数情况下,下划线_都用于忽略函数返回值的情况。最近查看authboss这个开源库的代码时,发现这样一种用法:

struct User {
    ...
}

var (
    assertUser   = &User{}
    assertStorer = &MemStorer{}
    _ authboss.User            = assertUser
    _ authboss.AuthableUser    = assertUser
)

新手可能会犯的50个Golang错误

Roy

原文,向原作者表示感谢。这里省略了一些无关的介绍说明以及过于简单的说明,直接看代码就懂了。

左花括号不能单独一行

在大多数语言中你可以随便放置花括号的位置,但go语言不一样,你可以理解为为go会自动注入分号(automatic semicolon injection):

错误代码:

package main

import "fmt"

func main()  
{ //error, can't have the opening brace on a separate line
    fmt.Println("hello there!")
}

编译错误:

/tmp/sandbox826898458/main.go:6: syntax error: unexpected semicolon or newline before {

正确代码:

package main

import "fmt"

func main() {  
    fmt.Println("works!")
}
OpenStack源码学习笔记6

OpenStack源码学习笔记6

Roy

很久之前发现一个现象,在生产环境中配置了保留内存reserved_host_memory_mb以及 没配置 内存超分比ram_allocation_ratio的情况下,虚拟机使用的内存居然已经快将物理内存耗尽了。

比如物理机内存300G,方便举例忽略掉一些系统占用,当设置了reserved_host_memory_mb为20G,那么理论上所有虚拟机最大占用内存量为280G,而查看居然已经使用了290G的内存,还是在虚拟机并没有将各自申请的内存全部使用掉的情况下(比如申请一台4G的虚拟机,但物理机操作系统层面并没有分配4G给对应的进程,除非虚拟机内部把内存占满)。

单单就nova而言,如果在集群启动时就指定了保留内存大小和超分比为1的话,是不应该出现上述情形的。除非后期对这2个参数进行过修改,但由于年代久远已经没法追溯,这也就成了一桩悬案。

不过在追踪这个问题的过程中,顺便也学习了下主机热迁移的过程,这里的代码是 N版