PostgreSQL的pg_hba.conf 客户端认证

认证是数据库服务器对客户端用户身份鉴别的过程,并且确定客户端以该用户是否可以连接数据库服务器。PostgreSQL提供多种不同的客户端认证方式,而pg_hba.conf就是客户端认证的配置文件,pg_hba即PostGreSQL host-base authentication的简称。

继续阅读

微信小程序的app.json配置

app.json文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。下面对app.json文件进行逐个分析:

Tips : 该文件时一个json文件,故不支持注释

继续阅读

MySQL的安装与配置

本来是在学习PostgreSQL,想安装个mySQL 5.7 做一些实践比较,但发现 mysql5.7在centos 7.2上,使用 YUM 怎么也安装不上。刚开始是和MariaDB冲突(centos7.2默认自带mariaDB),使用

rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

强制卸载后,紧接又提示:

2:postfix-2.10.1-6.el7.x86_64 有缺少的需求 libmysqlclient.so.18()(64bit)
2:postfix-2.10.1-6.el7.x86_64 有缺少的需求 libmysqlclient.so.18(libmysqlclient_18)(64bit)

无奈之下,才写了这一篇安装mysql5.7的笔记。

继续阅读

Go中的net/url包学习笔记

GO中的net/url包,实现对URL的处理。

1、对URL进行编码和解码

func QueryEscape(s string) string
QueryEscape函数对s进行转码使之可以安全的用在URL查询里。

func QueryUnescape(s string) (string, error)
QueryUnescape函数用于将QueryEscape转码的字符串还原。它会把%AB改为字节0xAB,将’+’改为’ ‘。如果有某个%后面未跟两个十六进制数字,本函数会返回错误。

继续阅读

Go中net包中的方法

本文章是学习Go中net包的一篇笔记,记录 net 包的一些方法的使用。

 1、func SplitHostPort(hostport string) (host, port string, err error)

函数将格式为”host:port”、”[host]:port”或”[ipv6-host%zone]:port”的网络地址分割为host或ipv6-host%zone和port两个部分。

继续阅读

如何优雅地关闭Go channel

几天前,我写了一篇文章来说明golang中channel的使用规范。在reddit和HN,那篇文章收到了很多赞同,但是我也收到了下面几个关于Go channel设计和规范的批评:

  1. 在不能更改channel状态的情况下,没有简单普遍的方式来检查channel是否已经关闭了
  2. 关闭已经关闭的channel会导致panic,所以在closer(关闭者)不知道channel是否已经关闭的情况下去关闭channel是很危险的
  3. 发送值到已经关闭的channel会导致panic,所以如果sender(发送者)在不知道channel是否已经关闭的情况下去向channel发送值是很危险的

继续阅读

Goroutine和channel的详细理解(二)

  • Go语言的并发和并行

不知道你有没有注意到一个现象,还是这段代码,如果我跑在两个goroutines里面的话:

var quit chan int = make(chan int)
func loop() {
    for i := 0; i < 10; i++ {
        fmt.Printf("%d ", i)
    }
    quit <- 0
}
func main() {
    go loop()   // 开两个goroutine跑函数loop, loop函数负责打印10个数
    go loop()
    for i := 0; i < 2; i++ {
        <- quit
    }
}

继续阅读

Goroutine和channel的详细理解(一)

如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。

Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。

以下是我入门的学习笔记。

继续阅读

Go新建文件权限与设置不符

问题:

fileName := "/Users/my/tests/perm_file"
f, _ := os.OpenFile(fileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
f.Close()

上述代码是打开一个文件,如果文件不存在则创建一个新文件,同时权限设置为0666(-rw-rw-rw-),但实际生成的文件权限可能与你认为的不一致:

继续阅读

Go中的os包之目录和文件(file)的操作

go中对文件和目录的操作主要集中在os包中,下面对go中用到的对文件和目录的操作,做一个总结笔记。在go中的文件和目录涉及到两种类型,一个是 type File struct,另一个是type Fileinfo interface,来看下这两种类型的定义:

继续阅读

GO中new 和 make的区别

一、make

make 只能为 slice、map或 channel 类型分配内存并初始化,同时返回一个有初始值的 slice、map 或 channel 类型引用,不是指针。

继续阅读

Docker资源管理探秘-Cgroups机制

随着Docker技术被越来越多的个人、企业所接受,其用途也越来越广泛。Docker资源管理包含对CPU、内存、IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往只知其然而不知其所以然。

本文将介绍Docker资源管理背后的Cgroups机制,并且列举每一个资源管理接口对应的Cgroups接口,让Docker使用者对资源管理知其然并且知其所以然。

继续阅读