就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。...但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。...我偶然从一个网友群中发现了整理的这份资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。...说实话,作为一名 Java 程序员,不论你需不需要面试都应该好好看下这份资料。我大概撸了一边,真的是堪称典范。
2: 运行过程: 我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件, 而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码...也就是如下: ① Java 源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码 每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是 Java 为什么能够 跨平台的原因了...Java 线程结束,原生线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可 用的 CPU 上。当原生线程初始化完毕,就会调用 Java 线程的 run() 方法。...当线程结束时会释放原生线程和 Java 线程的所有资源。 ...2.3.3.1JAVA8 与元数据 在 Java8 中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。
文章目录 聊聊文件 字节输入流 字节输出流 字符输入流 字符输出流 字节缓冲输入流 字节缓冲输出流 字符缓冲输入流 字符缓冲输出流 流的关闭 对IO流的学习,我记得还是初学Java基础的时候
Java核心技术(卷1) 一、基础概念 1.1 基本程序设计结构 1.1 数据类型 1.1.1 数值类型 1️⃣从java7开始,加上前缀0b或0B就可以写二进制; 2️⃣指数的表示...的核心技术 super和this 有些人认为super与this引用是类似的概念,实际上这样的比较并不恰当。...Java语言规范建议不要书写这些多余的关键字。...2.5 代理 java的JDK里面提供了动态代理的方案 2.6 Java的异常 异常的层次结构: 所有异常都是由Throwable继承而来, 而下一层立即分为两类:Error和Exception...四、部署Java应用程序 4.1 Jar文件 4.1.1 创建Jar文件; 4.1.2 清单文件; 4.1.3 可执行Jar文件; java -jar jar文件 4.2 应用首选项的存储
1.Java中没有多继承,而是用接口来代替多继承 2.运行一个已经编译的程序时,Java解释器总是从指定类的main方法中的代码开始执行,因此,执行代码中必须有一个main函数。...3.Java是典型的强类型语言,即必须声明变量的类型,Java中有8种类型,6种数值类型(4个整数型和2个浮点型)、一个字符类型和一个boolean类型。...想学习java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。...Java可以重载任何方法,而不仅是构造函数。...13.对象的类型转换: Manager boss = (Manager) args[0]; 14.Java数组和Java向量的区别: Java数组可以存储任何类型的变量,Java向量只能存储对象类的实例
Storm 是一个免费并开源的分布式实时计算系统。利用 Storm 可以很容易做到可靠地处理无限的 数据流,像 Hadoop 批量处理大数据一样,Storm 可...
可重入锁(递归锁) 本文里面讲的是广义上的可重入锁,而不是单指 JAVA 下的 ReentrantLock。...Java 中 读 写 锁 有 个 接 口 java.util.concurrent.locks.ReadWriteLock , 也 有 具 体 的 实 现 ReentrantReadWriteLock。...而操作系统实现线程之间的切换这就需要从用 户态转换到核心态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么 Synchronized 效率低的原因。...JDK 中对 Synchronized 做的种种优化,其核心都是为了减少这种重量级锁的使用。 JDK1.6 以后,为了减少获得锁和释放锁所带来的性能消耗,提高性能,引入了“轻量级锁”和 “偏向锁”。...PCB-“切换桢” 上下文切换可以认为是内核(操作系统的核心)在 CPU 上对于进程(包括线程)进行切换,上下 文切换过程中的信息是保存在进程控制块(PCB, process control block
分代收集算法 分代收集法是目前大部分 JVM 所采用的方法,其核心思想是根据对象存活的不同生命周期将内存 划分为不同的域,一般情况下将 GC 堆划分为老生代(Tenured/Old Generation...JAVA 虚拟机提到过的处于方法区的永生代(Permanet Generation),它用来存储 class 类, 常量,方法描述等。...2.5.JAVA 四中引用类型 2.5.1....强引用 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引 用。...因此强引用是造成 Java 内存泄漏的主要原因之 一。 2.5.2.
JAVA7 实现 大方向上,HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。...JAVA8 实现 Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑 树 组成。...Java8 实现 (引入了红黑树) Java8 对 ConcurrentHashMap 进行了比较大的改动,Java8 也引入了红黑树...JAVA 多线程并发 4.1.2....JAVA 线程实现/创建方式 4.1.2.1.
JAVA 序列化(创建可复用的 Java 对象) 保存(持久化)对象及其状态到内存或者磁盘 Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时, 这些对象才可能存在...Java 对象序列化就能够帮助我们实现该功能。 序列化对象以字节数组保持-静态成员不保存 使用 Java 对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装 成对象。...Serializable 实现序列化 在 Java 中,只要一个类实现了 java.io.Serializable 接口,那么它就可以被序列化。...Spring 核心组件 6.1.3. Spring 常用模块: 6.1.4....Spring 主要包 核心容器四个包 spring-beans-4.1.3.RELEASE.jar spring-context-4.1.3.RELEASE.jar spring-core-4.1.3
可以通过 hbase shell 或者 java api 手工触发 flush 的操作。 关闭 RegionServer 触发 5.
如何在两个线程之间共享数据 Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见 性和有序性原子性。...Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的 问题,理想情况下我们希望做到“同步”和“互斥”。...Java 中用到的线程调度 4.1.21.1....JVM 的线程调度实现(抢占式调度) java 使用的线程调使用抢占式调度,Java 中线程会按优先级分配 CPU 时间片运行,且优先级越高 越优先执行,但优先级高并不代表能独自占用执行时间片,可能是优先级高得到越多的执行时间...原子包 java.util.concurrent.atomic(锁自旋) JDK1.5 的原子包: java.util.concurrent.atomic 这个包里面提供了一组原子类。
Netty 原理 Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。...核心流程 1....JAVA 一般使用动态代 理方式实现远程调用。 8.1.3.1....通讯过程 核心问题(线程暂停、消息乱序) 如果使用 netty 的话,一般会用 channel.writeAndFlush()方法来发送消息二进制串,这个方 法调用后对于整个远程调用(从发出请求到接收到结果...RMI 实现方式 Java 远程方法调用,即 Java RMI(Java Remote Method Invocation)是 Java 编程语言里,一种用 于实现远程过程调用的应用程序编程接口。
使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流 程是核心关注点,与之关系不大的部分是横切关注点。...横切关注点的一个特点是,他们经常发生 在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP 的作用在于分离系统 中的各种关注点,将核心关注点和横切关注点分离开来。...AOP 核心概念 1、切面(aspect):类是对物体特征的抽象,切面就是对横切关注点的抽象 2、横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点。...JDK 动态代理主要涉及到 java.lang.reflect 包中的两个类:Proxy 和 InvocationHandler。...:CGLib 全称为 Code Generation Library,是一个强大的高性能,高质量的代码生成类库, 可以在运行期扩展 Java 类与实现 Java 接口,CGLib 封装了 asm,可以再运行期动态生成新
分布式事务 Java 事务编程接口(JTA:Java Transaction API)和 Java 事务服务 (JTS;Java Transaction Service) 为 J2EE 平台提供了分布式事务服务...Statement stmtB = null; try{ // 获得 Transaction 管理对象 userTx = (UserTransaction)getContext().lookup("java
JAVA 锁 4.1.9.1....java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入 值是否一样,一样则更新,否则失败。...Synchronized 核心组件 1) Wait Set:哪些调用 wait 方法被阻塞的线程被放置在这里; 2) Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中;...Java1.6,synchronized 进行了很多的优化,有适应自旋、锁消除、锁粗化、轻量级锁及偏向 锁等,效率有了本质上的提高。...在之后推出的 Java1.7 与 1.8 中,均对该关键字的实现机理做 了优化。引入了偏向锁和轻量级锁。都是在对象头中有标记位,不需要经过操作系统加锁。 10.
这里 volatile 是核心关键词,具体 volatile 的语义,在此不述。...同步器的实现是 ABS 核心(state 资源状态计数) 同步器的实现是 ABS 核心,以 ReentrantLock 为例,state 初始化为 0,表示未锁定状态。...法的功能成为 Java 语言的反射机制。...Java 反射 API 反射 API 用来生成 JVM 中的类、接口或则对象的信息。 1. Class 类:反射的核心类,可以获取类的属性,方法等信息。 2....获取想要操作的类的 Class 对象,他是反射的核心,通过 Class 对象我们可以任意调用类的方 法。 2. 调用 Class 类中的方法,既就是反射的使用阶段。 3.
JAVA 算法 21.1.1. 二分查找 又叫折半查找,要求待查找的序列有序。...应用剪枝优化的核心问题是设计剪枝判断方法,即 确定哪些枝条应当舍弃,哪些枝条应当保留的方法。 21.1.6.
各种虚拟 机实现的内存布局可以各不相同,但是它们能接受的符号引用必须是一致的,因为符号引 用的字面量形式明确定义在 Java 虚拟机规范的 Class 文件格式中。...负责加载 JAVA_HOME\lib\ext 目录中的,或通过 java.ext.dirs 系统变量指定路径中的类 库。 2.9.2.3....OSGI(动态模型系统) OSGi(Open Service Gateway Initiative),是面向 Java 的动态模型系统,是 Java 动态化模块化系 统的一系列规范...集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。...Java List 一共三个实现类: 分别是 ArrayList、Vector 和 LinkedList。 3.2.1.
编写远程服务接口,该接口必须继承 java.rmi.Remote 接口,方法必须抛出 java.rmi.RemoteException 异常; 2....编写远程接口实现类,该实现类必须继承 java.rmi.server.UnicastRemoteObject 类; 3....客户端查找远程对象,并调用远程方法; 1:创建远程接口,继承 java.rmi.Remote 接口 public interface GreetService extends java.rmi.Remote...类 public class GreetServiceImpl extends java.rmi.server.UnicastRemoteObject implements GreetService...本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构、开发和部署,并且针对不同的传输协议和服务类 型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用
领取专属 10元无门槛券
手把手带您无忧上云