1. 前言 在 JDK1.8 之后,HashMap 的底层是由数组、链表、红黑树来实现的,当数组长度到 64 的时候,或者链表长度到 8 的时候,会调用 treeifyBin...
1. 前言 在 JDK1.8 之后,HashMap 的底层是由数组、链表、红黑树来实现的,当数组长度到 64 的时候,或者链表长度到 8 的时候,会调用 treeifyBin...
1. 前言 前面的章节我们介绍了两种重要的数据结构,数组和链表,由于他们各自的特性使得他们的优缺点非常分明,在查询速度和插入速度上顾此失彼,不能兼顾,那么有没有一种数据结构可...
1. 前言 通过前面的学习,我们其实对 ArrayList 和 LinkedList 已经很熟悉了,他们虽然都是继承自 List,但是前者是基于数组实现的,后者是基于链表实现...
1. 前言 我们今天要通过了解链表的原理来掌握链表这个重要的数据结构,随后用我们了解到的链表的知识来重新认识一下我们每天都要接触的最常见的链表 java.util.Linke...
1. 前言 栈和队列是 Java 数据结构中比较简单但又非常重要的类型,我们需要了解栈和队列的存储原理以及各自的特点,熟悉他们各自的常用操作。 2. 后进先出 周末陪孩子玩新...
1. 前言 数组是一种重要的数据结构,可以利用它作为基础来实现很多复杂的数据结构。因此我们要深入理解数组的存储原理和特点,熟悉它的常用操作,重点掌握它在声明、查询、存储、复制...
1. 前言 程序员的一天是怎样开启的? 清晨打开储存着各种结构数据的冰箱,从鸡蛋集 “盒” 中提取了一枚数据扔进煎锅,从西兰花树形结构上查找最新鲜的一支跟鸡蛋一起煎熟,从袋装...
1. 前言 消息队列是一个容器,可以对程序产生的消息进行存储。消息队列的主要用途是削峰、异步、解耦,我们用一个实际场景来解释下。 有一家果汁生产企业,张三是采购员,负责采购水...
1. 前言 Redis 其实就是基于内存的键值型数据库,与 Oracle 、 SQL Server 、 MySQL 等传统关系型数据库相比,它最大的优势就是读写速度快。 到底...
1. 前言 Spring 最重要的两个功能,就是依赖注入(DI)和面向切面编程 (AOP)。 AOP 为我们提供了处理问题的全局化视角,使用得当可以极大提高编程效率。 Spr...
1. 前言 缓存是性能提升的大杀器! 要知道,内存的读写速度是硬盘的几十倍到上百倍。缓存实际上就是利用内存的高速读写特性,提高热点数据的操作速度。 Spring Boot 中...
1. 前言 安全管理是软件系统必不可少的的功能。根据经典的“墨菲定律”——凡是可能,总会发生。如果系统存在安全隐患,最终必然会出现问题。 本节就来演示下,如何使用 Sprin...
1. 前言 因为公司开发的项目多、为客户部署的项目实例多。工作中我们都会经常遇到,由于某个客户的项目突然无法访问,一堆研发、售后部门的同事火急火燎处理问题的场景。 所以我非常...
1. 前言 拦截器这个名词定义的非常形象,就像导弹要攻击目标的时候,可能会被先进的反导系统拦截,此处的反导系统就是一种拦截器。 我们开发的应用,对外暴露的是控制器中定义的 A...
1. 前言 定时任务绝对是实际项目中的刚需。 我们想监控一个重点服务的运行状态,可以每隔 1 分钟调用下该服务的心跳接口,调用失败时即发出告警信息; 我们想每天凌晨的时候,将...
1. 前言 程序中出现异常是普遍现象, Java 程序员想必早已习惯,根据控制台输出的异常信息,分析异常产生的原因,然后进行针对性处理的过程。 Spring Boot 项目中...
1. 前言 谁能保证开发的软件系统没有问题?恐怕任何一个有经验的程序员都不敢承诺吧! 在软件的设计、开发阶段,大家都是尽心尽力去做好各项工作,期望能有一个满意的效果。 但是一...
1. 前言 一个项目中使用多个数据源的需求,我们在日常工作中时常会遇到。 以商城系统为例,有一个 MySQL 的数据库负责存储交易数据。公司还有一套 ERP 企业信息化管理系...