1: 277 items found.

Go语言fmt包Printf方法详解

Go语言的标准输出流在打印到屏幕时有些参数跟别的语言(比如C#和Java)不同,下面是我整理的一些常用的格式化输入操作。

General

  • %v 以默认的方式打印变量的值
  • %T 打印变量的类型

Integer

  • %+d 带符号的整型,fmt.Printf("%+d", 255)输出+255
  • %q 打印单引号
  • %o 不带零的八进制
  • %#o 带零的八进制
  • %x 小写的十六进制
  • %X 大写的十六进制
  • %#x 带0x的十六进制
  • %U 打印Unicode字符
  • %#U 打印带字符的Unicode
  • %b 打印整型的二进制
More ~

RPM 中的 %config 和 %config(noreplace)

打开一个 rpm spec 文件,在 %files 段有一个指令很常见:%config(noreplace),这个指定到底是干什么用的呢?
答案是,该指令决定如果一个文件被管理员修改过后,下次更新该文件所在的rpm包时,该文件的存在状态。例如,一般升级软件时,配置文件是不会变化的,而主程序则一般需要被升级(替换)。
对于 spec 文件中在 %files 段的某一个文件,我们要讨论三种情况:

  1. 没有带 %config 指令。例如:%{_sbindir}/redis-server
  2. 带了 %congfig 指令。例如:%config %{_sysconfdir}/redis/redis.conf
  3. 带了 %config(noreplace) 指令。例如:%config(noreplace) %{_sysconfdir}/redis/redis.conf
More ~

centos 配置dhcp简记

yum -y install dhcp

配置文件:/etc/dhcp/dhcpd.conf

示例配置文件:/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

default-lease-time 7200;
max-lease-time 14400;
subnet 10.1.119.0 netmask 255.255.255.0 {
  option routers 10.1.119.128;
  option domain-name-servers 10.1.102.2;
  range 10.1.119.200 10.1.119.220;
}
More ~

git 找回已删除的文件

找出已删除文件的提交记录:

git rev-list -n 1 HEAD -- <file_path>

返回为commit id

使用提交记录ID检出文件, commit id后缀**^**:

git checkout <commit id>^ -- <file_path>

或者一行命令:

$file 是文件路径

git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"
More ~

go可变参数传数组值

在https://github.com/qiniu/qmgo 中 有个方法是传排序参数,通常是一个或多个。

func (q *Query) Sort(fields ...string) QueryI {
	if len(fields) == 0 {
		// A nil bson.D will not correctly serialize, but this case is no-op
		// so an early return will do.
		return q
	}

	var sorts bson.D
	for _, field := range fields {
		key, n := SplitSortField(field)
		if key == "" {
			panic("Sort: empty field name")
		}
		sorts = append(sorts, bson.E{Key: key, Value: n})
	}
	newQ := q
	newQ.sort = sorts
	return newQ
}

若需传递多个fields, fields是个可变参数, 传值是你可能想支持多个,但对于参数个数也清楚, 那要先定义个字符串数组。

More ~