
JVM
文章平均质量分 89
不爱学习的辛
祝您早日学有所成,拿到满意offer。快速升职加薪,出任CEO,赢取白富美,走上人生巅峰。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
面试官让我详细剖析分布式微服务架构下网络通信的底层实现原理(图解)
在分布式架构中,网络通信是底层基础,没有网络,也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作,共同完成一件事情。同样,在大规模的系统架构中,应用吞吐量上不去、网络存在通信延迟、我们首先考虑的都是网络问题,因此网络的重要性不言而喻。作为现代化应用型程序员,要开发一个网络通信的应用,是非常简单的。不仅仅有成熟的api,还有非常方便的通信框架。可能大家已经忘记了网络通信的重要性,本篇文章会详细分析网络通信的底层原理!!1.1 理解通信的本质如图1-1所示,当我们通过浏览器访问一个网址时原创 2021-11-08 17:13:37 · 1861 阅读 · 0 评论 -
这一篇 K8S(Kubernetes)集群部署 我觉得还可以,现在分享给大家。
国内安装K8S的四种途径Kubernetes 的安装其实并不复杂,因为Kubernetes 属于Google 的产品,都是从Google的官方上进行下载,但是因为网络问题,在国内是没办法连接它的中央仓库进行下载安装包的,只能通过其他的途径进行安装,在国内有四种安装方式使用 Kubeadmin 通过离线镜像安装: Kubeadmin 是K8S提供的管理控制台,通过这里的命令可以非常方便的对我们集群进行快速发布和部署使用阿里云公有云平台安装K8S: 这是也是非常好用的,不用做任何设置,拿来就用,但是有一原创 2021-11-07 16:17:54 · 1549 阅读 · 0 评论 -
面试题系列:用了这么多年的 Java 泛型,我只知道它的皮毛
面试题:说说你对泛型的理解?面试考察点考察目的:了解求职者对于Java基础知识的掌握程度。考察范围:工作1-3年的Java程序员。背景知识Java中的泛型,是JDK5引入的一个新特性。它主要提供的是编译时期类型的安全检测机制。这个机制允许程序在编译时检测到非法的类型,从而进行错误提示。这样做的好处,一方面是告诉开发者当前方法接收或返回的参数类型,另一方面是避免程序运行时的类型转换错误。泛型的设计推演举一个比较简单的例子,首先我们来看一下ArrayList这个集合,部分代码定义如下。p原创 2021-11-05 19:30:26 · 191 阅读 · 0 评论 -
面试官问我:Java异常处理与多线程
异常处理异常概述与异常体系结构在Java语言中,将程序执行中发生的不正常情况称为异常(开发过程中的语法错误和逻辑错误不是异常)。Java程序在执行过程中所发生的异常事件可分为两类:Error: Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况,例如StackoverflowError和OOM。一般不编写针对性的代码进行处理。public static void main(String[] args) { // 1\. 栈溢出: java.lang.Stack原创 2021-11-04 21:59:26 · 181 阅读 · 0 评论 -
2021最新Java枚举类和注解
枚举类背景类的对象只有有限个: 性别 星期 季节 线程状态当需要定义一组常量时,强烈建议使用枚举类。如果枚举类中只有一个对象,则可以作为单例模式的实现方式。自定义枚举类import org.junit.Test;public class EnumTest { @Test public void test() { Season season = Season.SPRING; System.out.println(season);原创 2021-11-04 19:23:59 · 268 阅读 · 1 评论 -
如何彻底搞懂大厂是如何实现Redis高可用的?看这篇文章就够了!(1.2W字,建议收藏)
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。那么如何保证系统的高可用呢首先,在整个架构的每个节点中,不允许存在单点问题,因为单点一定是高可用最大的风险点,我们应该在系统设原创 2021-10-27 21:18:27 · 275 阅读 · 0 评论 -
从源码层面深度剖析Redisson实现分布式锁的原理(全程干货,注意收藏)
Redis实现分布式锁的原理前面讲了Redis在实际业务场景中的应用,那么下面再来了解一下Redisson功能性场景的应用,也就是大家经常使用的分布式锁的实现场景。引入redisson依赖<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.16.0</version>原创 2021-10-22 15:56:37 · 173 阅读 · 0 评论 -
2021最新互联网面试必问Java后端面试题(含答案)
1.你觉得 Java 好在哪儿?这种笼统的问题如果对某些知识点没有深入、系统地认识绝对会蒙!所以为什么经常碰到面试官问你一些空、大的问题?其实就是考察你是否有形成体系的理解。回到问题本身。我觉得可以从跨平台、垃圾回收、生态三个方面来阐述。首先 Java 是跨平台的,不同平台执行的机器码是不一样的,而 Java 因为加了一层中间层 JVM ,所以可以做到一次编写多平台运行,即 「Write once,Run anywhere」。编译执行过程是先把 Java 源代码编译成字节码,字节码再由 JVM 解原创 2021-10-21 19:20:32 · 1886 阅读 · 0 评论 -
2021最新JVM夺命连环10问,你能答上来几道?
说说JVM的内存布局?Java虚拟机主要包含几个区域:堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S1 3个部分,他们默认的比例是8:1:1的大小。栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧的结构又包含局部变量表、操作数栈、动态连接、方法返回地址。局部变量表用于存储方法参数和局部变量。原创 2021-10-20 19:29:48 · 127 阅读 · 0 评论 -
什么是 JVM 类加载机制?你真的了解吗?
JVM在什么情况下会加载一个类?其实类加载过程非常的琐碎复杂,但是对于我们平时从工作中实用的角度来说,主要是把握他的核心工作原理就可以。一个类从加载到使用,一般会经历下面的这个过程:加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载所以首先要搞明白的第一个问题,就是JVM在执行我们写好的代码的过程中,一般在什么情况下会去加载一个类呢?也就是说,啥时候会从“.class”字节码文件中加载这个类到JVM内存里来。其实答案非常简单,就是在原创 2021-10-19 15:06:01 · 115 阅读 · 0 评论 -
面试:JVM,GC垃圾回收机制(通俗易懂)
一、如果判断对象可以回收1.1 引用计数法当一个对象被引用时,就当引用对象的值加一,当值为 0 时,就表示该对象不被引用,可以被垃圾收集器回收。这个引用计数法听起来不错,但是有一个弊端,如下图所示,循环引用时,两个对象的计数都为1,导致两个对象都无法被释放。1.2 可达性分析算法MAT工具–可视化Eclipse Memory Analyzer是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗。使用Memory Analyzer分析具有数亿个对象的高效堆转储,快速计算对原创 2021-10-19 15:03:39 · 504 阅读 · 0 评论 -
牛批!终于有人把JVM内存分配机制讲明白了!超详细解析!
一、对象的加载过程那么,当一个象被new的时候,是如何加载的呢?有哪些步骤,如何分配内存空间的呢?1.1 对象创建的主要流程还是这段代码为例说明:public static void main(String[] args) { Math math = new Math(); math.compute(); new Thread().start();}当我们new一个Math对象的时候,其实是执行了一个new指令创建对象。我们之前研究过类加载的流程,那么创建一个对象的原创 2021-10-18 21:53:31 · 475 阅读 · 0 评论