- 博客(55)
- 收藏
- 关注
原创 HashMap在JDK1.7中多线程并发会出现死循环,超详细图解
就是JDK1.7的头插法造成了循环问题,因此在JDK1.8中对HashMap的扩容方法进行了改进,从头插法改成了尾插法。
2022-09-13 02:50:03
1609
1
原创 HashMap超详细源码分析
HashMap将一个key-value当做一个整体来处理,使用数组存储这些键值对,通过计算key的hash值来确定数组中的存放位置,当两个key计算出相同的位置的时候(哈希冲突),在数组相应位置创建链表,在jdk1.8及以上版本中,当链表满足一定需求时就会转换为红黑树。2.entrySet:用来存储键值对的集合,Map.Entry是内部类,用于键与值的映射。3.数组的负载因子,当(数组占用量)超过(数组长度*负载因子)的时候,就会触发扩容。2.数组的最大容量,1左移30位,很大的数,够用,不用关注。
2022-09-12 00:24:08
398
原创 SpringAOP底层原理
对于代码的解析已写在注释中方便理解,这里在invoke调用前后都添加通知 => 环绕通知。SpringAOP底层根据接口的使用情况,有两种的实现方式。
2022-09-11 17:25:12
452
原创 为什么重写equals方法必须也要重写hashCode方法
根据人对”相等“的主观认识而重写的equals方法,如果不再根据对象的地址判断是否相等,HashSet就会出现不能去重的问题。因为此时hashCode方法仍然根据对象的内存地址生成不同的散列值,最终确定对象地址的hash值也会不同,影响HashSet中数据的存储。HashSet用于存放对象HashSet 是一个没有重复元素的集合。基于HashMap实现HashMap存放键值对,key-valuekey不可重复,value可重复底层基于数组+链表+红黑树实现,红黑树需要jdk≥1.8。...
2022-08-31 01:31:31
385
原创 从源码分析128陷阱
通过对Integer源码的分析,发现在声明变量时Integer内部会自动包装int,当value在[-128,127]区间时,内部会调用IntegerCache()方法,该方法会将这256个数存入缓存,当再声明一个这区间的数的时候,就从缓存中获取地址,这些数最终指向的都是同一个地址。但是当声明一个这个区间外的数时,每次都是new一个新的对象,即使数相同也会开辟新地址。.........
2022-08-30 23:09:36
186
原创 Springboot实现RBAC权限校验
Springboot实现RBAC权限校验实现方式:Springboot+AOP切面+自定义注解+redis+jwt+mybatis+token拦截器
2022-08-27 18:07:53
2026
原创 Java构建有序二叉树,使用递归与非递归方式
树(Tree)是n(n≧0)个结点的有限集。在任意一颗非空树中:有且仅有一个特定的称为根的结点。n=0时称为空树。每个节点的度最大为2(最多拥有2棵子树)。左子树和右子树是有顺序的。即使某节点只有一棵子树,也要区分左右子树。...
2022-08-26 23:48:51
383
原创 Lambda
在很长的一段时间里,Java一直是面向对象的语言,一切皆对象,如果想要调用一个函数,函数必须属于一个类或对象,然后在使用类或对象进行调用。但是在其它的编程语言中,如js,c++,我们可以直接写一个函数,然后在需要的时候进行调用,即可以说是面向对象编程,也可以说是函数式编程。Lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码。这样的优势是:可读性更好,表达更清晰。在Java生态系统中,函数式表达与对面向对象的全面支持是个激动人心的进步。将进一步促进并行第三方库的发展,充分利用多核CPU。..
2022-08-26 22:48:01
183
原创 git操作git merge 和rebase 的区别
简单来说,在git log中,merge会保留分支commit历史记录,而rebase在合并后会抹去分支的历史记录,git merge记录冗余,适合多人开发方便管理和查看记录,rebase简洁,压缩操作历史。更方便,但如果有很多冲突的话,撤销一个。则一次处理全部冲突。一次只处理一个冲突,.........
2022-08-26 17:42:25
371
原创 git基本操作,使用gitee做为远程仓库
1、绑定邮箱,生成秘钥,输入以下命令后,全部按回车ssh-keygen -t rsa -C "具体的邮箱地址"2、C盘的Users\用户\下找.ssh文件夹3、在.ssh里打开xxx.pub复制4、打开github或gitee,在设置里,SSH and GPG keys 粘贴刚刚复制的秘钥,title随便写。...
2022-08-26 17:32:43
2175
原创 Linux vi编辑器
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:命令行模式:控制屏幕光标的移动插入模式:只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。底行模式:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。...
2022-08-25 18:10:23
372
原创 Liunx awk文本分析工具
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
2022-08-25 17:55:42
445
原创 JAVA构建有序单链表
有序链表顾名思义,就是当新增一个结点的时候根据结点的值,插入对应位置,使链表升序或降序。本文结点不再赘述,继续使用链表管理类。
2022-08-24 17:11:49
923
原创 JAVA实现单链表,使用头插法与尾插法并打印链表
单链表是的其中一种基本结构。在结点中数据域用来存储数据元素,指针域用于指向下一个具有相同结构的结点。因为只有一个指针结点,称为单链表。
2022-08-24 16:58:07
1486
2
原创 AOP面向切面编程
AOP在spring中又叫“面向切面编程”,它可以说是对传统我们面向对象编程的一个补充,从字面上顾名思义就可以知道,它的主要操作对象就是“切面”,所以我们就可以简单的理解它是贯穿于方法之中,在方法执行前、执行时、执行后、返回值后、异常后要执行的操作。相当于是将我们原本一条线执行的程序在中间切开加入了一些其他操作一样。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。System.out.println("测试用例1");
2022-08-24 02:40:49
69
原创 JAVA索引
索引是依靠某些数据结构和算法来组织数据的存放方式,其最终目的是快速引导用户查询检索出所需要的数据。如果不使用索引,那么mysql数据库在查询数据时,就只能够一条一条的去比对,直到找到我们需要的数据,这样不仅浪费了大量的时间,同时也大大的消耗了系统不必要的性能。
2022-08-23 15:29:18
2476
原创 Cannot deserialize value of type `java.time.LocalDateTime` from String “2022-08-17 00:38:14“: Failed
在实体中定义时间属性类型为LocalDateTime时,加上时间格式化注解即可。
2022-08-17 00:39:55
4674
原创 No serializer found for class tech.niua.admin.statistic.domain.PieList and no properties discovered
封装实体的时候忘了加注解了,数据无参无构造无gettersetter。给实体类加上@Data和@Builder注解就好了。
2022-08-16 15:56:13
98
原创 Failed to compile../public/UEditor/dialogs/template/template.html 1:0Module parse failed: Unexpec
Failed to compile../public/UEditor/dialogs/template/template.html 1:0Module parse failed: Unexpec
2022-08-13 17:54:41
259
原创 git pull error有冲突文件
git stash list可以查看本地缓存。先用git stash将项目缓存起来。然后再git pull就可以了。
2022-08-12 16:28:49
86
原创 io.lettuce.core.RedisAsyncCommandsImpl cannot be cast to redis.clients.jedis.Jedis
springboot2.x中默认使用了Lettuce集成了Redis服务,所以spring-boot-starter-data-redis中默认只引入了Lettuce,而没有引入Jedis。
2022-08-12 15:31:03
486
原创 mybatis错误BindingException: Parameter ‘xxx‘ not found. Available parameters are [xxx, param1]
找了一个多小时的百度,解决方法都是多个参数需要加上@Param,又看了半天XML文件。因为在xml使用了动态sql,所以在持久层传参加上了@Param。最后实在没法把@Param去掉了,解决问题。原因尚不清楚,毕竟之前同样的用法能运行成功。...
2022-08-08 00:44:46
685
1
原创 vue 改变i标签icon图标的大小
vue i标签中icon图标的设置,之前搞错了方向,一直以为是按照图片格式弄,其实是按照编辑文字格式的逻辑来的。
2022-08-06 19:25:00
11688
原创 使用一对一查询的时候,后台报错sql无法确定delete_flag 来源
后台使用mp+mybatis结合编写,就算前台使用了mp的querywapper先封装了一个实体的查询,再使用xml文件编写一对一的sql,也还是需要在querywapper中声明好多个表重复的字段。在有重复的字段前加上表名。...
2022-08-06 18:08:30
559
原创 在idea中安装npm报错“Cannot read property ‘pickAlgorithm‘ of null”
先清空缓存再安装即可解决问题。
2022-08-05 15:21:08
303
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人