一、简介final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。二、使用场景在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。1. 修饰类当用final修饰一个类时,表明这个类不能被继承。最常见是就是String类,
转载
2023-11-01 16:15:21
68阅读
前言我们都知道,Java是一种面对对象的语言,这样就避开了繁琐的过程使编码变得简单。同时Java是在JVM虚拟机上运行,故具有良好的可移植性。 现在,让我们来一起探索Java程序运行的原理基本原理 Java语言是一种先编译后解释的语言,一般我们在编写一个Java程序时需要在记事本(或编辑器)上先编辑好源代码 这些源代码经过编译器编译后,就会生成一个.class文件,这个文件就是编译好的Java程序
转载
2023-06-25 20:09:06
114阅读
前言本篇文章主要从几个方面来阐述下java jni的原理机制。1. 什么是java jni? 2. java jni有什么作用? 3. java jni应用场景有哪些?4. java jni实现原理5. java jni如何使用;6. 使用实例;下面我们逐一进行解析。
转载
2023-08-09 14:02:14
156阅读
Java注解实际上只是对包、类、方法、成员变量等java程序进行标注。其本身没有业务逻辑、要实现注解相应的业务逻辑功能必须由另外的处理类来实现。其基本原理就是通过java反射机制,获取这些java程序的包、类、方法、成员变量的注解、然后加以判断并实现相应的业务功能逻辑。 java的内置注解包括@Override、@Deprecated、@SuppressWarnings("uncheck
转载
2023-06-01 14:22:37
230阅读
1、事务的特征(ACID)(1)原子性:不可分割性,操作要么全部执行,要么全部不执行。(2)一致性:事务的执行使得数据库从一种正确的状态转换为另一种正确的状态。(3)隔离性:一个事务的执行不能干扰其他事务。(4)持久性:事务完成后,对数据的改变是永久性的,结果会永久的保存在数据库中。Java事务产生的原因:程序操作sh数据可的需要,编程中,实现ACID的操作。Java事务实现范围:通过JDBC间接
转载
2023-09-10 15:22:35
43阅读
Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法:同步普通方法,锁的是当前对象。同步静态方法,锁的是当前 Class 对象。同步块,锁的是 
转载
2023-09-01 09:14:56
88阅读
场景: 在多线程并发编程中synchronized一直是元老级角色,作为最基本的互斥手段,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。Java SE 1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。3种形式:先来看下利用sy
转载
2023-07-15 13:08:43
119阅读
一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要
转载
2023-08-21 19:44:23
27阅读
Spring AOP实现原理:63.什么是AOPAOP概念:AOP是spring提供的关键特性之一。AOP即面向切面编程,是OOP变成的有效补充。使用AOP,可以将一些系统性的编程工作独立出来,然后通过切面切入系统,从而避免在业务逻辑的代码中混入很多系统相关的逻辑:比如权限管理,事务管理,日志记录等等。AOP实现原理:AOP分为静态AOP和动态AOP。静态AOP是指AspectJ实现的AOP,她是
转载
2023-08-12 09:55:31
85阅读
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台
转载
2023-08-28 15:26:14
111阅读
原标题:JVM工作原理作为一名Java开发者,掌握JVM的体系结构也是很有必要的,了解底层的东西,有助于更好的理解和掌握程序运行中的原理。一、Java运行原理说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:二、JVM的运行原理基本概念
转载
2023-09-29 19:53:02
42阅读
Java虚拟机(Java Virtual Machine,JVM)是运行Java程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。原理:编译后的Java程序指令并不直接在硬件系统的CPU上执行,而是由JuVM执行。JVM屏蔽了于具体平台相关的信息,Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。
转载
2023-07-21 09:16:25
41阅读
前言我们在前一章了解到了volatile可以保证并发时的可见性和有序性,但对其原理未曾详述,本章就来谈谈volatile具体实现原理。 一、volatile如何保证变量的可见性 volatile变量在被修改后对其他线程是立即可以得知的。这是由这条规则决定的:当它被一个线程修改后会立即将新值写入主内存的变量里,如果此时有其他线程要使用这个变量,那么就会从主内存中重新读取volat
转载
2023-08-05 09:06:30
53阅读
Future模式类似于js中的ajax等,是一个异步获取数据的机制,这里我把自己的一些形象理解通过代码实现了一下。该机制可以形象的理解为:调用获取数据的方法,首先获得一个没有装数据的空箱子(这个箱子有获取数据和装载数据的机制),至于箱子中的数据是通过另开一个线程去获取的,隔一段时间之后,当我们想要获取箱子中的数据的时候,就直接从箱子中拿就行了,一般情况下,由于获取到箱子之后到我需要从箱子中拿取数据
转载
2023-07-17 22:27:06
57阅读
ArrayList实现原理要点概况底层是数组实现,线程不安全,允许包含null在内的所有元素,允许存放相同元素数组扩容 默认长度是10,每次数组容量增长大约是其容量的1.5倍,会将老数组中的元素重新拷贝到新数组中。查询快,增删慢 add、remove操作对于ArrayList其运行时间是O(N),因为在它当中在前端进行添加或移除构造新数组是O(N)操作;get方法的调用为O(1)操作。要是使用一个
转载
2023-08-09 11:12:21
64阅读
synchronized 原理 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? 本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synchronized的实现: synrhronized关键字简洁、清
转载
2023-07-20 15:32:52
49阅读
前言Java代码在编译后变成Java字节码,字节码被类加载器加载到JVM中执行,最终转换为汇编指令在CPU上执行,所以Java的所有机制都依赖于JVM虚拟机的实现与CPU的指令。monitor监视锁,每个对象都有一个唯一的monitor,它被内置到Java对象头中,所以也称为内置锁,满足以下约束:同时只能一个线程获得锁线程通过竞争获取该锁当线程调用某对象的wait方法时,此线程会释放该对象的锁,并
转载
2023-09-04 17:42:40
7阅读
深入JVM工作原理(一)一、JVM基础知识(一)java跨平台解释(二)JVM介绍(三)JDK、JRE、JVM三者关系(四)JVM的生命周期启动和消亡:JVM运行起点:JVM的两种线程:二、JVM的工作机制(类加载机制)(一)类加载时机(二)类加载器(三)双亲委派模型(四)类加载详细过程三、JVM的工作过程(内存模型)(一)程序计数器(二)虚拟机栈(三)本地方法栈(四)堆(五)方法区四、java
转载
2023-09-18 15:02:22
20阅读
面试发现经常有些重复的面试问题,自己也应该学会记录下来,最好自己能做成笔记,在下一次面的时候说得有条不紊,深入具体,面试官想必也很开心。以下是我个人总结,请参考: HashSet底层原理:(问了大几率跟HashMap一起面)HashMap底层原理:(非常大几率问到)Hashtable底层原理:(问的少,问了大几率问你跟HashMap的区别)synchronized底层如何实现?锁优化,怎么优化?R
Java Native Interface Java本地调用,Java程序中的函数和native语言写的函数(C或C++)可以实现相互调用。使用JNI技术的原因1 Java诞生之前,很多软件都是用native语言写的,在Java中只要使用JNI技术调用他们就可以。2 Java是一次编译,到处运行,原因是Java虚拟机在不同的平台有不同的虚拟机,虚拟机屏蔽了底层硬件差异,Java虚拟机是使用nati
转载
2023-09-27 18:53:53
63阅读