Hollis

<span style="font-weight: bold;">Hollis写字的地方...</span>

Leng-xuan-2's Leetcode chart

切片传参的问题

以下内容来自:毛毛鱼 - golang 切片传参


今天写题时遇到一个需要用到大顶堆的题,以往我是会手写一个堆的,但今天想熟悉一下 go 的标准包就用了标准库提供的 heap 包,实现接口后发现运行不对,排查后发现是实现函数传参时 Push 和 Pop 方法传了切片而不是切片的指针,因此要留个记录,防止再掉坑~

函数参数,带*和不带*的区别

1
2
3
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
	DefaultServeMux.HandleFunc(pattern, handler)
}

为什么 ResponseWriter 不带 * ,Request 带 *,什么时候带?什么时候不带呢?

在Go语言中,函数参数的语法规则是由类型名称和类型修饰符组成的。类型修饰符 “*” 表示指针类型,用于指向某个类型的指针。在函数签名中,类型修饰符的位置决定了传递参数的方式。

切片扩容机制

切片定义

slice源代码定义:

1
2
3
4
5
type slice struct {
	array unsafe.Pointer //指向底层数组的指针
	len   int            //切片长度
	cap   int            //切片容量
}

如果仅仅是提供通过下标值来操作元素的类数组操作接口,那么切片也不会在 Go 中占据重要的位置。Go 切片还支持一个重要的高级特性:动态扩容。我们提到过切片类型是部分满足零值可用理念的,即零值切片也可以通过 append 预定义函数进行元素赋值操作:

Nginx反向代理实例

1.HTTPS默认端口

监听 443 端口(HTTPS 的标准端口),并配置 SSL 证书。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
server {
	listen 443 ssl;
	server_name www.xxxxx.com;

	ssl_certificate /root/ssl/www.xxxxx.com.pem;
	ssl_certificate_key /root/ssl/www.xxxxx.com.key;

	ssl_session_cache    shared:SSL:1m;
	ssl_session_timeout  5m;
	ssl_ciphers  HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers  on;

	location / {
	    root   /www/your_project;
		index  index.html index.htm;
    }
}
逐行解释

这个 Nginx 配置块定义了一个服务器的设置,特别是针对通过 HTTPS 协议访问的 www.xxxxx.com 域名。以下是每一行配置的具体含义:

0%