java技術整理1

来源:https://www.cnblogs.com/folyh/archive/2022/08/13/16513466.html
-Advertisement-
Play Games

一、基本 1.hashmap: 1.1 轉紅黑樹條件: a.數組長度大於等於64(預設16,要經過2次擴容--當達到16*預設擴容因數0.75=12就擴容) b.鏈表長度大於8 1.2 hashmap先計算hash值,再用hash值計算下標。 2.sleep與await: 1.1 sleep是線程方 ...


一、基本

1.hashmap:

1.1 轉紅黑樹條件:
a.數組長度大於等於64(預設16,要經過2次擴容--當達到16*預設擴容因數0.75=12就擴容)
b.鏈表長度大於8
1.2 hashmap先計算hash值,再用hash值計算下標。

2.sleep與await:

1.1 sleep是線程方法,await是object方法
1.2 sleep不會釋放鎖,而await會
1.3 sleep不依賴於同步器synchronize,而await要
1.4 sleep不需要被喚醒,而await要

3.hashtable與hashmap:

1.1 前者線程安全,而後者不是
1.2 前者不可以把null作為key,而後者可以,並放在第一個節點上
1.3 兩者擴容因數預設都是0.75;前者初始容量為11,擴容是當前容量2+1;後者初始容量是16,擴容是當前容量2

4.cookie與session的區別:

前者cookie:
存放在客戶端瀏覽器中;
大小受限制,單個不超過4K,一般1個站點最多保存20個;
String類型;
不太安全(可以加密)
後者sessiono:
存放在伺服器中;
大小一般不受限制;
Key-Value(Object類型);
安全性更高;

二、JVM

4.用戶線程與記憶體線程:

1.1 多對一:不需要切換,線程創建、調度、同步非常快;但是如果其中一個用戶線程阻塞會造成其他線程無法執行,且無法像內核線程一樣實現較完整的調度、優先順序;
1.2 一對一:java的jvm幾乎把所有對線程的操作都交給了系統內核操作,線程真正啟動順序不一定是按我們啟動的順序,會引起用戶態和內核態的頻繁切換;如果系統出現大量線程,回家降低系統性能。

5.運行時數據區:

在這裡插入圖片描述

6.記憶體回收:

在這裡插入圖片描述

7.記憶體溢出:

1.1 棧溢出


1.2 堆溢出
在這裡插入圖片描述
》第8行設置會在堆溢出會導出Damping日誌

1.3 方法區溢出
1.4 本機直接記憶體溢出

8.記憶體泄漏:

1.1 不使用的記憶體,卻沒有被釋放;
1.2 每一次請求進來或者每一次操作處理都分配了記憶體,卻有部分不能回收(或未釋放),隨著請求越來越多,記憶體泄漏就會越來越嚴重,必然造成記憶體溢出。
1.3 記憶體泄漏一般是資源管理問題或者程式bug,記憶體溢出則是記憶體空間不足和記憶體泄漏的最終結果。

9.hotspot對象頭包含哪些部分:

在這裡插入圖片描述

10.根據類分析對象的記憶體占用:

在這裡插入圖片描述

11.jvm啟動參數:在哪裡配?

在這裡插入圖片描述

12.堆空間最大值設置:

13.G1垃圾收集器特點:

1.空間整合:哪塊垃圾最多優先清理
在這裡插入圖片描述
2.多線程+併發+可預測停頓
在這裡插入圖片描述

14.排查OOM的方法:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

14.jvm的相關命令工具:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

15.java8預設垃圾收集器:

在這裡插入圖片描述

16.並行垃圾收集器:

在這裡插入圖片描述

17.swt:

在這裡插入圖片描述
安全點:方法調用、迴圈跳轉、異常跳轉;設置標誌位,並不斷輪詢,主動停止。
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

17.cpu使用率飆升,怎麼排查?

先通過top命令找到cpu使用率高的線程;top -p 進程號;該界面輸入H查找最高cpu的線程;執行jstack 進程號做dump輸出線程信息; 同時根據線程的16進位找到對應的堆信息,然後再找出對應的代碼
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
6、最後根據線程信息定位到具體代碼

18.垃圾回收器的三色標記:

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

19.類載入、類載入器:

在這裡插入圖片描述
在這裡插入圖片描述

三、消息中間件

1.為什麼用rocketmq:

在這裡插入圖片描述
在這裡插入圖片描述

3.各種消息列隊:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

4.mq的消息重覆:

在這裡插入圖片描述
在這裡插入圖片描述

5.mq的消息重覆:

在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述

4.解決MQ重覆消息:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

6.roketmq性能優化:

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

四、緩存

1.Redis概念:

Nosql,C編寫,包含多種數據結構(字元串、列表、集合、散列表、有序集合),支持網路,基於記憶體還能持久化性能高效每秒可以處理超過10萬次讀寫操作,遵守BSD協議,支持分散式易拓展、支持多種語言的k-v存儲資料庫。

2.Redis數據類型:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

2.Redis與Memcached區別:

在這裡插入圖片描述

3.Redis的應用場景:

在這裡插入圖片描述
在這裡插入圖片描述

4.Redis為什麼速度:

在這裡插入圖片描述

5.為什麼用Redis而不用map/guava做緩存:

在這裡插入圖片描述

6.Redis的持久化機制:

在這裡插入圖片描述
在這裡插入圖片描述

7.如何保持緩存與資料庫雙寫時一致:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

8.緩存穿透:

在這裡插入圖片描述

五、併發編程

1.線程與進程的區別:

在這裡插入圖片描述

2.多線程中的上下文切換:在這裡插入圖片描述

3.java記憶體模型:

在這裡插入圖片描述

4.原子操作,JUC中原子操作類有哪些:

在這裡插入圖片描述

5.CAS操作及缺點:

在這裡插入圖片描述

6.java中的volatile變數作用:

在這裡插入圖片描述

7.volatile和atomic變數區別:

在這裡插入圖片描述

8.lock介面與synchronized區別:

在這裡插入圖片描述

9.樂觀鎖和悲觀鎖的理解及實現:

在這裡插入圖片描述

10.死鎖:

在這裡插入圖片描述

11.callable及future:

在這裡插入圖片描述

13.futureTask的底層原理:

在這裡插入圖片描述

14.阻塞隊列及實現原理:

在這裡插入圖片描述

15.不可變對象對併發應用的幫助

在這裡插入圖片描述

16.生產消費者模型作用:

在這裡插入圖片描述

17.copyOnWriteArrayList應用場景:

在這裡插入圖片描述

18.java單例:

在這裡插入圖片描述

19.雙重檢查鎖定DCL的單例:

在這裡插入圖片描述

20.AQS:

在這裡插入圖片描述

wait、notify、notifyAll為什麼不在thread類中:

在這裡插入圖片描述

六、分散式

1.分散式冪等性介面設計:

在這裡插入圖片描述

2.分散式session方案:

在這裡插入圖片描述

在這裡插入圖片描述

3.分散式事務:

在這裡插入圖片描述

4.ZAB協議:

在這裡插入圖片描述

5.Zookeeper和Redis區別:

在這裡插入圖片描述

6.Zookeepr節點宕機處理:

在這裡插入圖片描述

7.Zookeeper四種類型數據節點:

在這裡插入圖片描述

8.Dubbo和cloud區別:

在這裡插入圖片描述

9.Dubbo協議:

在這裡插入圖片描述

七、資料庫

1.mysql存儲引擎:

在這裡插入圖片描述

2.innodb與myisam區別:

在這裡插入圖片描述

3.表設計欄位選擇:

在這裡插入圖片描述

4.mysql的varchar(M)最多存儲數據:

在這裡插入圖片描述

5.事務基本特性:

在這裡插入圖片描述

6.事務併發引發問題:

在這裡插入圖片描述

7.mysql索引:

在這裡插入圖片描述

8.三星索引:

在這裡插入圖片描述

9.innodb一顆b+樹存放可以存放多少行數據:

在這裡插入圖片描述

10.如何提高insert性能:

在這裡插入圖片描述

11.全局鎖、共用鎖、排他鎖:

在這裡插入圖片描述

12.mysql死鎖:在這裡插入圖片描述

以上主要參考:https://www.bilibili.com/video/BV1vu41197Np?p=4&spm_id_from=pageDri

隨心所往,看見未來。Follow your heart,see night!

歡迎點贊、關註、留言,一起學習、交流!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 將 markdown 字元串轉成 html 顯示出來,同時把目錄也提取出來一起顯示。可以使用 marked 來讀取 markdown 字元串解析成 html marked官網:https://marked.js.org/ marked 安裝 使用 marked 前需要對其進行安裝 npm in ...
  • 前言 最近在做需求的時候,涉及到登錄token,產品提出一個問題:能不能讓token過期時間長一點,我頻繁的要去登錄。 前端:後端,你能不能把token 過期時間設置的長一點。 後端:可以,但是那樣做不安全,你可以用更好的方法。 前端:什麼方法? 後端:給你刷新token的介面,定時去刷新token ...
  • 當微服務是個壞主意時 這篇文章可能是給大家潑冷水,請各位理性看待。從書面上看,微服務聽起來很好。它們是模塊化、可擴展和容錯的。很多公司使用這種模式取得了巨大的成功,所以微服務可能自然而然地成為卓越的架構和啟動新應用程式的最佳方式。然而,大多數利用微服務取得成功的公司並不是從微服務開始的。考慮一下Ai ...
  • 一、環境準備 1.資料庫 創建2個庫2個表: xdclass_shop_order_0 product_order_0 product_order_1 ad_config product_order_item_0 product_order_item_1 xdclass_shop_order_1 p ...
  • 1.什麼是序列化組件 在django中,自帶一個序列化組件,它是用來將數據進行整理、轉化成特定的為一個特定的格式(比如json數據格式),然後傳輸給前端,以便前端對數據進行處理操作。 2.為什麼要用序列化組件 當我們從資料庫取出一些數據時,我們需要將數據轉成特定的格式,比如列表套字典的形式,然後將這 ...
  • @(文章目錄) 提示:本文僅供學習交流,請勿用於非法活動! 前言 本文大概內容: 例如:隨著MongoDB的廣泛應用,電商用到MongoDB也越來越多。本文主要是在將購物車模塊切換到MongoDB框架前,如何快速將Mysql中購物車大批量訂單拷貝到MongoDB資料庫中? 一、原來代碼 如下,我們將 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • @(文章目錄) 提示:本文僅供學習交流,請勿用於非法活動! 前言 本文內容: 日誌搭建 一、依賴 <!-- Spring集成日誌包 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</arti ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...