自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 synchronized关键字(锁升级案例)

synchronized关键字

2022-02-22 16:54:46 237

原创 threadLocal 面试题总结

文章目录 目录 系列文章目录 文章目录 前言 一、ThreadLocal是什么? 二、Thread,ThreadLocal,ThreadLocalMap这三者是什么关系 1.类之间的关系 2.既然这个Entry的key为一个弱引用的threadLocal,那会有什么问题 3.那么作者是怎么解决这个问题的呢 总结 前言3月份在面试中总结的java基础多线程ThreadLocal面试题,在这里总结一下提示:以下是本篇文章正文内容,下面案例可供参考...

2021-04-08 18:03:41 3571

原创 spring事务不生效和事务不回滚的原因(源码案例分析)

1.首先需要加事务的方法不能是私有的(如果方法私有,则事务不生效)spring源码如下在AbstractFallbackTransactionAttributeSource.computeTransactionAttribute方法的第一行判断,判断事务的方法是否为public2.其次抛出异常的时候,不要去接受异常,让spring去接受异常处理,否则事务不会回滚TransactionInterceptor.invoke();protected Object invokeWit

2020-08-17 18:07:43 921

原创 ReentrantLock锁原理,源码解析,AQS

ReentrantLock创建方式/** * 默认构造器,创建非公平锁 */ public ReentrantLock() { sync = new NonfairSync(); } /** * 由fair指定,true代表公平锁,false代表非公平锁 */ public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new

2020-08-06 10:22:39 232

原创 redis缓存穿透,缓存击穿,缓存雪崩区别及解决方案

前言工作中,我们经常使用缓存来提高查询速度,减轻数据库的压力,不让过多的流量压垮数据库,所以缓存也成了我们系统重要的环节之一,而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下,缓存的这三个问题会导致大量的请求落到数据库,导致数据库的最大连接数占满,导致数据库故障,引发我们系统一系列故障。今天我们就来分析一下缓存这三种缓存问题有什么区别?缓存击穿缓存击穿指的是数据库查询一个不存在的数据,而我们的程序是只有数据库有数据时,我们才将数据存入缓存,这样会导致如果有人利用这个漏洞频繁访问这个数据值去查

2020-07-31 17:40:12 191

原创 redis数据备份与恢复

redis身为内存数据库,它将数据以key-value键值对的形式存入内存中,使我们可以更快的访问数据,但是当我们redis挂了,我们内存中的数据又该如何恢复,这需要redis的持久化模式redis的持久化分为两种,一种为半持久化模式...

2020-07-30 16:07:04 1454

原创 Redis缓存淘汰策略

Redis是基于内存key-value键值对的内存数据库,我们安装完数据库之后,内存往往会受到系统内存大小的限制,我们也可以配置redis能使用的最大的内存大小1.配置Redis内存(1)通过配置文件修改我们可以通过配置文件修改,安装完redis之后我们可以在redis根目录中找到redis.conf文件,在配置文件中添加一下参数就可以设置redis的内存大小了maxmemory 100mb //指定最大内存为100mb(2)进入客户端修改在服务器上输入redis-cli之后

2020-07-28 20:31:44 2716 1

原创 @Accessors(chain = true)导致bean拷贝工具空指针

1.@Accessors(chain = true)注解的含义公司原来的实体类上有lombok的@Accessors(chain = true)注解网上百度了一下这个注解,改注解会将我们的setter方法的返回值进行修改,我将这个编译后的class类反编译一下得到下面的代码我们的setId方法就变成了当前类的返回值,不是void了2.bean拷贝工具中的报错我们了解了上面的注解的含义,看一下拷贝类中报的错误我们的该方法为null,我们先看一下setter是怎么生成的,在该

2020-07-20 16:01:22 2422

原创 springboot将jar包中的配置类注入spring容器中

最近公司用微服务打算搭建一个订单系统,订单系统只能由内网调用,架构组打算让每一个应用引用订单系统的jar包进行请求,下面是订单系统请求的相关代码,jar包内的代码我们引入这个jar包,并将本地application.properties配置trade.url配置信息然后启动发现这个url并没有被赋值,很好奇,就大致看了一下@SpringBootApplication注解这个是自动配置注解,点进去发现有个有个自动配置包,继续点进去发现里面导入了Registrar这个类...

2020-07-09 20:57:33 6287

原创 基数排序原理及其实现

1.基数排序原理基数排序就是利用桶的概念按照位数进行排序按照个位数上面的值,将元素放入不同的桶中,等数组全部放入完毕,再将所有元素按照桶的顺序依次取出,再按照十位数上面的值进行桶分布,直到最大位数分布完毕,则第一个桶就是排完序的数组2.实现方法第一种写法相对容易的一种方法public static int[] cardinalitySort(int[] arr){ //获取最大值 int maxLength = maxLength(arr);.

2020-07-09 20:08:59 1347 3

原创 快速排序思想和实现(面试考点)

1.快速排序原理今天介绍快速排序,快速排序是

2020-07-08 20:53:28 187

转载 八大排序算法——希尔(shell)排序(动图演示 思路分析 实例代码java 复杂度分析)

一、动图演示二、思路分析希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。  简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。  而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组..

2020-07-06 20:00:51 756

原创 插入排序原理及实现思路

1.插入排序原理插入排序其实就是拿未排序数组中的第一个值,插入到已排序完中的数组的合适位置,来完成排序图中的黄色部分为我们已经排好序的数组部分图中的红色部分为未排好序数组中的第一个值图中的蓝色部分为未排序的数组部分2.实现思路1.我们开始默认数组的第一个元素为已经排好序的数组,整个数组为A2.未排序数组中的第一个元素拿出来,我们假设下标为n,与排序数组的第i个比较 如果该数组A[n]<A[i],则该元素位于i+1这个下标位置,相当于这个将大的数...

2020-07-05 21:30:44 1675

原创 选择排序原理及思路

1.选择排序原理话不多说,直接上图图中的黄色部分为我们已经排好序的数组部分图中的红色部分为未排好序数组中遍历过的最小值图中的蓝色部分为未排序的数组部分2.思路遍历数组中未排序的部分,取出最小值,和未排序的第一个交换位置,然后重复此操作代码如下/** * 选择排序 */ public static int[] selectionSort(int[] arr){ //临时变量,用于临时存放 int temp;

2020-07-05 20:35:54 3390

原创 单调栈,力扣题解-」更大元素 II

1.栈的简介栈是一种先进后出的数据结构,工作中我们很少用到这种数据结构,我了解到的只有jvm底层调用方法栈的时候有用到,其实我们java递归方法就是栈的一种应用。由于最近在学数据结构和算法,小老弟我就去力扣上面做了几道栈的算法题,没做几道就把小老弟我难住了,题目如下2.栈的应用给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。

2020-07-01 14:20:26 131

原创 利用数组实现队列

1.简介队列是一个有序列表,属于线性结构的一种,遵循先进先出原则标使用数组模拟队列示意图题2.数组模拟队列第一种实现思路标使用数组模拟队列示意图题如上图所示,MaxSize为我们数组的长度,rear为我们末尾指针,front为我们的头指针,当我们向队列中放数据的时候,我们的rear指针不断向后移动,取数据的时候,front指针向后移动这样看我们需要四个参数1.最大容量maxSize2.头指针,front3.尾指针,rear4.数组,queue啥时候数...

2020-06-28 16:30:00 579 2

原创 linux下安装git

linux下安装git,并关联github1.安装git2.配置git关联github1.安装git首先下载git,具体下载哪个版本可以在这个网站挑选https://mirrors.edge.kernel.org/pub/software/scm/gitwget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.25.0.t...

2020-03-17 16:03:02 125

空空如也

空空如也

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

TA关注的人

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