- 博客(183)
- 收藏
- 关注
原创 equals方法的四个属性
1、自反性:对于任何非空引用x,x.equals(x)必须返回true;2、对称性:对于任何非空引用x和y,如果且仅当y.equals(x)返回true时,x.equals(y)必须返回true;3、传递性:对于任何非空引用x、y、z,如果x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)必须返回true;4、一致性:对于任何非空引用x和y,如果在equals比较中使用的信息没有修改,则x.equals(y)的多次调用必须始终返回true或false。对
2021-12-09 14:44:42 435
原创 分库分表之垂直切分与水平切分
一、垂直切分1、垂直分表:定义:操作数据库中的某张表,将其中一部分字段数据存到一张新表中,再将另一部分字段数据存到另一张表中。如下图:2、垂直分库:定义:将单一数据库按照业务进行划分,做到专库专表。如下图:二、水平切分...
2021-11-19 10:29:33 2541
原创 MySQL主从复制
一、复制的基本原理:1、slave会从master读取binlog进行数据同步。2、复制的步骤及原理图:(1)master将改变记录到二进制日志(binary log),这些记录过程叫二进制日志事件(binary log events);(2)slave将master的binary log events拷贝到它的中继日志(relay log);(3)slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步且串行化的。二、复制的基本原则:1、每个slave只有一个ma
2021-11-12 11:48:42 198
原创 MySQL行锁(偏写)
说明:偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。...
2021-11-10 15:58:18 616
原创 MySQL表锁(偏读)
一、表读锁:1、查看表上加过的锁:show open tables;2、手动添加表锁:lock table 表名称 read/write, 表名称2 read/write, 其他;如,给mylock表加读锁,给dept表加写锁:lock table mylock read, dept write;3、表解锁:unlock tables;二、写锁:三、总结:读操作会阻塞写,但不阻塞读;而写锁会阻塞读和写。四、表锁分析:可通过检查Table_locks_waite
2021-11-06 12:41:07 351
原创 MySQL之用show profiles进行sql分析
前提:MySQL版本支持Show profiles。1、查询其是否开启:show VARIABLES like 'profiling';ON-开启;OFF-关闭。开启命令:set global profiling = on;2、使用:① 查看所有profile:show profiles;② 查看单个的profile开销(query后为上图中的Query_ID):# 查看cpu和io开销信息show profile cpu, block io for query 232;
2021-11-05 15:35:49 314
原创 MySQL查询优化
1、永远小表驱动大表,即小的数据集驱动大的数据集。原理:select * from a where id in (select id from b)# 等价于for select id from bfor select * from a where a.id = b.id当b表的数据集小于a表的数据集时,用in优于exists;select * from a where exists (select 1 from b where b.id = a.id)# 等价于for select *
2021-11-03 16:36:45 284
原创 Mysql索引失效案例分析
说明:新建表staffs的索引为:idx_nameAgePos;1、尽量使用全值匹配:即索引包含哪些字段,就使用哪些字段查询;select * from staffs where name = 'July' and age = 23 and pos = 'dev';2、最佳左前缀法则:查询从索引的最左前列开始,且不跳过索引中的列:// 部分匹配select * from staffs where name = 'July';// 部分匹配select * from staffs whe.
2021-11-02 17:01:06 200
原创 Postman批量导入参数,配置环境变量调试接口
一、准备好需要导入的参数文档(csv或text文件):文件名为data.csv;二、步骤:1、创建collection:2、添加request:3、添加请求头Headers:4、设置请求body:5、设置预请求脚本:6、设置测试结果断言:7、选择需导入的csv文件,并运行:...
2021-10-20 15:15:47 903
转载 jquery-validation校验提示信息不消失问题
1、select2框选择后,提示信息仍存在,加入下代码即可:$(".select2").change(function(){ $(this).valid();});2、输入为空,关闭当前窗口,再次打开,校验信息仍存在://重置事件 function ClearInput() { //清空输入域 var validator = $("#feedbackForm").validate({ submitHandler: function (
2021-07-06 16:01:43 989
原创 部分视频上传后无法回显问题
1、背景:上传mp4格式的视频,发现虽上传成功,但无法回显至video标签。2、原因:mp4格式的视频,其编码格式有h264与mpeg4,而html5中的video标签只支持h264编码格式的视频。3、解决:限制上传视频的编码格式,若非h264格式,则不支持上传。pom.xml文件中导入jave-1.0.2.jar包 <dependency> <groupId>it.sauronsoftware</groupId> <artifactId>
2021-05-12 17:53:07 594
原创 MySQL之Explain(执行计划)
一、作用:1、表的读取顺序(id);2、数据读取操作的操作类型(select_type);3、哪些索引可以使用;4、哪些索引被实际使用;5、表之间的引用;6、每张表有多少行被优化器查询。二、使用:Expalin+SQL语句。三、包含的信息:idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1、id:(1)含义:select查询的序列号,包含一组数字,表示查询中执行的select子句或操作表
2021-02-02 11:44:29 162
转载 @Transactional(rollbackFor=Exception.class)的使用
转自:https://blog.csdn.net/Mint6/article/details/78363761
2021-01-26 10:07:22 162
原创 MySQL索引简介
1、定义:索引(Index)是帮助MySQL高效获取数据的数据结构,即索引的本质是数据结构。可以理解为“排好序的快速查找数据结构”。
2021-01-07 17:46:51 127
原创 FileZilla连接服务器
FileZilla连接远程服务器:1、查询git配置文件(…/.ssh/config)中的远程服务器地址,用户等信息;2、FileZilla-文件-站点管理器-新站点:配置如下:协议:选择SFTP-SSH File Transfer Protocol;主机:步骤1中的服务器地址;端口:22;登录类型:秘钥文件;用户:步骤1中的用户;密码文件:导入步骤1中私钥文件。即可连接成功。...
2020-12-17 15:50:34 2870
原创 MySQL存储引擎对比
对比项MyISAMInnoDB主外键不支持支持事务不支持支持行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只锁某一行,对其他行没有影响,适合高并发的操作缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响表空间小大关注点性能事务默认安装YY...
2020-11-25 17:54:34 108
原创 算法—根据概率抽奖
一、背景:奖项集合为items,每个奖项拥有自己的概率,根据其概率抽取奖项,并返回被抽中的奖项。二、思想:1、算法思想:构造概率区间,如:A奖项概率为2,B奖项为4,C奖项为3,构造概率区间[0, 2, (2+4), (2+4+9)],即[0, 2, 6, 9],之后生成一个0到9的随机数,如3,3落到2到6的区间里,小于区间里第3个元素,取其下标2,对应抽中的就是奖项种类中下标为2的奖项,就是B。2、优点:效率较高,推荐。三、代码:public Comment randomGetItem(
2020-11-16 15:01:56 1104
原创 MySQL循环结构
循环控制:iterate:类似于Java中的continue,结束本次循环,继续下一次;leave:类似于Java中的break,跳出整个循环,结束当前所在的循环。一、分类:1、while【标签:】while 循环条件 do 循环体;end while 【标签】;# 联想:while(循环条件) { 循环体;}2、loop语法:【标签:】 loop 循环体;end loop 【标签】;# 可以用来模拟简单的死循环3、repeat【标签:】 repe
2020-08-29 10:37:25 380 1
原创 MySQL的函数
一、与存储过程的区别:存储过程:可有0个返回,也可多个返回;适合做批量插入、批量更新;函数:有且仅有1个返回值;适合做处理数据后返回一个结果。二、创建:create function 函数名(参数列表) returns 返回类型begin 函数体end注意:1、参数列表:包含参数名和参数类型2、函数体:定有return语句,若没有会报错;若return语句没有放在函数体的最后也不报错,但不建议。3、函数体中只有一条语句,则可省略begin、end;4、使用delimiter语句设置
2020-08-27 18:29:59 166
原创 MySQL存储过程
一、创建:create procedure 存储过程名(参数列表) begin 存储过程体(一组合法的sql语句)end注意:1、参数列表包含三部分:参数模式 参数名 参数类型如:IN name varchar(20)参数模式:IN:该参数可以作为输入,即需要调用方传入值OUT:该参数可以作为输出,即可以作为返回值INOUT:该参数即可作为输入,又可作为输出,即即需要传入值,又可以返回值。2、若存储过程体仅有一条语句,则begin,end可省略。存储过程体中的每条sql
2020-08-26 17:53:20 132
原创 事务的属性和隔离级别
一、事务的ACID属性:1、原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。2、一致性(Consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态。3、隔离性(Isolation):指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。4、持久性(Durability):一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和
2020-08-06 19:26:46 396
原创 MySQL之delete与truncate的区别
一、说明:delete可用于删除单条或多条数据;truncate清空表中的所有数据。二、语法:delete from table(where ···)truncate table tab1;// 删除多表的记录delete 表1的别名, 表2的别名from 表1 表1的别名inner|left|right join 表2 表2的别名on 连接条件where 筛选条件三、区别:1、delete可以加where条件;truncate不可加;2、truncate删除效率高于d
2020-07-06 17:13:07 214
原创 MySQL子查询
含义:出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。分类:按子查询出现的位置:select后:仅支持标量子查询from后:支持表子查询where或having后(重点)::支持标量子查()、列子查询()、行子查询(使用较少)exists后(相关子查询):表子查询按结果集的行列数不同:标量子查询(结果集只有一行一列)列子查询(结果集只有一列多行)行子查询(结果集有一行多列)表子查询(结果集一般为多行多列)...
2020-07-03 18:34:43 204
转载 Springboot项目使用mockMvc进行单元测试
一、mockMvc简介:对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,所以为了可以对Controller进行测试,我们引入了MockMVC。MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
2020-06-28 14:00:57 2829
原创 MySQL连接查询Join
分类:按年代分类: SQL92标准:仅支持内连接 SQL99标准【推荐】:支持内连接 + 外连接(左外和右外)+ 交叉连接按功能分类: 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接 右外连接 全外连接 交叉连接一、SQL92标准:支持所有内连接:1、等值连接:#查询城市名中第二个字符为o的部门名和城市名:select departmentName, cityNamefrom departments d,
2020-06-24 17:33:51 220
原创 Java使用Apache POI生成与读取excel表格
一、Apache POI是什么?Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 ---摘自百度二、利用POI生成excel表格:注意:此例仅支持生成xls文件。/** * 下载模板 */@RequestMapping(value = "/downloadTemplate")public void downloadTemplate() {
2020-06-09 18:43:24 606
原创 MySQL分组查询
一、语法:select 分组函数,列(要求出现在group by的后面)from 表【where 筛选条件】group by 分组的列表【order by 子句】例:查询每个工种的最高工资:select max(salary), jobId from empsgroup by jobId...
2020-06-08 19:06:52 192
原创 MySQL常见函数
一、单行函数:做处理使用。如concat, length, ifnull等;1、字符函数:(1)length(获取参数值的字节个数):select length('john'); #返回字符长度select length('张三丰hahaha');# 返回15(一个字母占1个字节,一个汉字占3个字节)(2)concat(字符串拼接):select concat(lastName, '_', firstName) 姓名 from emps;(3)upper(转大写)、lower(转小写
2020-05-29 20:00:56 266
原创 MySQL排序查询
1、使用order by关键字:select * from emps where id > 10 order by age ASC;2、按表达式排序:select *, salary*12*(1+IFNULL(commission, 0)) 年薪 from emps order by salary*12*(1+IFNULL(commission, 0)) desc;3、按别名排序:select *, salary*12*(1+IFNULL(commission, 0)) 年薪 fro
2020-05-27 19:35:39 462
原创 关于后台接收前端传递值的简单总结
1、后台接收类型为String字符串:JS文件:function click() { ······ var ids = new Array(); var checked = $('#table').bootstrapTable('getSelections'); $.each(checked, function(i, item) { ids.push(item.id); } delete(ids);}/* -------中间省略部分代码------ */funct
2020-05-26 18:21:57 2430
转载 Navicat连接MySQL数据库报错Authentication plugin ‘caching_sha2_password’ cannot be loaded
Navicat Premium 12连接MySQL数据库出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的解决方案:1、以管理员身份登录mysql;2、修改账户密码加密规则并更新用户密码: #修改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更新一下用户的密码ALTER USER 'root
2020-05-25 16:05:24 644
转载 MySQL提示请稍后片刻后再试一次
1、背景:多次启动或停止MySQL服务后,提示“服务正在启动或停止中,请稍后片刻后再试一次”。2、解决方法:以管理员身份启动cmd窗口,输入命令:takslist | findstr "mysql"可查找mysql的残留进程;再使用命令:taskkill /f /t /im mysqld.exe即可杀掉mysql的全部残留进程。之后,便可正常启动mysql服务(管理员身份)。本文转载自:MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】...
2020-05-25 11:57:54 298
原创 JMeter压力测试简单总结
1、下载JMeter zip包,点击\bin目录下的jmeter.bat,即可启动JMeter。本文中使用的JMeter版本为5.2.1;2、测试步骤:① 鼠标右键点击测试计划,依次选择添加-线程(用户)-线程组,即可创建线程组;② 创建http请求,右击线程组,依次选择添加-取样器-http请求,即可;③ 右击http请求,依次选择添加-监听器-查看结果树,即可查看接口调用结果;④ 若测试数据来源于导入的文件(txt或csv格式),则需配置数据文件设置;右击http请求,依次选择添加-配
2020-05-14 14:20:37 322
原创 MySQL字符串拼接
使用函数concat即可。concat(str 1, str 2, ···);SELECT concat(lastName, firstName) as 姓名 FROM table_students
2020-05-13 18:49:54 135
原创 MySQL中的+号
1、java中的"+“号:① 运算符:两个操作数均为数值型;② 连接符:其中一个操作数为字符型。2、mysql中的”+"号:仅有一个功能:运算符。① 两个操作数均为数值型,则做加法运算;select 100 + 90;② 只要其中一个为字符型数值,则会试图将字符型数值转换为数值型:若转换成功,则继续做加法运算;select '123' + 90;若转换失败,则将字符型数值转换为0,再做加法运算。select 'john' + 90;③ 只要其中一个为null,则结果肯定为nul
2020-05-13 18:46:40 681
原创 fastJson中的@JsonProperty(value = "")与@JSONField(name = "")注解
两注解均用于属性上。本人使用两个注解的场景:涉及到与第三方接口对接中,第三方的属性名与我方属性名不同,我方属性名均为请求与响应中的属性定义,在MyRequest中,第三方属性为ProductId,而我方属性为productID,此时,使用JSONFeild属性即可解决第三方与我方属性名不一致问题;而在第三方请求我方接口后,返回的响应中(MyResponse),我方最终返回的属性名为produc...
2020-04-30 16:58:14 3662
转载 @RequestBody的使用
本文转载自https://blog.csdn.net/justry_deng/article/details/80972817
2020-03-20 18:42:43 140
转载 List求交集、并集、差集、去重
本文转载自https://www.cnblogs.com/qlqwjy/p/9812919.htmlhttps://blog.csdn.net/qq_32452623/article/details/78087752
2020-03-20 18:38:37 397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人