![](https://img-blog.csdnimg.cn/a3150558ec4745a3818a297b6b58d2ea.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA基础
文章平均质量分 76
JAVA基础相关知识总结
惜许
读书养才气,勤奋养运气,宽厚养大气,淡泊养志气。
展开
-
Java位运算
与&:0&0=0 0&1=0 1&0=0 1&1=1。或|:0|0=0 0|1=1 1|0=1 1|1=1。无符号左移:忽略符号位,空位都以0补齐。右移>>:正数左补0,负数左补1,右边丢弃。左移原创 2023-05-16 17:30:29 · 35 阅读 · 0 评论 -
谈谈对于Java HashMap的一些理解(JDK1.8)
/ 默认容量 1原创 2023-04-27 17:28:46 · 99 阅读 · 0 评论 -
Java中的HashMap详解,详细分析HashMap的工作方式和使用原理
Java中的HashMap详解,详细分析HashMap的工作方式和使用原理转载 2023-04-26 11:16:08 · 62 阅读 · 0 评论 -
了解Java IO
IO,即Input和output,指应用程序和外部设备之间(磁盘、网络等)的数据传递;Java中是通过流处理IO,当程序需要读取数据时,会开启一个通向数据源的流,当程序需要写入数据的时候,开启一个通用目的地的流;可以从一个特定的数据源读写数据,如FileReader、FileWriter等(程序用于直接操作目标设备所对应的类);是“连接”已存在的流(节点流和处理流)之上,为程序提供强大的读写功能,更加灵活。原创 2023-04-12 18:53:56 · 59 阅读 · 0 评论 -
Java“类”的生命周期
我们知道Java类的生命周期主要包括以下几个过程,加载验证准备解析初始化使用以及卸载,其中验证准备以及解析三个过程合起来也称为链接,但每个过程具体做了哪些事情呢?这里我们就详细解释下;ღ( ´・ᴗ・` )原创 2023-03-29 15:50:50 · 362 阅读 · 0 评论 -
反射为什么会影响性能
Method#invoke需要进行自动拆装箱;编译器无法对动态调用的代码做优化,比如内联;反射需要按名检索类和方法;原创 2023-02-22 11:13:18 · 94 阅读 · 0 评论 -
Android动态代理源码分析
前面我们简单介绍了代理模式的使用Android设计模式详解之代理模式,我们也明白了动态代理模式的重要性,那动态代理究竟是如何实现将方法交给执行的呢?本文就从源码的角度一步步去探究这个问题;调用方法会通过反射带有参数的构造函数生成代理类,并返回代理类的实例,当调用代理类的方法时,又会通过反射执行InvocationHandler对应的invoke方法,从而实现动态代理这套机制;ღ( ´・ᴗ・` )原创 2022-12-28 17:12:39 · 1016 阅读 · 0 评论 -
Java并发编程常见面试题
普通方法对应于对象锁,是作用于对象实例;静态方法对应于类锁,是作用于一个类的class对象;类的对象实例可以有多个,但类的class对象只有一个;不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁;类锁只是一个概念的东西,真实并不存在,类锁其实锁的是每个类的class对象;可见性是值:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。根据java内存模型可知,多线程操作中存在可见性问题,可以通过volatile关键字或者加锁解决。原创 2022-09-22 10:30:17 · 1379 阅读 · 0 评论 -
深入理解并发编程锁
但是如果锁的竞争激烈,或者持有锁的线程需要长时间占用锁执行同步块,这时候就不适合使用自旋锁了,因为自旋锁在获取锁前一直都是占用cpu做无用功,占着XX不XX,线程自旋的消耗大于线程阻塞挂起操作的消耗,其它需要cup的线程又不能获取到cpu,造成cpu的浪费。偏向锁,它会偏向第一个访问锁的线程,如果在运行过程中,同步锁只有一个线程访问,不存在多线程争用的情况,则线程是不需要触发同步的,减少加锁/解锁的一些CAS操作(比如等待队列的一些CAS操作),这种情况下,就会给线程加一个偏向锁。原创 2022-09-22 09:34:26 · 328 阅读 · 0 评论 -
深入理解Java AQS
队列同步器AbstractQueuedSynchronizer(简称AQS),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,是实现大部分同步需求的基础。//是否处于占用状态 @Override protected boolean isHeldExclusively() {原创 2022-09-21 14:52:58 · 344 阅读 · 0 评论 -
JAVA阻塞队列和线程池原理
支持阻塞的插入方法,当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法,当队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。当队列满时,如果再往队列里插入元素,会抛出IllegalStateException(“Queuefull”)异常。当队列空时,从队列里获取元素会抛出NoSuchElementException异常。原创 2022-09-20 17:34:17 · 7353 阅读 · 0 评论 -
Java CAS基本原理
假定有两个操作A和B(A和B可能都很复杂),如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。原创 2022-09-20 14:00:56 · 302 阅读 · 0 评论 -
Java线程的并发工具类
CountDownLatch是在jdk1.5的时候引入的,位于java.util.concurrent并发包中,CountDownLatch叫做闭锁。CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其它线程执行完后再执行。其作用是让一组线程到达公共屏障点时阻塞,直到最后一个线程也到达公共屏障点,屏障才会打开,而且该屏障(barrier)在这一组线程释放后可以重用,所以称为循环(Cyclic)的屏障(Barrier)。原创 2022-09-19 17:07:40 · 808 阅读 · 0 评论 -
Java并发基础知识
安全的中止则是其他线程通过调用某个线程A的interrupt()方法对其进行中断操作,中断好比其他线程对该线程打了个招呼,“A,你要中断了”,不代表线程A会立即停止自己的工作,同样的A线程完全可以不理会这种中断请求。因为java里的线程是协作式的,不是抢占式的。在 Java 线程中,通过一个整型成员变量 priority 来控制优先级,优先级的范围从 1~10,在线程构建的时候可以通过 setPriority(int)方法来修改优先级,默认优先级是 5,优先级高的线程分配时间片的数量要多于优先级低的线程。原创 2022-09-16 14:39:27 · 598 阅读 · 0 评论 -
JVM中常见的垃圾回收器
前面我们学习了Java对象分配及垃圾回收机制,接下来我们来看看JVM中常见的垃圾回收器有哪些。原创 2022-09-15 16:47:53 · 1483 阅读 · 0 评论 -
Java对象分配及垃圾回收机制
上一篇我们学习了JVM相关的一些基础概念深入理解Java虚拟机,这一篇我们重点来学习下Java对象相关的知识;原创 2022-09-15 13:39:10 · 855 阅读 · 0 评论 -
深入理解Java虚拟机
JVM(Java Virtual Machine,Java 虚拟机)顾名思义就是用来执行 Java 程序的“虚拟主机”,实际的工作是将编译生成的.class 文件(字节码)翻译成底层操作系统可以运行的机器码并且进行调用执行,这也是 Java 程序能够跨平台(“一次编写,到处运行”)的原因(因为它会根据特定的操作系统生成对应的操作指令),Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。原创 2022-09-14 14:56:27 · 4955 阅读 · 0 评论 -
Java注解与反射
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。原创 2022-09-13 17:25:37 · 718 阅读 · 0 评论