自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 synchronized锁住的到底是什么

1.线程安全(1)为什么会造成线程安全问题在java中,一般有2个原因造成线程不安全:一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。(2)判断一个线程是否安全的一个重要原则是否有多线程访问可变的共享变量。(3)如何解决1.使用同步机制限制变量的访问:锁,比如Synchronize。也就说只要我们让共享的资源通过排队的方式来进行消费,就可以实现线程安全。这里Synchronize就是让同享的资源获取时,进行阻塞,要等占用这个资源的。2.使用关键字final。2.Syn

2021-03-16 14:47:23 641 2

原创 你可能不知道的idea的debug模式

1.行断点(line-debug)当程序代码运行到此代码行暂停。2.Suspend + Thread解释(1)Enabled:是否启用,取消勾选后变为空心圆。运行后直接打印,不在此处暂停。(2)Suspend:如果勾选,此时断点标识会变成黄色,此时不会在断点处暂停。意义:可以配置其他的断点设置使用,比如下图,可以答应出断点所在位置,其他的要各位自己探索了。(3)Thread如果勾选Thread可以在多线程中暂停。3.方法断点(method-debug)点击debug

2021-03-15 11:58:57 870

原创 HashMap简略源码解析

1.数据结构一般地,我们讨论的JDK版本为JDK1.7和JDK1.8。(1)jdk1.7数组+链表。(2)jdk1.8数组+链表+红黑树。2.HashMap中的哈希算法(1)什么是哈希:Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。(2)哈希算法:简单来说,通过哈希表(HASH-TABLE),对散列进行映射,根据键(Key)而直接访问在内存存储位置。(3)HashMap中的哈希算法:

2021-03-12 15:43:08 104

原创 关于lol破败之王杀人戒bug剖析

1.事件经过破败之王购买了杀人戒一级团击杀对方英雄,并变成了对方英雄,然后送塔,戒指就变成了很夸张的层数。视频b站:BV1yr4y1A7Mo2.分析物品分析:名称:黑暗封印+15法术强度+40生命值畏惧:每层【荣耀】提供5法术强度。荣耀:每次击杀提供2层,每次助攻提供1层(至多可达10层),每次死亡损失4层。先看看戒指层数:通过上述可知,击杀敌方英雄,杀人戒会+2层数,死亡-4层数,一来一去就是-2。图片展示的65534层数用二进制原码为1111111111111110,而如

2021-03-11 10:20:59 842

原创 equals和==的区别

我们比较equals和==的区别可以进行分类讨论1.基本数据类型什么是基本数据类型:Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。只能用==进行比较比较的是它们的值2.引用数据类型当用==进行比较时,比较的是内存地址值当用equals进行比较时,如果调用此方法的类未重写equals方法,则引用Object.equals()方法,源码如下:也就是此时equals等效于=

2021-03-11 09:54:39 44

原创 lombok遇到的奇妙的坑

lombok遇到的坑1.编译出错直接上代码public class TestJsonProperty { //@JsonProperty("aid") private Integer aId; private Integer aid;} @PostMapping("/testProperty") public ResultVO<?> testProperty(@RequestBody TestJsonProperty property){ Sys

2021-03-10 17:00:15 158

转载 git流程图

2021-03-05 16:57:26 220

原创 maven安装本地jar包的指令

maven安装本地jar包的指令(1)直接上指令:mvn install:install-file -DgroupId=org.bouncycastle -DartifactId=bcprov-jdk15on -Dversion=1.6.0 -Dpackaging=jar -Dfile=/Users/java_resources/maven-project-info-reports-plugin-3.1.0.jar(2)解释:Dfile:本地jar包对应的资源路径DgroupId,Dartifa

2021-03-04 13:48:06 169 1

原创 java冒泡排序

java冒泡排序1.排序思路(1)将数组中的数进行从左至右两两比较,每次比较选出一个最大值,并把这个最大值不断移动到最右端,完成一次排序。(2)去除刚才最右端的数,进行下一轮重复排序即可。2.代码思路(1)假设数组长度为N,外层循环次数确定,每次排序确定一个最大值,所以外层循环为N-1。(2)内层循环为两两比较,所以每完成一次排序则循环次数-1。(3)从左至右两两比较,遇到左侧数比右侧数更大的情况,需要交换两数位置,否则无需进行交换。此时完成一次比较。3.代码示例public static

2021-03-04 12:11:40 57 1

原创 java快速排序详解

快速排序1.排序思路(1)快速排序本质相当于找到数组中的“基准数”在数组中的“中间”位置,然后从“中间”位置为分界线,分割成“左右”两个小的数组,在这个小的数组中继续递归上述操作。(2)所谓“中间”位置:将比基准数大的数据放在基准数右边,把基准数小的放在左边。(3)所谓“基准数”:随便在数组两端选择一个,一般选择最左边的数。2.代码思路(1)其实所有排序的本质是找到数组中的数在一个“合适”的位置的过程:快速排序就是在找基准数在数组“中间”位置的过程,可以首先想到指针。(2)如果选择最左的数作为

2021-03-03 15:38:17 136 1

原创 redis延迟双删的策略

redis延迟双删的策略1.为什么要进行延迟双删一般我们在更新数据库数据时,需要同步redis中缓存的数据所以存在两种方法:(1)第一种方案:先执行update操作,再执行缓存清除。(2)第二种方案:先执行缓存清除,再执行update操作。弊端:当存在并发请求时,很容易出现问题(1)第一种方案:当请求1执行update操作后,还未来得及进行缓存清除,此时请求2查询到并使用了redis中的旧数据。(2)第二种方案:当请求1执行清除缓存后,还未进行update操作,此时请求2进行查询到了旧数据并

2021-03-03 14:33:49 9533 9

空空如也

空空如也

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

TA关注的人

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