自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL中,当update修改数据与原数据相同时会再次执行吗?

一. 背景本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗?二、测试环境MySQL5.7.25Centos 7.4三、binlog_format为ROW1、参数2. 测试步骤session1session2session13、总结在binlog_format=row和binlog_row_image=FULL时,由于MySQL 需要在 binlog 里面记录所有的字段,所以在读数据的时候就会把所有数据都读出

2021-01-03 20:08:46 2581

原创 太神奇的 SQL 查询经历,group by 慢查询优化~

问题背景现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下:我在测试环境构造了500万条数据,模拟了这个慢查询。简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个。看执行计划可以看到,group by字段上我是加了索

2020-12-05 18:31:26 238

原创 MySQL 实现一个简单版搜索引擎,真是绝了!

本文教大家使用 MySQL 全文索引来实现一个简单版搜索引擎。前言只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的)char、varchar、text类型字段能创建全文索引(fulltext index type)全文索引的基于关键词的,如何区分不同的关键词了,就要用到分词(stopword)英文单词用空格,逗号进行分词;中文分词不方便(一个句子不知道怎样区分不同的关键词)内置分词解析器ngram支持中文,日文,韩文(将句子分成固定数字的短

2020-12-05 18:00:11 615

原创 谈谈MySQL是如何解决幻读问题的?

一,前言:事务的隔离级别有四种,读未提交,读已提交,可重复读和串行化,下面结合具体的问题,在mysql中,innodb引擎是怎么解决幻读的?二,详情:一张图胜过千言万语:

2020-12-05 17:51:15 165

原创 搜狗面试题:JAVA使用for循环会重复调用list.size()吗?

最近,有朋友讨论说for循环里不要用list.size(),这样会导致每次都调用一次list.size()接口会耗性能,建议我们在外面使用一个变量来存储这个list.size()的值再放到循环里面,真的是这样吗?我做了个小测试,代码如下:public class Test2 { public static void main(String[] args) { List list = new ArrayList<String>(); list.add

2020-12-05 16:36:11 361

原创 SQL性能优化,太太太太太太太有用了!

前言本文主要针对的是关系型数据数据库MySql。先简单梳理下Mysql的基本概念,然后分创建时和查询时这两个阶段的优化展开。基本概念简述1 .逻辑架构第一层:客户端通过连接服务,将要执行的sql指令传输过来第二层:服务器解析并优化sql,生成最终的执行计划并执行第三层:存储引擎,负责数据的储存和提取2 .锁数据库通过锁机制来解决并发场景-共享锁(读锁)和排他锁(写锁)。读锁是不阻塞的,多个客户端可以在同一时刻读取同一个资源。写锁是排他的,并且会阻塞其他的读锁和写锁。简单提下乐观锁和悲观锁

2020-12-05 16:30:22 113

原创 来,教你写一手好SQL!

本人负责的项目主要采用阿里云数据库 MySQL,最近频繁出现慢 SQL 告警,执行时间最长的竟然高达 5 分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些 SQL 的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。MySQL 性能1. 最大数据量抛开数据量和并发数,谈性能都是耍流氓。MySQL 没有限制单表最大记录数,它取决于操作系统对文件大小的限制。《阿里巴巴 Java 开发手册》提出单表

2020-12-05 16:08:32 228

原创 因未发奖金,一名程序员删代码泄愤,平台崩溃近三个小时

近日,又发生了一起删代码事件。一名程序员因不满公司未发奖金,怒而修改华为云obs对象存储服务代码,导致平台大范围崩溃。最终,这位“一时冲动”的程序员因涉嫌犯破坏计算机信息系统罪,获得了5个月的刑期。事情的经过是这样的:被告人王某(以下简称:王某)所在的公司项目是一个同城生活服务平台,主要是满足晋城消费者线上、线下的吃、喝、玩、乐、购服务。2019年12月,时任公司技术部的刘经理交给王某一个任务:开发 obs 代码,如果开发成功公司会有奖励。在开发过程中王某负责写代码,另一位同事则负责做前段代码

2020-12-05 15:12:54 218

原创 GET 和 POST 两种基本请求方法有什么区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标准答案”:GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,

2020-12-05 14:51:13 271

原创 HTTP协议无状态中的 “状态“ 到底指的是什么?

最近,面试头条,一面面试官为了我一个关于HTTP的问题。题目:http协议是无状态的,无连接的,无状态的【状态】到底指的是什么?当时就被问懵逼了,幸好其它问题答得还不错,勉强过关。面完后,我去找了很多关于该问题的资料,不仅没有发现有一针见血正面回答这个问题的,而且有些解释还充斥了各种错误,看着看着就觉得心里憋着一股浊气吐不出来于是在看了很多资料之后,我一口吐出浊气,大声正面提出这个问题:http协议无状态中的【状态】到底指的是什么?!然后开始不断探索解决这个问题。。。最终很高兴的是我找到了让人满

2020-11-15 22:21:19 327

原创 整理的MySQL数据库设计规范,值得收藏!

概述MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。无意中从github上看到一个大佬的MySQL数据库设计规范,顺便在这里分享一下。1. 规范背景与目的MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更

2020-11-15 22:00:51 165 1

原创 厉害!竟然可以不用count,来解决查找是否“存在“的问题

根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要Select count(*) 呢?1. 目前多数人的写法多次回顾代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下。#### SQL写法:SELECT count(*) FROM table WHERE a = 1 AND b = 2#### Java写法:int nums = xxDao.countXxxxByXxx(param

2020-11-15 21:42:01 290

原创 工作笔记!

工作上的笔记重要:遇到问题多思考是哪里的问题 是前端的问题还是后端的问题遇到问题所思考是哪方面的,提问题要取核心,是业务还是代码写不来, 而不是直接说不会遇到问题在请教别人的时候拿本子记下来关键的地方,正所谓好记性不如烂笔头遇到问题在寻求别人帮忙的时候不要直接让别人来操作而是让他教你去找问题再使用自己常用的开发工具的时候一定要熟练,就是记忆快捷键的使用提高开发效率使用缓存 解决了数据库的压力, 如更新很频繁每次都要查询就降低性能所以用这个更合适 第一次正常执行,将sql语句缓存了第二次直

2020-11-15 14:24:30 959

原创 Java 压缩20M文件从30秒到1秒的优化过程

有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。publicstaticvoid zipFileNoBuffer() {File zipFile = new File(ZIP_FILE);try(ZipOutputStream

2020-11-09 23:15:39 202

原创 认为count(1)比count(*)效率高

1.尽量避免大事务操作,提高系统并发能力。count(1) and count()当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count()用时多了!从执行计划来看,count(1)和count()的效果是一样的。但是在表做过分析之后,count(1)会比count()的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。因为count(),自动会优化指定到那一个字段。所以没必要去count

2020-11-09 22:27:06 175

原创 30种SQL语句优化

在SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考。对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可

2020-11-09 22:15:43 109

原创 IDEA快捷键

自动代码编辑Ctrl+Alt+O 优化导入的类和包自动删除导入的包中没有用的多余的包Alt+InsSert 生成代码(如get,set方法,构造函数等自动生成Get Set或者tostring和构造函数Ctrl+Alt+T 使用(if…else, try…catch, for, while 等)包围选中语句要选中语句然后可以选择生成相应的if-trycatch-for-while等Ctrl+O 重写父类方法(一般用于继承)当一个类继承另一个类 可以重写父类的方法让你选择不容易出错Ctr

2020-10-31 13:26:00 896 1

原创 JFinal简单的增删改查 完全没问题启动

拿我自身简单的增删改查来做笔记 也是拿官网jboot来做笔记项目结构连接数据库一、使用自动代码生成器生成以后二、获取数据库数据三、html文件进行展示四、添加五、修改六、删除七、全部代码:项目结构连接数据库jboot.properties:其中jbootdemo为我的数据库库名 下面依次是账号和密码jboot.datasource.type = mysqljboot.datasource.url = jdbc:mysql://127.0.0.1:3306/jbootdemo?useUni

2020-10-27 21:26:22 810 1

原创 delete、truncate、drop的区别有哪些,该如何选择?不妨进来看看

先看一个故事:上周同事小姐姐问我:“哈哥你看,我发现MySQL有bug,我下午为了清理磁盘,明明删除了100万条MySQL数据,磁盘不仅没有变小,反而更满了呢??”那你是怎么删除的?“delete from table 呀”“怪不得,其实要删除MySQL数据是有好几种方式的,有些场景下是不应该用DELETE的,比如你这种情况。好了,让我来给你讲一下吧。”MySQL删除数据的方式都有哪些?咱们常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;

2020-10-26 23:32:07 281

原创 JFinal学习笔记

JFinal这个框架主要特点是1. 精简 2.实用 3. 极速JFinal是JavaWeb框架JFinal笔记前言一、快速上手1.1 以非maven方式开发1.2 以maven开发二、JFinalConfig2.1 configConstant(Constants me)三. 控制器Controller3.1JFinal访问流程总结前言概念:JFinal 是基于 Java 语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restf

2020-10-24 21:22:49 1184

原创 Jboot学习笔记

JBoot学习笔记:准备工作:在 pom.xml 里添加对 Jboot 的依赖配置:<dependency> <groupId>io.jboot</groupId> <artifactId>jboot</artifactId> <version>3.5.6</version></dependency>一. 第一个程序import io.jboot.app.JbootAppli

2020-10-22 22:51:00 895

原创 数据类型

八种数据类型数据类型是指数据的类型。Java中主要有八种基本数据类型:byte、short、int、long、float、double、boolean、char。概念:byte:8位、有符号的以二进制补码表示的整数min : -128(-2^7)max: 127(2^7-1)default: 0对应包装类:Byte占用1个字节short:16位、有符号的以二进制补码表示的整数min : -32768(-2^15)max: 32767(2^15 - 1)

2020-10-21 22:29:17 474 3

原创 使用sql语句查出每门课成绩都大于80分的学生姓名

根据表的结构来使用sql语句查询建表SQL如下:create table stu_grade(name varchar(20),coursevarchar(20),grade int);– 插入数据INSERT INTO stu_grade VALUES (‘张三’, ‘语文’, ‘81’);INSERT INTO stu_grade VALUES (‘张三’, ‘数学’, ‘75’);INSERT INTO stu_grade VALUES (‘李四’, ‘语文’, ‘76’);INS

2020-10-21 15:25:28 30019 1

原创 写一段代码在遍历ArrayList时移除一个元素(假设条件remove为true时移除)

1. Java中Iterator用法整理概念: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承

2020-10-21 15:04:47 471 2

原创 冒泡排序法

冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。概念:从前向后(或从后向前)依次比较相邻的元素,若发现逆顺序,则交换。小的向前换,大的向后换,像水底的气泡逐渐向上冒,顾名思义冒泡排序法。通俗一点就是把大的往上挪!向冒泡一样。是交换式排序法的一种。冒泡排序法效率较

2020-10-21 14:42:08 490

转载 try-catch-finally执行的顺序问题

问题:try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?不管有没有出现异常,finally代码块都会执行;不管try和catch的代码块中有没有return时,finally仍会执行,且如果finally代码块也有return,则此代码肯定会返回finally执行的return值.分有return和没有return来讨论try-catch-finally执行顺序的情况:1. 无return如:try {

2020-10-21 14:32:09 1074 2

原创 集合Set、Map、List三种集合的区别

List、Map、Set的区别与联系一、结构特点List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的)

2020-10-21 13:00:06 485

原创 “equals“和“==“和“compareTo”的区别

1. 功能不同"=="是判断两个变量或实例是不是指向同一个内存空间。"equals"是判断两个变量或实例所指向的内存空间的值是不是相同2. 定义不同"equals"在JAVA中是一个方法。"=="在JAVA中只是一个运算符合。3.比较不同"=="是指对内存地址进行比较"equals"是对字符串的内容进行比较总结:==是指引用是否相同equals指的值是否相同一图胜千言举个例子:public class EqualsTest { public static vo

2020-10-21 12:28:53 2209 3

原创 spring学习笔记的理解-通俗易懂

文章由B站动力节点相关课程视频整理而成,这也是我第一篇博客也是借鉴于这位兄弟的,写得很好很有帮助希望能帮到你。spring学习目录一、Spring是什么?1.1二、使用步骤1.引入库2.读入数据总结一、Spring是什么?1.1概述:**Spring:**出现在2002年左右,降低企业级开发难度。帮助进行模块之间、类与类之间的管理,帮助开发人员创建对象,管理对象之间的关系。2003年传入国内,被大量使用。2017出现新的流行框架SpringBoot,核心思想与Spring相同。**核心

2020-10-19 10:29:41 801

原创 说说Session实现机制以及和Cookie的区别?

1、为什么有Session和Cookie?.根据早期的HTTP协议,每次request-reponse时,都要重新建立TCP连接。TCP连接每次都重新建立,所以服务器无法知道上次请求和本次请求是否来自于同一个客户端。因此,HTTP通信是无状态的。服务器认为每次请求都是一个全新的请求,无论该请求是否来自同一地址。但是这也带来了问题,假如不使用Session或Cookie,那么就意味着假如你登录了某个购物网站,你的每次请求因为无状态,购物网站的服务器都无法判断你的身份和登陆与否,意味着为了保持登陆你必须浏览

2020-10-17 09:44:16 202 2

JFinal笔记.zip

这是最新的JFinal框架的笔记 个人认为还是蛮好的 内容除了是文档部份也加入了个人的一些理解 相配套的视频https://ke.qq.com/course/2839073#term_id=102949849腾讯课堂这

2020-10-31

空空如也

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

TA关注的人

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