基础篇:JAVA原子组件和同步组件

2021-06-23
阅读 9 分钟
1.7k
在使用多线程并发编程的时,经常会遇到对共享变量修改操作。此时我们可以选择ConcurrentHashMap,ConcurrentLinkedQueue来进行安全地存储数据。但如果单单是涉及状态的修改,线程执行顺序问题,使用Atomic开头的原子组件或者ReentrantLock、CyclicBarrier之类的同步组件,会是更好的选择,下面将一一介绍它们的原理和用法

基础篇:深入解析JAVA泛型

2020-10-26
阅读 9 分钟
4.9k
先了解下java的Type类型体系(类的类=>类型),Type是所有类型(原生类型-Class、参数化类型-Parameterizedtype、数组类型-GenericArrayType、类型变量-TypeVariable、基本类型-Class)的共同接口;前两篇反射和注解讲到的Class<T>就是Type的一实现类

基础篇:深入解析JAVA反射机制

2020-09-28
阅读 6 分钟
2.1k
通俗解析:java文件需要编译成.class文件才能被jvm加载使用,对象的.class数据在jvm里就是Class<T>;我们如果能拿到这个Class<T>对象,就能获取该Class<T>对应的对象类型,及在该类型声明的方法和属性值;还可以根据Class<T>创建相应的类型对象,通过Field,Method反过来操作对象

基础篇:深入解析JAVA异常

2020-09-06
阅读 5 分钟
4k
方法中发生异常,会创建一个异常对象交给JVM处理,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并交给JVM的过程称为抛出异常。这会有一系列的方法调用,这系列方法调用的有序列表叫做调用栈

基础篇:JAVA内部类的使用介绍

2020-08-31
阅读 4 分钟
5.5k
1 四种内部类成员内部类静态内部类局部内部类匿名内部类2 内部类的使用场景和优点内部类的优点:每个内部类都能独立地继承一个类(实现多个接口),无论外部类是否已经继承或者实现,对于内部类都没有影响。内部类的存在使得Java的多继承机制变得更加完善在开发设计中会存在一些使用接口很难解决的问题,而类却只能继承一...

基础篇:详解JAVA对象实例化过程

2020-08-17
阅读 3 分钟
6.8k
1 对象的实例化过程对象的实例化过程是分成两部分:类的加载初始化,对象的初始化要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化类初始化就是执行<clinit>方法,对象实例化是执行<init>方法一个子类要初始化需要先初始化父类2 类的加载过程类的加载机制:如果没有相应类的cl...

基础篇:JVM运行时内存布局

2020-08-16
阅读 3 分钟
4.3k
1 JVM的内存区域布局java代码的执行步骤有三点java源码文件->编译器->字节码文件字节码文件->JVM->机器码机器码->系统CPU执行JVM执行的字节码需要用类加载来载入;字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行其中Java虚...

基础篇:JAVA资源之IO、字符编码、URL和Spring.Resource

2020-08-02
阅读 12 分钟
3.4k
LineNumberInputStream和StringBufferInputStream官方建议不再使用,推荐使用LineNumberReader和StringReader代替

基础篇:高并发一瞥,线程和线程池的总结

2020-07-26
阅读 10 分钟
3k
进程是执行程序的实体,系统的调度执行单元,拥有独属的进程空间(内存、磁盘等)。而线程是进程的一个执行流程,一个进程可包含多个线程,共享该进程的所有资源:代码段,数据段(全局变量和静态变量),堆存储;但每个线程拥有自己的执行栈和局部变量

基础篇:详解锁原理,synchronized、volatile+cas底层实现

2020-07-21
阅读 16 分钟
8.5k
例如:一个线程想在控制台输出"I am fine",刚写到"I am",就被另一线程抢占控制台输出"naughty",导致结果是"I am naughty";对于资源的被抢占使用,我们能怎么办呢?当然不是凉拌,可使用锁进行同步管理,使得资源在加锁期间,其他线程不可抢占使用

基础篇:java基本数据类型

2020-07-16
阅读 4 分钟
7.3k
1byte: 计算机处理数据的最小单位是1byte,用一字节的最低位存储,其他的用0填补。如果值是true则储存二进制为0000 0001,false则是0000 0000

基础篇:深入JMM内存模型解析volatile、synchronized的内存语义

2020-07-15
阅读 7 分钟
3.9k
先介绍下多进程多线程在linux几种通信方式管道:管道的实质是一个内核缓冲区,需要通信的两个进程各在管道的两端,进程利用管道传递信息信号:信号是软件层次上对中断机制的一种模拟,进程不必阻塞等待信号的到达,信号可以在用户空间进程和内核之间直接交互消息队列:消息队列是消息的链表,存放在内存中并由消息队列标...

基础篇:JAVA.Object对象

2020-07-11
阅读 8 分钟
1.7k
对象头布局如下:主要和锁,hashcode,垃圾回收有关;由于锁机制的内容篇幅过长,这里就不多解释了;和锁相关的markWord(markOop)内存布局如下