摘要:介绍 TreeMap 是 Java 集合框架中的一个类,它实现了 SortedMap 接口,可以存储键值对,并按照键的自然顺序或者指定的比较器进行排序。TreeMap 的底层是一棵红黑树,这是一种自平衡的二叉搜索树,可以保证在插入,删除,查找等操作中的时间复杂度为 O(log n)。 使用 要使用
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
随笔分类 - corejava-基础
摘要:介绍 TreeMap 是 Java 集合框架中的一个类,它实现了 SortedMap 接口,可以存储键值对,并按照键的自然顺序或者指定的比较器进行排序。TreeMap 的底层是一棵红黑树,这是一种自平衡的二叉搜索树,可以保证在插入,删除,查找等操作中的时间复杂度为 O(log n)。 使用 要使用
阅读全文
摘要:JAVA 语言中有八种基本的数字类型,分别是 byte、short、int、long、float、double、char 和 boolean。这些类型的区别在于它们所占用的内存空间和表示的范围不同。在使用和选择数字类型时,需要考虑以下几个因素: 数字的大小:如果数字很小,可以使用 byte 或 sh
阅读全文
摘要:Java中实现字符串逆序有以下几种常见的方法: 方法一:使用StringBuffer或StringBuilder的reverse()方法。这是最简单和最直接的方法,只需要将String对象转换为StringBuffer或StringBuilder对象,然后调用它们的reverse()方法,就可以得到
阅读全文
摘要:Java中如何操作不确定大小的数组 1. 前言 1.1 什么是数组 数组是一种存储多个相同类型数据的有序集合,它可以通过索引来访问每个元素。数组是一种引用类型的变量,它在内存中占用一块连续的空间。 1.2 数组的特点 数组有以下几个特点: - 数组的长度是确定的,一旦创建就不能改变。- 数组的元素必
阅读全文
摘要:一、wait()和notify()含义 二、标准代码示例 创建两个线程Thread0和Thread1。 代码实现: 运行流程详解 三、什么时候释放锁—wait()、notify() 四、用生活故事讲懂线程的等待唤醒 1.老王和老李(专家程序员): 2.王哥和李哥(普通程序员): 3.小王和小李(新手
阅读全文
摘要:红黑树在Java中的应用 红黑树在Java中有很多应用。例如, Java 8中的HashMap容器和TreeMap容器都有红黑树的具体应用。HashMap在插入和查找时都需要对键进行哈希,而TreeMap则是按照键的自然顺序进行排序。 因此,当需要对键进行排序时,可以使用TreeMap; 当不需要排
阅读全文
摘要:Java Stream 是 Java 8 中的一个新特性,它是对集合(Collection)对象功能的增强,专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出
阅读全文
摘要:为什么需要AtomicInteger原子操作类? 对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1, 明显,这个操作不具备原子性,多线程并发共享这个变量时必然会出现问题。 测试代码如下: public class
阅读全文
摘要:一. 性能对比 阿里开发手册推荐jdk8使用LongAdder替代AtomicLong 示例代码 题目:热点商品点赞计算器,点赞数加加统计,不要求实时精确。50个线程,每个线程100W次,统计总点赞数 比较synchronized、AtomicInteger、AtomicLong、LongAdder
阅读全文
摘要:一、原子累加器我们都知道,原子整型可以在线程安全的前提下做到累加功能,而今天介绍的LongAdder具有更好的性能 我们先来看原子累加器和原子整型做累加的对比使用: private static <T> void demo(Supplier<T> supplier, Consumer<T> acti
阅读全文
摘要:面试官:今天我们来聊聊CAS吧?你对CAS了解多少? 候选者:好,CAS的全称为compare and swap,比较并交换 候选者:虽然翻译过来是「比较并交换」,但它是一个原子性的操作,对应到CPU指令为cmpxchg 面试官:好家伙,CPU指令你都知道? 候选者:这没什么,都是背的。 面试官:…
阅读全文
摘要:UncaughtExceptionHandler在 Thread API 中提供了 UncaughtExceptionHandler ,它能检测出某个线程由于未捕获的异常而终结的情况,能有效地防止线程泄漏问题当一个线程由于未捕获异常而退出时, JVM 会把这个事件报告给应用程序提供的 Uncaugh
阅读全文
摘要:i++和++i单独存在时,产生的效果都是一样的,都是i的值+1 int i=3; i++; //i=3+1=4 System.out.println(i); //输出i的值为4 ++i; //i=4+1=5 System.out.println(i); //输出i的值为5 i++和++i参与运算时产
阅读全文
摘要:本文主要分两部分: 手动实现数组拷贝功能 使用并分析System类中的数组拷贝方法 1.手动实现数组拷贝功能 首先来看看我们的需求:有两个已知数组如上图,从src数组中拷贝3,4,5,6元素到dest数组中,需求这么简单?还么完呢铁子,将元素拷到dest数组中下标从5开始的地方(也就是3拷贝到des
阅读全文
摘要:本文约7300字,完整阅读大概会花费你「15分钟」左右的时间 什么是 JMM? JMM 就是 Java 内存模型(java memory model)。 JMM 是一个抽象的概念,并不像 JVM 内存结构一样真实存在。它描述的是和多线程相关的一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以
阅读全文
摘要:happens-before是JMM最核心的概念。对应Java程序员来说,理解happens-before是理解JMM的关键。 学习了 Java并发机制底层实现的三个关键要素:volatile、synchronized、原子性操作。以及Java内存模型是为了解决在并发环境下由于 CPU缓存、编译器和
阅读全文
摘要:happens-before 规则含义: happens-before原则是JMM最核心的概念,理解happens-before是理解JMM的关键。 JMM为了使编译器和处理器的约束尽可能少,它遵循的原则是:只要不改变程序的执行结果,编译器和处理器想怎么优化就怎么优化。 happens-before
阅读全文
|