- 博客(45)
- 收藏
- 关注
原创 i++和++i
i++和i++相面面试题计算原则:赋值运算符=,最后计算;=右边的从左到右加载值依次压入操作数栈;实际先算哪个,看运算符优先级;赋值操作是将操作数栈中的值赋给局部变量表,比如i=i++,假设i的初始值为10,局部变量表中的值变化顺序为10->11->10;自增、自减操作都是直接在局部变量表中修改变量的值,不经过操作数栈;i++是先将局部变量表中的值压入操作数栈,局部变量表中的值+1;++i是局部变量表中的值+1,再压入操作数栈;最后的赋值之前,临时结果也是存储在操作数栈中。
2021-09-03 09:38:35
111
原创 11_执行引擎
本问主要介绍了JVM的执行引擎,首先说明Java代码编译和Class字节码的执行过程,然后对几个相关概念进行辨析,最后分别介绍解释器和即时编译器的工作特点。
2021-09-01 21:43:05
152
原创 10_对象的实例化&内存布局与访问定位
本文介绍了对象实例化的方式和步骤,对象的内存布局由对象头、实例数据和对齐填充等三部分组成;对象的访问有句柄访问和直接指针两种方式,HotSpot JVM采用后者。
2021-09-01 08:59:27
100
原创 09_方法区
本文主要介绍了Java虚拟机的方法区,说明堆、栈和方法区的交互关系以及对方法区的理解,分析了方法区的内部结果、不同JDK版本的演进细节以及垃圾回收情况。
2021-09-01 08:51:45
140
原创 08_虚拟机堆
本文主要介绍了Java虚拟机中的堆区,堆区主要分为老年代与年轻代,说明了对象的分配过程和三种GC方式;分析了分代思想,阐述内存分配的过程和策略,最后介绍了堆空间的参数设置。
2021-08-31 22:52:00
121
原创 07_本地方法接口和本地方法栈
本文主要介绍了本地方法接口和本地方法栈,有些层次的任务用Java实现起来不容易,或者我们对程序的效率很在意时,会调用本地方法接口;本地方法栈(Native Method Stack)用于管理本地方法的调用,在 Hotspot JVM中,直接将本地方法栈和虚拟机栈合二为一。
2021-08-31 22:44:05
113
原创 06_虚拟机栈
本文主要介绍了虚拟机的栈,栈的存储单位为栈帧,每个栈帧都包含局部变量表、操作数栈、动态链接、方法返回地址和一些附加信息等,对这几部分内容进行了较为详细的说明。
2021-08-31 22:40:42
115
原创 05_程序计数器
本文主要介绍了程序计数器,程序计数器的作用是存储下一条指令的地址,即将要执行的指令代码;是运行速度最快的存储区域;每个线程都有自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。
2021-08-31 22:31:24
313
原创 04_运行时数据区及线程
本文主要包括两部分内容,运行时数据区和线程,运行时数据区主要包括方法区和堆(线程共享的)、程序计数器和虚拟机栈和本地方法栈(线程私有的);介绍了JVM中线程的使用情况。
2021-08-31 22:26:27
84
原创 03_类加载器
本文主要介绍了不同的类加载器并进行测试,说明了双亲委派机制和破坏双亲委派机制的例子,最后介绍了自定义类加载器的方法和JDK9关于类加载器的新特性。
2021-08-31 22:20:38
244
原创 01_JVM与Java体系结构
本文主要介绍了JVM和Java的体系结构,包括Java发展的重大事件,Java虚拟机的整体结构和Java代码的执行流程以及JVM的发展历程等内容。
2021-08-31 21:58:51
155
原创 单例模式实现
本文介绍了单例模式的几种实现方式并说明了每种方式的优缺点,根据使用场景不同,需要考虑线程安全、性能和资源占用等问题,主要包括饿汉式、懒汉式、双重校验锁方式、基于类初始化方式和枚举式等。
2021-08-31 10:06:37
190
原创 多线程基础-7-保障线程安全的设计技术
这篇博客从面向对象设计的角度出发,介绍几种保障线程安全的设计技术,这些技术可以使得我们在不必借助锁的情况下保障线程安全,避免锁可能导致的问题及开销。
2020-12-14 11:01:12
113
原创 多线程基础-6-线程管理
这篇博客主要介绍了线程管理的内容,简单说明线程组,捕获线程执行异常和注入Hook钩子线程的内容,最后重点介绍线程池,包括线程池的底层实现和创建线程池的各个参数说明。
2020-12-14 10:59:59
144
原创 多线程基础-5-Lock显示锁
这篇博客主要介绍了显示锁Lock接口的ReentrantLock可重入锁实现类和ReentrantReadWriteLock读写锁实现类,读写锁允许读读共享, 读写互斥,写写互斥。
2020-12-14 10:51:46
153
原创 多线程基础-4-线程间通信
这篇博客主要介绍了线程间通信的几种方式,重点介绍等待/通知机制,以及基于等待/通知机制的生产者-消费者模式,然后简单说明了通过管道实现线程间通信以及ThreadLocal的使用。
2020-12-13 22:03:50
149
原创 多线程基础-3-线程同步
这篇博客主要介绍了线程同步机制,主要对内部锁synchronized和volatile关键字的使用进行说明,然后说明CAS的操作原理,最后介绍了基于CAS实现的原子变量类。
2020-12-13 21:59:53
186
原创 多线程基础-2-线程安全问题
这篇博客主要对线程安全的三个特性:原子性,可见性和有序性进行了说明,然后简单地分析了与线程安全相关的Java内存模型。
2020-12-13 21:52:54
112
原创 多线程基础-1-线程概述
多线程1 线程概述1.1 线程相关概念进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。可以把进程简单的理解为正在操作系统中运行的一个程序。线程线程(thread)是进程的一个执行单元。一个线程就是进程中一个单一顺序的控制流,进程的一个执行分支。进程是线程的容器,一个进程至少有一个线程。一个进程中也可以有多个线程。在操作系统中是以进程为单位分配资源,如虚拟存储空间,文件描述符等。每个线程都有各自的线程栈,自己的寄存器环境,自
2020-12-13 21:47:20
141
原创 JDBC基础笔记
这篇博客介绍了JDBC的基础内容,包括JDBC与驱动的概述,如何配置环境,以及JDBC的编程六步,以用户登陆业务为例,演示了SQL注入现象和解决方法,最后演示了JDBC的单机事务。
2020-11-01 10:13:43
131
原创 MySQL基础整理
1数据库及数据准备1.1 SQL和数据库概述DB:DataBase,数据库,在硬盘上以文件的形式存在DBMS:DataBase Management System,数据库管理系统,常见的有MYSQL、Oracle、SqlServer、DB2…SQL:Strutured Query Language,结构化查询语言,是一门高级语言,标准的SQL适用于所有数据库管理系统。SQL语句在执行时也会进行编译,编译由DBMS完成。三者的关系:DBMS负责执行SQL语句,来操作DB中的数据。1.2 表
2020-10-24 22:21:12
199
原创 Object类的常用方法
这篇博客介绍了Object类中常用的方法,包括toString(),equal(),finalize()和hashCode()方法,其中toString()和equal()方法一般需要重写。
2020-10-11 17:45:44
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人