测试实施运维必备知识点
Linux常用命令
ip addr 查看ip地址信息
ping 测试物理机是否联网
dhclient 让CentOS 7自动获取一个IP地址
vim 编辑纯文本文件
who 查看是否还有其他人在登录
find 在文件系统中搜索某文件
-name filename: 表示直接查找该文件名的文件
-type filetype: 表示通过文件类型查找文件。
ps 显示瞬间进程状态
ps -aux 查看是否还有后台进程运行
shutdown、halt、poweroff 都为关机的命令
man 可以通过一些参数,快速查询linux帮助手册,并且格式化显示
ls 列出目录内容
pwd 显示当前目录(返回绝对路径)
cd 变更用户所在目录的
mkdir 创建目录
rmdir 删除空目录,后面可以是一个目录,也可以是多个目录(用空格分隔)。
rm 用于删除文件或目录
-f: 强制删除。它不再询问是否删除,而是直接删除
wc 统计文本中行数、字数、字符数
grep 在文本文件中查找某个字符串
cp 复制文件
mv 为文件或目录改名、或将文件或目录移入其它位置
which 查找某个命令的绝对路径
cat 查看一个文件的内容并将其显示在屏幕上
-n : 查看文件时,把行号也显示到屏幕上
tac 把文件的内容显示在屏幕上(倒叙显示)
more 查看一个文件的内容,后面直接跟文件名。
less 查看一个文件的内容,后面直接跟文件名
head 显示文件的前10行,后面直接跟文件名
tail 显示文件的最后10行,后面直接跟文件名
touch 创建文件(创建文件夹使用mkdir命令)。
groupadd 新增组
groupdel 删除组
useradd 增加用户
userdel 删除账户
passwd 用户设置密码 其格式为passwd [username]
su 切换用户身份
umask 改变文件的默认权限
chgr 命令可以更改文件的所属组,
chown 命令可以更改文件的所有者
df 查看已挂载磁盘的总容量、使用容量、剩余容量等
lsblk 即列为出所有存储设备
du 查看某个目录或文件所占空间的大小,
tar 打包工具
.tar.gz: 先由tar打包,然后再由gzip压缩。
.tar.bz2: 先由tar打包,然后再由bzip2压缩。
.tar.xz: 先由tar打包,然后再xz压缩。
-zxvf选项,可以解压.tar.gz格式的压缩包
q 退出
q! 强制退出
wq 保存并退出
touch 创建新的空文件,改变已有文件的时间戳属性
basename 显示文件名或目录名
dirname 显示文件或目录路径
chattr 改变文件的扩展属性
lsattr 查看文件扩展属性
file 显示文件的类型
head 显示文件内容的头部
tail 显示文件内容的尾部
cut 将文件的每一行按指定分隔符分割并输出
split 分割文件为不同的小片段
MYSQL中的数据类型
varchar(最长255) 可变长度的字符串,比较智能,节省空间。会根据实际的数据长度动态分配空间。
优点:节省空间 缺点:需要动态分配空间,速度慢。
char(最长255) 定长字符串,不管实际的数据长度是多少,分配固定长度的空间去存储数据。 使用不恰当的时候,可能会导致空间的浪费。
优点:不需要动态分配空间,速度快。 缺点:使用不当可能会导致空间的浪费。
varchar和char我们应该怎么选择?
性别字段你选什么?因为性别是固定长度的字符串,所以选择char。
姓名字段你选什么?每一个人的名字长度不同,所以选择varchar。
int(最长11)
date 短日期类型
datetime 长日期类型
clob 字符大对象 最多可以存储4G的字符串。 比如:存储一篇文章,存储一个说明。 超过255个字符的都要采用CLOB字符大对象来存储。 Character Large OBject:CLOB
blob 二进制大对象 Binary Large OBject 专门用来存储图片、声音、视频等流媒体数据。 往BLOB类型的字段上插入数据的时候,例如插入一个图片、视频等, 你需要使用IO流才行。
数据库三范式
第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。
第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键, 不要产生部分依赖。
第三范式:建立在第二范式的基础之上,要求所有非主键字段直接依赖主键, 不要产生传递依赖。
什么是索引,目的?什么条件下适合使用索引
索引是对数据库表中一列或多列的值进行排序的一种结构
使用索引可以快速的访问数据库中的特定信息
目的是加快检索表中数据
中到大数据的表适合索引
小表和数据类型多的表不适合索引
truncate和delete的区别
truncate 命令永久地从表中删除所有数据:
delete 命令从一个表中删除某一行或多行数据
truncate 和 delete 都可以将数据实体删掉
truncate 的操作并不记录到 rollback (回滚)日志,操作速度较快,删除数据不能恢复;delete 操作不释放表空间
truncate 不能对视图等进行删除; delete 可以删除单表的视图数据(本质是对表数据的删除)
truncate 是数据定义语言(DDL); delete 是数据操纵语言(DML)
左连接、右连接、内连接和全外连接的区别
左连接(left join): 返回包括左表中的所有记录和右表中连接字段相等的记录
右连接(right join): 返回包括右表中的所有记录和左表中连接字段相等的记录。
内连接(innerjoin): 只返回两个表中连接字段相等的记录。
全外连接(full join): 返回左右表中连接字段相等的记录和剩余所有记录。
怎么优化SQL的?
(1) 加索引
(2) 避免返回不必要的数据
(3) 适当分批量进行
(4) 优化sql结构
(5) 分库分表
(6) 读写分离
为什么要使用视图?什么是视图?
为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。
视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。
final 在 Java 中有什么作用?
final 修饰的类不能被继承。
final 修饰的方法不能被重写。
final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
List、Set、Map 之间的区别是什么?
List、Set、Map 的区别主要体现在两个方面:元素是否有序、是否允许元素重复。
List有序的集合;允许重复
Set 无序的集合;不允许重复(可用于去重)
Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的
构造方法的特点?
(1) 构造方法名一定与类同名
(2) 构造方法无返回值类型
(3) 构造方法可以没有,也可以有多个构造方法,他们之间构成重载关系
(4) 如果定义有参构造函数,则无参构造函数将被自动屏蔽
(5) 构造方法不能被继承
(6) 构造方法不能手动调用,在创建类实例的时候自动调用构造方法
事务四大特征
原子性:事务是不可再分的工作单位
一致性:一个工作单元的sql语句要么全部执行成功要么全部执行失败
隔离性:多个用户同时访问时数据库的每一个事务都不被其他事务干扰
持久性:事务一但提交他对数据库的数据改变是永久性的
Redis 作用,应用场景
作用:
主要用Redis实现缓存数据的存储,可以设置过期时间.对于一些高频读写、临时存储的数据特别适合.
应用场景:
缓存 分布式会话 分布式锁 最新列表 消息系统
Java 中,throw 和 throws 有什么区别
throw代表的是动作,throws是状态
throw用在方法中,而throws用在方法声明中
throw只能抛出一种异常,而throws可以抛出多个
简述数据库读写分离
读写分离为了确保数据库产品的稳数据定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作
MySQL中为什么要有事务回滚机制
MySQL 中,恢复机制是通过回滚日志(undo log)实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后在对数据库中的对应行进行写入。当事务已经被提交之后,就无法再次回滚了。
回滚日志作用:
能够在发生错误或者用户执行 ROLLBACK 时提供回滚相关的信息
在整个系统发生崩溃、数据库进程直接被杀死后,当用户再次启动数据库进程时,还能够立刻通过查询回滚日志将之前未完成的事务进行回滚,这也就需要回滚日志必须先于数据持久化到磁盘上,是我们需要先写日志后写数据库的主要原因
静态路由和动态路由的区别?
静态路由是由管理员在路由器中手工设置的固定的路由信息,静态路由不能对网络的改变做出反映,一般用于规模不大、拓扑结构固定的网络中,其优点是设置简单、高效,在所有路由中,静态路由优先级最高,当动态路由与静态路由发生冲突时,以静态路由为准。
动态路由是由网络中的路由器之间互相通信,传递路由信息,利用收到的路由信息更新路由表的过程,它能实时地适应网络结构的变化。主要用于规模大、拓扑结构复杂的网络。
数据库约束
主键primary key:物理上存储的顺序,唯一
非空not null:此字段不允许填写空值
惟一unique:此字段的值不允许重复 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
默认值 default:用于保证该字段有默认值。例如学生表的学生性别
auto_increment: 如果使用只能跟在主键后,并且字段类型为整型;如果不给值,则自动增值填充字段;如果给值,就用给的值,并且下次增长从这个值开始
Linux、SQL命令
rpm 对linux系统下的软件进行安装、卸载、查询、验证、升级等工作
use 切换到其他数据库查询(多数据库关联查询)
decimal(5,2) 限制小数数值长度,总位是五位,小数最多两位
di si mao
主键列是自动增长,插入时需要占位,通常使用0或者 default 或者 null 来占位
insert into 插入数据时,
1.values 后的s可加可不加
2. values后面的空格可加可不加
final与static的区别
都可以修饰类、方法、成员变量
都不能用于修饰构造方法。
static可以修饰类的代码块,final不可以。
static不可以修饰方法内的局部变量,final可以。
什么是多态,满足多态的必要条件是什么
多态是具有表现多种形态的能力的特征,是同一个实现接口,使用不同的实例而执行相同操作,不同的对象对同一行为作出的不同响应。
必要条件:
要有继承,或实现
要有重写
父类引用指向子类对象
什么是JDBC?
JDBC : java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
linux常用命令
touch 创建新的空文件,改变已有文件的时间戳属性
basename 显示文件名或目录名
dirname 显示文件或目录路径
chattr 改变文件的扩展属性
lsattr 查看文件扩展属性
file 显示文件的类型
head 显示文件内容的头部
tail 显示文件内容的尾部
cut 将文件的每一行按指定分隔符分割并输出
split 分割文件为不同的小片段
异常处理的时候,finally代码块的重要性是什么
无论是否抛出异常,finally代码块总是会被执行
就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。
== 和 equals 的区别是什么?
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;
而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
.ArrayList 和 LinkedList 的区别是什么?
数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。
随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。
在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList。
5.线程和进程的区别?
一个程序下至少有一个进程,一个进程下至少有一个线程,一个进程下也可以有多个线程来增加程序的执行速度。
如何优化长难的查询语句?
将一个大的查询分为多个小的相同的查询减少冗余记录的查询。
一个复杂查询可以拆成多个简单查询分解关联查询,让缓存的效率更高。
什么情况下设置了索引但无法使用
以“%”开头的like语句,模糊匹配
or语句前后没有同时使用索引
数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)
什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,
优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。
如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
可以用一个命令对象来调用存储过程。
drop、delete与truncate分别在什么场景之下使用?
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate
视图应用场景:
视图是一个虚拟存在的表
1、当一个查询需要经常的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西。
2、系统的数据库管理员,需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这时可以建一个只有这两列数据的视图,然后把视图公布给他。
视图与表的区别:
表是数据库中的主要结构,表示单个的、特定的集合。
每个表至少包含一个字段,即一个主键,他唯一地标识表的每条记录。
视图是由数据库中的一个或多个表或多个表的字段所组成的一个虚拟的表。
实际上它自身不存储任何数据,存储在数据库中的有关视图的唯一信息是它的结构。
SQL语言分类
数据查询语言DQL :基本结构是由select子句、from子句、WHERE子句组成的查询块。
数据操纵语言DML :插入insert 、更新:uodate 、删除:delete
数据定义语言DDL :用来创建数据库中的各种对象——表、视图、索引、同义词、聚簇等
数据控制语言DCL :用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。
线程的状态
- 初始(new):新创建了一个线程对象,但还没有调用start()方法。
- 运行(runnable):Java线程中将就绪和运行中两种状态笼统的称为“运行”。
- 阻塞blocked):阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态。
- 等待(waiting):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。
- 超时等待(timed-waiting):该状态不同于等待,它可以在指定的时间后自行返回。
- 终止(termInated):表示该线程已经执行完毕。
线程生命周期?
1.新建(new)创建了一个新的线程对象
2.就绪(runnable)调用线程的start()方法,处于就绪状态
3.运行(running)获得了CPU时间片,执行程序代码
就绪状态是进入到运行状态的唯一入口
4.阻塞(block)因为某种原因,线程放弃对CPU的使用权,停止执行,直到进入就绪状态在有可能再次被CPU调度
阻塞又分为三种:1)等待阻塞2)同步阻塞3)其他阻塞
5.死亡(dead) 线程run()、main()方法执行结束,或者因为异常退出了run()方法,则该线程结束生命周期
什么是触发器
触发器是针对数据表(库)的特殊的存储过程,
当这个表发生了增删改操作时,
数据库就会自动执行触发器所定义的SQL语句,
从而确保对数据的处理必须符合这些SQL语句所定义的规则。
面向对象特点
封装:隐藏类的属性、方法或实现细节的过程,并对外提供共有的访问接口
继承:继承是从已有的类中派生出新的类,新的类能拥有已有类的属性和行为,并能扩展新的属性和行为。
多态:是同一事物具有表现多种形态的能力的特征,是同一个实现接口,使用不同的实例而执行不同操作,不同的对象对同一行为作出的不同响应
封装的好处:
1、让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
2、便于修改,增强代码的可维护性
3、可进行数据检查
继承的好处:
1、使编码更高效
2、易维护
3、代码的重用
多态存在的三个必要条件:
1、要有继承,或实现
2、要有重写
3、父类引用指向子类对象
Mysql 服务器默认端口是什么?
Mysql 服务器的默认端口是 3306。
如何获取当前的 Mysql 版本?
select version();用于获取当前 Mysql 的版本。
如何使用 Unix shell 登录 Mysql?
可以通过以下命令登录:
[mysql dir]/bin/mysql -h hostname -u
可以使用多少列创建索引?
任何标准表最多可以创建 16 个索引列。
NOW()和 CURRENT_DATE()有什么区别?
NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。
CURRENT_DATE()仅显示当前年份,月份和日期。
什么是存储引擎
存储引擎就是存储数据,建立索引,更新数据查询等技术的实现方式
存储引擎是基于表,而不是基于库的,
存储引擎也可以被称为表类型
MySQL存在多种存储引擎
MySQL中myisam与innodb的区别
1>.InnoDB支持事务,而MyISAM不支持事务
2>.InnoDB支持行级锁,而MyISAM支持表级锁
3>.InnoDB支持MVCC, 而MyISAM不支持
4>.InnoDB支持外键,而MyISAM不支持外键
5>.InnoDB不支持全文索引,而MyISAM支持。
6>.MyISAM对于count()查询更有优势
7>.MyISAM对表的查询、更新、插入的效率要比InnoDB高
innodb引擎的4大特性
插入缓冲
双写机制
自适应哈希索引
预读
什么是存储过程和函数
存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合
存储过程和存储函数的区别
函数必须有返回值
存储过程没有返回值
SQL语句中四舍五入的函数是 round
SQL查询语句中去掉重复记录的关键字是 distinct
如何实现数据库读写分离的?
利用主从数据库来实现读写分离,从而分担主数据库的压力。
在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。
其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作,这样就可以很大程度
上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。
MySQL体系结构
用户: 进行数据库连接的人。
支持接口: 是第三方语言提供和数据库连接的接口,常见的有jdbc。
管理工具和服务 :系统管理和控制工具,例如备份恢复、Mysql复制、集群等(见图)
连接层:提供与用户的连接服务,用于验证登录服务。
DDL:数据定义语言(create drop)
DML:数据操作语句(insert update delete)
DQL:数据查询语句(select )
DCL:数据控制语句,进行授权和权限回收(grant revoke)
TPL:数据事务语句(commit collback savapoint)
MySQL数据库几个基本的索引类型
普通索引、唯一索引、主键索引、全文索引
Mysql表中允许有多少个TRIGGERS?
在Mysql表中允许有六个触发器,如下:
BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
什么是协议、什么是HTTP协议:
协议,是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,
HTTP超文本传输协议是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。
这就意味着服务器无法从连接上跟踪会话。
什么是会话、什么是会话跟踪:
会话,指用户登录网站后的一系列动作,比如浏览商品添加到购物车并购买。
会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。
常用的会话跟踪技术是使用内建session对象和使用持续Cookies
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
Cookie
Cookie是一个文本文件。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。
当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以对Cookie的内容进行修改。
Cookie具有不可跨域名性
就是说,浏览器访问百度不会带上谷歌的cookie;
Session
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录
在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
Cookie与Session应用场景
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
mysql有关权限的表都有哪几个
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。。
user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
db权限表:记录各个帐号在各个数据库上的操作权限。
table_priv权限表:记录数据表级的操作权限。
kao le men si
columns_priv权限表:记录数据列级的操作权限。
host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。
这个权限表不受GRANT和REVOKE语句的影响。
索引有哪些优缺点?
索引的优点:
可以大大加快数据的检索速度。可以加速表和表之间的连接,
通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
索引的缺点:
创建索引和维护索引要耗费时间,
对表中的数据进行增删改操作的时候,索引也要动态的维护,会降低增删改的执行效率;
空间方面:索引需要占物理空间。
索引设计的原则?
适合索引的列是出现在where子句中的列,或者连接子句中指定的列。
基数较小的类,索引效果较差,没有必要在此列建立索引
使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间
不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。
创建索引的原则
最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,
较频繁作为查询条件的字段才去创建索引
更新频繁字段不适合创建索引
若是不能有效区分数据的列不适合做索引列(如性别,男女未知,最多也就三种,区分度实在太低)
尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。
定义有外键的数据列一定要建立索引。
对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
对于定义为text、image和bit的数据类型的列不要建立索引。
创建索引时需要注意什么?
非空字段:应该指定列为NOT NULL,在mysql中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。应该用0、一个特殊的值或者一个空串代替空值;
取值离散大的字段的列放到联合索引的前面,可以通过count()函数查看字段的差异值,返回值越大说明字段的唯一值越多字段的离散程度高;
索引字段越小越好:数据库的数据存储以页为单位一页存储的数据越多一次IO操作获取的数据越大效率越高。
子查询分类
子查询返回的结果只有一个值(一行一列),这种称之为标量子查询
子查询返回的结果是一列数据(一列多行),这种称之为列子查询
子查询返回的结果是一行(一行多列),这种称之为行子查询
子查询返回的结果是多行多列(相当于一个表),这种称之为表级子查询
什么是动态路由
动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动学习网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。
sql注入的主要特点
变种极多,攻击简单,危害极大
sql注入的主要危害:
未经授权操作数据库的数据
恶意纂改网页
私自添加系统账号或者是数据库使用者账号
网页挂木马
Mysql有什么优势?
Mysql是开源软件,随时可用,无需付费。
Mysql是便携式的
带有命令提示符的GUI(采用图形方式人机交互)。
使用Mysql查询浏览器支持管理
mysql使用的是哪种存储引擎
MySQL支持很多种存储引擎,MySQL5.5版本之前默认使用的是MyISAM存储引擎,从MySQL5.5版本之后,MySQL的默认内置存储引擎就是InnoDB了
Myql中的事务回滚机制概述
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。
要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚
如何设计一个高并发的系统
数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化
使用缓存,尽量减少数据库 IO
分布式数据库、分布式缓存
服务器的负载均衡
游标是什么?
游标是对查询出来的结果集作为一个单元来有效的处理。
游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。
可以对结果集当前行做修改。
一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
什么是基本表?什么是视图?
基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。
视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表
视图的优点?
视图能够简化用户的操作
视图使用户能以多种角度看待同一数据;
视图为数据库提供了一定程度的逻辑独立性;
视图能够对机密数据提供安全保护。
SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?
包含子查询的语句称之外部查询
非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
数据库中的事务是什么?
事务是作为一个单元的一组有序的数据库操作。
如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。
如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。
如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
MySQL锁机制
当多个查询同一时刻进行数据修改时,就会产生并发控制的问题。共享锁和排他锁,就是读锁和写锁。
共享锁,不堵塞,多个用户可以同时读一个资源,互不干扰。
排他锁,一个写锁会阻塞其他的读锁和写锁,这样可以只允许一个用户进行写入,防止其他用户读取正在写入的资源。
表锁,系统开销最小,会锁定整张表,MyIsam使用表锁。
行锁,最大程度的支持并发处理,但是也带来了最大的锁开销,InnoDB使用行锁。
索引的类型:
索引很多种类型,是在MySQL的存储引擎实现的。
普通索引:最基本的索引,没有任何约束限制。
唯一索引:和普通索引类似,但是具有唯一性约束。
主键索引:特殊的唯一索引,不允许有空值。
Mysql的技术特点是什么?
Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序编程接口和管理工具。
在MySQL数据库中有如下六种触发器:
1、Before Insert
2、After Insert
3、Before Update
4、After Update
5、Before Delete
6、After Delete
SQL 标准定义了四个隔离级别:
read-uncommitted(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
read-committed(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
repeatable-read(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
serializable(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
你可以用什么来确保表格里的字段只接受特定范围里的值?
Check 限制,它在数据库表格里被定义,用来限制输入该列的值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。
说说对 SQL 语句优化有哪些方法?(选择几条)
(1)Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后。
(2)用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN。
(3) 避免在索引列上使用计算
(4)避免在索引列上使用 IS NULL 和 IS NOT NULL
(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
(6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描
什么是通用 SQL 函数?
concat(A, B) - 连接两个字符串值以创建单个字符串输出。
format(X, D)- 格式化数字 X 到 D 有效数字。
currdate(),currtime()- 返回当前日期或时间。
now() - 将当前日期和时间作为一个值返回。
month(),day(),year(),week(),weekday() - 从日期值中提取给定数据。
hour(),minute(),second() - 从时间值中提取给定数据。
datediff(A,B) - 确定两个日期之间的差异,通常用于计算年龄
subtimes(A,B) - 确定两次之间的差异。
fromdays(INT) - 将整数天数转换为日期值。
相关文章:
测试实施运维必备知识点
Linux常用命令 ip addr 查看ip地址信息 ping 测试物理机是否联网 dhclient 让CentOS 7自动获取一个IP地址 vim 编辑纯文本文件 who 查看是否还有其他人在登录 find 在文件系统中搜索某文件 -name filename: 表示直接查找该文件名的文件 -type filetype:…...
RTSP/Onvif安防视频平台EasyNVR接入EasyNVS,出现Login error报错的解决方法
安防视频监控汇聚EasyNVR平台,是基于RTSP/Onvif协议的安防视频平台,可支持将接入的视频流进行全平台、全终端分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求,我们也提…...
在Linux环境下远程访问MeterSphere开源测试平台
文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…...
ARPG----C++学习记录02 Section6位置,偏移,函数
设置actor位置 这一句代码就可以更改位置和旋转 给位置添加偏移offset 将debug的持久都设置为false,在tick中调用,球就会动。这是每帧移动,所以移动速度和帧率有关,需要更改 void Aitem::Tick(float DeltaTime) {Super::Tick(DeltaTime);Ad…...
怎么在现货黄金交易过程中高效设置止损?
投资市场中的风险具有客观及普遍性,现货黄金买卖也是如此,作为典型的国际性交易产品之中,在现货黄金买卖过程中人们要灵活应对行情变化,从中争取盈利空间。而设置止损就是防止风险扩大的一条有效措施,所以炒金者们应当…...
centos做个登录提醒
1.编辑脚本 sudo vim /usr/local/bin/login-notify.sh例如 login-notify.sh #!/bin/bash# 检查是否有一个原始SSH命令,并执行它 if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; thenecho "SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND" >> /va…...
由QTableView/QTableWidget显示进度条和按钮,理解qt代理delegate用法
背景: 我的最初应用场景,就是要在表格上用进度条显示数据,以及放一个按钮。 qt-creator中有自带的delegate示例可以参考,但终归自己动手还是需要理解细节,否则不能随心所欲。 自认没那个天赋,于是记录下…...
pthread_cond_timedwait 修改系统时间竟会导致其提前结束
pthread 条件变量使用注意 使用 pthread_cond_timedwait 等待条件变量时,其默认使用的为系统时间,若在其等待期间修改系统时间,则会导致其提前结束。 测试步骤 运行以下代码。 使用 date 命令查看系统时间,假设输出为 Thu Jan …...
Linux命令超详细
Linux基础命令 Linux的目录结构 /,根目录是最顶级的目录了Linux只有一个顶级目录:/路径描述的层次关系同样适用/来表示/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt ls命令 功能:列出…...
物理机、虚拟机、容器
特征物理机虚拟机容器抽象级别物理硬件虚拟化的硬件和操作系统应用和依赖项(在相同操作系统内核上运行)隔离性高(每个物理机独立运行操作系统)高(每个虚拟机独立运行操作系统)适度(共享操作系统…...
CSS画三角形(三种方法)
使用CSS画一个三角形,想必部分同学都有一个小疑问,css怎么做三角形,让我为大家介绍一下吧! 第一种方法 div {width: 0;height: 0;border-style: solid;border-width: 50px;border-color: transparent transparent black transpa…...
(一)、ts 基础类型 及class类举例字符雨和实现vue的挂在#app
文章目录 前言环境执行依赖node.js一、基础数据类型二、任意类型三、接口和对象类型四、 数组类型五、函数重载六、类型断言断言联合类型交叉类型 七、内置对象-Promise基础对象DOM和BOMPromise ts化代码雨案例 八、Class类(派生类和抽象类)派生类 abstract抽象类 classClass简…...
C++对象的内存分布和虚函数表
Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员:静态数据成员和非静态数据成员,静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…...
小白怎么学习性能测试?一文7个知识点带你成功入门!
1.什么是性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负…...
Orcad属性过滤器的使用技巧
Orcad内置的属性过滤器可以完美的解决由于属性太多导致的不好整理的问题。下面简单介绍一下方法和过程。 1、打开过滤器 2、新建属于自己的过滤器 3、进行器件属性过滤及调整的顺序(注这时一定关闭ORCAD,来操作) 3.1 安装目录下找到\Cadenc…...
腾讯云向量数据库正式对外全量开放公测
11月1日,腾讯云对外宣布向量数据库正式全量开放公测,同时性能层面带来巨大提升。腾讯云数据库副总经理罗云表示,除了公测之外,腾讯云向量数据库单索引已经支持百亿级向量规模,支持百万级QPS毫秒级查询延迟,…...
Linux新建普通用户无法使用退格键与tab键
创建普通用户 useradd mulan passwd mulan 切换用户 su mulan 发现普通用户无法使用退格键与tab键,一直显示如图 如图,按退格键(Backspace)、删除键出现 ‘^H’ 符号,tab键也不能自动拼写 这是新用户下的普通bash配置都没有,从…...
【湘粤鄂车牌】
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
华大-HC32L130F8UA 内存使用注意事项
1,概念 本系统包含一块 64K 字节( Byte )容量的 FLASH 存储器,共划分为 128 个页( Sector ),每个页( Sector ) 的容量为 512 字节( Byte )。 FLASH …...
怎样才知道一个单片机的性能到极限了?
怎样才知道一个单片机的性能到极限了? 就题主的问题,应该是想问CPU利用率的问题。可以看看Rt-thread中关于统计CPU利用率函数,其主要实现方式是在idle线程先关闭中断计数后,正常计数(可被其他线程打断),最近很多小伙伴…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
