认证是数据库服务器对客户端用户身份鉴别的过程,并且确定客户端以该用户是否可以连接数据库服务器。PostgreSQL提供多种不同的客户端认证方式,而pg_hba.conf就是客户端认证的配置文件,pg_hba即PostGreSQL host-base authentication的简称。
微信小程序的app.json配置
app.json文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。下面对app.json文件进行逐个分析:
Tips : 该文件时一个json文件,故不支持注释
MySQL 5.7 的新特性
本文翻译自官方mysql 5.7使用手册,参考原文地址:https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html
一、新增特性
1、安全提升
1.1 要求mysql.user表中plug字段不能为空,如果为空,则该用户被禁止使用。
1.2 增加密码过期策略
1.3 帐户可以加锁解锁
1.4 使用mysql_ssl_rsa_setup
工具能够更容易创建使用ssl
MySQL的特性
本文翻译自官方mysql 5.7使用手册,参考原文地址:https://dev.mysql.com/doc/refman/5.7/en/features.html
一、内部结构与可移植性
1. 使用C和C++编写
2. 使用多种不同的编译器测试
3. 可在多个不同的平台中运行,可参考:https://www.mysql.com/support/supportedplatforms/database.html
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的笔记。
MariaDB的安装与配置
中文官方文档:https://mariadb.com/kb/zh-cn/
一、YUM安装
查看YUM可安装的版本:http://yum.mariadb.org/
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2.9/centos7-amd64/ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
PostgreSQL与Mysql的不同之处
PostgreSQL的安装与配置
官方地址:https://www.postgresql.org,中文地址:http://www.postgres.cn/index.php/home
官方下载地址:https://www.postgresql.org/ftp/source/
官方中文文档:http://www.postgres.cn/docs/9.6/index.html
本人仅介绍PostgreSQL的源码安装,其他的安装方式(YUM安装),请参考:https://www.postgresql.org/download/linux/redhat/
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设计和规范的批评:
- 在不能更改channel状态的情况下,没有简单普遍的方式来检查channel是否已经关闭了
- 关闭已经关闭的channel会导致panic,所以在closer(关闭者)不知道channel是否已经关闭的情况下去关闭channel是很危险的
- 发送值到已经关闭的channel会导致panic,所以如果sender(发送者)在不知道channel是否已经关闭的情况下去向channel发送值是很危险的
Goroutine Channel Select 的用法和理解
-
了解进程、线程、协程
本文不详细解释这三个名词的意思,下面有一篇文章,不懂的同学可以参考看看:http://www.cnblogs.com/work115/p/5620272.html
-
Goroutine的使用
Goroutine 奉行通过通信来共享内存,而不是共享内存来通信。使用goroutine很简单,只需要用到一个关键字go,我们用一段代码来示例一下如何使用go关键字
Goroutine和channel的详细理解(三)
-
Go语言并发的设计模式和应用场景
以下设计模式和应用场景来自Google IO上的关于Goroutine的PPT:https://talks.golang.org/2012/concurrency.slide
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的区别
GO中断言interface类型的方法
Docker资源管理探秘-Cgroups机制
随着Docker技术被越来越多的个人、企业所接受,其用途也越来越广泛。Docker资源管理包含对CPU、内存、IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往只知其然而不知其所以然。
本文将介绍Docker资源管理背后的Cgroups机制,并且列举每一个资源管理接口对应的Cgroups接口,让Docker使用者对资源管理知其然并且知其所以然。