随笔分类 - Java
摘要:
本文将从数据结构底层原理 + 源码实现 + 应用实战三方面深入剖析 PriorityQueue,让你真正掌握优先队列的底层逻辑及其应用。 源码可视化视频:https://www.bilibili.com/video/BV12Ha5zjEcS/ 在玩游戏的时候,发现需要购买的装备很多,而且不同的英雄需
阅读全文
本文将从数据结构底层原理 + 源码实现 + 应用实战三方面深入剖析 PriorityQueue,让你真正掌握优先队列的底层逻辑及其应用。 源码可视化视频:https://www.bilibili.com/video/BV12Ha5zjEcS/ 在玩游戏的时候,发现需要购买的装备很多,而且不同的英雄需
阅读全文
摘要:
掌握Map集合相当于同时掌握了Set集合。 Set集合底层实现--委派成员变量Map集合完成具体实现。 Set 集合概览 在 Java 集合框架中,Set 表示不包含重复元素的集合类型。 本文讲解三种常用实现:HashSet、LinkedHashSet 和 TreeSet。 1. Set 接口概述
阅读全文
掌握Map集合相当于同时掌握了Set集合。 Set集合底层实现--委派成员变量Map集合完成具体实现。 Set 集合概览 在 Java 集合框架中,Set 表示不包含重复元素的集合类型。 本文讲解三种常用实现:HashSet、LinkedHashSet 和 TreeSet。 1. Set 接口概述
阅读全文
摘要:
主要学习双端队列 ArrayDeque ,通过对其栈功能的使用,掌握循环数组底层原理 觉得文章枯燥的可以结合ArrayDeque 底层原理可视化视频:https://www.bilibili.com/video/BV1zChGz8EVL/ 有环形的数组?同时具备栈功能和队列功能? 1. Java 中
阅读全文
主要学习双端队列 ArrayDeque ,通过对其栈功能的使用,掌握循环数组底层原理 觉得文章枯燥的可以结合ArrayDeque 底层原理可视化视频:https://www.bilibili.com/video/BV1zChGz8EVL/ 有环形的数组?同时具备栈功能和队列功能? 1. Java 中
阅读全文
摘要:
栈的数据结构就像是子弹弹夹一样,后装入的子弹先发出。 从概念到实战逐步掌握数据结构:通过自定义栈来彻底掌握栈数据结构,并通过自定义栈解决实际问题。 1. 栈的基本概念 1.1. 概念与属性 定义:栈(Stack)是一种“后进先出”(LIFO, Last-In First-Out)的线性数据结构,只允
阅读全文
栈的数据结构就像是子弹弹夹一样,后装入的子弹先发出。 从概念到实战逐步掌握数据结构:通过自定义栈来彻底掌握栈数据结构,并通过自定义栈解决实际问题。 1. 栈的基本概念 1.1. 概念与属性 定义:栈(Stack)是一种“后进先出”(LIFO, Last-In First-Out)的线性数据结构,只允
阅读全文
摘要:
TreeMap底层原理、源码阅读及它在Java集合框架中扮演什么角色?
阅读全文
TreeMap底层原理、源码阅读及它在Java集合框架中扮演什么角色?
阅读全文
摘要:
LinkedHashMap集合继承于HashMap,学习LinkedHashMap重点对比 LinkedHashMap 与 HashMap 的异同 特别强调两者的 Entry(节点)数据结构、数据结构的不同带来的特性差异、HashMap 的后置处理机制及最少访问删除策略。 LinkedHashMap
阅读全文
LinkedHashMap集合继承于HashMap,学习LinkedHashMap重点对比 LinkedHashMap 与 HashMap 的异同 特别强调两者的 Entry(节点)数据结构、数据结构的不同带来的特性差异、HashMap 的后置处理机制及最少访问删除策略。 LinkedHashMap
阅读全文
摘要:
本文主要包含:HashMap 插入过程、扩容过程、查询过程和删除过程的源码可视化 文章对应的视频连接:https://www.bilibili.com/video/BV1wM3KzaE3d/ 1. 操作流程 1.1. 插入过程(put(K key, V value)) 插入流程主要涉及四种操作:扩容
阅读全文
本文主要包含:HashMap 插入过程、扩容过程、查询过程和删除过程的源码可视化 文章对应的视频连接:https://www.bilibili.com/video/BV1wM3KzaE3d/ 1. 操作流程 1.1. 插入过程(put(K key, V value)) 插入流程主要涉及四种操作:扩容
阅读全文
摘要:
HashMap做一个全面梳理,涵盖:冲突处理(链地址法)、扩容流程、链表–红黑树(树化/链化)转换的处理。通过四次扩容,渐进式的对 HashMap 扩容及相关操作有一个基本而完整的理解。
阅读全文
HashMap做一个全面梳理,涵盖:冲突处理(链地址法)、扩容流程、链表–红黑树(树化/链化)转换的处理。通过四次扩容,渐进式的对 HashMap 扩容及相关操作有一个基本而完整的理解。
阅读全文
摘要:
文章内容较长,放宽心,带着疑问慢慢读,总能找到你想要的答案。 如何快速定位数据存储在内存地址的位置? 先提出一个问题:如何快速定位数据存储在内存地址的位置? 聪明的你会想到使用数组:根据首地址+单个节点存储大小 x 数组下标,便可快速计算出目标的内存地址,从而做到时间复杂度为O(1)的查找速度。但这
阅读全文
文章内容较长,放宽心,带着疑问慢慢读,总能找到你想要的答案。 如何快速定位数据存储在内存地址的位置? 先提出一个问题:如何快速定位数据存储在内存地址的位置? 聪明的你会想到使用数组:根据首地址+单个节点存储大小 x 数组下标,便可快速计算出目标的内存地址,从而做到时间复杂度为O(1)的查找速度。但这
阅读全文
摘要:
集合节点保存的都是对象的引用,而非具体值,文中案例仅仅为了方便实现原理的演示。 📝1. 底层数据结构 LinkedList 基于 双向链表 实现,内部通过 Node<E> 节点相互连接: private static class Node<E> { E item; Node<E> next; No
阅读全文
集合节点保存的都是对象的引用,而非具体值,文中案例仅仅为了方便实现原理的演示。 📝1. 底层数据结构 LinkedList 基于 双向链表 实现,内部通过 Node<E> 节点相互连接: private static class Node<E> { E item; Node<E> next; No
阅读全文
摘要:
关于ArrayList的元素插入、检索、修改、删除、扩容等可视化操作过程 还有关于ArrayList的迭代器、线程安全和时间复杂度 📝1. 底层数据结构 基于动态数组实现,内部维护一个Object[]数组。本质是数组数据结构,底层通过拷贝扩容使得数组具备了动态增大的特性。 数组所具备的一些特性,A
阅读全文
关于ArrayList的元素插入、检索、修改、删除、扩容等可视化操作过程 还有关于ArrayList的迭代器、线程安全和时间复杂度 📝1. 底层数据结构 基于动态数组实现,内部维护一个Object[]数组。本质是数组数据结构,底层通过拷贝扩容使得数组具备了动态增大的特性。 数组所具备的一些特性,A
阅读全文
摘要:
设计模式实战项目:Markdown 文本编辑器软件开发(已开源) 📌一、项目简介 项目名称:YtyMark-java 本项目是一款基于 Java 语言 和 JavaFX 图形界面框架 开发的 Markdown 文本编辑器。项目不仅具备 Markdown 文本编写、预览、保存、导出等功能,还特别关注
阅读全文
设计模式实战项目:Markdown 文本编辑器软件开发(已开源) 📌一、项目简介 项目名称:YtyMark-java 本项目是一款基于 Java 语言 和 JavaFX 图形界面框架 开发的 Markdown 文本编辑器。项目不仅具备 Markdown 文本编写、预览、保存、导出等功能,还特别关注
阅读全文
摘要:
组合模式(Composite Pattern) 组合模式(Composite Pattern)是一种结构型设计模式,它用于将对象组织成树形结构,以表示部分-整体的层次结构。通过组合模式,客户端可以统一对待单个对象和组合对象,从而简化了客户端代码的复杂性。 组合模式的核心思想 统一的接口:通过抽象类或
阅读全文
组合模式(Composite Pattern) 组合模式(Composite Pattern)是一种结构型设计模式,它用于将对象组织成树形结构,以表示部分-整体的层次结构。通过组合模式,客户端可以统一对待单个对象和组合对象,从而简化了客户端代码的复杂性。 组合模式的核心思想 统一的接口:通过抽象类或
阅读全文
摘要:
装饰模式(Decorator Pattern) 装饰模式是一种结构型设计模式,旨在在不改变原有对象结构的情况下动态地为对象添加功能。通过将对象封装到一系列装饰器类中,可以以灵活和透明的方式扩展功能。 如果要扩展功能,装饰模式提供了比继承更有弹性的替代方案,装饰模式强调的是功能的扩展和灵活组合。 装饰
阅读全文
装饰模式(Decorator Pattern) 装饰模式是一种结构型设计模式,旨在在不改变原有对象结构的情况下动态地为对象添加功能。通过将对象封装到一系列装饰器类中,可以以灵活和透明的方式扩展功能。 如果要扩展功能,装饰模式提供了比继承更有弹性的替代方案,装饰模式强调的是功能的扩展和灵活组合。 装饰
阅读全文
摘要:
工厂方法模式 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定要实例化的具体类。工厂方法模式将对象的创建委托给子类,从而实现了类的实例化延迟和高内聚低耦合的目标。 工厂方法模式的结构 工厂方法模式通常包含以下几个角色: P
阅读全文
工厂方法模式 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定要实例化的具体类。工厂方法模式将对象的创建委托给子类,从而实现了类的实例化延迟和高内聚低耦合的目标。 工厂方法模式的结构 工厂方法模式通常包含以下几个角色: P
阅读全文
摘要:
简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它定义了一个工厂类,该类可以根据传入的参数决定创建哪种产品类的实例。简单工厂模式将对象的创建逻辑封装在一个工厂类中,客户端只需要通过工厂类获取实例,而不需要直接涉及实例化的细节。 简单工厂模式包含三个主要
阅读全文
简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它定义了一个工厂类,该类可以根据传入的参数决定创建哪种产品类的实例。简单工厂模式将对象的创建逻辑封装在一个工厂类中,客户端只需要通过工厂类获取实例,而不需要直接涉及实例化的细节。 简单工厂模式包含三个主要
阅读全文
摘要:
本文的主要内容有: 生成器模式(Builder Pattern) 意图 将复杂对象的构造与其表示分开,使得相同的构造过程可以创建不同的表示。 适用性 适用于需要创建复杂对象,对象的构建过程比较灵活,可以通过多个步骤逐步完成。 案例一:参数传递方式 案例概述 使用多个零部件组装成一台的手机,不同型号或
阅读全文
本文的主要内容有: 生成器模式(Builder Pattern) 意图 将复杂对象的构造与其表示分开,使得相同的构造过程可以创建不同的表示。 适用性 适用于需要创建复杂对象,对象的构建过程比较灵活,可以通过多个步骤逐步完成。 案例一:参数传递方式 案例概述 使用多个零部件组装成一台的手机,不同型号或
阅读全文
摘要:
原型模式(Prototype Pattern) 原型模式的核心思想是通过复制(克隆)现有对象来创建新对象。 原型模式通常涉及两个角色:原型对象和具体原型对象。原型对象是需要被复制的对象,而具体原型对象是实现了克隆方法的原型对象。 在Java中,原型模式通常通过实现Cloneable接口和重写clon
阅读全文
原型模式(Prototype Pattern) 原型模式的核心思想是通过复制(克隆)现有对象来创建新对象。 原型模式通常涉及两个角色:原型对象和具体原型对象。原型对象是需要被复制的对象,而具体原型对象是实现了克隆方法的原型对象。 在Java中,原型模式通常通过实现Cloneable接口和重写clon
阅读全文
摘要:
在Java语言中,数据类型分为基本数据类型和引用数据类型。 基本数据类型(如int、double、char等)的值直接保存在栈上。这些类型的变量在栈内存中有固定的大小,并且值是直接存储在这些变量中的,数据的传递为值传递,这个好理解。以下以引用数据类型来讲解。 引用和实例化对象 比如new一个对象的代
阅读全文
在Java语言中,数据类型分为基本数据类型和引用数据类型。 基本数据类型(如int、double、char等)的值直接保存在栈上。这些类型的变量在栈内存中有固定的大小,并且值是直接存储在这些变量中的,数据的传递为值传递,这个好理解。以下以引用数据类型来讲解。 引用和实例化对象 比如new一个对象的代
阅读全文
摘要:AOP使用场景的本质是:在一个`方法`的执行前、执行后、执行异常和执行完成状态下,都可以做一些`统一的操作`。AOP 的核心优势在于将这些横切功能从核心业务逻辑中提取出来,从而实现代码的`解耦`和`复用`,提升系统的`可维护性`和`扩展性`。
阅读全文

浙公网安备 33010602011771号