網易嚴選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.pswp.cn/news/386235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386235.shtml
英文地址,請注明出處:http://en.pswp.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;以及使…