就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。...但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。...我偶然从一个网友群中发现了整理的这份资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。...说实话,作为一名 Java 程序员,不论你需不需要面试都应该好好看下这份资料。我大概撸了一边,真的是堪称典范。
文章目录 聊聊文件 字节输入流 字节输出流 字符输入流 字符输出流 字节缓冲输入流 字节缓冲输出流 字符缓冲输入流 字符缓冲输出流 流的关闭 对IO流的学习,我记得还是初学Java基础的时候
2: 运行过程: 我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件, 而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码...也就是如下: ① Java 源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码 每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是 Java 为什么能够 跨平台的原因了...Java 线程结束,原生线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可 用的 CPU 上。当原生线程初始化完毕,就会调用 Java 线程的 run() 方法。...当线程结束时会释放原生线程和 Java 线程的所有资源。 ...2.3.3.1JAVA8 与元数据 在 Java8 中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。
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 应用首选项的存储
面向对象与面向过程 相信很多Java开发者,在最初接触Java的时候就听说过,Java是一种面向对象的开发语言,那么什么是面向对象呢?
CAP 原则又称 CAP 定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability (可用性)、Partition tol...
核心内容包含 hdfs 和 mapreduce。hadoop2.0 以后引入 yarn. hdfs 是提供数据存储的,mapreduce 是方便数据计算的。...核心架构 Spark Core 包含 Spark 的基本功能;尤其是定义 RDD 的 API、操作以及这两者上的动作。...核心组件 Cluster Manager-制整个集群,监控 worker 在 standalone 模式中即为 Master 主节点,控制整个集群,监控 worker。
JAVA 锁 4.1.9.1....java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入 值是否一样,一样则更新,否则失败。...Synchronized 核心组件 1) Wait Set:哪些调用 wait 方法被阻塞的线程被放置在这里; 2) Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中;...Java1.6,synchronized 进行了很多的优化,有适应自旋、锁消除、锁粗化、轻量级锁及偏向 锁等,效率有了本质上的提高。...在之后推出的 Java1.7 与 1.8 中,均对该关键字的实现机理做 了优化。引入了偏向锁和轻量级锁。都是在对象头中有标记位,不需要经过操作系统加锁。 10.
使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流 程是核心关注点,与之关系不大的部分是横切关注点。...横切关注点的一个特点是,他们经常发生 在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP 的作用在于分离系统 中的各种关注点,将核心关注点和横切关注点分离开来。...AOP 核心概念 1、切面(aspect):类是对物体特征的抽象,切面就是对横切关注点的抽象 2、横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点。...JDK 动态代理主要涉及到 java.lang.reflect 包中的两个类:Proxy 和 InvocationHandler。...:CGLib 全称为 Code Generation Library,是一个强大的高性能,高质量的代码生成类库, 可以在运行期扩展 Java 类与实现 Java 接口,CGLib 封装了 asm,可以再运行期动态生成新
Netty 原理 Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。...核心流程 1....JAVA 一般使用动态代 理方式实现远程调用。 8.1.3.1....通讯过程 核心问题(线程暂停、消息乱序) 如果使用 netty 的话,一般会用 channel.writeAndFlush()方法来发送消息二进制串,这个方 法调用后对于整个远程调用(从发出请求到接收到结果...RMI 实现方式 Java 远程方法调用,即 Java RMI(Java Remote Method Invocation)是 Java 编程语言里,一种用 于实现远程过程调用的应用程序编程接口。
分布式事务 Java 事务编程接口(JTA:Java Transaction API)和 Java 事务服务 (JTS;Java Transaction Service) 为 J2EE 平台提供了分布式事务服务...Statement stmtB = null; try{ // 获得 Transaction 管理对象 userTx = (UserTransaction)getContext().lookup("java
分代收集算法 分代收集法是目前大部分 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 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的 问题,理想情况下我们希望做到“同步”和“互斥”。...Java 中用到的线程调度 4.1.21.1....JVM 的线程调度实现(抢占式调度) java 使用的线程调使用抢占式调度,Java 中线程会按优先级分配 CPU 时间片运行,且优先级越高 越优先执行,但优先级高并不代表能独自占用执行时间片,可能是优先级高得到越多的执行时间...原子包 java.util.concurrent.atomic(锁自旋) JDK1.5 的原子包: java.util.concurrent.atomic 这个包里面提供了一组原子类。
可以通过 hbase shell 或者 java api 手工触发 flush 的操作。 关闭 RegionServer 触发 5.
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
JAVA IO/NIO 2.8.1....在 Java NIO 中,是通 过 selector.select()去查询每个通道是否有到达事件,如果没有事件,则一直阻塞在那里,因此这 种方式会导致用户线程的阻塞。...JAVA NIO NIO 主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。...Selector Selector 类是 NIO 的核心类,Selector 能够检测多个注册的通道上是否有事件发生,如果有事 件发生,便获取事件然后针对每个事件进行相应的响应处理...加载 加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对 象,作为方法区这个类的各种数据的入口。
Java 线程池工作过程 4.1.14. JAVA 阻塞队列原理 4.1.14.1. 阻塞队列的主要方法: 插入操作: 获取数据操作: 4.1.14.2. Java 中的阻塞队列 4.1.14.3....Java 线程池工作过程 1. 线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面 有任务,线程池也不会马上执行它们。 2....; b) 如果正在运行的线程数量大于或等于 corePoolSize,那么将这个任务放入队列; c) 如果这时候队列满了,而且正在运行的线程数量小于 maximumPoolSize,那么还是要 创建非核心线程立刻运行这个任务...JAVA 阻塞队列原理 阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况: 1....CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。
ngx_http_upstream_module 是负载均衡模块,可以实现网站的负载均衡功能即节点的健康检 查,upstream 模块允许 Nginx 定义一组...
Java 虚拟机会为其创建方法调用栈和 程序计数器,等待调度运行。 4.1.4.3....} } 定义了一个退出标志 exit,当 exit 为 true 时,while 循环退出,exit 的默认值为 false.在定义 exit 时,使用了一个 Java...JAVA 后台线程 1.
领取专属 10元无门槛券
手把手带您无忧上云