原创Kafka学习笔记,JVM基础


在这里插入图片描述

jvm所处位置


在这里插入图片描述

在这里插入图片描述

jvm体系结构


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

类加载器及双亲委派机制


在这里插入图片描述

虚拟机


在这里插入图片描述

在这里插入图片描述

JVM的位置


在这里插入图片描述

JVM整体结构


在这里插入图片描述

在这里插入图片描述

JVM的生命周期


在这里插入图片描述

在这里插入图片描述

SUN Classic VM


在这里插入图片描述

Exact VM


在这里插入图片描述

HotSpot VM


在这里插入图片描述

内存结构概述


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

类加载器和类的加载过程


在这里插入图片描述

类的加载过程


在这里插入图片描述

在这里插入图片描述

链接

在这里插入图片描述

注意:静态变量术语类的变量

在这里插入图片描述

初始化


在这里插入图片描述

类加载器的分类


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:java的核心类库都是由引导类加载器来完成的

public class Test1 {

private int a=3;

public static void main(String[] args) {

//获取系统类加载器

ClassLoader systemCloader=ClassLoader.getSystemClassLoader();

System.out.println(“系统类加载器:”+systemCloader); // sun.misc.Launcher$AppClassLoader@b4aac2

//获取扩展类加载器

ClassLoader extClassLoader=systemCloader.getParent();

System.out.println(“扩展类加载器:”+extClassLoader); // sun.misc.Launcher$ExtClassLoader@140e19d

//尝试获取引导类加载器

System.out.println(“启动类加载器:”+extClassLoader.getParent()); //null

//获取当前自定义类加载器

System.out.println(“自定义类加载器”+Test1.class.getClassLoader()); // sun.misc.Launcher$AppClassLoader@b4aac2

//获取String类加载器 获取为null 说明String类由 引导类加载器 加载

System.out.println(“String类加载器:”+String.class.getClassLoader()); // null

}

}

类加载器的使用


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

// 获取引导类加载器可以加载 哪些路径下的文件

URL[] urls= Launcher.getBootstrapClassPath().getURLs();

System.out.println(“*****************************************”);

System.out.println(“获取引导类加载器可以加载 哪些路径下的文件”);

for (URL url:urls){

System.out.println(url);

}

引导类加载器可以加载的文件路径:

在这里插入图片描述

扩展类加载器可以加载的文件路径

System.out.println(“*****************************************”);

System.out.println(“获取扩展类加载器可以加载 哪些路径下的文件”);

String extString=System.getProperty(“java.ext.dirs”);

for(String str:extString.split(“,”)){

System.out.println(str);

}

在这里插入图片描述

在这里插入图片描述

注意:引导类加载器无法直接获取,因为它是由C和C++ 编写的。

使用自定义类加载器的原因


在这里插入图片描述

在这里插入图片描述

ClassLoader的常用方法


在这里插入图片描述

在这里插入图片描述

双亲委派机制原理


在这里插入图片描述

在这里插入图片描述

双亲委派机制的优势

在这里插入图片描述

沙箱安全机制


在这里插入图片描述

类的主动使用和被动使用


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

运行时数据区概述及线程


在这里插入图片描述

在这里插入图片描述

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

[外链图片转存中…(img-t0A9aWsN-1713571802773)]

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

[外链图片转存中…(img-RN8EjWNe-1713571802774)]

搜集费时费力,能看到此处的都是真爱!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值