自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 在MySQL中使用不等于符号还能走索引吗?

走不走索引,只取决于一个因素,那就是成本。

2023-03-05 17:33:54 1683

原创 一文带你了解MySQL的Server层和引擎层是如何交互的?

对于很多开发小伙伴来说,每天写SQL是必不可少的一项工作。那不知道大家有没有深入了解过,当我们的一条SQL命令被执行时,MySQL是如何把数据从硬盘/内存中查出来并展示到用户面前的呢?

2023-02-24 19:16:09 842

原创 MySQL:连explain的type类型都没搞清楚,怎敢说精通SQL优化?

总得来说,我们在进行查询时,查询类型可分为两大类:全部扫描和索引查询。索引查询又可以细分:1,唯一索引等值查询。2,普通索引等值查询。3,普通索引范围查询。4,扫描整个索引树。对于一条查询sql来说,不同的查询类型虽然结果可能是一样的,但是其性能却可能天差地别。

2023-02-13 13:27:27 727 3

原创 tomcat:设计模式用的好,下班就能早

tomcat作为一款经典的轻量级应用服务器,自然也使用了很多优雅的设计模式。今天给大家简单介绍一下tomcat在初始化组件时使用的几种设计模式。

2023-02-13 13:26:40 440 2

原创 MySQL:为什么说应该优先选择普通索引,尽量避免使用唯一索引

在使用MySQL的过程中,随着表数据的逐渐增多,为了更快的查询我们需要的数据,我们会在表中建立不同类型的索引。今天我们来聊一聊,普通索引和唯一索引的使用场景,以及为什么说推荐大家优先使用普通索引,尽量避免使用唯一索引。对于一个普通的二级索引,目的就是为了加速查询,所以我们可能会为表中的某个字段或者某些字段,建立一个普通的二级索引。而对于唯一索引来说,由于其唯一键约束的特性,有时我们会更多的赋予其业务含义。

2023-02-13 13:26:21 529

原创 对话面试官:MySQL中int(11)和int(10)有什么区别?

那么对于int类型来说,当定义为无符号int时,最大取值范围是4294967295,数一下长度也就10位,那么难道我们定义int(11)的时候,可以突破int类型的取值上限了吗?对于字符串类型的定义name varchar(20),我们可以清楚的知道,这是表示name这个字段最大长度是20个字符,当name字段的长度超过20字符时,MySQL就会报错。当定义一个无符号int类型,且设置了ZEROFILL属性时,如果数值的长度没有达到显示的宽度时,MySQL会自动的在数值前面补零直至达到定义的宽度。

2023-02-06 12:58:49 588

原创 tomcat优化线程池的思路真的好,每个javaer都应该了解一下

对于一个新任务,有空闲的线程就先用空闲的线程,线程不够用又没达到上限就去创建新线程,线程达到上限就扔到队列排队去,队列满了执行重试机制,重试失败那就没办法了,执行拒绝策略吧

2023-02-06 12:56:28 1411 1

原创 跟同事杠上了,用雪花算法生成的id做主键对MySQL性能有影响?

用雪花算法生成的id做主键,对MySQL性能到底有没有影响?MySQL必须使用连续递增的主键才能发挥最大性能?

2023-02-03 13:23:05 3778 5

原创 对话面试官:MySQL自增主键id快用完了怎么办?

所以,如果你的业务预期会产生很多数据,那么建议你在创建表时,直接使用bigint,无符号的bigint最大值是18446744073709551615,这个数基本可以保证你的业务不受影响了。我们在定义MySQL表时,为了性能考虑,一般会使用MySQL的自增主键id,每个自增id都会定义一个初始值,一般从1开始,然后不停得增加步长(不配置的话步长默认为1)。另外多说几句,建表时采用什么类型的主键,还是要根据具体业务具体分析,合理的主键类型会占用更小的空间,具有更好的性能。可以看到,直接提示主键重复了。

2023-02-03 13:21:10 753

原创 SpringbootAdmin:轻量级的Springboot监控组件,用过的都说好

Springboot Admin是一个管理和监控Springboot项目的组件,分为服务端和客户端,两端通过http进行通信。由于其轻量级的特性,所以特别适合中小项目使用。

2023-02-03 13:20:19 808

原创 被面试官问住了,MySQL两阶段提交是什么鬼?

MySQL通过两阶段提交的机制,保证了redo log和bin log的逻辑一致性,进而保证了数据的不丢失以及主从库的数据一致。

2023-02-03 13:18:28 554

原创 Springboot进阶:如何利用redis快速简单的实现全局接口限流

以上两种利用redis实现限流的方式基本能满足我们大部分的业务需要,对于部分要求限流粒度更高更准的业务,可以引入sentinel来满足业务需要。

2023-01-28 22:45:14 324

原创 不要在线上滥用CopyOnWriteArrayList,姿势不对性能真的很拉胯

从JDK1.5版本,JAVA提供了线程安全的List增强版CopyOnWriteArrayList,其保持线程安全的方式是:每次修改数据时,不会直接修改数据,而是把数据复制出来一份,对复制出来的数组进行操作。可以清楚的看到,在大量写的情况下,CopyOnWriteArrayList的性能是远远不如普通的加锁List的,性能差距可能在100倍以上。通过这样的机制,可以极大程度的提升读的并发性能,所以对于CopyOnWriteArrayList来说,非常适合读多写少或者无锁的场景。

2023-01-28 22:43:45 1855

原创 Spring进阶:3步引入MybatisPlus多数据源,详细配置及原理解析

MybatisPlus(MP)作为mybatis的增强工具,提供了配置多数据源的扩展,通过简单的几步配置,即可使用注解轻松切换数据源。

2023-01-28 22:42:46 2917

原创 有点懵,MySQL使用grant授权后没必要flush privilege?

使用grant命令之后,并不需要再随手加上flush privileges,因为grant 语句会同时修改数据表和内存。只有当我们不规范的直接使用DML语句修改表中权限字段时,才需要使用flush privileges刷新数据。

2023-01-28 22:40:35 325

原创 不规范使用ThreadLocal导致的bug,说多了都是泪

我们在写业务代码时,正确的理解线程的全生命周期以及执行原理,对我们提升代码的健壮性其实很有帮助。有时我们觉得底层原理很枯燥乏味,开发业务就是写增删改查,多线程用的也很少,但我们只是没有意识到,我们的代码一直跑在tomcat提供的线程池中,本身就是一个多线程的环境。除了tomcat的线程池,我们自定义的线程池其实也会有这个问题,大家可以看看自己的业务代码是否踩过这个坑。

2023-01-28 22:39:46 2047

原创 1分钟带你学会MySQL覆盖索引,让你的SQL更高效

覆盖索引是MySQL优化sql性能的一种非常重要而且常用的手段,通过覆盖索引,我们可以直接查询到需要的结果,而不用回表,从而大大减少树的搜索次数,非常明显的提升查询性能。

2023-01-28 22:38:19 290 2

原创 如何利用MDC快速查询应用接口全部执行日志

有没有一种简单高效的方法,即使我们在日志中不打印任何关键字,系统会自动生成一个关键字,让我们一次性查询出这个接口的所有log记录呢?

2023-01-28 22:36:31 630

原创 简单实用,利用redis轻松实现高并发全局ID生成器

Redis作为高性能的KV数据库,并且操作还是原子性的,所以用来做支持高并发的发号器十分合适。

2023-01-15 16:04:27 403

原创 55个常见Springboot应用示例,手把手教你深度学习Springboot

今天给大家推荐一个深度学习实战的Springboot项目,包含了服务端开发常见的55个功能示例,比如logback日志模块的配置、通过AOP切面记录日志、集成mybatisPlus、集成redis、集成RabbitMQ消息队列等等所有常见的功能。项目作者将每一个功能都做成了一个模块,大家使用时只需要按照模块中的readme文档,一步一步的配置就可以完成一个功能的开发。这些项目的代码都是经过大家反复认证过的,只要引入的版本号没问题,就可以在我们的项目中正常的跑起来。1,引入mybatis-plus的包。

2023-01-15 16:02:52 1519

原创 函数式接口编程真没那么难,简单几行让你的代码更优雅

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。JDK8中新增了一个很重要的包:java.util.function,在这个包下的所有接口都是函数式接口。通过函数式接口,可以极大的简化我们的代码,让我们的代码看起来更简洁。包中的接口虽然多,但是大致可以分为4大类,分别是Consumer(消费型)、Supplier(供给型)、Predicate(谓词型)、Function(功能型)。

2023-01-15 16:01:37 98

原创 面试官:MySQL主键为什么不是连续递增的?

设计MySQL表时,我们一般会设置一个自增主键,从而让主键索引尽可能的保持递增的趋势,这样可以避免页分裂,让MySQL顺序写入,大大提高MySQL的性能。当我们创建完一个表后,通过show create table命令,可以看到MySQL定义了AUTO_INCREMENT来指定主键的递增值。在MySQL5.7之前,这个递增值是直接保存在内存里面的,当服务器重启后,MySQL会读取表里面的最大主键id,然后将最大值+1作为下次递增的值。

2022-12-27 23:31:57 271

原创 用BigDecimal计算金额就高枕无忧了?带你了解BigDecimal这5个坑

1,BigDecimal虽然计算精度准确,但是其性能相对double,float是较差的。如果没有高精度计算的要求,那也不必强行使用BigDecimal。2,初始BigDecimal时,建议强制使用字符串的构造参数。3,BigDecimal对象是不可变的,每次计算都会产生一个新对象,所以记得保存做完计算以后的值。

2022-12-27 23:30:42 173

原创 Shiro用起来太痛苦?这个轻量级权限框架一行代码搞定登录

SaToken是一个轻量级的Java权限认证框架,目标是让鉴权变得简单、优雅。其主要解决了登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。目前在Gitee上已经有了8.9K的star,足以可见大家对其的认可。使用了SaToken以后,登录有多简单呢?没错,一行代码就可以搞定登录了。

2022-12-27 23:30:09 238

原创 盘点导致Spring事务失效的4个场景

事务是我们日常开发工作中无法避免的一个功能,深刻理解事务的运行机制,正确使用事务的声明式操作,才能让我们写出更健壮的代码。

2022-12-27 23:29:19 105

原创 Java8之22个lambda表达式用法入门示例超简单,这还不会你就out了

lambda表达式简明扼要的以流水线的方式去处理集合内的数据,可以很轻松的完成过滤、分组、收集、归约这类操作。总得来说,lambda的操作分为两类:中间型和最终型。中间型操作。

2022-12-27 23:27:26 334

原创 Springboot全局配置自动格式化日期参数,超简单直接拿去用

日常开发中,时间格式的参数出现频率非常高,很多朋友对时间格式转换也很头疼,或者只知道如何配置,而不知道这些配置如何生效的。今天我们来梳理一下Springboot项目中配置日期转换的三种方式,以及其大致原理。

2022-12-22 22:40:38 1040

原创 当我准备用SpringEvent优雅的解耦时,连续两个bug把我搞懵了

本文主要讲解了SpringEvent基本的使用方法,和平常开发中可能会遇到的一些问题。总的来说,Spring为了让大家用的更轻松,考虑了各种可能发生的情况,但是如果大家不了解背后的实现原理,就可能发生一些本不该出现的bug。

2022-12-22 22:39:25 305

原创 为什么说在SpringAOP中,不要使用this调用方法?

SpringAOP实际上会自动为我们创建一个Proxy,使得调用者能无感知地调用指定方法,本质上就是一个动态代理。我们只有访问这些代理对象的方法,才能获得AOP实现的功能,所以通过this引用是无法去正确使用 AOP 功能的。

2022-12-22 22:39:04 559

原创 Spring项目中自动打印执行sql和耗时,这款神级插件你值得拥有

P6Spy通过对数据源的包装,进而实现了一系列的功能增强,让我们可以方便的打印sql执行情况。但是相应的,如果在生产环境开启p6spy的打印功能,对性能还是由一定的影响的。建议大家在测试环境开启此功能,对跟踪、修复bug都很有帮助。

2022-12-22 22:37:36 474

原创 没事不要乱写close和shutdown方法,搞不好线上就出个大bug

在Spring项目中,我们在定义一个bean的时候,可能会随手写一个close或者shutdown方法去关闭一些资源。但是有时候这两个看起来很正常的方法名,即使我们不添加任何特殊配置,也可能会给我们带来潜在的bug。通过一个简单的bean重现一下这个问题。定义一个系统配置类,在某些条件下,我们会调用这个类的close方法去执行一些关闭资源的动作。通过@Bean将这个类注入到Spring容器中:在很长一段时间内,这段代码都执行得很好。但是有一次系统意外停机时,bug发生了。通过上图可以看到,clo

2022-12-06 22:26:59 211

原创 Spring的@Value注解使用实践及一个经典的易错场景

Spring提供了@Value注解帮助我们注入一个自定义属性或者对象,大大简化了我们的操作。但是如果对其原理不清楚,有时也会遇到一些不可预期的bug。本文主要介绍了@Value注解使用的常见场景及使用方法,以及分享一个比较经典的易错场景。常见的使用方式有以下四种,请注意使用方式的不同。实践1,注入一个字符串启动我们的项目,可以看到控制台打印出我们注入的str的值:2,注入一个自定义属性在application.properties配置文件中配置以下属性:启动项目,控制台打印出来我

2022-12-06 22:26:02 612

原创 为什么说在SpringAOP中,不要使用this调用方法?

SpringAOP是Spring中除了依赖注入以外最为核心的功能,其原理是利用CGlib和JDK动态代理等方式来实现运行期动态方法增强,从而降低系统耦合,提升代码的复用性。不过,在享受AOP强大功能便利的同时,我们也会经常遇到一些看起来莫名其妙的bug。今天,我们来聊一聊,为什么说在AOP方法中,不要轻易使用this调用方法?使用了this会出现什么样的情况?背后的原理是什么?又该如何解决?废话不多说,直接实战上代码。假设我们有一个核心支付类,其中有pay()支付功能,同时会通过record()方法记录都有

2022-12-06 22:24:12 603

原创 Spring进阶:定义bean时容易踩的两个坑,连老手也容易犯错

默认情况下,Spring维护的bean都是单例,但是有时候我们也需要一些非单例bean,比如prototype。定义一个bean为prototype类型很简单,使用@Scope注解即可。@Service//....}定义很简单,但是使用的时候可能并不会产生如我们预期的结果。}}按照预期,每次访问/demo/hello,返回的应该都是一个新的DemoBean实例。为什么会这样呢?@Scope注解有bug?其实问题出现在@Autowired private DemoBean demoBean。

2022-11-28 23:53:25 183

原创 上千star的分布式ID生产黑科技,让你再也不用为生成ID发愁了

sequence虽然大幅提升了性能,但是在某些情况下仍然可能出现重复的情况,比如机器标识重复、起始时间戳被修改重置等,这些问题需要我们特别注意。总得来说,sequence被称为分布式高效ID生产黑科技并不为过,著名的ORM框架mybatis plus用的也是这个组件,大家有兴趣也可以去了解一下。

2022-11-27 13:50:56 232

原创 还在用数据库自增ID做主键?建议了解一下雪花算法生成的分布式ID

本文主要讲解了什么是雪花算法,雪花算法适用的场景以及如何解决雪花算法冲突的问题。当然雪花算法也不是万能的,不能适用所有的场景,建议大家根据实际的业务进行评估,然后选择合适的方案。

2022-11-26 15:55:10 781

原创 如何实现类似订单到期未支付自动关闭的功能?这6种方案任你挑选

本文介绍了常见的6种实现订单关闭的方案,不同的方案都有其适用的场景,各自的优缺点也不尽相同,大家可以根据自己的业务场景,选择合适的方案。如果本文中没有提到你熟悉的技术方案,也欢迎在评论区分享给大家,期待共同学习进步。

2022-11-25 16:02:44 527

原创 盘点导致sql执行速度慢的几种情况,都是生产环境踩过的坑

总的来说,sql执行速度慢会受到很多种情况的影响,比如表锁,行锁。在实际的业务场景中也许会更复杂,但是处理起来的步骤基本大同小异,只要找到问题的根源,知道如何解决,处理起来就可以做到心中有数,游刃有余。

2022-11-24 00:04:23 6146

原创 MySQL:如何给字符串加一个高效索引?

在日常需求中,用户使用手机号或者邮箱登录某一个系统,是一个很常见的操作,那如何在类似手机号或者邮箱这样的字段上建立一个合理的索引呢?

2022-11-22 13:48:11 435

原创 在Spring异步线程池中自动传递上下文,这样写轻松又方便

利用ThreadPoolTaskExecutor的TaskDecorator,动态的给一个对象添加一些额外的功能,比生成子类会更加灵活。在我们平常的编码过程中,也建议大家尝试使用装饰模式优化我们的代码。

2022-11-20 21:49:45 731

趣味测试小程序.zip

2021年最新版本的趣味测试小程序源码 内含各种测试,脱单测试.好色测试,人格测试等等几百种测试类型 可配置流量主,无后台,前端直接导入,流量主配置从WXML文件内修改即可

2021-05-21

bootstrap-table所有源码

基本包含所有可能用到的js 如数据导出 本地化等

2017-02-13

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

TA关注的人

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