bjmayor 发布于 2021-08-29

go指针

[TOC]

Go学习笔记–go指针:unsafe.Pointer

简单示例

Go语言是个强类型语言。也就是说Go对类型要求严格,不同类型不能进行赋值操作。指针也是具有明确类型的对象,进行严格类型检查。下面的代码会产生编译错误 :

package main import ( "fmt" ) func main() { u := uint32(32) i := int32(1) fmt.Println(&u, &i) // 打印出地址 p := &i // p 的类型是 *int32 p = &u // &u的类型是 *uint32,于 p 的类型不同,不能赋值 p = (*int32)(&u) // 这种类型转换语法也是无效的 fmt.Println(p) }

阅读全文 »

bjmayor 发布于 2021-08-29

Go语言编程模式实战-左耳朵耗子

[TOC]

《Go语言编程模式实战》

Go编程模式:切片、接口、时间和性能

Slice

首先,我来介绍下 Slice,中文翻译叫“切片”,这个东西在 Go 语言中不是数组,而是一个结构体,其定义如下:

type slice struct { array unsafe.Pointer //指向存放数据的数组指针 len int //长度有多大 cap int //容量有多大 }

一个空的 Slice 的表现如下图所示:

img

阅读全文 »

bjmayor 发布于 2021-08-29

go defer陷阱

[TOC]

golang defer陷阱

测验

下面程序的输出是什么?

package main



//!+f
func main() {
	println(f1())
	println(f2())
	println(f3())

}

func f1() (r int) {
	defer func() {
		r++
	}()
	return 0
}

func f2() (r int) {
	t := 5
	defer func() {
		t = t + 5
	}()
	return t
}

func f3() (r int) {
	defer func(r int) {
		r = r + 5
	}(r)
	return 1
}

答案

如果你的结果是

1
5
1

恭喜你,答对了。这篇文章您不必看了。

如果答错了。请继续阅读

阅读全文 »

bjmayor 发布于 2021-08-29

一起来说 Vim 语

一起来说 Vim 语

[TOC]

作为一款古老而具有持久生命力的编辑器,Vim 自有它的强大之处。很多人觉得 Vim 的学习曲线太陡峭了,为了能够把 Vim 用得风生水起,不得不记忆大量的命令。如果你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你一定会逐渐失去对它的兴趣。其实,Vim 以一种近乎自然语言的方式帮助你完成文本的编辑工作。只需要熟悉几条简单的语法,你就会坐在旋转座椅上前后打转,感慨美妙的生活又回来了。

我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。

阅读全文 »

bjmayor 发布于 2021-08-28

nginx常用配置

[TOC]

nginx 常用配置 nginx -V 查看编译参数。 参考很都博客,还有《极客时间》上的《Nginx核心知识150讲》。

Baisc Auth

语法: auth_basic string | off;
默认值: auth_basic off;
配置段: http, server, location, limit_except

默认表示不开启认证,后面如果跟上字符,这些字符会在弹窗中显示。

语法: auth_basic_user_file file;
默认值: —
配置段: http, server, location, limit_except

用户密码文件,文件内容类似如下:

ttlsauser1:password1
ttlsauser2:password2:comment

配置示例:

http {
	...
	location / {
		auth_basic "basic";
		auth_basic_user_file conf/htpasswd;
	}
}

密码生成

  • openssl openssl passwd -crypt 原始密码
  • htpasswd 需要安装yum -y install httpd-tools

阅读全文 »

bjmayor 发布于 2021-08-28

ssh使用介绍

[TOC]

ssh 是用的非常频繁的工具。这里总结下我常用的。

ssh 基本使用

用户名密码连接

ssh work@192.168.11.1

默认端口22, 可以通过 -p参数指定

密钥登录

ssh -i 密钥文件 work@192.168.11.1

aws的服务器都是这种方式登录。

免密登录

在A服务器ssh免密码登录B服务器。

  1. 在A服务器上生成密钥和公钥

    ssh-keygen
  2. 同步公钥到B服务器

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@serverA # 直接手动复制A服务器的~/.ssh/id_rsa.pub 到 B服务器的~/.ssh/authorized_keys 也是可以的。

阅读全文 »