計算機基礎知識復習1.5

標記-清除算法:標記-清除分為標記 和清除 兩個階段,首先通過可達性分析,標記出所有需要回收的對象,然后統一回收所有被標記的對象。

復制算法:為了解決碎片空間的問題,出現了復制算法? 將內存分成兩塊,每次申請內存時都使用其中的一塊,當內存不夠時,將這一塊內存中所有存活的復制到另一塊上。然后把已使用的內存清理掉

標記-整理算法:標記之后不直接清理,而是將所有存活對象都移動到內存的一端,移動結束后直接清理掉剩余部分

分代回收:內存劃分成新生代和老生代,分配的依據是對象的生存周期,經過的GC次數。對象創建時,一般在新生代申請內存,當經歷一次GC之后如果還存活,那么對象年齡+1 當年齡超過一定值后,如果對象還存活,那么該對象進入老年代

checked exception和unchecked exception

受檢查異常,Java代碼在編譯過程中,如果受檢查異常沒有catch或者throws關鍵字處理的話,就沒辦法通過編譯

不受檢查異常:runTimeException 不處理不受檢查異常也可通過編譯

多線程安全

synchronized 關鍵字? volatile關鍵字? 用于變量 確保所有線程看到的是該變量的最新值,而不是存儲在本地寄存器中的副本。reentrantLock類 鎖管理? 原子類 如AtomicInteger,AtomicLong? 線程局部變量:threadLocal可以為每個線程提供獨立的變量副本,并發集合

新生代:新生代分為Eden Space和Survivor Space。Eden Space中,大多數新創建的對象首先存放在這里。Eden區較小,當Eden區滿時,會觸發一次Minor GC (新生代垃圾回收)。

老年代:經歷過多次Minor GC仍存活的對象會被移動到老年代。老年代中的對象生命周期較長,因此稱為Full GC

G1垃圾回收

初始時,所有區域都處于空閑狀態

創建一些對象,挑出一些空閑區域作為伊甸園區存儲這些對象

當伊甸園區需要垃圾回收時,挑出一個空閑區域作為幸存者區,用復制算法復制存活對象,需要暫停用戶線程

隨著時間流逝,伊甸園區的內存又不足了

將伊甸園以及幸存者區中的存活對象,采用復制算法,復制到新的幸存區,其中較老對象晉升至老年代

當老年代占用內存超過閾值后,觸發并發標記,這時無需暫停用戶線程

并發標記之后,會有重新標記階段解決漏標問題,此時需要暫停用戶線程

這些都完成后就知道了老年代有哪些存活對象,隨后進入混合收集階段,此時不會對所有老年代區域進行回收,而是根據暫停時間目標優先回收價值高的區域

基于Redis的延遲隊列實現

開始->發送延遲消息->消息存入Zset->輪詢Redis(Zset)->到達執行時間->執行任務

next-key lock:臨建鎖 是Record Lock+Gap Lock的組合? 鎖定一個范圍,并且鎖定記錄本身

內存淘汰策略

隨機淘汰

淘汰整個鍵值中最久未使用的鍵值

淘汰整個鍵值中最少使用的鍵值

鍵入URL

瀏覽器會判斷所請求的資源是否在緩存里

DNS解析

建立TCP連接

泛型:編譯器可以對泛型參數進行檢測,并且通過泛型參數可以指定傳入的對象類型

泛型類

泛型接口

泛型方法

binlog 和 redo log 有什么區別

binlog是MySQL的Server層實現的日志,所有存儲引擎都可以使用

redo log是InnoDB存儲引擎實現的日志

binlog是追加寫,寫滿了一個文件,就創建一個新的文件繼續寫,保存的是全量的日志

redolog是循環寫,日志空間大小是固定的,全部寫滿就從頭開始,保存未被刷入磁盤的臟頁日志

@Autowired:是Spring定義的注解

@Resource:是Java定義的注解

@Autowired:是先根據類型byType查找,如果存在多個Bean再根據名稱byName進行查找

@Resource:是Java定義的注解 先根據名稱查找 如果名稱查找不到,再根據類型進行查找

@Autowired:支持屬性注入,構造方法注入和Setter注入

@Resource:支持屬性注入和Setter注入?

Spring MVC 執行流程

前端控制器DispatcherServlet? 查詢HandlerMapping 處理器映射器{key:url,value:"類名#方法名”}

返回處理器執行鏈 HandlerExecutionChain

請求執行Handler 處理器適配器(處理參數,處理返回值)

請求處理 處理器Handler? 返回json

什么情況下使用CMS,什么情況使用G1

cms

低延遲需求:適用于對停頓時間要求敏感的應用程序

老年代收集:主要針對老年代的垃圾回收

碎片化管理:容易出現內存碎片,可能需要定期進行full gc來壓縮內存空間

g1

大堆內存:適用于需要管理大內存堆的場景,能夠有效處理數GB以上的堆內存

對內存碎片敏感:G1通過緊湊整理來減少內存碎片,降低了碎片化對性能的影響

比較平衡的性能:G1在提供較低停頓時間的同時,也保持了相對較高的吞吐量

ReentrantLock

實現Lock接口,是一個可重入且獨占式的鎖,和synchronized關鍵字。默認使用非公平鎖,可以通過構造器來顯示的指定使用公平鎖

start方法和run方法

用start方法來啟動線程,真正實現了多線程運行,這時無需等待run方法執行完畢而直接繼續執行下面的代碼,通過調用Thread類的start()方法來啟動一個線程

用run方法只是類的一個普通方法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65362.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65362.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL Server 中的覆蓋索引

1. 覆蓋索引的工作原理 當查詢只涉及索引中已經包含的列時,SQL Server 可以直接使用索引來返回查詢結果,而不需要回表到數據頁去檢索實際的數據行。覆蓋索引因此能夠顯著減少 I/O 操作,提高查詢效率。 例如,假設有一個表 Employ…

Golang開發-案例整理匯總

前言 CSDN的文章缺少一個索引所有文章分類的地方,所以手動創建這么一個文章匯總的地方,方便查找。Golang開發經典案例匯總 GoangWeb開發 GolangWeb開發- net/http模塊 GolangWeb開發-好用的HTTP客戶端httplib(beego) GolangWeb開發- Gin不使用Nginx部署Vue項目 Golang并發開…

交叉編譯的核心原理與核心概念

什么是交叉編譯? 交叉編譯(Cross Compilation)是一種在一種計算機體系結構或操作系統(主機,Host)上生成另一種計算機體系結構或操作系統(目標,Target)上的可執行文件的過…

vue-codemirror定位光標位置并在光標處插入信息

業務場景:在代碼編輯器外點擊按鈕,向代碼編輯器內的光標處新增一條拼接好的信息。 getCursor方法: 官方文檔: doc.getCursor(?start: string) → {line, ch} Retrieve one end of the primary selection. start is an optional string indicating which end of the select…

【GOOD】A Survey of Deep Graph Learning under Distribution Shifts

深度圖學習在分布偏移下的綜述:從圖的分布外泛化到自適應 Northwestern University, USA Repository Abstract 圖上的分布變化——訓練和使用圖機器學習模型之間的數據分布差異——在現實世界中普遍存在,并且通常不可避免。這些變化可能會嚴重惡化模…

『SQLite』解釋執行(Explain)

摘要:本節主要講解SQL的解釋執行:Explain。 在 sqlite 語句之前,可以使用 “EXPLAIN” 關鍵字或 “EXPLAIN QUERY PLAN” 短語,用于描述表查詢的細節。 基本語法 EXPLAIN 語法: EXPLAIN [SQLite Query]EXPLAIN QUER…

(一)使用 WebGL 繪制一個簡單的點和原理解析

使用 WebGL 繪制一個簡單的點,我們需要通過 WebGL 的管線來進行一系列的步驟。以下是實現的詳細步驟和原理解析: WebGL 繪制點的基本步驟 初始化 WebGL 上下文 首先,我們需要獲取 WebGL 上下文,這樣才能進行所有的繪圖操作。通常…

Vue路由跳轉報錯

說明:使用 Vue 的router.replace/push,若跳轉到當前路由,控制臺會報錯如下:NavigationDuplicated: Avoided redundant navigation to current location 原因:Vue-router在3.1之后把$router.push()方法改為了Promise。所…

【Axure高保真原型】環形進度條(開始暫停效果)

今天和大家分享環形進度條(開始暫停效果)的原型模版,效果包括: 點擊開始按鈕,可以環形進度條開始讀取,中部百分比顯示環形的讀取進度; 在讀取過程中,點擊暫停按鈕,可以隨…

Euler 21.10(華為歐拉)安裝oracle19c-RAC

1. Euler 21.10安裝oracle19c-RAC 1.1. 環境規劃 1.1.1. 主機規劃 hostname IP 實例名 hfdb90 192.168.40.90 hfdb1 hfdb91 192.168.40.90 hfdb2 系統版本 BigCloud Enterprise Linux For Euler 21.10 (GNU/Linux 4.19.90-2107.6.0.0100.oe1.bclinux.x86_64 x86_6…

【python】matplotlib(radar chart)

文章目錄 1、功能描述和原理介紹2、代碼實現3、效果展示4、完整代碼5、多個雷達圖繪制在一張圖上6、參考 1、功能描述和原理介紹 基于 matplotlib 實現雷達圖的繪制 一、雷達圖的基本概念 雷達圖(Radar Chart),也被稱為蛛網圖或星型圖&…

(三)通過WebGL繪制一個簡單的三角形來理解渲染管線

理解 WebGL 繪圖原理的關鍵是了解它的渲染管線。WebGL 渲染管線實際上是由多個階段組成的,每個階段都有特定的任務,最終輸出的是屏幕上的圖像。為了讓你能輕松理解這些原理,我將通過一個簡單的例子來詳細解釋。 繪制一個簡單的三角形 我們將…

【shell編程】報錯信息:bash: bad file descriptor(包含6種解決方法)

大家好,我是搖光~ 在運行 Shell 腳本時,遇到 bash: bad file descriptor 錯誤通常意味著腳本嘗試對一個無效或不可用的文件描述符(file descriptor)執行了讀寫操作。 以下是一些可能導致這個問題的原因、詳細案例以及相應的解決…

Kafka3.x KRaft 模式 (沒有zookeeper) 常用命令

版本號:kafka_2.12-3.7.0 說明:如有多個地址,用逗號分隔 創建主題 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic demo --partitions 1 --replication-factor 1刪除主題 bin/kafka-topics.sh --delete --boots…

Business Cooperation Process

Business Cooperation Process 商務合作基本流程 并不是每個人都能做到言而有信的,因此還是需要流程來約束的。

模式識別-Ch2-分類錯誤率

分類錯誤率 最小錯誤率貝葉斯決策 樣本 x x x的錯誤率: 任一決策都可能會有錯誤。 P ( error ∣ x ) { P ( w 2 ∣ x ) , if we decide x as w 1 P ( w 1 ∣ x ) , if we decide x as w 2 P(\text{error}|\mathbf{x})\begin{cases} P(w_2|\mathbf{x}), &…

Milvus×全診通:從導診到智能超聲,如何將人效比翻倍

AI與智慧醫療的結合已是未來發展的必然趨勢。近年來,國家衛健委推崇智慧醫療和AI技術,如智能導診、預問診、輔助診斷等,以提高醫療服務效率和診斷準確性,改善患者就醫體驗。 全診通是一家專注于醫療SaaS和人工智能的公司&#xff…

自動駕駛相關知識學習筆記

一、概要 因為想知道SIL、HIL是什么仿真工具,故而瀏覽了自動駕駛相關的知識。 資料來源《自動駕駛——人工智能理論與實踐》胡波 林青 陳強 著;出版時間:2023年3月 二、圖像的分類、分割與檢測任務區別 如圖所示,這些更高階的…

springcloud 介紹

Spring Cloud是一個基于Spring Boot的微服務架構解決方案集合,它提供了一套完整的工具集,用于快速構建分布式系統。在Spring Cloud的架構中,服務被拆分為一系列小型、自治的微服務,每個服務運行在其獨立的進程中,并通過…

Blazor用戶身份驗證狀態詳解

在 Blazor 應用程序中,AuthenticationState 是一個核心概念,用于表示用戶的身份驗證狀態。它提供有關當前用戶的信息,例如是否已登錄、用戶的身份信息(如用戶名、角色等)。 AuthenticationState 通常由 Authenticatio…