Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

前言

实习结束总结一下实习的所见所闻,顺带分享一下之前实习以及秋招的面经

从3月份找实习到现在找工作以来,一直……

LVS84L

使用gin编写Go的后端程序,然后使用docker打包成镜像并在我们的阿里云ECS上进行部署

编写Go后端程序

项目目录如下:

1
2
3
4
go-web
├── go.mod
├── main.go
├── Dockerfile

main.go文件内容如下:

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
48
49
50
51
package main

import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)

/**
* @Author: yirufeng
* @Date: 2021/7/10 9:04 下午
* @Desc:
**/

type User struct {
Username string `json:"username"`
}

func main() {
engine := gin.Default()

engine.GET("/", func(c *gin.Context) {
startTime := time.Now()

c.JSON(http.StatusOK, gin.H{
"method": http.MethodGet,
"elapsedTime/ms": time.Since(startTime).Milliseconds(),
})
})

engine.POST("/", func(c *gin.Context) {
startTime := time.Now()

var u User
err := c.BindJSON(&u)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"error": err.Error(),
})
return
}

c.JSON(http.StatusOK, gin.H{
"method": http.MethodPost,
"elapsedTime/ms": time.Since(startTime).Milliseconds(),
"username": u.Username,
})
})

engine.Run(":8081")
}
This is a picture without description go

HGuDyZ

参考图例

  1. 参考网站
  2. Docker命令大全

consul环境搭建

方法一:docker安装consul集群

自己动手采用docker搭建一个consul集群
1
2
3
4
5
6
7
8
9
10
11
12
# 下载最新的consul镜像
docker pull consul
# 启动我们的第一个consul节点
docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect 2 -ui -bind=0.0.0.0 -client=0.0.0.0
# 获取我们第一个启动节点的ip地址:会输出一个ip地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' consul1
# 启动第二个consul节点
docker run --name consul2 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 这里是第一个节点的ip地址
# 启动第三个consul节点
docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 这里是第一个节点的ip地址
# 查看运行的容器
docker ps

之后访问localhost:8050就可以进入到我们的consul可视化界面

方法二:本机(mac)安装consul:

  1. 直接进入consul官网,下载可执行文件,然后解压到$HOME/Library/consul/
  2. 同时将路径加入到我们的系统环境变量~/.bash_profile
    1
    2
    # add consul
    export PATH=$PATH:$GOPATH/bin:$HOME/Library/consul
  3. 然后刷新我们的配置,此时使用consul执行命令consul members来查看我们docker搭建的consul集群

consul相关命令补充:

  1. vtxNib
  2. zT7xfI

consul参考资料:

  1. 参考1
  2. 参考2
  3. docker安装consul集群

饶大文章汇总

Go语言

深度解密系列
Go语言其他

索引

参考
参考

了解索引(索引概念)

  1. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
  2. 索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B数及其变种B+数。
  3. 更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

mysql索引的数据结构以及分类

类似问题: 数据库索引结构是什么样的(我回答B+树,然后问对磁盘有什么优势夺命追问,我说降低IO次数,问为什么)
类似问题: 数据库使用b+树的好处
类似问题: b+树的特性,为啥要用到这
类似问题: B+ Tree
类似问题: 谈谈索引的数据结构?说了 B+树
类似问题: B+树和 B-树的区别以及优点?
类似问题: 为什么不用搜索树?
类似问题: B+树的特点
类似问题: mysql 索引 2次
类似问题:mysql索引结构。

从数据结构的角度看,常用的索引可以分为full-text索引,hash索引,b+树索引:MjiiVj

在创建表时,InnoDB 存储引擎默认使用表的主键作为主键索引,该主键索引就是聚簇索引(Clustered Index),如果表没有定义主键,InnoDB 就自己产生一个隐藏的 6 个字节的主键 ID 值作为主键索引,而创建的主键索引默认使用的是 B+Tree 索引。

B+Tree 相比于 B 树和二叉树来说,最大的优势在于查询效率。

打开terminal

  1. 执行sudo passwd
  2. 出现Password:,键入自己当前用户的密码
  3. 出现Enter new UNIX password:这个是root的密码
  4. 出现Retype new UNIX password:重复root的密码

之后就可以使用su命令以及刚才设置的root用户密码切换到root用户

系统要求:docker支持64位Centos7,并且要求内核版本(查看Linux系统内核版本:uname -r)不低于3.10

卸载旧版本

安装docker

卸载旧版本

旧版本的docker称为docker或docker-engine,使用如下命令卸载旧版本

1
sudo yum remove docker docker-common docker-selinux docker-engine
安装方式一:使用yum安装
1
sudo yum install docker-ce

如果执行之后返回的是没有可用软件包,此时我们需要安装必要的软件依赖以及更新增加docker-ce yum源

1
2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
执行完这两条命令之后我们便可以重新执行`sudo yum install docker-ce`进行安装
安装方式二:使用脚本安装

在测试或开发环境中docker官方为了简化安装流程,提供了一套便捷的安装脚本,centos系统上可以使用这套脚本进行安装

1
2
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
执行完这个命令之后,系统会自动将一切工作准备好,并把docker ce的Edge版本安装在系统中

环境

centos7腾讯云服务器一台

步骤

前提
  1. 更新软件包:yum update -y
  2. 安装 sshd:yum install -y curl policycoreutils-python openssh-server
  3. 启用并启动sshd:systemctl enable sshdsystemctl start sshd
  4. 配置防火墙:
    1. 打开 /etc/sysctl.conf 文件,在文件最后添加新的一行并按 Ctrl + S 保存:net.ipv4.ip_forward = 1
    2. 启用并启动防火墙:systemctl enable firewalldsystemctl start firewalld
    3. 放通 HTTP:firewall-cmd --permanent --add-service=http
    4. 重启防火墙:systemctl reload firewalld
    5. 在实际使用中,可以使用 systemctl status firewalld 命令查看防火墙的状态。
  5. 安装postfix
    1. GitLab 需要使用 postfix 来发送邮件。当然,也可以使用 SMTP 服务器,具体步骤请参考 官方教程
    2. 安装:yum install -y postfix
    3. 打开 /etc/postfix/main.cf 文件,在第 119 行附近找到 inet_protocols = all,将 all 改为 ipv4 并按 Ctrl + S 保存:inet_protocols = ipv4
    4. 启用并启动 postfix:systemctl enable postfix + systemctl start postfix
配置 swap 交换分区

由于 GitLab 较为消耗资源,我们需要先创建交换分区,以降低物理内存的压力。在实际生产环境中,如果服务器配置够高,则不必配置交换分区。

  1. 新建 2 GB 大小的交换分区:dd if=/dev/zero of=/root/swapfile bs=1M count=2048
  2. 格式化为交换分区文件并启用:mkswap /root/swapfileswapon /root/swapfile
  3. 添加自启用。打开 /etc/fstab 文件,在文件最后添加新的一行并按 Ctrl + S 保存:/root/swapfile swap swap defaults 0 0
  4. 将软件源修改为国内源:由于网络环境的原因,将 repo 源修改为清华大学。在 /etc/yum.repos.d 目录下新建 gitlab-ce.repo文件并保存。内容如下:
    1
    2
    3
    4
    5
    [gitlab-ce]
    name=Gitlab CE Repository
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
    gpgcheck=0
    enabled=1
安装gitlab
  1. 刚才修改过了 yum 源,因此先重新生成缓存:yum makecache

    (此步骤执行时间较长,一般需要 3~5 分钟左右,请耐心等待)

  2. 安装 GitLab::yum install -y gitlab-ce

    (此步骤执行时间较长,一般需要 3~5 分钟左右,请耐心等待)

  3. 配置 GitLab 的域名(非必需):打开 /etc/gitlab/gitlab.rb 文件,在第 13 行附近找到 external_url 'http://gitlab.example.com',将单引号中的内容改为自己的域名(带上协议头,末尾无斜杠),并按 Ctrl + S 保存。例如:external_url 'http://work.myteam.com' 记得将域名通过 A 记录解析到 centos7对应的IP 哦。
  4. 设置完成后使用如下命令重启 GitLab的配置:sudo gitlab-ctl reconfigure + 重启gitlab服务sudo gitlab-ctl restart

    (此步骤执行时间较长,一般需要 5~10 分钟左右,请耐心等待)

  5. 至此,我们已经成功地在 CentOS 7 上搭建了 GitLab。 现在可以在这里(http://centoss7主机ip地址/)访问 GitLab 了。
注意事项
  1. 在实际生产中,建议您使用 2 核 4 GB 或更高配置的 CVM。点击这里 可以查看 GitLab 官方推荐的配置和可承载人数对应表。
  2. 再次提醒您,定期执行 yum update -y 以保持各软件包的最新状态。