网易严选Java开发三面面经:java技术编程培训班

前言

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤器链,不同的功能经由不同的过滤器。这篇文章就是想通过一个小案例将Spring Security整合到SpringBoot中去。要实现的功能就是在认证服务器上登录,然后获取Token,再访问资源服务器中的资源。

1 JVM的内存区域布局

  • java代码的执行步骤有三点

    • java源码文件->编译器->字节码文件
    • 字节码文件->JVM->机器码
    • 机器码->系统CPU执行
  • JVM执行的字节码需要用类加载来载入;字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行

  • 其中Java虚拟机栈、程序计数器、Heap、本地方法栈、Metaspace属于JVM运行时的内存;按是否线程共享则可以分两类

  • JAVA堆和MetasSpace元空间属于线程共享的;虚拟机栈和本地方法栈、程序计数器是线程私有的

2 JVM五大数据区域介绍

  • 2.1 程序计数器(Progarm Counter Register)

    • 一块较小的内存空间, 是当前线程所执行的字节码的行号指示器。线程有一个独属的程序计数器,字节码解析工作时需要程序计数器来选取下一指令,分支、循环、跳转等依赖它
    • 正在执行java方法线程的计数器记录的是虚拟机字节码指令的地址;如果还是Native方法,则为空
    • 程序计数器内存区域是唯一一个在虚拟机中没有规定任何OutOfMemoryError错误的区域
  • 2.2 虚拟机栈(Virtual Machine Stack)

    • Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息
    • 每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程
    • 栈帧是用来存储数据和部分过程结果的数据结构,同时也被用来处理动态链接(Dynamic Linking)、 方法返回值和异常分派(Dispatch Exception)。栈帧随着方法调用而创建,随着方法结束而销毁(无论方法是正常完成还是异常完成)
    • 如果线程请求的栈深度大于虚拟机允许深度,则抛出StackOverflowError;扩展时无法申请到足够内存,则抛出OutOfMemeryError
  • 2.3 本地方法栈(Native Method Stack)

    • 本地方法栈和虚拟机栈作用类似,区别是虚拟机栈为执行Java方法服务,而本地方法栈则为Native方法服务。(HopShot的实现 直接把本地方法栈和虚拟机栈合二为一)
  • 上述3类区域,生命周期与Thread相同,即:线程创建时,相应的内存区创建,线程销毁时,释放相应内存

  • 2.4 堆(Heap)

    • 线程共享的一块内存区域,几乎所有的对象实例在这里分配内存,也是垃圾收集器进行垃圾收集的最重要的内存区域。因此很多时候也叫GC堆
    • 线程私有的分配缓存区(Thread Local Alloaction Buffer)也是在堆划分出来的
    • JDK8的版本,因使用元空间代替永久代,字符串常量池和类的静态变量也放入java堆中
  • 2.5 元空间(MetaSpace)

    • 主要存储类的元数据,比如类的各种描述信息,类名、方法、字段、访问限制等,既编译器编译后的代码等数据
    • 运行时常量池:Class文件中除了有类的版本、字段、方法等描述等信息外;还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分将在类加载后存放到元空间的运行时常量池中
  • 使用元空间代替永久代原因

    • 永久代的大小是在启动时固定好的,很难进行调优;太大则容易导致永久代溢出;太小在运行时,容易抛出OutOfMemeryError
    • 字符串存在永久代中,使用时易出问题,由于永久代内存经常不够用,爆出异常OutOfMemoryError: PermGen
  • CodeCache

    • JVM生成的native code存放的内存空间称之为Code Cache;JIT编译、JNI等都会编译代码到native code,其中JIT生成的native code占用了Code Cache的绝大部分空间
  • 直接内存

    • 它并不是虚拟机运行时数据区的一般分,也不在规范定义。JDK1.4,引入了Channel(通道)与Buffer(缓存区)的I/O方式,它可以使用Native函数分配堆外内存,可通过DirectByteBuffer操作。

3 JVM运行时内存布局和JMM内存模型区别

  • JVM内存区域是指JVM运行时将内存数据分区域存储,强调对内存空间的划分
  • JAVA内存模型是Java语言在多线程并发情况下对于共享变量内存操作的规范:解决变量在多线程的可见性、原子性的问题

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
有需要的朋友可以点击这里免费获取

image

s://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**

[外链图片转存中…(img-H24k6Z0b-1622454248061)]

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九篇 并发(进程和线程)

Python里执行并发有进程和线程两个,分布使用 threading 和multiprocessing 两个库,一般用的是这两个库里的Thread和Process from threading import Thread # 线程 : 同时运行from multiprocessing import Process # 进程 进程和线程的使用场景&#x…

网易严选Java开发三面面经:java读文件内容

一、前言 Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于…

网易严选Java开发三面面经:mysql索引面试题

写在前面 最近,很多小伙伴出去面试都被问到了Spring问题,关于Spring,细节点很多,面试官也非常喜欢问一些很细节的技术点。所以,在 Spring 专题中,我们尽量把Spring的每个技术细节说清楚,将透彻…

网易严选Java开发三面面经:南京黑马java培训怎么样

个人背景 如标题所示,我的个人背景非常简单,Java开发经验1年半,学历普通,2本本科毕业,毕业后出来就一直在Crud,在公司每天重复的工作对我的技术提升并没有什么帮助,但小镇出来的我也深知自我努…

网易架构师深入讲解Java开发!BAT等大厂必问技术面试题

前言 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBa…

IOS 消息转发

最近在看消息转发的资料&#xff0c;发现大部分都是理论知识&#xff0c;很少有完整的代码。现在以代码的形式形象的解释一下&#xff1a; 用Xcode创建一个工程 1.正常方法调用 创建一个类Person 代码如下 Person.h代码如下&#xff1a; #import <Foundation/Foundation.h&g…

网易资深Java架构师:java数组对象转为list集合

前言 现在刷抖音经常可以看到一些老外街坊&#xff0c;问他们最想把什么带回自己的国家&#xff0c;我听过很多的回答都是&#xff1a;淘宝&#xff0c;支付宝&#xff0c;美食&#xff0c;微信&#xff0c;外卖&#xff0c;高铁等等。 确实如此&#xff0c;随着国家的快速发…

夯实基础——P2084 进制转换

题目链接&#xff1a;https://www.luogu.org/problem/P2084 P2084 进制转换 题目背景 无 题目描述 今天小明学会了进制转换&#xff0c;比如&#xff08;10101&#xff09;2 &#xff0c;那么它的十进制表示的式子就是 : 1*2^40*2^31*2^20*2^11*2^0&#xff0c; 那么请你编程实…

网易资深Java架构师:java方法的定义和使用

前言 今年因为这个疫情&#xff0c;感觉这是从工作以来过的最久的一个年了&#xff0c;在家呆的时间不是一般的久&#xff0c;算一算有好几个月呢&#xff01;我大概是3月底快4月了才出门&#xff0c;投了超多的简历&#xff0c;天天面试面试面试面试面试面试面试…庆幸的是还…

PHP----学生管理系统

闲来无事花费两天时间写了份简易版的学生管理系统 源码地址:https://www.cnblogs.com/post/ReadAuth?blogId509327&PostId11333758&url%2Fbyczyz%2Fprotected%2Fp%2F11333758.html 转载于:https://www.cnblogs.com/byczyz/p/11333760.html

网易资深Java架构师:jdkjrejvm的区别和联系

前言 作为同时具备高性能、高可靠和高可扩展性的典型键值数据库&#xff0c;Redis不仅功能强大&#xff0c;而且稳定&#xff0c;理所当然地成为了大型互联网公司的首选。 众多大厂在招聘的时候&#xff0c;不仅会要求面试者能简单地使用Redis&#xff0c;还要能深入地理解底…

深度学习之开端备注

Adagrad //适合稀疏样本 RMSprop//借鉴Adagrad的思想&#xff0c;改进使得不会出现学习率越来越低的问题 由此可见Adadelta既不需要输入学习率等参数&#xff0c;而且表现得非常好&#xff01;&#xff01;但是我试了几次&#xff0c;这个优化器效果极差&#xff01;&#xff0…

网易资深Java架构师:疫情对java行业的影响分析

前言 在实际开发&#xff0c;Redis使用会频繁&#xff0c;那么在使用过程中我们该如何正确抉择数据类型呢&#xff1f;哪些场景下适用哪些数据类型。而且在面试中也很常会被面试官问到Redis数据结构方面的问题&#xff1a; Redis为什么快呢&#xff1f;为什么查询操作会变慢了…

ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_20130624.aspx ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值 本文跟上一篇文章有关连&#xff0c;请依照顺序来练习&#xff1…

美团java研发岗二面:java静态方法存储在哪个区

思维导图 前言 在很多时候&#xff0c;我们都可以在各种框架应用中看到ZooKeeper的身影&#xff0c;比如Kafka中间件&#xff0c;Dubbo框架&#xff0c;Hadoop等等。为什么到处都看到ZooKeeper&#xff1f; 一、 前些年&#xff0c;互联网行业里对架构师这个岗位的标准还不是…

[学习之道] 修福不修慧,大象披璎珞; 修慧不修福,罗汉托空钵 (学习写程序,只靠补习上课吗?)...

这是我的备份&#xff0c;原文请看 http://www.dotblogs.com.tw/mis2000lab/archive/2014/09/17/learning-and_do-it_20140917.aspx [学习之道] 修福不修慧&#xff0c;大象披璎珞&#xff1b; 修慧不修福&#xff0c;罗汉托空钵 (学习写程序&#xff0c;只靠补习上课吗&#…

阿里P8亲自教你!mysql列转行

前言 今日博主听闻&#xff0c;现在很多培训出来的应届生薪资都赶上了摸爬滚打两三年的朋友&#xff0c;讲道理&#xff0c;这说不过去啊 作为同行来说&#xff0c;这个行业发展很快&#xff0c;技术更新很快&#xff0c;淘汰也很快&#xff0c;千万不要再找借口了&#xff0…

同步、异步、多线程

1、首先明确一点&#xff0c;对于单核CPU&#xff0c;任意一个时刻只有一个线程在运行。那么既然这样&#xff0c;多线程还有什么意义呢&#xff1f; 举例来说&#xff0c;现在只有一个人&#xff0c;要做好几个任务。单线程就是&#xff0c;任务一个一个地做&#xff0c;必须做…

阿里P8亲自教你!熬夜整理华为最新Java笔试题

前言 Mysql的锁机制确实非常重要&#xff0c;所以在这里做一个全面的总结整理&#xff0c;便于以后的查阅&#xff0c;也分享给大家。 Mysql的锁机制还是有点难理解的&#xff0c;所以这篇文章采用图文结合的方式讲解难点&#xff0c;帮助大家理解&#xff0c;讲解的主要内容…

JSP基础笔记

/** #####这部分也是笔记,用于记录JSP的相关内容* ###怎么用JSP###指令的写法* <% 指令名字%>* *### page指令 * language > 表明jsp页面中可以写java代码 * contentType > 其实即使说这个文件是什么类型&#xff0c;告诉浏览器我是什么内容类型&#xff0c;以及使…