mysql中的索引

索引

参考
参考

了解索引(索引概念)

  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 树和二叉树来说,最大的优势在于查询效率。

mysql

parallel安装的虚拟机登录root

打开terminal

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

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

tools

centos7安装docker

系统要求: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版本安装在系统中
docker

基于Centos7 搭建 gitlab

环境

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 以保持各软件包的最新状态。
CI/CD

gorm学习使用

gorm的使用

安装

  1. 使用指令进行安装:go get github.com/jinzhu/gorm

DDL操作

前提

  1. 新建一个数据库gorm_project
  2. 指定使用Utf8编码

数据库连接

对应的代码

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
package main

import (
"fmt"
"github.com/jinzhu/gorm"
//_ "github.com/go-sql-driver/mysql" //导入驱动方式一
_ "github.com/jinzhu/gorm/dialects/mysql" //导入驱动方式二,前面加上_表示不去校验用没用
)

/**
* @Author: yirufeng
* @Date: 2021/3/22 10:00 下午
* @Desc:
**/

var (
MYSQL_USERNAME = "root"
MYSQL_PASSWORD = "qwertyasdfgh"
MYSQL_IP = "81.69.26.201"
MYSQL_PORT = "3306"
MYSQL_DATABASE = "gorm_project"
)

func main() {

//parseTime用来处理time.Time类型的数据
//loc=Local表示根据本地时区走
//连接信息:用户名:密码@tcp(ip:port)/数据库名称?charset=utf8&parseTime=True&loc=Local
connInfo := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",
MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_IP, MYSQL_PORT, MYSQL_DATABASE)

//使用open来连接数据库
//第一个参数是dialect也就是指定数据库的类型
//第二个参数是连接信息
db, err := gorm.Open("mysql", connInfo)
if err != nil {
panic(err)
}

defer db.Close() //关闭空闲的连接
}
Golang

配置编程环境Linux服务器

前提:将所有软件包放到~目录下

安装Git

操作存放在~目录下的Git-v2.26.2.tar.gz文件

解压并安装

1
2
3
4
5
6
7
8
9
tar -zxvf Git-v2.26.2.tar.gz
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker
cd git-2.26.2/
yum -y install autoconf
make configure
./configure --prefix=/usr/local/git
make profix=/usr/local/git
make install
yum remove git

之后加入环境变量

  1. 编辑配置⽂件:vim /etc/profile
  2. 尾部加⼊Git的bin路径配置即可:
    • export GIT_HOME=/usr/local/git
    • export PATH=$PATH:$GIT_HOME/bin
  3. 执行source /etc/profile使环境变量⽣效即可。

安装JDK

操作存放在~目录下的jdk-8u161-linux-x64.tar.gz

卸载系统自带的openJDK

  1. rpm -qa | grep java
  2. yum -y remove 我们上一步执行的结果

开始安装我们自己的jdk

  1. cd /usr/local/
  2. mkdir java
  3. cd java
  4. tar -zxvf /root/jdk-8u161-linux-x64.tar.gz -C ./
  5. 编辑/etc/profile⽂件,在⽂件尾部加⼊如下JDK环境配置即可:
    1
    2
    3
    4
    JAVA_HOME=/usr/local/java/jdk1.8.0_161 
    CLASSPATH=$JAVA_HOME/lib/
    PATH=$PATH:$JAVA_HOME/bin
    export PATH JAVA_HOME CLASSPATH
  6. source /etc/profile
  7. 验证安装结果:执行java -versionjavac

安装node

操作存放在~目录下的node-v12.16.3-linux-x64.tar.xz

  1. cd /usr/local/
  2. mkdir node
  3. cd node
  4. tar -xJvf /root/node-v12.16.3-linux-x64.tar.xz -C ./
  5. 编辑/etc/profile⽂件,在⽂件尾部加⼊如下环境配置即可:
    1
    2
    # Nodejs 
    export PATH=/usr/local/node/node-v12.16.3-linux-x64/bin:$PATH
  6. source /etc/profile
  7. 验证安装结果:执行node -vnpm versionnpx -v都输出了版本信息即可。
linux

极客时间-畅聊Go发展和面试

go语言是基础架构层 paas 的最重要的项目

linux下的五种网络IO模型以及select/poll/epoll区别

前提知识:了解同步/异步,阻塞/非阻塞

参考:聊聊同步、异步、阻塞与非阻塞

正题:5种IO模型

  1. 同步阻塞
  2. 同步非阻塞
  3. 异步IO
  4. IO多路复用
  5. 信号驱动IO

参考:聊聊Linux 五种IO模型

select/poll/epoll区别

select, poll,以及epoll都是多路复用。

配合视频享用更加

这里插入我们的pdf图。。

场景:设计一个高性能的网络服务器,可以向多个客户端提供同时连接,并且可以处理这些客户端的请求。如何设计呢?

互联网系统架构演进之路

AtO9FL

dgn2mz t3v8sJ

E6ZtYU