• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

Java集合

Java集合
集合在我们日常开发使用的次数数不胜数,ArrayList/LinkedList/HashMap/HashSet······信手拈来,抬手就拿来用,在 IDE 上龙飞凤舞,但是作为一名合格的优雅的程序猿,仅仅了解怎么使用API是远远不够的,如果在调用API时,知道它内部发生了什么事情,就像开了透视外挂一样,洞穿一切,这种感觉才真的爽,而且这样就不是集合提供什么……继续阅读 »

winrains 2个月前 (08-15) 38浏览 0个赞

HashMap 源码中这些常量的设计目的

HashMap 源码中这些常量的设计目的
前言 之前周会技术分享,一位同事讲解了HashMap的源码,涉及到一些常量设计的目的,本文将谈谈这些常量为何这样设计,希望大家有所收获。 HashMap默认初始化大小为什么是1 << 4(16) /** * The default initial capacity - MUST be a power of two. */ stati……继续阅读 »

winrains 7个月前 (03-28) 35浏览 2个赞

SpringSession系列:存储机制之Redis&Map

SpringSession系列:存储机制之Redis&Map
在之前的文章中已经对SpringSession的功能结构,请求/响应重写等做了介绍。本文将继续来介绍下SpringSession中存储部分的设计。存储是分布式session中算是最核心的部分,通过引入三方的存储容器来实现session的存储,从而有效的解决session共享的问题。 1、SpringSession存储的顶级抽象接口 SpringSession……继续阅读 »

winrains 7个月前 (03-21) 59浏览 2个赞

谈谈集合:Map

谈谈集合:Map
本文来谈谈我们平时使用最多的HashMap。 1. 简介 HashMap是我们在开发过程中用的最多的一个集合结构,没有之一。HashMap实现了Map接口,内部存放Key-Value键值对,支持泛型。在JDK1.8以前,HashMap内部是以数组加链表的结构维护键值对数据。在JDK1.8中,HashMap以数组、链表加红黑树的结构维护数据,当链表长度大于8……继续阅读 »

winrains 7个月前 (03-21) 60浏览 1个赞

谈谈集合:Queue

谈谈集合:Queue
之前说到,Java中集合的主要作用就是装盛其他数据和实现常见的数据结构。所以当我们要用到“栈”、“队列”、“链表”和“数组”等常见的数据结构时就应该想到可以直接使用JDK给我们提供的集合框架。比如说当我们想用到队列时就应该想到使用LinkedList和ArrayDeque。本篇博客将介绍Collection框架中的Queue。 Queue接口……继续阅读 »

winrains 7个月前 (03-21) 33浏览 1个赞

谈谈集合:Stream Api

谈谈集合:Stream Api
1. 什么是stream API Java8提供的stream API可以让程序员像操作数据库一样操作集合。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码……继续阅读 »

winrains 7个月前 (03-21) 41浏览 1个赞

Java 集合框架常见面试题总结

Java 集合框架常见面试题总结
说说List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性质): 不允许重复的集合。不会有多个元素引用相同的对象。 Map(用Key来搜索的专家): 使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复……继续阅读 »

winrains 11个月前 (12-14) 37浏览 2个赞

LinkedList 源码分析(JDK 1.8)

LinkedList 源码分析(JDK 1.8)
1.概述 LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构。和 ArrayList 一样,LinkedList 也支持空值和重复值。由于 LinkedList 基于链表实现,存储元素过程中,无需像 ArrayList 那样进行扩容。但有得必有失,LinkedList 存储元素的节点需要额外的空间存储前驱和后继的引用。另一……继续阅读 »

winrains 1年前 (2019-11-01) 67浏览 1个赞

ArrayList 源码分析

ArrayList 源码分析
1.概述 ArrayList 是一种变长的集合类,基于定长数组实现。ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组。另外,由于 ArrayList 底层基于数组实现,所以其可以保证在 O(1) 复杂度下完成随机查找操作。其他方面,ArrayList 是非线程安全类……继续阅读 »

winrains 1年前 (2019-11-01) 38浏览 1个赞

LinkedHashMap 源码详细分析(JDK1.8)

LinkedHashMap 源码详细分析(JDK1.8)
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap 对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅……继续阅读 »

winrains 1年前 (2019-11-01) 60浏览 1个赞