Hebicheng Blog

「离开世界之前 一切都是过程」

go切片扩容机制理解

go 切片(slice) go切片是go中十分方便的一种包装,它本身不拥有任何数据,只是对现有的数组进行引用。但是在切片的容量(capaciy)发生改变时,切片指向的数组地址时候改变的,也就是说,在切片容量发生改变时,go内部会申请一个新的数组,然后将原数组中的数据复制到新数组中,同时切片指向新的数组。 下面我们通过代码来实际感受一下。 1 2 3 4 5 s := [...]int ...

记一次服务器无法通过public Key登录

前一天还好好的服务器突然无法登陆了,怎么办? 背景故事 今天同学给我发了个截图 服务器突然无法登陆了,提示说用户密钥未在远程主机上注册。看到这个消息的我有点慌,难道是服务器被人黑了,然后删除了我们的公钥?我赶紧访问该服务器上的服务,还好,服务是正常的(松口气~)。 那是什么原因导致的登录不上的问题呢,难道是五一放假,机房断了电,导致存放公钥的文件损坏了?不会这么巧吧,我这样...

go的Goroutine、Channel以及Deadlock的一些理解

go 协程(Goroutine) Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与线程相比,创建一个 Go 协程的成本很小。因此在 Go 应用中,常常会看到有数以千计的 Go 协程并发地运行。 在go语言中启动一个协程很简单: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package main import ( ...

C++ STL库的使用

本文简要总结了在刷题和编程过程中常常用到的STL库的一些数据结构和算法。 一. 容器 1. stack 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stack> //定义 stack<int> st; //stack拥有的一些方法 //堆栈为空则返回真 st.empty() //移除栈顶元素 st.pop() ...

为服务器配置ssh PublicKey登录

通过为服务器配置SSH 密钥登录,提高服务器安全性 1. 准备工作 首先利用密钥生成工具生成密钥对: 在服务器上使用ssh-keygen命令生成(一路回车即可) 生成的密钥对默认生成在当前用户的~/.ssh/目录下,id_rsa是密钥,id_rsa.pub是公钥。在~/.ssh/目录下新建authorized_keys文件,并将公钥内容复制到其中。或者也可以用cat id...

用Git管理你的代码

用Git管理你的代码 (以sicnu gitlab为例) 一、什么是Git Git是一个分布式的版本管理系统。 从定义上来说,Git有两个值得注意的地方:版本管理和分布式。 (1)版本管理 版本管理顾名思义就是对文档或程序的版本进行管理(git主要是针对文本文件管理)。当你将某一工作目录使用git进行管理后,此工作目录下的任何文件的修改都会被git记录,这可以让你在任何时候回退和...

利用autossh实现内网穿透

利用autossh实现内网穿透 目标机器: 内网服务器A 外网服务器B 其他服务器C 内网服务器利用autossh将端口转发给外网服务器(需要服务器A能访问到B) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 autossh -M 10086 -fCNR 8087:127.0.0.1:80 ubuntu@heb1c.cn -p 22 # 细节 ...

Gitlab 私有化部署实践

Gitlab 私有化部署实践 (复用443端口作为网页和ssh端口,并使用https://ip/gitlab代理整个gitlab服务) 以OJ服务器为例 1 nginx 配置 配置原则: 尽量不影响OJ容器的内的nginx服务和gitlab容器内的nginx服务 复用443端口作为gitlab的ssh端口 443端口同时要代理OJ和gitlab的Web服务 ...

Docker 使用记录(持续更新)

docker 安装 使用脚本安装: 1 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun docker Aliyun 加速 1 2 3 4 5 6 7 8 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF'...

利用nginx实现多端口的https访问

利用nginx反向代理,通过配置多域名,实现在一台机器上利用不同的域名访问不同的服务,并且实现https。 先上代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ...