自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (2)
  • 收藏
  • 关注

原创 HashMap源码解读

HashMap、ConcurrentHashMap源码解读

2020-08-22 22:05:50 103

转载 JDK1.7和JDK1.8中HashMap为什么是线程不安全的

前言只要是对于集合有一定了解的一定都知道HashMap是线程不安全的,我们应该使用ConcurrentHashMap。但是为什么HashMap是线程不安全的呢,之前面试的时候也遇到到这样的问题,但是当时只停留在***知道是***的层面上,并没有深入理解***为什么是***。于是今天重温一个HashMap线程不安全的这个问题。首先需要强调一点,HashMap的线程不安全体现在会造成死循环、数据丢失、数据覆盖这些问题。其中死循环和数据丢失是在JDK1.7中出现的问题,在JDK1.8中已经得到解决,然而1

2020-08-22 22:05:27 978

转载 JDK1.8以后的hashmap为什么在链表长度为8的时候变为红黑树

在JDK1.8以及以后的版本中,hashmap的底层结构,由原来单纯的的数组+链表,更改为链表长度为8时,开始由链表转换为红黑树,为何大刀阔斧的对hashmap采取这个改变呢,以及为何链表长度为8才转变为红黑树呢,下面结合源码一起来分析一下。我们都知道,链表的时间复杂度是O(n),红黑树的时间复杂度O(logn),很显然,红黑树的复杂度是优于链表的,既然这么棒,那为什么hashmap为什么不直接就用红黑树呢,请看下图源码中的注释写的很清楚,因为树节点所占空间是普通节点的两倍,所以只有当节点足够多

2020-08-22 22:00:23 4657 9

转载 数据结构 Hash表解读(哈希表)

参考链接:https://blog.csdn.net/u011109881/article/details/80379505一、什么是Hash表要想知道什么是哈希表,那得先了解哈希函数哈希函数对比之前博客讨论的二叉排序树 二叉平衡树 红黑树 B B+树,它们的查找都是先从根节点进行查找,从节点取出数据或索引与查找值进行比较。那么,有没有一种函数H,根据这个函数和查找关键字key,可以直接确定查找值所在位置,而不需要一个个比较。这样就**“预先知道”**key所在的位置,直接找到数据,提升效率。

2020-08-18 06:05:17 515

原创 二叉树(BT)、二叉查找树(BST)、平衡二叉树(AVL)、B-Tree、B+Tree、红黑树(BRT)

目录树的概念树的分类二叉树二叉查找树平衡二叉树(AVL)B-Tree(平衡多路查找树)B+Tree红黑树左旋右旋时间复杂度树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常见,直观来看,树是以分支关系定义的层次结构。树的概念树(Tree)是n(n≥0)个节点的有限集。在任意一棵非空树中:1、有且仅有一个特定的成为根(Root)的节点2、当n>1时,其余节点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一棵树,并且

2020-08-16 19:08:26 2674

原创 时间复杂度

参考文章:https://www.jianshu.com/p/f4cca5ce055a时间复杂度是衡量算法好坏的一个重要指标,一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用"O"来表示数量级,给出算法的时间复杂度。 T(n)=O(f(n)); 它表示随着问题规模的n的增大,算法的执行时间的增长率和f(n)的增长率相同,这称作算法的渐进时间复杂度,简称时间复杂度。而我们一...

2020-08-16 09:46:52 417

原创 sublime中符号替换成换行/正则表达式

正则表达式

2020-08-12 15:44:14 4151 1

原创 Spring源码解析(四)JDK动态代理详解

上接接Spring源码解析(二)Java动态代理位于java.lang.reflect包中,Interface InvocationHandler接口包含一个方法Object invoke(Object proxy, Method method, Object[] args) throws Throwable

2020-08-09 17:51:45 293

原创 Spring源码解析(三)静态代理与动态代理

代理也称“委托”,分为静态代理和动态代理,代理模式也是常用的设计模式之一,具有方法增强、高扩展性的设计优势。代理的设计理念是限制对象的直接访问,即不能通过 new 的方式得到想要的对象,而是访问该对象的代理类。这样的话,我们就保护了内部对象,如果有一天内部对象因为某个原因换了个名或者换了个方法字段等等,那对访问者来说一点不影响,因为他拿到的只是代理类而已,从而使该访问对象具有高扩展性。然而,代理类可以实现拦截方法,修改原方法的参数和返回值,满足了代理自身需求和目的,也就是是代理...

2020-08-06 08:06:54 141

原创 springBoot记录一次项目起不来的情况

启动时报Description:Parameter 15 of constructor in com.ziroom.crm.allocation.web.business.allocation.alloter.builder.HouseAllocatorBuilder required a bean of type 'java.lang.Integer' that could not be found.Action:Consider defining a bean of type 'jav

2020-08-05 11:11:28 788

Gallery.rar

VC++6.0 组件 Gallery.rar

2011-11-29

空空如也

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

TA关注的人

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