自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 mysql加锁方式及死锁案例

一、背景随着公司业务的发展,商品库存从商品中心独立出来成为一个独立的系统,承接主站商品库存校验、订单库存扣减、售后库存释放等业务。在上线之前我们对于核心接口进行了压测,压测过程中出现了 MySQL 5.6.35 死锁现象,通过日志发现引发死锁的只是一条简单的sql,死锁是怎么产生的?发扬技术人员刨根问底的优良传统,对于这次死锁原因进行了细致的排查和总结。本文既是此次过程的一个记录。在深入探究问题之前,我们先了解一下 MySQL 的加锁机制。二、MySQL 加锁机制首先要明确的一点是 MySQ

2021-02-02 21:24:30 258

原创 详解mysql中的各类锁

一、存储引擎中锁的区别 在介绍锁之前,我们先来了解下mysql的存储引擎。我们常用的存储引擎一般有两种,MyISAM和InnoDB,其中InnoDB最常用。至于两种存储引擎的特性我们就不在这里展开了,我们来看一下两种存储引擎里的锁有什么不同呢? 1、MyISAM MyISAM里是表锁的形式。所谓表锁就是对整张表进行加锁,优点是它的开销小,加锁快;锁定粒度大,并且不会发生死锁。缺点是因为是对整张表进行加锁的,所以发生锁冲突的概率也是最高的,并发度也比较低。 表锁又分...

2021-01-27 22:21:17 172

原创 mysql的索引你真的懂了吗?

在我们日常开发中,针对mysql的sql优化,最简单、最常用的方式就是为查询条件加索引。那么为什么加个索引,sql的性能就能有明显的提升呢?这是因为针对没有索引的sql语句,查询是在磁盘中全表扫描过滤的,我们知道计算机中磁盘性能是最低的,相对于CPU和内存来说,慢的可不是一点半点。那么索引中是怎么查询过滤的呢?索引中其实是采用了B+树的方式,在内存中过滤完数据之后,才到磁盘中获取具体的数据,相对于...

2019-08-01 14:13:01 256

原创 一文读懂ReentrantLock

synchronized是托管给JVM执行的,Lock的锁定是通过代码实现的。所以Lock比较灵活,可以便于开发人员根据合适的场景进行操作,Lock是一个接口,需要实现它来进行使用,ReetrantLock是Lock的主要实现类,ReetrantLock是一个可重入锁,同时可以指定公平锁和非公平锁,我们来具体看一下他的实现方式。一、ReentrantLock使用方式 ...

2019-07-30 20:38:42 183

原创 java线程池的底层实现ThreadPoolExecutor详解

上篇文章我们讲了java中四种线程池的使用方式和它们之间的区别,不清楚的可以去看一下:https://blog.csdn.net/weixin_41381822/article/details/93632846那么线程池的底层是如何实现的呢?我们可不可以根据需求自己来实现一个定制的线程池呢?这就是我们接下来要说的ThreadPoolExecutor类了。一、ThreadPoolExecut...

2019-06-26 17:02:35 688

原创 四种线程池的使用方式和区别详解

一、为什么要使用线程池我们知道线程的并发操作,并不是真正的同时执行,而是通过CPU的上下文切换来执行。因为CPU切换的速度很快,以至于我们感觉不到,会造成在一种在同一时间内执行了多个操作的错觉。那么我们在使用多线程的时候,如果创建了大量的线程,就会造成CPU的频繁切换,反而导致效率降低,而线程的数量在显式创建线程时,其实是不可控的。另外,频繁的创建和销毁线程,也会造成较大的开销。所以,我们...

2019-06-25 17:09:20 510

原创 线程安全的list之synchronizedList和CopyOnWriteArrayList

在上篇文章中我们已经介绍了其他的一些list集合,如ArrayList、linkedlist等。不清楚的可以看下上篇文章一文彻底了解List集合但是向ArrayList这些会出现线程不安全的问题,我们该怎样解决呢?接下来就是要介绍我们线程安全的list集合synchronizedList和CopyOnWriteArrayList。一、synchronizedListsynchroniz...

2019-06-20 20:50:10 1258

原创 一文彻底了解List集合

一、List集合List集合是Collection子类。ArrayList、LinkedList、Vector分别是对List的实现。类结构图如下:二、ArrayList、LinkedList、Vector的区别ArrayList随机查询效率高,但删除、插入的效率低,是线程不安全的。LinkedList随机查询的小路低,但删除、插入等写操作的效率高,线程同样是不安全的。ve...

2019-06-06 15:30:43 356

原创 idea使用maven打包Could not find artifact 异常

异常信息如下网上说是maven本地仓库等问题,尝试后并没有解决。后来发现是idea的maven配置。此处标红位置默认为Maven3 ,需要改成本地的maven路径即可。具体如下:...

2019-02-20 16:02:27 34443 4

原创 spring事物管理及@Transactional注解用法

一、什么是事物       在我们开发过程中,有很多需要事物的业务场景。比如:在我们转账的场景中,用户A需要转账500元给用户B。在用户A账户中扣除500元后,发生了异常,这时候用户B增加500元的语句可能就不会执行。就会导致转账的丢失。此时就需要事物管理将扣除500元的操作进行回滚。也就是说事物内的语句,要么全部执行成功,要么全部执行失败。二、事物管理的几种方式spring中的事物管...

2019-01-28 10:52:09 572

原创 jackson将json数组转换为List的两种方式

今天提供接口,发现协议设定上有需要将json数组转换为List的设计!避免大家踩坑,故总结一下两种方式!json数组大概为这种格式:jsonString=[{"id": "123","name": "李四",}, {"id": "6666","name": "李五",}]一、介绍两种方式都是依赖的ObjectMapper类!Ob

2018-11-26 20:21:40 23102 1

原创 vue前后端分离项目,解决跨域问题

最近公司新开发项目是前后端分离项目,前端用的是vue框架,在和前端调试接口时存在拒绝跨域访问403的情况。我这里主要将解决的过程记录一下。什么是跨域跨域是浏览器的同源策略造成的,只要是域名、端口、协议有一不同,就会被当做是不同的域,之间的请求就被当做跨域操作。设置同源限制主要是为了安全,如果没有同源限制存在浏览器中的cookie等其他数据可以任意读取,不同域下DOM任意操作,Ajax任...

2018-10-31 14:28:13 12852 1

原创 idea中maven无法导包问题

今天帮公司的实习生看一项目导包问题,多次清缓存,配置,发现maven配置的并没有问题!最后发现可能是他安装idea的时候没有配置好,有个地方配置一下就可以了,如下:首先maven配置如上,配置好本地的maven,一般这一步都是配置正常的,接下来才是解决问题的方法!找到这个目录,加上 -Dmaven.multiModuleProjectDirectory=$M2_HOM...

2018-10-16 11:05:08 14037 7

空空如也

空空如也

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

TA关注的人

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