Mysql数据库简介

什么是数据?

​ 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材,数据是信息的表现形式和载体,可以是符号,文字,数字,语音,图像,视频等,数据和信息是不可分离的,数据是信息的表达,信息是数据的内涵,数据本身没有任何意义,数据只有对实体行为产生影响才成为信息。在计算机系统中,数据以二进制信息单元0,1形式表示

什么是数据库?

​ 数据库(Database): 是按照数据结构来组织、存储和管理数据的仓库,给我们提供了一种以关系的方式来存放数据的方法,能够解决文本性存储数据的劣势。

数据库技术构成

数据库系统由硬件部分和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机,存储设备等。软件部分则主要包括DBMS,(DB数据库管理系统)支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术。

数据库系统主要三个部分

数据库:用于存储数据的地方

数据库管理系统:用于 管理数据库的软件

数据库的应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。

数据库(database system) 提供了一个存储空间以存储各种数据,可以将数据库 视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。

​ 数据库管理系统(database Management System,DBMS) 是用户创建。管理和维护数据库时所用的软件,位于用户与操作系统之间,对数据库进行统一管理,DBMS能定义数据的存储结构,提供数据的操作机制,维护数据库的安全性,完整性和可靠性。

数据库的应用程序:(Database Application) 虽然已经有了DBMS、但是在很多情况下,DBMS无法满足对数据库管理的要求,数据库应用程序的使用可以满足对数据管理的更高要,可以使管理数据更加直观,数据库应用程序负责于DBMS进行通信,访问个和管理DBMS数据中存储的数据,允许用户插入,修改,删除DB的数据。

数据库访问技术:不同的程度设计语言会有各自不同的数据库访问技术,程序语言通过这些技术,执行sql语句,进行数据库管理,主要的数据库访问技术有:

# ODBC:(open database connectivity) 开放数据库互联。技术为访问不同的sql数据库提供了一个共同的接口。

# JDBC:(java data base connectivity)java数据库连接,用于java应用程序连接标准方法。

# ADO.NET:是微软在.NET 框架下开发设计的一组用于 和数据源进行交互的 面向对象 类库。

# PDO:(php data object) 为php访问数据定义了一个轻量级、一致性的接口。它提供了一个数据访问抽象层,

数据库分类

关系型数据库

库中有表,几个表之间有关联的,拥有共同的列,称之为关系型数据库

Oracle						# 1521
DB2 # 5000
Mysql,Mariadb # 3306
SQLServer # 1433
非关系型数据库

通常是以Key-value形式存储的,不支持SQL语句,没有表结构,配置简单,低廉学习成本,能很好作为Mysql中间层:

# 1. 键值存储:  Redis<6379>  Memcached<11211>,因为相比其他数据存储没有数据结构,又工作在内存中,所以性能很高.
# 2. 列式存储: HBase:
# 3. 文档存储: Documentation , MongoDB<27017>

分布式数据库: 通过分片机制进行数据分布,每个节点都能接收客户端请求<去中心化>,并且持有全局元数据的一部分数据.

# Hadoop(HDFS):  适用于大文件存储,Apache公司的产品,java程序编写
# FastDFS(开源软件): 适用于小文件存储(网盘,短视频,images),对于高并发有很好的支持.

E-R模型

# 当前物理的数据库都是按照E-R模型进行设计的

# E表示entry,实体
# R表示relationship,关系
# 一个实体转换为数据库中的一个表
# 关系描述两个实体之间的对应规则(关系),包括

一对一

角色表中的一条数据 对应 员工表中 的一条员工的数据

roles角色表

id role
1 ceo

staffs员工表

id name role_id
1 雷军 1

一对多

一个班级表的一条数据可以对应学生表中多条数据

id class
1 高三一班
2 高三二班
id name class_id
1 youmen 1
2 alice 2
3 flying 2

多对一

一个老师可以教授多个班级,一个班级可以有多个老师。

此时,就需要三个表

# 1. 老师表
# 2. 班级表
# 3. 用来表示他们关系的表

这个第三张表就是多对多关系需要的表

teacher表

id name
1 晗哥
2 西瓜甜

class表

id name
1 云计算1810
2 云计算1809
3 云计算1808

teacher2class表

id teacher_id class_id
1 1 1
2 1 3
3 2 1
4 2 2

关系点表示被转换为数据库表中的一个列 ,在关系型数据库中一行就是一个对象

RDBMS

RDBMS 指的是关系型数据库管理系统。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 微软的 SQL Server和 Microsoft Access, IBM DB2, 甲骨文的Oracle以及开源的 MySQL和PostgreSQL(读作:post - gress - Q - L, 简略念为"postgres") 。

RDBMS 中的数据存储在被称为表(tables)的数据库对象中。

表是相关的数据项的集合,它由列和行组成。

Mysql5.7主要特性

# 更好的性能:对于多核CPU、固态硬盘、锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是吾等用户更关心的
# 更好的InnoDB存储引擎
# 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。此外,GTID在线平滑升级也变得可能
# 更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的难题
# 原生JSON类型的支持
# 更好的地理信息服务支持:InnoDB原生支持地理位置类型,支持GeoJSON,GeoHash特性
# 新增sys库:以后这会是DBA访问最频繁的库
QPS

Queries Per Second意思是每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

SQL介绍

# SQL语言主要用于存取数据,查询数据,更新数据和管理关系数据库系统,由IBM开发,分为四种类型
# DDL语句 数据库定义语言(Create,Alter,Drop,Declare)
# 用于定义或改变表的结构,数据类型,表之间的连接和约束等初始化工作上,他们大多在建表时使用. # DML语句 数据库操作语言(Select,Delete,Update,Insert) # 用来对数据库里的数据进行操作的语言. # DCL语句 数据库控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
# 用来设置或更改数据库或角色权限的语句,只有sysadmin,dbcreator,db_owner等人员才能执行. # DQL语句 数据库查询语言(select)

字符集

查看目前mysql所支持的所有字符集
SHOW CHARACTER SET;
SHOW CHARACTER SET LIKE 'latin%';
查看默认字符集
show variables like 'collation_%';

show variables like 'character_set_%';

# 查看具体某个数据库的字符集
use db_name
SELECT @@character_set_database, @@collation_database;
# 或者
use db_name
status
配置文件设置字符集
[client]
# 其他客户端,比如 pymysql
default-character-set=utf8
[mysql]
# mysql 客户端
default-character-set=utf8
[mysqld]
# 服务器端的字符集
character-set-server = utf8 # 服务器端的排序规则
collation-server = utf8_unicode_ci
排序规则

给定的字符集始终至少有一个排序规则,大多数字符集都有几个排序规则。

SHOW COLLATION 语句显示所有可用的排序规则。

同样支持 LIKEWHERE 子句

SHOW COLLATION WHERE Charset = 'latin1';

每个字符集都有一个默认排序规则

latin1utf8 分别是 latin1_swedish_ciutf8_general_ci

后缀含义

后缀 含义
_ci 不区分大小写
_cs 区分大小写

如果仅指定字符集(例如 latin1)但不指定排序规则,则与说明相同。

要查看适用于当前会话的字符集和排序规则系统变量的值,请使用以下语句:

mysql> SELECT * FROM performance_schema.session_variables
WHERE VARIABLE_NAME IN (
'character_set_client', 'character_set_connection',
'character_set_results', 'collation_connection'
) ORDER BY VARIABLE_NAME;

MysqlRPM安装

#!/usr/bin/env bash
# Author: ZhouJian
# Mail: 18621048481@163.com
# Time: 2019-9-3
# Describe: CentOS 7 Install Mysql.rpm Script
clear
echo -ne "\\033[0;33m"
cat<<EOT
_oo0oo_
088888880
88" . "88
(| -_- |)
0\\ = /0
___/'---'\\___
.' \\\\\\\\| |// '.
/ \\\\\\\\||| : |||// \\\\
/_ ||||| -:- |||||- \\\\
| | \\\\\\\\\\\\ - /// | |
| \\_| ''\\---/'' |_/ |
\\ .-\\__ '-' __/-. /
___'. .' /--.--\\ '. .'___
."" '< '.___\\_<|>_/___.' >' "".
| | : '- \\'.;'\\ _ /';.'/ - ' : | |
\\ \\ '_. \\_ __\\ /__ _/ .-' / /
====='-.____'.___ \\_____/___.-'____.-'=====
'=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
建议系统 CentOS7
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# PS:请尽量使用纯净的CentOS7系统,我们会在服务器安装Mysql5.7,
# 将mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar包和脚本放到root目录下执行即可,密码为ZHOUjian.20
EOT
echo -ne "\\033[m"
init_security() {
systemctl stop firewalld
systemctl disable firewalld &>/dev/null
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
sed -i '/^GSSAPIAu/ s/yes/no/' /etc/ssh/sshd_config
sed -i '/^#UseDNS/ {s/^#//;s/yes/no/}' /etc/ssh/sshd_config
systemctl enable sshd crond &> /dev/null
echo -e "\033[32m [安全配置] ==> OK \033[0m"
}
init_yumsource() {
if [ ! -d /etc/yum.repos.d/backup ];then
mkdir /etc/yum.repos.d/backup
fi
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup 2>/dev/null if ! ping -c2 www.baidu.com &>/dev/null
then
echo "您无法上外网,不能配置yum源"
exit
fi
curl -o /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
timedatectl set-timezone Asia/Shanghai
echo "nameserver 114.114.114.114" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
chattr +i /etc/resolv.conf echo -e "\033[32m [YUM Source] ==> OK \033[0m"
}
init_mysql() {
rpm -e mariadb-libs --nodeps
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
tar xvf /root/mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /usr/local/
cd /usr/local
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm \
mysql-community-client-5.7.23-1.el7.x86_64.rpm \
mysql-community-common-5.7.23-1.el7.x86_64.rpm \
mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rm -rf mysql-community-*
}
changepass() {
sed -i '/\[mysqld]/ a skip-grant-tables' /etc/my.cnf
systemctl restart mysqld
mysql <<EOF
update mysql.user set authentication_string='' where user='root' and Host='localhost';
flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
systemctl restart mysqld
yum -y install expect expect <<-EOF
spawn mysqladmin -uroot -p password "ZHOUjian.20"
expect {
"password" { send "\r" }
}
expect eof
EOF
systemctl restart mysqld
}
main() {
init_hostname
init_security
init_yumsource
init_mysql
changepass
}
main

修改Mysql密码

# 修改Mysql密码下面有三种办法
# 1.刚安装好的mysql,可以从/var/log/mysqld.log获取临时密码
grep "password" /var/log/mysqld.log
[root@mysql ~]# mysql -uroot -p
Enter password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ZHOUjian.22'; # 2.mysqladmin -uroot -p password "Baidu.123.com"
Enter password: # 3.实验环境不知道root密码操作方法如下
sed -i '/\[mysqld]/ a skip-grant-tables' /etc/my.cnf
systemctl restart mysqld
mysql <<EOF
update mysql.user set authentication_string='' where user='root' and Host='localhost';
flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
systemctl restart mysqld
mysqladmin -uroot -p password "ZHOUjian.20"
Enter password: # 此处回车一下即可 # 4.mariadb修改密码
use mysql
UPDATE user SET password=password('ZHOUjian.20') WHERE user='root';
MariaDB [mysql]> flush privileges; # 如果嫌登陆Mysql输入密码麻烦,可以使用以下办法,只需要mysql就可以进入数据库
vim /etc/my.cnf
[client]
password=admin
user=root
systemctl restart mysqld Or mariadb
修改用户密码

ALTER USER

# 基本使用
ALTER USER shark@'localhost' IDENTIFIED BY '123456'; # 修改当前登录用户
ALTER USER USER() IDENTIFIED BY '123456'; # 使密码过期
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE; # 使密码从不过期
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; # 按默认设置过期时间
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE DEFAULT; # 指定过期间隔
ALTER USER shark@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE INTERVAL 90 DAY;
Mysql8.0修改密码
# 1. 需要先创建新的用户

CREATE USER '你的用户名'@'localhost' IDENTIFIED BY '你的密码';

# 2. 把刚刚创建的数据库的管理权限给予刚刚创建的MySQL用户
GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的用户名'@'localhost'; # 3. 最后别忘了刷新权限,使用设置及时生效
FLUSH PRIVILEGES;

Mysql.tar包方式安装安装

# 安装源码Mysql
#!/usr/bin/env bash
# Author: ZhouJian
# Mail: 18621048481@163.com
# Time: 2019-9-3
# Describe: CentOS 7 Install Mysql.tar Script # 此处为编译好的tar包,具体编译有时间再亲测一遍
Deplay(){
rpm -e mariadb-libs --nodeps
setenforce 0
systemctl stop firewalld
systemctl enable firewalld
sed -i '/^SELINUX=/ s/enforcing/disabled' /etc/ssh/sshd_config
sed -i '/^GSSAPIAu/ s/yes/no/' /etc/ssh/sshd_config
sed -i '/^#UseDNS/ {s/^#//;s/yes/no}' /etc/ssh/sshd_config id mysql > /dev/null
if [ $? -eq 0 ];then
echo "mysql user exist"
else
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
fi
if [ ! -d /usr/local/mysqld ];then
tar xf mysql-5.7.26-bin.tar.xz -C /usr/local/
chown mysql.mysql /usr/local/mysqld/ -R
fi
echo "export PATH=$PATH:/usr/local/mysqld/mysql/bin" >> /etc/profile
source /etc/profile
cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysqld/mysql
datadir = /usr/local/mysqld/data
tmpdir = /usr/local/mysqld/tmp
socket = /usr/local/mysqld/tmp/mysql.sock
pid_file = /usr/local/mysqld/tmp/mysqld.pid
log_error = /usr/local/mysqld/log/mysql_error.log
slow_query_log_file = /usr/local/mysqld/log/slow_warn.log
user = mysql
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8
default_storage_engine = InnoDB
EOF ln -s /usr/local/mysqld/mysql/support-files/mysql.server /usr/bin/mysqldctl
mysqldctl start
ln -s /usr/local/mysqld/tmp/mysql.sock /tmp/mysql.sock
mysqldctl restart
sed -i '/\[mysqld]/ a skip-grant-tables' /etc/my.cnf
mysqldctl restart
mysql <<EOF
update mysql.user set authentication_string='' where user='root' and Host='localhost';
flush privileges;
EOF
sed -i '/skip-grant/d' /etc/my.cnf
mysqldctl restart
yum -y install expect
expect <<-EOF
spawn mysqladmin -uroot -p password "ZHOUjian.20"
expect {
"password" { send "\r" }
}
expect eof
EOF
mysqldctl restart
}
Deplay

Mysql源码部署

卸载Mysql冲突包并安装依赖包
rpm -e --nodeps mariadb-libs
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel # cmake:
# 由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。 # Boost:
# 从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本, 这个选择源码安装 # GCC:
# 是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC # bison:
# Linux 下 C/C++语法分析器 # ncurses:
# 字符终端处理库
下载源码
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz

创建目录用户
useradd -M -s /sbin/nologin mysql
# -M 不创建用户的家目录
# -s 指定一个不能登录的 shell # 创建安装目录并授权
mkdir -p /mysql/data
chown -R mysql:mysql /usr/local/mysql
chown -R mysql.mysql /mysql/data
chmod 750 /mysql/data
解压和预编译
tar xzf boost_1_59_0.tar.gz
tar xzf mysql-5.7.25.tar.gz cd mysql-5.7.25 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mysql/data \
-DWITH_BOOST=../boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1 # 编译安装
make -j $(grep processor /proc/cpuinfo | wc -l)
make install
添加环境变量
echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile

添加Mysql服务到systemd
cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld

# 授予可执行的权限
chmod +x /etc/init.d/mysqld # 设置开机自启动
systemctl enable mysqld
修改配置文件
[client]
default-character-set=utf8mb4 [mysql]
default-character-set=utf8mb4 [mysqld]
################ basic settings ################
bind-address = 0.0.0.0
pid-file = /var/run/mysql.pid
user = mysql character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci # 如果是 OFF 或(0),mysqld 在检查客户端连接时解析主机名。
# 如果是 ON 或(1),mysqld只使用 IP;
skip_name_resolve = 1 max_allowed_packet = 16777216 # 允许的最大同时客户端连接数。默认情况下,这是151
max_connections = 2000 # 运行错误连接后尝试的次数,默认 100
max_connect_errors = 1000
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728 # 交互式客户端连接后,没有任何操作的情况下,继续保持连接状态的秒数
interactive_timeout = 1800 # 服务器在关闭之前等待非交互式连接上的活动的秒数。
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
key_buffer_size = 256M
transaction_isolation = READ-COMMITTED ############ log settings ############
log_error=/tmp/mysqld.log
expire_logs_days = 30
slow_query_log = 1
long_query_time = 2 # 在写入慢查询日志的语句中包含慢速管理语句
log_slow_admin_statements = 1 # 检查少于此行数的查询结果不会记录到慢查询日志中。
min_examined_row_limit = 100 ########### innodb settings ##########
innodb_buffer_pool_size = 1G
innodb_sort_buffer_size = 27108864
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lock_wait_timeout = 5
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_thread_concurrency = 8
innodb_flush_neighbors = 1
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_file_per_table = ON
innodb_log_file_size = 500M
innodb_log_buffer_size = 20M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit=2
初始化数据库
mysqld  --initialize  --user=mysql

--initialize-insecur
# 使用空密码。你应该在生产中及时修改密码。
# 或者使用 --initialize
# 这样的话,会为root用户生成一个随机的密码。这个随机密码可能会被输出到初始化过程中,也有可能输出到错误日志中。
初始化服务
systemctl  start  mysql

# 因为使用了--initialize,所以如果登录不知道密码可以查看服务器日志
mysql -u root -p # 使用ALTER语句修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password'; # 登录数据库
mysql -uroot -skip-password # 使用ALTER语句修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
授权root用户才能本地访问数据库
# 登录到 `mysql` 数据库,执行如下语句进行授权。

CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password'; # 上面的这两条语句也可以放在一个普通文件中,初始化的时候使用 `--init-file` 选项来完成。
# 例如: `--init-file=/path/mysql-init.txt`
将Mysql动态链接库共享至系统链接库
#一般MySQL数据库还会被类似于PHP等服务调用,所以我们需要将MySQL编译后的lib库文件添加至当
# 前Linux主机链接库/etc/ld.so.conf.d/ 下,这样MySQL服务就可以被其它服务调用了。 # ldconfig -v|grep mysql
# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
# ldconfig -v |grep mysql
ldconfig: 无法对 /libx32 进行 stat 操作: 没有那个文件或目录
ldconfig: 多次给出路径“/usr/lib”
ldconfig: 多次给出路径“/usr/lib64”
ldconfig: 无法对 /usr/libx32 进行 stat 操作: 没有那个文件或目录
/usr/local/mysql/lib:
libmysqlclient.so.20 -> libmysqlclient.so.20.3.10

01 . Mysql简介及部署的更多相关文章

  1. 01 . Redis简介及部署主从复制

    简介 Remote Dictionary Server, 翻译为远程字典服务, Redis是一个完全开源的基于Key-Value的NoSQL存储系统,他是一个使用ANSIC语言编写的,遵守BSD协议, ...

  2. 01 . MongoDB简介及部署配置

    简介 什么是MongoDB? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用 ...

  3. 01 . RabbitMQ简介及部署

    RabbitMQ简介 ​ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它 ...

  4. 01 . Memcached简介及部署

    Memcached简介 memcached是一个自由开源,高性能,分布式内存对象存储系统 基于内存的key-valued存储,用来存储小块的任意数据(字符串,对象) 他是一个简洁的key-value存 ...

  5. 01 . Tomcat简介及部署

    Tomcat简介 Tomcat背景 tomcat就是常用的的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中.而tomcat本 ...

  6. 01 . Nginx简介及部署

    Nginx简介 Nginx(发音同engine x)是一个异步框架的 Web 服务器,也可以用作反向代理,负载平衡器 和 HTTP 缓存.该软件由 Igor Sysoev 创建,并于2004年首次公开 ...

  7. 01: MySql简介

    MySQL其他篇 目录: 参考网站 1.1 数据库介绍 1.2 视图 1.3 触发器 1.4 事物 1.1 数据库介绍返回顶部 1.什么是数据库? 1. 数据库(Database)是按照数据结构来组织 ...

  8. MySQL简介及安装

    一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 01 什么是数据? 02 什么是数据库管理系统 03 数据库管理系统种类 04 MySQL发展 ...

  9. 01 mysql 基础一 (进阶)

    mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...

随机推荐

  1. Kubernetes实战总结

    >>> 目录 <<< 一.概述二.核心组件三.基本概念四.系统架构五.镜像制作六.服务编排七.持续部署八.故障排查 >>> 正文 << ...

  2. Java——异常那些事

    异常的基本定义 异常情形是指阻止当前方法或者作用域继续执行的问题.在这里一定要明确一点:异常代码某种程度的错误,尽管Java有异常处理机制,但是我们不能以“正常”的眼光来看待异常,异常处理机制的原因就 ...

  3. C. Fountains

    \(整体思路没错,但是我貌似太麻烦了.......\) \(分情况讨论\) \(Ⅰ.coin和diamond各选一个物品,这个简单\) \(Ⅱ.在coin中选两个或者在diamond选两个\) \(开 ...

  4. P3355 骑士共存问题 网络流

    骑士共存 题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最 ...

  5. Golang 实现 Redis(5): 使用跳表实现 SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能. 跳表(skiplist) 是 Redis 中 SortedSet 数据结构 ...

  6. node常用插件使用

    1.nodemon 用于热更新,随时监控文件的变化 安装npm i -g nodemon 使用nodemon index.js 2.nvm nvm用于nodejs版本管理,我们在开发过程中,不同的项目 ...

  7. gulp基本使用

    一.gulp是什么 gulp强调的是前端开发的工作流程,我们可以通过定义task事件定义事件的执行顺序,gulp去执行这些事件,构建整个前端开发的工作流程 gulp常见定义事件,例如: 变更静态资源 ...

  8. 【MySQL基础总结】常用函数库

    常用函数库 数学函数 分类及含义 示例 字符串函数 分类及含义 示例 日期时间函数 分类及含义 示例 条件判断函数 分类及含义 示例 系统函数 分类及含义 加密函数 分类及定义 其他常用函数 分类及含 ...

  9. Scala 中 Any 类源码

    package scalaabstract class Any { def equals(that: Any): Boolean //值比较 def hashCode(): Int //hash值 d ...

  10. [csu/coj 1079]树上路径查询 LCA

    题意:询问树上从u到v的路径是否经过k 思路:把树dfs转化为有根树后,对于u,v的路径而言,设p为u,v的最近公共祖先,u到v的路径必定是可以看成两条路径的组合,u->p,v->p,这样 ...