
jvm
文章平均质量分 91
程序员阿轩
Java领域:架构干货分享:互联网分析
展开
-
硬核!啃完666页Java面试高频宝典,6月成功定级腾讯T3-2
面试,是大家从学校走向社会的第一步。互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试 +1 轮 HR 面试。但是一些公司确实是没有 HR 面试的,直接就是三轮技术面。技术面试中,面试官一般会先就你所应聘的岗位进行相关知识的考察,也叫基础知识和业务逻辑面试。只要你回答的不是特别差,面试官通常会说:“咱们写个代码吧”,这个时候就开始了算法面试。也就是说,一轮技术面试 = 基础知识和业务逻辑面试 + 算法面试。本文我们主要从技术面试聊起。技术面试包括:业务逻辑和基础知识面试。首先是业务逻原创 2021-06-17 15:25:30 · 363 阅读 · 0 评论 -
史无前例!肝了30天,终于整出这份JVM原理最全、清晰、通俗讲解的宝典笔记
开发工程师们都知道,JVM对于我们来说十分重要。“学习 JVM 能深入地理解 Java 这门语言,可以为未来排查问题打下基础”对于刚开始学习Java的人来说,JVM是有一些难度的,但对于已经有2、3年工作经验的Java程序员来说,你若想不再只做CRUD,而是继续提升成为高级开发工程师,拥有拿到更高工资的能力,那就必须深入掌握JVM。从求职的角度来看,JVM也是Java工程师面试成功的一道门槛,可能以前我们会认为只有中高级的Java工程师才会面对JVM的问题,但现在初级Java工程师也难逃此题。**原创 2021-06-16 16:41:10 · 280 阅读 · 1 评论 -
大厂面试内幕:阿里内部整理出的5000页Java多线程面试题(含答案)复盘指南,起飞
Java并发编程问题是面试过程中很容易遇到的问题,提前准备是解决问题的最好办法,将试题总结起来,时常查看会有奇效。在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位,那么你应该准备很多关于多线程的问题。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadLocal、Blocking Queue、Count原创 2021-06-16 14:39:43 · 252 阅读 · 0 评论 -
学妹半夜想学SpringBoot,连夜起来整理了一篇SpringBoot入门最详细教程笔记,看完才准睡觉!
前言凭借开箱即用,远离繁琐的配置等特性,Spring Boot 已经成为 Java 开发者人人必学必会的开源项目。那么开发者该如何快速上手Spring Boot 呢?Spring Boot 到底是啥?那请问Spring Boot 到底是啥?Spring Boot是Spring框架的扩展和自动化,它消除了在Spring中需要进行的XML(EXtensible Markup Language)文件配置(若习惯XML配置,则依然可以使用),使得开发变得更快、更高效、更自动化。微服务 微服务:每一个功能元原创 2021-06-09 22:18:24 · 311 阅读 · 1 评论 -
教妹学MySQL:哇塞!GitHub 上这些 实用的几种SQL语句太强了吧,看完哪个都变大佬!
前言SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考学习。如果大家还有其他好的语句或者好的见解欢迎分享。实用的SQL1、常见 SQL 语句性能优化策略对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。应尽原创 2021-06-07 15:44:19 · 446 阅读 · 4 评论 -
史无前例!肝了30天,我靠着这份java突击成功拿下蚂蚁金服offer
今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。前前后后面试了不下二十家公司,一二线大公司或者是融资中的创业公司都面试过,也拿了几个offer,其中包括美团、蚂蚁金服等。下面题目都是我总结这些天面试中问的大多数题目,综合分类有Java基础,框架,多线程,网络通信,数据库以及设计模式,算法等几个模块。如果大家还有其他好的题目或者好的见解欢迎分享。一、JVM出乎意料,Java虚拟机应原创 2021-06-03 21:11:37 · 311 阅读 · 2 评论 -
28岁因为不能月入过万,所以在一起5年的女朋友和我分手了,我想当程序员!可父母力阻我辞职,怎么办?
前言就因为女朋友说了一句,你看你兄弟是做程序员的一个月2万多,那像你天天加班加点的做月收入才8k,所以我选择了分手!大学选择的就是计算机专业,但是毕业后电商很火所以我选择去做跨境电商,这两年因为疫情的原因本来就想换行业分手应该是我压死我最后一根稻草,我现在有车无房,父母在老家有一个农场,每年能够挣个20多问万,我觉得我可以再拼一把,但是父母极力阻止我,希望我回去专心做农场即使在这样的情况下我还是选择了跳槽从头去做Java,因为我在城市买房买车!让前任看看新的面试一面:1hmysql知道哪些原创 2021-05-27 18:01:39 · 256 阅读 · 0 评论 -
5年BAT 老兵的经验之谈!如何编写高效优雅的Java程序?
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!1.面向对象 1.1 构造器参数太多怎么办? 对于多个成员变量的类构造函数,对于不同参数个数的构造函数一般需要定义多个构造函数,比较麻烦。 对于JavaBean模式,使用set/get方式可能会使得得到的对象,某个成员变量没有初始化就使用了该成员变量,会有问题。 比较好的初始化方式是用Builder构造者模式。初始化直接采用链式初始化的方式进行初始化。 用builder模式,用在 1、5个或者5个以上的成员变量原创 2021-05-21 16:26:18 · 240 阅读 · 2 评论 -
毕业五年,年薪百万,我掌握了这些java最简单粗暴的入门线程方法
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!线程1.简介大家都知道多线程给我们带来了更好的资源利用和更好的程序响应,所以关于它的简介我就不多阐明了,大家可以自行搜索,我主要讲的就是重点线程就是独立的执行路径;在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程、gc线程;对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;线程会带来额外的开销,如cpu调度时间,并发控制开销;每个线程在自己的工作内存交互,内存控制不当会造成数据不一致;2.线程创原创 2021-05-21 11:21:10 · 181 阅读 · 4 评论 -
(最终篇)一文看透垃圾回收,深入剖析,浅入深出
由于上一篇文章篇幅比较多,我们在这一篇文章重点讲解上一篇文章中提到的 CMS 垃圾回收器,让你可以更好的理解垃圾回收的过程。还没阅读过上一篇文章的朋友可以点击此处查看以便更好理解:关于垃圾回收你真的了解透彻了吗?我熬夜深度剖析了一下在这里首先给你介绍几个概念:Minor GC:发生在年轻代的 GC。 Major GC:发生在老年代的 GC。 Full GC:全堆垃圾回收。比如 Metaspace 区引起年轻代和老年代的回收。理解了这三个概念,我们再往下看。CMS 的全称是 Most原创 2021-04-12 21:56:22 · 183 阅读 · 0 评论 -
关于垃圾回收你真的了解透彻了吗?我熬夜深度剖析了一下
本文章我们重点剖析 JVM 的垃圾回收机制。关于 JVM 垃圾回收机制面试中主要涉及这三个考题:JVM 中有哪些垃圾回收算法?它们各自有什么优劣? CMS 垃圾回收器是怎么工作的?有哪些阶段? 服务卡顿的元凶到底是谁?虽然 Java 不用“手动管理”内存回收,代码写起来很顺畅。但是你有没有想过,这些内存是怎么被回收的?其实,JVM 是有专门的线程在做这件事情。当我们的内存空间达到一定条件时,会自动触发。这个过程就叫作 GC,负责 GC 的组件,就叫作垃圾回收器。JVM 规范并没有规定垃圾回原创 2021-04-10 16:13:03 · 233 阅读 · 0 评论 -
面试时总是搞混JMM 与 JVM?一文带你了解得透透的
本篇文章我们主要分析一个大厂面试题:不要搞混 JMM 与 JVM。在面试的时候,有一个问题经常被问到,那就是 Java 的内存模型,它已经成为了面试中的标配,是非常具有原理性的一个知识点。但是,有不少人把它和 JVM 的内存布局搞混了,以至于答非所问。这个现象在一些工作多年的程序员中非常普遍,主要是因为 JMM 与多线程有关,而且相对于底层而言,很多人平常的工作就是 CRUD,很难接触到这方面的知识。JMM 概念在前几篇文章,就已经了解了 JVM 的内存布局,你可以认为这是 JVM 的数据存储模原创 2021-04-06 22:24:19 · 394 阅读 · 0 评论 -
怎么得心应手应对 OOM 的疑难杂症?我给出了详细的解析
在前面几篇文章中,我们不止一次提到了堆(heap),堆是一个巨大的对象池。在这个对象池中管理着数量巨大的对象实例。而池中对象的引用层次,有的是很深的。一个被频繁调用的接口,每秒生成对象的速度,也是非常可观的。对象之间的关系,形成了一张巨大的网。虽然 Java 一直在营造一种无限内存的氛围,但对象不能只增不减,所以需要垃圾回收。那 JVM 是如何判断哪些对象应该被回收?哪些应该被保持呢?在古代,刑罚中有诛九族一说。指的是有些人犯大事时,皇上杀一人不足以平复内心的愤怒时,会对亲朋好友产生连带责任。诛原创 2021-04-03 21:11:46 · 123 阅读 · 0 评论 -
大厂面试题:有了G1还需要其他垃圾回收器吗?我教你怎么答
本篇文章我们主要来看下这两个高频的面试考题:G1 的回收原理是什么?为什么 G1 比传统 GC 回收性能好? 为什么 G1 如此完美仍然会有 ZGC?我们在上次,简要的介绍了 CMS 垃圾回收器,下面我们简单回忆一下它的一个极端场景(而且是经常发生的场景)。在发生 Minor GC 时,由于 Survivor 区已经放不下了,多出的对象只能提升(promotion)到老年代。但是此时老年代因为空间碎片的缘故,会发生 concurrent mode failure 的错误。这个时候,就需要降级为原创 2021-04-01 21:32:50 · 341 阅读 · 0 评论 -
JVM探究:全面解析OOM异常,都在这了,看完再也不怕遇到了
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下文称OOM)异常的可能。本节探究主要基于jdk1.8的内存结构。JVM探究:全面解析OOM异常,都在这了,看完再也不怕遇到了1. Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。import java.util.Arra原创 2021-03-31 17:57:14 · 615 阅读 · 0 评论 -
透彻!Ingress-nginx工作原理和实践,这操作可以吧
本文记录/分享 目前项目的 K8s 部署结构和请求追踪改造方案这个图算是一个通用的前后端分离的 k8s 部署结构:Nginx Ingress 负责暴露服务(nginx前端静态资源服务), 根据十二要素应用的原则,将后端 api 作为 nginx 服务的附加动态资源。Ingress vs Ingress-nginx#Ingress 是一种向 k8s 集群外部的客户端公开服务的方法,Ingress 在网络协议栈的应用层工作,根据请求的主机名 host 和路径 path 决定请求转发..原创 2021-03-24 17:00:52 · 684 阅读 · 0 评论 -
最简单的JVM内存结构图!既详细又简单明了,十分钟掌握
JVM内存结构图大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样,案例先行,方便大家理解记忆。/** * @author :jiaolian * @date :Created in 2021-03-10 21:28 * @description:helloworld测试jvm内存区域 * @modified By: * 公众号:叫练 */public class HelloWorldTest { public static.原创 2021-03-23 22:00:02 · 1358 阅读 · 0 评论 -
从不同的角度教你类加载子系统,十分钟看懂!不来看看?
类文件首先需要经过类加载子系统,进行加载,进类信息等加载到运行时数据区,生成Klass的实例。在类加载子系统中有以下3个阶段操作(广义上的加载):加载阶段 Bootstrap ClassLoader:引导类加载器,主要加载JDK里面的核心类 Extension ClassLoader:拓展类加载器 Application ClassLoader:应用加载器 链接阶段 验证 链接 解析 初始化阶段如果加载的时候失败了,则不会执行后面的链接等操作。...原创 2021-03-17 17:59:25 · 104 阅读 · 0 评论 -
超干货!一篇文章带你快速入门JVM,还看不懂吗?
简介Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台。javac编译好后的class文件,在Windows、Linux、Mac等系统上,只要该系统安装对应的Java虚拟机,class文件都可以运行。达到 ”一次编译,到处运行” 的效果。什么是JVMJVM是可以运行在Java代码的虚拟的计算机,既然是虚拟的计算机,当然也包含自己的CPU、字节码指令集、寄存器、栈、垃圾回收、堆和存储方法域,我们可以理解成JVM自己就是一套操作系统。Java从编...原创 2021-03-03 17:54:08 · 334 阅读 · 1 评论 -
JVM回收对象都还不会?已经写的很详细了,不可能看不懂吧
垃圾收集器回收的是什么?当然是"垃圾"。那什么是"垃圾"呢?在生活中当一个东西对我们来说已经没有使用价值,无法利用时,便会作为"垃圾"被我们丢弃掉。同理在JVM中当一个对象不会再被使用时,就成为垃圾回收器回收的对象---"垃圾"。为什么要回收"垃圾"呢?生活中,我们的房间空间是一定的,如果不清理"垃圾",会使得我们可利用的空间会越来越小,JVM中如果没有垃圾回收,也就是所占据的空间将不可回收,这就会造成了内存泄露。读过上文的应该知道,Java中几乎所有的对象实例都在Java堆中分配内存,方法区用于存储已原创 2021-01-29 21:09:59 · 147 阅读 · 0 评论 -
真的不可以再详细了!JVM底层细节实现
三色标记及漏标问题处理在上一篇中讲到了CMS、G1都用到了并发标记,那么并发标记的具体是如何实现的呢?主流的垃圾回收器并发标记是核心的实现,我们有必要进行深入的研究。并发标记与三色标记并发标记底层用到了三色标记的算法,为什么会用到三色标记呢?什么是三色标记呢?为什么会有三色标记?在前几篇的文章中,介绍的垃圾回收算法有个标记清除算法,通过1和0进行标记对象是不是被使用,工作原理是这样的:最开始所有的标记位都是0,如果发现对象是可达的就会置为1,然后一步一步执行下去就会呈现类似树形的结果,等到原创 2021-01-19 17:45:32 · 159 阅读 · 2 评论 -
JVM深度剖析:一文详解JVM是如何实现反射的?
反射是 Java 语言中一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。举例来说,我们可以通过 Class 对象枚举该类中的所有方法,我们还可以通过Method.setAccessible(位于 java.lang.reflect 包,该方法继承自 AccessibleObject)绕过 Java 语言的访问权限,在私有方法所在类之外的地方调用该方法。反射在 Java 中的应用十分广泛。开发人员日常接触到的 Java 集成开发环境(IDE)便运用了这一功能:每当我原创 2020-12-09 16:44:54 · 535 阅读 · 0 评论 -
搭建微服务开发虚拟机环境很难吗?一文带你快速搭建!
因为微服务项目一般涉及的工程较多,所以在开发环境会把这些工程部署到虚拟机中,方便测试。首先给出微服务开发虚拟机环境相关软件清单:Vagrant 2.2.10 VirtualBox 6.1.16 Windows PowerShell(windows 10 自带)我们的目标是在 windows 10 下,构建出 Vagrant 管控的、 底层基于 VirtualBox 虚拟机技术的 CentOS 环境。因为会用到底层虚拟化技术,所以我们需要首先在任务管理器的"性能"页签下,确认是否已启用虚拟化原创 2020-12-04 17:09:55 · 350 阅读 · 4 评论 -
爱了!腾讯前晚最新爆出的“JVM学习笔记”,GitHub已评“钻级”,熬夜啃完拿到阿里P7岗offer!
前言“JVM”,一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。有了JVM后,Java语言在不同平台上运行时不需要重新编译,为我们提供了极大的便利性,现在在面试当中“JVM”相关的知识是必问的,可见现在互联网企业对JVM的重视性。就在昨晚,腾讯爆出内部锻造已久的“JVM学习笔记”,一经流出,GitHub上受各路大神点赞好评,我也是熬夜啃完后,就立马入榜我的年度最爱笔记之一!我也是第一时间赶快分享给大家,需要完整版的朋友,点击这里跳转免费领取通道!JVM学习笔记原创 2020-12-04 17:00:06 · 2567 阅读 · 10 评论 -
我的JVM:GC的基础概念以及GC算法
一、概述垃圾收集Garbage Collection通常被称为GC,但是GC一般也指Garbage Collecting(垃圾回收这个动作)或Garbage Collector(垃圾回收器),这些都是是JVM知识体系中非常重要的知识,也是程序员必须要掌握的技能,本文将详细讲述Java垃圾回收的概念机制以及核心算法。二、分析1. 什么是垃圾我们所说的垃圾是指没有任何引用的一个对象或者多个对象(这多个对象相互引用,但是没有一个与主对象挂钩,也就是根可达算法(下文会讲)无法找到这其中任何一个对象)原创 2020-11-07 19:47:21 · 397 阅读 · 2 评论