随笔分类 -  Java

摘要:2023.10.6 1.poll,peek,element 相同点:都是返回队列首个元素 不同点: poll:将首个元素从队列中弹出,如果队列是空的,就返回null peek:查看首个元素,不会移除首个元素,如果队列是空的就返回null element:查看首个元素,不会移除首个元素,如果队列是空的 阅读全文
posted @ 2023-10-06 23:27 sellingpear 阅读(28) 评论(0) 推荐(0)
摘要:2023.8.31 try...catch...finally,如果有如下代码 public static void main(String[] args) { try { System.out.println(func1()); } catch (Exception e) { System.out 阅读全文
posted @ 2023-08-31 09:22 sellingpear 阅读(20) 评论(0) 推荐(0)
摘要:2023.8.31 1.该关键字是可以保证有序性的,也就是禁止重排 2024.6.12 1.不会阻塞 2.不能保证原子性 3.如有改动对各个线程立即可见 4.因为不是每次改动都生效,所以不能仅依赖它实现计数锁 阅读全文
posted @ 2023-08-31 00:32 sellingpear 阅读(18) 评论(0) 推荐(0)
摘要:2023.8.30 1.该方法是一个同步方法,高并发情况下影响性能 public void println(String x) { synchronized (this) { print(x); newLine(); } } 阅读全文
posted @ 2023-08-30 00:25 sellingpear 阅读(71) 评论(0) 推荐(0)
摘要:2023.8.25 1.StringBuilder线程不安全但更快 2.StringBuffer线程安全,方法用synchronized修饰,但是慢。 2023.11.12 1.StringBuffer是一个final类 阅读全文
posted @ 2023-08-25 22:21 sellingpear 阅读(16) 评论(0) 推荐(0)
摘要:2023.8.23 1.底层是个双向链表 2.内部是折半查询 阅读全文
posted @ 2023-08-23 21:18 sellingpear 阅读(12) 评论(0) 推荐(0)
摘要:2023.8.23 1.底层是hashmap实现,我们存的对象就是hashmap的key 2.value是一个object对象,占16个字节 阅读全文
posted @ 2023-08-23 18:39 sellingpear 阅读(31) 评论(0) 推荐(0)
摘要:2023.8.23 1.hashmap不存在缩容,要考虑重新计算index值的问题 阅读全文
posted @ 2023-08-23 18:24 sellingpear 阅读(18) 评论(0) 推荐(0)
摘要:2023.8.22 1.懒加载初始化数组 2.数组的初始大小为10 3.扩容公式 newLen = oldLen + oldLen >> 1 2023.8.23 1.modCount在add操作或remove操作时会更新。遍历时新增或删除会报错 2.和Vector实现的区别 相同点 初始容量都是10 阅读全文
posted @ 2023-08-23 00:31 sellingpear 阅读(20) 评论(0) 推荐(0)
摘要:以下cchm代表concurrenthashmap 1.相比于1.7剔除了segment分段锁,但本质上都是锁竞争 2.使用synchronized+cas保证节点线程安全 3.结构上,和hashmap一样,像加载因子、初始容量等 4.对比hashtable,hashtable 是对全table加锁 阅读全文
posted @ 2023-08-18 00:10 sellingpear 阅读(40) 评论(0) 推荐(0)
摘要:2023.8.17 以前对方法区的理解有误,它并非是一个物理上的分区,而是一个概念上的分区。 方法区存在于堆中,1.7用永久代,1.8用元空间。 2024.7.14 1.运行时常量池是每一个类或接口的常量池的运行时表示形式。具体体现就是在Java编译后生成的.class文件中,会有class常量池, 阅读全文
posted @ 2023-08-17 00:09 sellingpear 阅读(32) 评论(0) 推荐(0)
摘要:2024.7.10 1.强引用对象的回收 先说结论,会被回收。 简单想一想,我们平时写java代码,如果不回收的话,内存肯定是不够用的。 一般我们见到的描述——“强引用对象不会被回收”,指的是依旧由gcRoot的有效引用到这个对象。 几段典型的代码可以参考下方的链接。 https://www.fre 阅读全文
posted @ 2023-08-16 23:58 sellingpear 阅读(68) 评论(0) 推荐(0)
摘要:1.Cloneable接口的用途 Cloneable接口是一个标记型接口,内部没有方法和属性,实现该接口表示该对象能被克隆,也就是能使用Object.clone()方法。如果一个对象没实现该接口就调用clone()方法会抛出CloneNotSupportedException异常。 阅读全文
posted @ 2021-12-29 11:23 sellingpear 阅读(95) 评论(0) 推荐(0)
摘要:简而言之: 1.isEmpty认为空格(无论几个)都不是空。 2.isBlank认为空格、换行符(\n)、tab都是空。 阅读全文
posted @ 2021-12-28 10:58 sellingpear 阅读(310) 评论(0) 推荐(0)
摘要:1.什么是自动拆装箱 自动装箱就是将java的基本类型,比如说int类型的变量转换成Integer对象,反之从引用类型转换成基本类型就是拆箱。 看一段代码以及它的输出结果: public class Test { public static void main(String[] args) { te 阅读全文
posted @ 2021-12-12 16:13 sellingpear 阅读(276) 评论(0) 推荐(1)
摘要:2025.6.5 PECS原则 https://www.cnblogs.com/lori/p/16145271.html T代表一种类型。 加在类上: class SuperClass{} 加在方法上: public void fromArrayToCollection(T[] a, Collect 阅读全文
posted @ 2021-12-12 15:15 sellingpear 阅读(420) 评论(0) 推荐(0)
摘要:访问权限 类 包 子类 其他包 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × × 阅读全文
posted @ 2021-12-10 16:17 sellingpear 阅读(58) 评论(0) 推荐(0)
摘要:1.数据类型 在java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,引用类型保存的是引用值,也就是地址值。 2.堆和栈 栈是运行时单元,堆是存储单元。 栈解决程序的运行问题,也就是程序如何执行,或者说如何处理数据;堆解决的是数据存储问题,即数据怎么放,放在哪。 每个 阅读全文
posted @ 2021-12-08 17:22 sellingpear 阅读(32) 评论(0) 推荐(0)
摘要:1.概述 NIO有三大核心部分:Channel(通道)、Buffer(缓冲区)、Sellector。传统的IO面向流操作,而NIO面向缓冲区操作。数据总是从缓冲区写到通道或者从通道读入缓冲区。Selector用于监听各个通道的事件。Selector监听注册到它的连接,基于回调函数获取通知。 阅读全文
posted @ 2021-12-06 19:28 sellingpear 阅读(56) 评论(0) 推荐(0)
摘要:1.实现 抽象类的子类用extends来继承;接口使用implements来实现。 2.构造函数 抽象类可以有构造函数;接口不能有,它只能由实现类实现。 3.main方法 抽象类可以有main方法,并且能够运行;接口不能有main方法。 4.实现数量 类可以实现很多接口;但只能集成一个抽象类 5.访 阅读全文
posted @ 2021-12-06 17:37 sellingpear 阅读(86) 评论(0) 推荐(0)