主頁 >  其他 > Java GC(垃圾回識訓制)面試講解

Java GC(垃圾回識訓制)面試講解

2020-09-13 06:25:30 其他

1.什么是GC?

大白話說就是垃圾回識訓制,記憶體空間是有限的,你創建的每個物件和變數都會占據記憶體,gc做的就是物件清除將記憶體釋放出來,這就是GC要做的事,

2.需要GC的區域

說起垃圾回收的場所,了解過JVM(Java Virtual Machine Model)記憶體模型的朋友應該會很清楚,堆是Java虛擬機進行垃圾回收的主要場所,其次要場所是方法區,

3.堆記憶體的結構(1.7)

在JDK1.8之后,堆的永久區取消了
由元空間取代

Java將堆記憶體分為3大部分:新生代、老年代和永久代,其中新生代又進一步劃分為Eden、S0、S1(Survivor)三個區

4.堆記憶體上物件的分配與回收:

我們創建的物件會優先在Eden分配,如果是大物件(很長的字串陣列)則可以直接進入老年代,虛擬機提供一個
-XX:PretenureSizeThreadhold引數,令大于這個引數值的物件直接在老年代中分配,避免在Eden區和兩個Survivor區發生大量的記憶體拷貝,

另外,長期存活的物件將進入老年代,每一次MinorGC(年輕代GC),物件年齡就大一歲,默認15歲晉升到老年代,通過
-XX:MaxTenuringThreshold設定晉升年齡,

堆記憶體上的物件回收也叫做垃圾回收,那么垃圾回收什么時候開始呢?

垃圾回收主要是完成清理物件,整理記憶體的作業,上面說到GC經常發生的區域是堆區,堆區還可以細分為新生代、老年代,新生代還分為一個Eden區和兩個Survivor區,垃圾回收分為年輕代區域發生的Minor GC和老年代區域發生的Full GC,分別介紹如下,

Minor GC(年輕代GC):
物件優先在Eden中分配,當Eden中沒有足夠空間時,虛擬機將發生一次Minor GC,因為Java大多數物件都是朝生夕滅,所以Minor GC非常頻繁,而且速度也很快,

Full GC(老年代GC):
Full GC是指發生在老年代的GC,當老年代沒有足夠的空間時即發生Full GC,發生Full GC一般都會有一次Minor GC,

MinorGC和FullGC的觸發條件

動態物件年齡判定:

如果Survivor空間中相同年齡所有物件的大小總和大于Survivor空間的一半,那么年齡大于等于該物件年齡的物件即可晉升到老年代,不必要等到-XX:MaxTenuringThreshold,

空間分配擔保:

發生Minor GC時,虛擬機會檢測之前每次晉升到老年代的平均大小是否大于老年代的剩余空間大小,如果大于,則進行一次Full GC(老年代GC),如果小于,則查看HandlePromotionFailure設定是否允許擔保失敗,如果允許,那只會進行一次Minor GC,如果不允許,則改為進行一次Full GC

5.目前會問到的問題

1.年輕代三個區比例

Eden,S0,S1比例8:1:1

2.為什么要有Survivor區

鏈接:https://www.jianshu.com/p/2caad185ee1f

為什么需要Survivor空間,我們看看如果沒有 Survivor 空間的話,垃圾收集將會怎樣進行:一遍新生代 gc 過后,不管三七二十一,活著的物件全部進入老年代,即便它在接下來的幾次 gc 程序中極有可能被回收掉,這樣的話老年代很快被填滿, Full GC 的頻率大大增加,我們知道,老年代一般都會被規劃成比新生代大很多,對它進行垃圾收集會消耗比較長的時間;如果收集的頻率又很快的話,那就更糟糕了,基于這種考慮,虛擬機引進了“幸存區”的概念:如果物件在某次新生代 gc 之后任然存活,讓它暫時進入幸存區;以后每熬過一次 gc ,讓物件的年齡+1,直到其年齡達到某個設定的值(比如15歲), JVM 認為它很有可能是個“老不死的”物件,再呆在幸存區沒有必要(而且老是在兩個幸存區之間反復地復制也需要消耗資源),才會把它轉移到老年代,

Survivor的存在意義,就是減少被送到老年代的物件,進而減少Full GC的發生,Survivor的預篩選保證,只有經歷16次Minor GC還能在新生代中存活的物件,才會被送到老年代,

3.為什么有兩個Survivor區

為什么 Survivor 磁區不能是 1 個?

如果 Survivor 磁區是 1 個的話,假設我們把兩個區域分為 1:1,那么任何時候都有一半的記憶體空間是閑置的,顯然空間利用率太低不是最佳的方案,

但如果設定記憶體空間的比例是 8:2 ,只是看起來似乎“很好”,假設新生代的記憶體為 100 MB( Survivor 大小為 20 MB ),現在有 70 MB 物件進行垃圾回收之后,剩余活躍的物件為 15 MB 進入 Survivor 區,這個時候新生代可用的記憶體空間只剩了 5 MB,這樣很快又要進行垃圾回收操作,顯然這種垃圾回收器最大的問題就在于,需要頻繁進行垃圾回收,

為什么 Survivor 磁區是 2 個?

剛剛新建的物件在Eden中,經歷一次Minor GC,Eden中的存活物件就會被移動到第一塊survivor space S0,Eden被清空;等Eden區再滿了,就再觸發一次Minor GC,Eden和S0中的存活物件又會被復制送入第二塊survivor space S1(這個程序非常重要,因為這種復制演算法保證了S1中來自S0和Eden兩部分的存活物件占用連續的記憶體空間,避免了碎片化的發生),S0和Eden被清空,然后下一輪S0與S1交換角色,如此回圈往復,如果物件的復制次數達到16次,該物件就會被送到老年代中,下圖中每部分的意義和上一張圖一樣,就不加注釋了,
兩塊Survivor避免碎片化
上述機制最大的好處就是,整個程序中,永遠有一個survivor space是空的,另一個非空的survivor space無碎片

那么,Survivor為什么不分更多塊呢?比方說分成三個、四個、五個?顯然,如果Survivor區再細分下去,每一塊的空間就會比較小,很容易導致Survivor區滿

總結

根據上面的分析可以得知,當新生代的 Survivor 磁區為 2 個的時候,不論是空間利用率還是程式運行的效率都是最優的,所以這也是為什么 Survivor 磁區是 2 個的原因了,

6. JVM如何判定一個物件是否應該被回收?(重點掌握)

 判斷一個物件是否應該被回收,主要是看其是否還有參考,判斷物件是否存在參考關系的方法包括參考計數法以及可達性分析

參考計數法:

是一種比較古老的回收演算法,原理是此物件有一個參考,即增加一個計數,洗掉一個參考則減少一個計數,垃圾回收時,只需要收集計數為0的物件,此演算法最致命的是無法處理回圈參考的問題,

可達性分析

可達性分析的基本思路就是通過一系列可以做為root的物件作為起始點,從這些節點開始向下搜索,當一個物件到root節點沒有任何參考鏈接時,則證明此物件是可以被回收的,以下物件會被認為是root物件:

  • 堆疊記憶體中參考的物件 
  • 方法區中靜態參考和常量參考指向的物件 
  • 被啟動類(bootstrap加載器)加載的類和創建的物件
  • Native方法中JNI參考的物件, 

7. JVM垃圾回收演算法有哪些?

HotSpot 虛擬機采用了可達性分析來進行記憶體回收,常見的回收演算法有標記-清除演算法,復制演算法和標記整理演算法,

標記-清除演算法(Mark-Sweep):

標記-清除演算法執行分兩階段,

第一階段:從參考根節點開始標記所有被參考的物件,

第二階段:遍歷整個堆,把未標記的物件清除,此演算法需要暫停整個應用,并且會產生記憶體碎片,

 

 

 缺點:

  • 執行效率不穩定,會因為物件數量增長,效率變低
  • 標記清除后會有大量的不連續的記憶體碎片,空間碎片太多就會導致無法分配較大物件,無法找到足夠大的連續記憶體,而發生gc

復制演算法:

復制演算法把記憶體空間劃為兩個相等的區域,每次只使用其中一個區域,垃圾回收時,遍歷當前使用區域,把正在使用中的物件復制到另外一個區域中,復制演算法每次只處理正在使用中的物件,因此復制成本比較小,同時復制過去以后還能進行相應的記憶體整理,不會出現“碎片”問題,當然,此演算法的缺點也是很明顯的,就是需要兩倍記憶體空間,

 

 

 缺點:

  • 可用記憶體縮成了一半,浪費空間

標記-整理演算法:

標記-整理演算法結合了“標記-清除”和“復制”兩個演算法的優點,也是分兩階段,

第一階段從根節點開始標記所有被參考物件,

第二階段遍歷整個堆,清除未標記物件并且把存活物件“壓縮”到堆的其中一塊,按順序排放,此演算法避免了“標記-清除”的碎片問題,同時也避免了“復制”演算法的空間問題,

 

 

 

8.垃圾收集器(掌握CMS和G1)

JVM中的垃圾收集器主要包括7種,即Serial,Serial Old,ParNew,Parallel Scavenge,Parallel Old以及CMS,G1收集器,如下圖所示:

 

 

1、Serial收集器:

Serial收集器是一個單執行緒的垃圾收集器,并且在執行垃圾回收的時候需要 Stop The World,虛擬機運行在Client模式下的默認新生代收集器,Serial收集器的優點是簡單高效,對于限定在單個CPU環境來說,Serial收集器沒有多執行緒互動的開銷,

2、Serial Old收集器:

Serial Old是Serial收集器的老年代版本,也是一個單執行緒收集器,主要也是給在Client模式下的虛擬機使用,在Server模式下存在主要是做為CMS垃圾收集器的后備預案,當CMS并發收集發生Concurrent Mode Failure時使用,

3、ParNew收集器:

ParNew是Serial收集器的多執行緒版本,新生代是并行的(多執行緒的),老年代是串行的(單執行緒的),新生代采用復制演算法,老年代采用標記整理演算法,可以使用引數:-XX:UseParNewGC使用該收集器,使用 -XX:ParallelGCThreads可以限制執行緒數量,

4、Parallel Scavenge垃圾收集器:

Parallel Scavenge是一種新生代收集器,使用復制演算法的收集器,而且是并行的多執行緒收集器,Paralle收集器特點是更加關注吞吐量(吞吐量就是cpu用于運行用戶代碼的時間與cpu總消耗時間的比值),可以通過-XX:MaxGCPauseMillis引數控制最大垃圾收集停頓時間;通過-XX:GCTimeRatio引數直接設定吞吐量大小;通過-XX:+UseAdaptiveSizePolicy引數可以打開GC自適應調節策略,該引數打開之后虛擬機會根據系統的運行情況收集性能監控資訊,動態調整虛擬機引數以提供最合適的停頓時間或者最大的吞吐量,自適應調節策略是Parallel Scavenge收集器和ParNew的主要區別之一,

5、Parallel Old收集器:

Parallel Old是Parallel Scavenge收集器的老年代版本,使用多執行緒和標記-整理演算法,

6、CMS(Concurrent Mark Sweep)收集器(并發標記清除)

CMS收集器是一種以獲取最短回收停頓時間為目標的收集器,CMS收集器是基于標記-清除演算法實作的,是一種老年代收集器,通常與ParNew一起使用,

CMS的垃圾收集程序分為4步:

  • 初始標記:需要“Stop the World”,初始標記僅僅只是標記一下GC Root能直接關聯到的物件,速度很快,
  • 并發標記:是主要標記程序,這個標記程序是和用戶執行緒并發執行的,
  • 重新標記:需要“Stop the World”,為了修正并發標記期間因用戶程式繼續運作而導致標記產生變動的那一部分物件的標記記錄(停頓時間比初始標記長,但比并發標記短得多),
  • 并發清除:和用戶執行緒并發執行的,基于標記結果來清理物件,

 

 

 

那么問題來了,如果在重新標記之前剛好發生了一次MinorGC,會不會導致重新標記階段Stop the World時間太長?

答:不會的,在并發標記階段其實還包括了一次并發的預清理階段,虛擬機會主動等待年輕代發生垃圾回收,這樣可以將重新標記物件參考關系的步驟放在并發標記階段,有效降低重新標記階段Stop The World的時間,

CMS垃圾回收器的優缺點分析:

CMS以降低垃圾回收的停頓時間為目的,很顯然其具有并發收集,停頓時間低的優點,

缺點主要包括如下:

  • 對CPU資源非常敏感,因為并發標記和并發清理階段和用戶執行緒一起運行,當CPU數變小時,性能容易出現問題,
  • 收集程序中會產生浮動垃圾,所以不可以在老年代記憶體不夠用了才進行垃圾回收,必須提前進行垃圾收集,通過引數-XX:CMSInitiatingOccupancyFraction的值來控制記憶體使用百分比,如果該值設定的太高,那么在CMS運行期間預留的記憶體可能無法滿足程式所需,會出現Concurrent Mode Failure失敗,之后會臨時使用Serial Old收集器做為老年代收集器,會產生更長時間的停頓,
  • 標記-清除方式會產生記憶體碎片,可以使用引數-XX:UseCMSCompactAtFullCollection來控制是否開啟記憶體整理(無法并發,默認是開啟的),引數-XX:CMSFullGCsBeforeCompaction用于設定執行多少次不壓縮的Full GC后進行一次帶壓縮的記憶體碎片整理(默認值是0),

接下來,我們先看下上邊介紹的浮動垃圾是怎么產生的吧,

浮動垃圾:

由于在應用運行的同時進行垃圾回收,所以有些垃圾可能在垃圾回收進行完成時產生,這樣就造成了“Floating Garbage”,這些垃圾需要在下次垃圾回收周期時才能回收掉,所以,并發收集器一般需要20%的預留空間用于這些浮動垃圾,

7、G1(Garbage-First)收集器:

G1收集器將新生代和老年代取消了,取而代之的是將堆劃分為若干的區域,每個區域都可以根據需要扮演新生代的Eden和Survivor區或者老年代空間,仍然屬于分代收集器,區域的一部分包含新生代,新生代采用復制演算法,老年代采用標記-整理演算法,

通過將JVM堆分為一個個的區域(region),G1收集器可以避免在Java堆中進行全區域的垃圾收集,G1跟蹤各個region里面的垃圾堆積的價值大小(回收所獲得的空間大小以及回收所需時間的經驗值),在后臺維護一個優先串列,每次根據回收時間來優先回收價值最大的region,

G1收集器的特點:

  • 并行與并發:G1能充分利用多CPU,多核環境下的硬體優勢,來縮短Stop the World,是并發的收集器,
  • 分代收集:G1不需要其他收集器就能獨立管理整個GC堆,能夠采用不同的方式去處理新建物件、存活一段時間的物件和熬過多次GC的物件,
  • 空間整合:G1從整體來看是基于標記-整理演算法,從區域(兩個Region)上看基于復制演算法實作,G1運作期間不會產生記憶體空間碎片,
  • 可預測的停頓:能夠建立可以預測的停頓時間模型,預測停頓時間,

和CMS收集器類似,G1收集器的垃圾回收作業也分為了四個階段:

  • 初始標記
  • 并發標記
  • 最終標記
  • 篩選回收

其中,篩選回收階段首先對各個Region的回收價值和成本進行計算,根據用戶期望的GC停頓時間來制定回收計劃,

9.Java常用版本垃圾收集器

1.首先說如果看怎么看

我的版本是jdk1.8

java -XX:+PrintCommandLineFlags -version

2.jdk1.8和1.9用的版本

jdk1.8默認的新生代垃圾收集器:Parallel Scavenge,老年代:Parallel Old

jdk1.9 默認垃圾收集器G1

 

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21248.html

標籤:其他

上一篇:html+css面試合集

下一篇:Java類加載機制

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more