自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 各种排序算法的分析及Java代码实现

/** * 冒泡排序:每一次把最大的数移动到最后面,比较两个相邻的数字的大小,如果符合条件进行交换 * 冒泡排序的最好情况:数组的初始状态为正序的,一趟扫描久可以完成排序,冒泡下排序最好的时间复杂度为O(n) * 最坏情况:数组的初始状态为反序的,需要进行n - 1趟排序,每一趟都要进行 n - i次关键字的比较,最坏情况为O(n*n) * 冒泡排序的平均时间复杂度为O(n * n) * 如果两个数字相等,那么使用冒泡排序是不用进行数字交换的,因此冒泡排序是

2020-09-21 17:14:52 114

原创 关于mysql的锁机制

一、什么是锁机制锁机制:解决因资源共享而造成的并发问题。锁机制的分类:操作类型:1.读锁(共享锁):对同一个数据,多个读操作可以同时进行,互不干扰。2.写锁(互斥锁):如果当前写操作没有完毕,则无法进行其他的读操作一、写操作。操作范围:1.表锁:一次性对一张表进行加锁,如MyISAM存储引擎使用表锁,开销小,加锁块,无死锁;但是锁的范围大,容易发生锁冲突的问题、并发度低。2.行锁:一次性对一条数据进行加锁。如InnoDB存储引擎使用行锁,开销大,加锁慢;容易出现死锁;所的范围小,不容易发生锁

2020-08-30 14:07:04 140

原创 使用慢查询日志进行SQL排查

慢查询日志:MYSQL提供的一种日志记录,用于记录MYSQL的响应时间超过阈值的sql语句(long_query_time默认10秒)。检查是否开启了慢查询日志的命令:show variables like '%slow_query_log%';l临时开启mysql的命令:set global slow_query_log = 1;注意:这里的临时开启指的是关闭mysql服务后再次进入mysql查询慢查询阈值的命令:show variables like 'long_query_time';临

2020-08-29 16:50:41 274

原创 关于sql中的exists、in、order by的优化

1.exists 和 in1.exists语法介绍将主查询的结果放到子查询中进行条件校验(看子查询中是否有结果,如果有数据,则校验成功)。举例:(有数据的情况)select tname from teacher where exists(select * from teacher);查询到的结果:因为子查询select * from teacher查出来是有数据的,所以能够查出来。(无数据的情况)select tname from teacher where exists (select

2020-08-29 16:22:50 624

原创 避免索引失效的原则2

1.使用到的表及索引使用到的表:teacher表使用到的索引:create index index_tname_tcid on teacher (tname,tcid);2.当索引失效的时候补救的方法当复合索引失效的时候,使用索引覆盖可以进行适量的补救。索引覆盖:要查询的字段就是索引,不需要再回表查询。(1)like尽量以常量开头,不要以‘%’开头,否则索引失效。explain select * from teacher where tname like '%s%' and tcid =

2020-08-29 15:56:05 90

原创 避免索引失效的一些原则

1.复合索引(1)复合索引,不要跨列使用或者无序使用(最佳左前缀),尽量使用全索引匹配。(2)不要再索引上进行任何操作(计算、函数、类型转换),否则索引会失效,对于复合索引,如果左边的索引失效,则右边的全部失效。(3)复合索引不能使用不等于(!= <>)或者is null或者is not null,否则自身以及右侧索引全部失效。复合索引如果有>号,则自身索引和右侧全部索引失效。注意:SQL优化是一种概率层面的优化。至于是否使用了我们的优化,要通过explain进行推测,之所以这样

2020-08-29 13:04:45 201

原创 多表查询的索引优化

1.建表语句建立两张表用于索引优化,两张表通过cid进行连接create table teacher2( tid int(4) primary key, cid int(4) not null);create table course2(cid int(4) not null,cname varchar(20) not null);insert into teacher2 values (1,2);insert into teacher2 values (2,1);

2020-08-29 11:16:30 1156

原创 SQL语句单表的优化

1.建表语句%建表语句 create table book ( bookid int(4) primary key, name varchar(20) not null, authorid int(4) not null, publicic int(4) not null, typeid int(4) not null);%王数据库里面插入相应的值insert into book values (1,'tjava',1,1,2);insert

2020-08-29 10:36:37 231

原创 SQL优化示例

1.表和索引的创建建表语句如下:create table test03( a1 int(4) not null, a2 int(4) not null, a3 int(4) not null, a4 int(4) not null );建立索引的语句如下:建立a1,a2,a3,a4的符合索引create index on test03 a1,a2,a3,a4(index_a1,a2,a3,a4);2.分析索引优化得到情况2.1推荐写法:ex

2020-08-28 23:56:53 144

原创 EXTRA表中的数据库中的字段的含义

1.FileSort出现的情况下列所有情况用到的表为:性能消耗大,需要额外的一次排序(查询)。常见于order by语句中。下列sql就会出现上述字段:原因是建立的符合索引a1_a2_a3,此时没有遵循最左原则,跨列使用了索引。explain select a1 from test02 where a1 = '' order by a3;下列sql不会出现fileSort的情况,原因是没有跨列使用索引explain select a1 from test02 where a1 = '' g

2020-08-25 00:10:00 833 1

原创 MySQL在Linux上的安装以及命令

1.MySQL安装的命令rpm -ivh 文件名本次我安装的是mysql的rpm文件,所以用到了上述的命令,如果安装的时候与某个软件发生了冲突,则需要将冲突的软件卸载掉,卸载的命令为:yum -y remove 文件名如果安装完成了,可以使用mysqladmin --version验证是否安装成功。启动mysql的命令service mysql start关闭mysql的命令:service mysql stop重启mysql:service mysql restart;

2020-08-19 15:42:29 68

转载 TCP和UDP的概念以及区别

TCP和UDP都是OSI模型中的运输层中的协议。TCP提供了可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。1.TCP(Tranmission Control Protocol)的概念(1)TCP是一种面向连接的,提供可靠的交付服务和全双工通信的,基于字节流的端到端的传输层协议。(2)TCP在传输数据吃之前必须要先建立连接,数据传输结束后要释放连接。(3)每一条TCP连接只能有两个断点,故TCP不提供广播或者多播服务。(4)TCP提供可靠的交付,通过TCP连接传输的数据,无

2020-08-14 10:36:01 3717

原创 插入排序

插入排序法介绍:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式寻找该元素的位置,以达到排序得到目的。插入排序的思想插入排序的基本思想是:把n个待排序的元素看成是一个有序表和一个无序表,开始时有序表中只含有一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码y依次和有序表元素的排序码比较,将它插入到有序表的适当位置,使之成为新的有序表。插入排序思路图:代码实现public static void insertSort(int[] arr){

2020-08-13 23:20:51 90

原创 选择排序

基本介绍选择排序也属于内部排序法,是从欲排序的数据中,按照指定的规则选出某一元素,再依规定交换位置后达到排序的目的。选择排序的思想选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选出最小的数据与arr[0]交换,第二次是从arr[1]-arr[n-1]中选出最小的数据与arr[1]交换,第i次是从arr[i - 1]-arr[n - 1]中选出最小的数据与arr[i - 1]做交换,总共通过n-1次,得到一个按排序码从小到大排列的

2020-08-11 15:33:49 139

原创 冒泡排序

#冒泡排序#基本介绍冒泡排序的基本思想是:通过对待排序序列从前向后(从下标元素较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样往上冒。优化:因为排序的过程中,各个元素不断接近自己的位置,如果一趟下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志位flag判断元素是否进行过交换。从而减少不必要的比较。#图解冒泡排序的例子...

2020-08-11 14:13:24 180

原创 动态sql之<foreach/>

加粗样式@TOC动态SQL##<foreach//>标签用于实现数组与集合的遍历,对其使用,需要注意:collection表示要遍历的集合类型,list,array等open、close、seperator为对遍历内容的SQL拼接语法:<foreach collection=“集合类型” open=“开始的字符” close=“结束的字符” item=“集合中的成员” separa=“集合成员之间的分割符”//>(1)遍历简单类型(2)遍历对象类型新的改变我们对

2020-08-09 16:50:31 442

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除