nand flash spec

nand flash簡介

nand flash是一種非易失性存儲器。它具有高存儲密度、低成本和高耐用性的特點。

nand flash的特性是非易失性,即在電源關閉的情況下,數據仍然保留。 nand flash的存儲單元由浮動柵極晶體管組成,每個存儲單元可以存儲一位或多位數據。nand flash通過編程和擦除操作來寫入和刪除數據,這與傳統的隨機存取存儲器 (RAM) 不同。

nand flash的基本存儲類型有以下幾種:

  • SLC(Single-Level Cell):每個存儲單元存儲 1 位數據,具有較高的速度和耐久性,但成本較高。
  • MLC(Multi-Level Cell):每個存儲單元存儲 2 位數據,成本較低,但速度和耐久性相對較差。
  • TLC(Triple-Level Cell):每個存儲單元存儲 3 位數據,進一步降低了成本,但速度和耐久性進一步下降。
  • QLC(Quad-Level Cell):每個存儲單元存儲 4 位數據,成本最低,但速度和耐久性最差

nand flash的架構基本如下:

塊和頁:NAND Flash 存儲器被分成多個塊,每個塊又被分成多個頁。數據寫入以頁為單位,而擦除則以塊為單位。 控制器:管理 NAND Flash 的讀寫操作、錯誤糾正和磨損均衡等功能。

nand flash的主要規范如下:

  • 容量:NAND Flash 的總存儲容量,通常以 GB 或 TB 為單位。

  • 頁大小:NAND Flash 中最小的可寫單元,通常為 2KB、4KB 或 8KB。

  • 塊大小:包含的頁數,每塊大小通常為 64 頁、128 頁或 256 頁。

  • 讀取速度:讀取數據的速度,通常以 MB/s 為單位。

  • 寫入速度:寫入數據的速度,通常以 MB/s 為單位。

  • 擦除時間:擦除一個塊所需的時間,以毫秒(ms)為單位。

  • 耐久性:每個塊可承受的編程/擦除循環次數,通常為幾千到幾十萬次。

  • 數據保持:無電源情況下數據能夠可靠保存的時間,通常為幾年到十幾年。

  • 接口:使用的通信接口類型,如并行接口、SPI 接口或 ONFI 標準接口。

  • 電壓:核心和 I/O 操作的工作電壓范圍。

  • 封裝:NAND Flash 的物理形態,如 TSOP、BGA 或 LGA 封裝。

  • 溫度范圍:工作和存儲溫度范圍。

    規范示例

    假設一個 NAND Flash 規格表如下:

    • 容量:128GB
    • 頁大小:4KB
    • 塊大小:256 頁(1MB)
    • 讀取速度:25 MB/s
    • 寫入速度:10 MB/s
    • 擦除時間:2 ms
    • 耐久性:100,000 次編程/擦除循環
    • 數據保持:10 年
    • 接口:ONFI 2.2
    • 電壓:1.8V 至 3.3V
    • 封裝:48 針 TSOP
    • 溫度范圍:-40°C 至 85°C

nand 的interface 和pin腳

一個典型的 NAND Flash 存儲器可以分為以下幾個主要部分:

  • 存儲單元陣列:由多個存儲單元組成,每個存儲單元可以存儲 1 位或多位數據。
  • 頁緩沖區:用于存儲數據的臨時區域,在數據寫入或讀取時使用。
  • 控制邏輯:負責管理數據的編程、讀取和擦除操作。
  • 地址和數據寄存器:存儲操作過程中用到的地址和數據。
  • 狀態寄存器:存儲當前操作的狀態信息,如忙/閑狀態、錯誤狀態等。
  • 接口控制器:負責與外部主機進行通信

NAND Flash 存儲器主要通過以下幾種接口與外部設備通信:

  • 并行接口:傳統的 NAND Flash 使用 8 位或 16 位并行接口進行數據傳輸,數據傳輸速率較高,適用于高速存儲需求。
  • 串行接口:如 SPI (Serial Peripheral Interface) NAND,采用串行數據傳輸方式,接口簡單,適用于較低數據傳輸速率的應用場景。
  • ONFI (Open NAND Flash Interface):一種標準化的 NAND Flash 接口協議,旨在提高 NAND Flash 的兼容性和互操作性。

以下是常見的 NAND Flash 存儲器引腳及其功能描述:

  • CE# (Chip Enable):芯片使能引腳,低電平有效。當 CE# 低電平時,芯片被選中,可以進行數據傳輸操作。
  • CLE (Command Latch Enable):命令鎖存使能引腳,高電平有效。當 CLE 高電平時,寫入的數據被解釋為命令
  • ALE (Address Latch Enable):地址鎖存使能引腳,高電平有效。當 ALE 高電平時,寫入的數據被解釋為地址。
  • WE# (Write Enable):寫使能引腳,低電平有效。當 WE# 低電平時,數據被寫入 NAND Flash。
  • RE# (Read Enable):讀使能引腳,低電平有效。當 RE# 低電平時,數據從 NAND Flash 讀取。
  • WP# (Write Protect):寫保護引腳,低電平有效。當 WP# 低電平時,禁止寫入和擦除操作,保護存儲器數據。
  • R/B# (Ready/Busy):就緒/忙引腳,低電平表示存儲器忙,高電平表示存儲器就緒。
  • IO0-IO7 (或 IO0-IO15):數據輸入/輸出引腳,用于傳輸數據、命令和地址。
  • VCC:電源引腳,為 NAND Flash 提供工作電壓。
  • VSS (GND):地引腳,提供電路參考地。

nand flash的組成和尋址方式

NAND Flash 的組成如下:

1.存儲單元隊列

  • 頁 (Page):最小的可編程和可讀取單元。典型的頁大小是 2KB、4KB 或 8KB。
  • 塊 (Block):由多個頁組成,通常是 64、128 或 256 頁。擦除操作以塊為單位進行。
  • 平面 (Plane):由多個塊組成,通常一個 NAND Flash 芯片有一個或多個平面。
  • 晶圓 (Die):由一個或多個平面組成。一個 NAND Flash 芯片可以包含一個或多個晶圓。

2.頁緩沖區:用于臨時存儲數據的緩沖區,在數據寫入和讀取過程中使用。

3.控制邏輯:包括命令解碼、地址生成、數據傳輸控制和錯誤校正碼 (ECC) 等。

4.地址和數據寄存器:用于存儲地址和數據,在傳輸過程中使用。

5.狀態寄存器:用于存儲當前操作的狀態信息,如忙/閑狀態、錯誤狀態等。

6.接口控制器:負責與外部主機進行通信。

NAND Flash 的尋址方式

NAND Flash 的尋址方式包括邏輯地址和物理地址。邏輯地址是主機系統看到的地址,而物理地址是實際存儲單元的地址。以下是 NAND Flash 的尋址機制:

邏輯到物理地址轉換

由于 NAND Flash 存儲器的磨損均衡 (Wear-Leveling) 和壞塊管理 (Bad Block Management) 機制,邏輯地址與物理地址之間通常存在映射關系。這種映射關系由 NAND Flash 控制器管理。

物理地址結構

頁地址:

? 頁地址用于選擇具體的頁。頁地址包括平面地址、塊地址和頁內偏移。

? 頁地址的高位用于選擇平面,中間位用于選擇塊,低位用于選擇頁。

塊地址:

? 塊地址用于選擇具體的塊。塊地址的高位用于選擇平面,中間位用于選擇塊。

? 一個塊內包含多個頁。

平面地址:

? 平面地址用于選擇具體的平面。平面地址的高位用于選擇平面。

地址格式示例

假設一個 NAND Flash 存儲器具有以下參數:

每頁大小:4KB

每塊包含頁數:128 頁

每平面包含塊數:1024 塊

每芯片包含平面數:2 個

一個具體地址可以表示為:

  • 頁地址 (低 12 位):用于選擇頁內偏移
  • 塊地址 (中間 10 位):用于選擇塊
  • 平面地址 (高 1 位):用于選擇平面
  • 完整地址格式:平面地址 (1 位) + 塊地址 (10 位) + 頁地址 (12 位)

nand flash的各個cmd的功能以及作用場景

讀取命令

讀頁命令 (Read Page):

  • 功能:從指定的頁讀取數據。
  • 使用場景:需要從 NAND Flash 中讀取數據時使用。
  • 典型命令序列:發送讀命令,指定頁地址,然后讀取數據。

寫入命令

頁編程命令 (Page Program):

  • 功能:將數據寫入指定的頁。
  • 使用場景:需要將數據存儲到 NAND Flash 時使用。
  • 典型命令序列:發送寫命令,指定頁地址,傳輸數據,然后發送確認命令以開始編程。

擦除命令

塊擦除命令 (Block Erase):

  • 功能:擦除指定塊的所有數據。
  • 使用場景:需要清空一個塊的數據,以便寫入新數據時使用。
  • 典型命令序列:發送擦除命令,指定塊地址,然后發送確認命令以開始擦除。

狀態命令

讀狀態命令 (Read Status):

  • 功能:讀取 NAND Flash 當前的狀態。
  • 使用場景:需要檢查 NAND Flash 是否忙碌,或者是否有錯誤發生時使用。
  • 典型命令序列:發送讀狀態命令,然后讀取狀態寄存器。

初始化和復位命令

復位命令 (Reset):

  • 功能:復位 NAND Flash,使其進入初始狀態。
  • 使用場景:在進行大規模操作前,需要確保 NAND Flash 處于已知狀態時使用。
  • 典型命令序列:發送復位命令,然后等待復位完成。

隱藏命令

緩存讀取命令 (Cache Read):

  • 功能:從緩存中讀取數據,提高讀取速度。
  • 使用場景:需要快速連續讀取多個頁的數據時使用。
  • 典型命令序列:發送緩存讀命令,然后讀取數據。

隨機數據讀取命令 (Random Data Read):

  • 功能:從頁內的任意位置讀取數據。
  • 使用場景:需要從特定位置讀取數據時使用。
  • 典型命令序列:發送隨機讀命令,指定地址,然后讀取數據。 命令執行的流程示例 寫入操作 發送頁編程命令:將命令發送到 CLE。 指定地址:將要寫入的頁地址發送到 ALE。 傳輸數據:將數據發送到數據寄存器。 開始編程:發送確認命令,啟動編程過程。 讀取操作 發送讀頁命令:將命令發送到 CLE。 指定地址:將要讀取的頁地址發送到 ALE。 讀取數據:從數據寄存器中讀取數據。

reset 在各個sequence下的復位時序

理解 NAND Flash 存儲器中的復位命令(Reset)的時序對確保設備正確初始化和恢復正常工作至關重要。復位命令會將 NAND Flash 重置到初始狀態,清除所有進行中的命令并返回到空閑狀態。以下是不同操作序列中的復位時序解釋:

復位時序

復位命令通常包括以下步驟:

  1. 發送復位命令:在命令鎖存使能(CLE)高電平時,將復位命令(通常為 0xFF)發送到 NAND Flash。
  2. 等待復位完成:復位操作需要一些時間來完成,這段時間稱為復位時間(tRST)。 可以通過查詢就緒/忙(R/B#)引腳或讀取狀態寄存器來確認復位是否完成。
  3. 檢查狀態寄存器:復位完成后,可以讀取狀態寄存器以確保 NAND Flash 處于正常狀態。

復位命令在不同操作中的使用

  1. 在初始化過程中 在系統啟動時,為了確保 NAND Flash 處于已知狀態,發送復位命令。 確保所有寄存器和內部狀態清除,準備接收新的命令。
  2. 在錯誤恢復過程中 當發生錯誤或意外情況時,復位命令用于恢復 NAND Flash 的正常工作狀態。 例如,在編程或擦除操作失敗后,可以發送復位命令進行恢復。

復位時序示例

在這個時序圖中:

       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 0xFF       |____________________________
R/B# |____________________________|
  • CE#:芯片使能引腳
  • CLE:命令鎖存使能引腳
  • WE#:寫使能引腳
  • IOx:數據引腳
  • R/B#:就緒/忙引腳
  1. CE# 低電平:選中芯片。
  2. CLE 高電平:命令鎖存使能。
  3. WE# 低電平:寫使能。
  4. 發送復位命令(0xFF):通過數據引腳傳輸命令。
  5. 等待 R/B# 高電平:表示復位完成。

不同操作序列中的復位命令

  • 在寫操作中的復位 如果寫操作過程中發生錯誤,可以發送復位命令清除錯誤狀態,恢復 NAND Flash 的正常工作。
  • 在讀操作中的復位 在讀操作過程中,如果 NAND Flash 進入不可預期的狀態,可以通過復位命令恢復正常狀態。

通過理解復位命令的時序,可以確保 NAND Flash 在各種操作場景中正確恢復并準備接收新的操作命令。

read id的應用場景以及解析方法

應用場景

  1. 設備識別:在系統啟動時,使用 Read ID 命令識別連接的 NAND Flash 芯片型號和制造商,以便選擇正確的驅動程序和配置。
  2. 兼容性檢查:確保主控芯片(如微控制器或 FPGA)能夠識別和正確配置不同型號的 NAND Flash 存儲器。
  3. 診斷和調試:在開發和調試過程中,通過讀取 ID 來確認 NAND Flash 芯片型號和版本,幫助定位和解決問題。

解析方法

  1. 發送 Read ID 命令:向 NAND Flash 發送 Read ID 命令(通常為 0x90)。

  2. 讀取 ID 數據:按順序讀取一系列字節,這些字節包含制造商 ID、設備 ID、第三、第四和第五字節等信息。

讀取 ID 數據的結構示例

假設 NAND Flash 返回如下 ID 數據:

  • 第1字節:制造商 ID(如 0x2C)
  • 第2字節:設備 ID(如 0xA1)
  • 第3字節:擴展信息
  • 第4字節:保留
  • 第5字節:保留

解析步驟:

  • 制造商 ID:識別 NAND Flash 的制造商,例如 0x2C 對應 Micron。
  • 設備 ID:識別具體的 NAND Flash 型號,例如 0xA1 對應某型號。
  • 擴展信息:包含頁大小、塊大小、平面數等具體參數。

示例解析

假設讀取到以下數據:0x2C(制造商 ID) 0xA1(設備 ID) 0x90(擴展信息) 0x15(保留) 0x00(保留)

解析:

  • 0x2C:Micron 制造商 ID。
  • 0xA1:設備 ID,對應特定型號。
  • 0x90:擴展信息,可能表示頁大小為 4KB,塊大小為 128 頁。
  • 其余字節保留或未使用。

通過讀取和解析這些 ID 數據,系統能夠正確識別和配置 NAND Flash 存儲器,確保兼容性和正常運行。

interface change 和driver strength setting

Interface Change 主要指在 NAND Flash 和主控芯片之間改變通信接口的模式或速率

應用場景

  • 不同模式切換: 切換 NAND Flash 通信模式,如從傳統的并行接口切換到 ONFI(開放 NAND 閃存接口)標準。
  • 速率調整: 根據系統需求調整數據傳輸速率,提高數據傳輸效率。

Driver Strength Setting 指調整 NAND Flash 芯片驅動信號的強度,以適應不同的負載條件和信號完整性要求。

應用場景

  • 信號完整性: 在長電纜或高速傳輸情況下,增強驅動強度以減少信號衰減和噪聲干擾。

  • 功耗優化: 在短距離或低速傳輸情況下,降低驅動強度以減少功耗。

Interface Change 示例

假設從傳統的并行接口切換到 ONFI 3.0 標準:

  • 發送切換命令:主控芯片發送接口切換命令。
  • 配置寄存器:設置相關寄存器以啟用新的接口模式。
  • 確認切換:通過讀取狀態寄存器確認切換成功。

Driver Strength Setting 示例

假設在高速數據傳輸情況下需要增強驅動強度:

  • 發送設置命令:主控芯片發送驅動強度設置命令。
  • 配置寄存器:調整驅動強度寄存器以設置新的強度值。
  • 確認設置:通過讀取狀態寄存器確認設置成功。 通過合理的 Interface Change 和 Driver Strength Setting,能夠優化 NAND Flash 的性能和可靠性。

各個sequence的基本時序

讀操作時序

步驟:

  • 發送讀命令:在 CLE 高電平時,發送讀命令。
  • 發送地址:在 ALE 高電平時,發送頁地址和列地址。
  • 讀取數據:等待數據準備好,通過數據引腳讀取數據。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 命令        | 地址         | 數據____________________________
R/B# |____________________________|

寫操作時序

步驟:

  • 發送寫命令:在 CLE 高電平時,發送寫命令。
  • 發送地址:在 ALE 高電平時,發送頁地址和列地址。
  • 傳輸數據:在 WE# 低電平時,通過數據引腳傳輸數據。
  • 發送編程確認命令:在 CLE 高電平時,發送編程確認命令。
  • 等待編程完成:通過 R/B# 引腳檢測編程完成狀態。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 命令        | 地址         | 數據____________________________
R/B# |____________________________|

擦除操作時序

步驟:

  • 發送擦除命令:在 CLE 高電平時,發送擦除命令。
  • 發送塊地址:在 ALE 高電平時,發送塊地址。
  • 發送擦除確認命令:在 CLE 高電平時,發送擦除確認命令。
  • 等待擦除完成:通過 R/B# 引腳檢測擦除完成狀態。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 命令        | 地址         | 確認____________________________
R/B# |____________________________|

復位操作時序

步驟:

  • 發送復位命令:在 CLE 高電平時,發送復位命令(0xFF)。
  • 等待復位完成:通過 R/B# 引腳檢測復位完成狀態。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 0xFF       |____________________________
R/B# |____________________________|

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

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

相關文章

短視頻世界對我溫柔以待:成都柏煜文化傳媒有限公司

短視頻世界對我溫柔以待 在繁忙的都市生活中,每個人都在為生活奔波,為夢想努力。而在這個快節奏的時代里,短視頻如同一股清流,以其獨特的魅力,為我帶來了片刻的寧靜與溫柔。它像是一個無聲的朋友,在我疲憊…

(必看圖文)Hadoop集群安裝及MapReduce應用(手把手詳解版)

前言 隨著大數據時代的到來,處理和分析海量數據已成為企業和科研機構不可或缺的能力。Hadoop,作為開源的分布式計算平臺,因其強大的數據處理能力和良好的可擴展性,成為大數據處理領域的佼佼者。本圖文教程旨在幫助讀者理解Hadoop集…

Mysql面試合集

概念 是一個開源的關系型數據庫。 數據庫事務及其特性 事務:是一系列的數據庫操作,是數據庫應用的基本邏輯單位。 事務特性: (1)原子性:即不可分割性,事務要么全部被執行,要么就…

代碼隨想錄1數組

1 二分查找 Leetcode704 1 [l,r]區間 l 0, r nums.length-1; while(l<r) 因為lr有意義 2 [l,r)區間 l 0, r nums.length; while(l<r) Leetcode35 class Solution {public int searchInsert(int[] nums, int target) {int l0,rnums.length;while(l<r){int m l(…

使用設計模式來增強你的 SpringBoot 開發

SpringBoot 是一個出色的框架&#xff0c;可以快速構建強大而高效的應用程序。但你是否知道設計模式可以將 SpringBoot 開發提升到一個新的水平&#xff1f; ? 設計模式的重要性&#xff1a;了解設計模式如何促進代碼的可重用性、可維護性和整體應用程序健康。 ? SpringBoot…

在Spring Data JPA中使用@Query注解

目錄 前言示例簡單示例只查詢部分字段&#xff0c;映射到一個實體類中只查詢部分字段時&#xff0c;也可以使用List<Object[]>接收返回值再復雜一些 前言 在以往寫過幾篇spring data jpa相關的文章&#xff0c;分別是 Spring Data JPA 使用JpaSpecificationExecutor實現…

python 筆試面試八股(自用版~)

1 解釋型和編譯型語言的區別 解釋是翻譯一句執行一句&#xff0c;更靈活&#xff0c;eg&#xff1a;python; 解釋成機器能理解的指令&#xff0c;而不是二進制碼 編譯是整個源程序編譯成機器可以直接執行的二進制可運行的程序&#xff0c;再運行這個程序 比如c 2 簡述下 Pyth…

運維鍋總詳解RocketMQ

本文嘗試從Apache RocketMQ的簡介、主要組件及其作用、3種部署模式、Controller集群模式工作流程、最佳實踐等方面對其進行詳細分析。希望對您有所幫助&#xff01; 一、Apache RocketMQ 簡介 Apache RocketMQ 是一個開源的分布式消息中間件&#xff0c;由阿里巴巴集團開發并…

祝賀《華為戰略管理法:DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一(宏觀戰略類書籍)

祝賀《華為戰略管理法&#xff1a;DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一 2024年4月23日&#xff08;周二&#xff09;下午13:00&#xff0c;《中國企業家》雜志如期舉辦“每天都是讀書日”線下活動。 《中國企業家》雜志攜手商界大咖共同推選50本枕邊書…

Vue.js中的計算屬性

Vue.js中的計算屬性&#xff08;computed properties&#xff09;是用于聲明響應式依賴的屬性。它們會根據它們的依賴進行緩存&#xff0c;并且只有在相關依賴發生改變時才會重新求值。這使得它們非常適合用來處理復雜邏輯和數據處理。 基本用法 在Vue實例中&#xff0c;可以…

鐳速實現AD域集成助力企業文件安全傳輸管控

在當今這個信息量爆炸擴張的年代&#xff0c;企業數據宛如一座蘊藏無限價值的寶庫&#xff0c;它不僅是企業核心競爭力的載體&#xff0c;也成為了各種潛在風險的聚焦點。隨著數字化轉型步伐的加快&#xff0c;安全文件傳輸的管理控制顯得尤為重要&#xff0c;它構成了保護企業…

各類排序方法 歸并排序 擴展練習 逆序對數量

七月挑戰一個月重刷完Y總算法基礎題&#xff0c;并且每道題寫詳細題解 進度:(3/106) 歸并排序的思想也是分而治之 歸并優點&#xff1a;速度穩定,排序也穩定 排序也穩定&#xff08;數組中有兩個一樣的值&#xff0c;排序之后他們的前后順序不發生變化&#xff0c;我們就說…

Leetcode 2065. 最大化一張圖中的路徑價值(DFS / 最短路)

Leetcode 2065. 最大化一張圖中的路徑價值 暴力DFS 容易想到&#xff0c;從0點出發DFS&#xff0c;期間維護已經走過的距離&#xff08;時間&#xff09;和途徑點的權值之和&#xff0c;若訪問到0點則更新答案&#xff0c;若下一步的距離與已走過的距離和超出了maxTime&#…

oracle sql語句 排序 fjd = ‘0101‘ 排在 fjd = ‘0103‘ 的前面

要實現這個排序需求&#xff0c;你可以使用 CASE 表達式來自定義排序邏輯。假設你有一個表格名為 your_table&#xff0c;并且有一個字段 fjd 存儲類似 ‘0101’, ‘0103’ 這樣的值&#xff0c;你可以這樣編寫 SQL 查詢&#xff1a; SELECT * FROM your_table ORDER BY CASE …

專題六:Spring源碼之初始化容器BeanFactory

上一篇咱們通過一個例子介紹初始化容器上下文相關內容&#xff0c;并通過兩個示例代碼看到了Spring在設計階段為我預留的擴展點&#xff0c;和我們應該如何利用這兩個擴展點在Spring初始化容器上下文階段為我們提供服務。這一篇咱們接著往下看。 老這樣子下回到refresh方法上來…

第55期:MySQL 頻繁 Crash 怎么辦?

社區王牌專欄《一問一實驗&#xff1a;AI 版》全新改版歸來&#xff0c;得到了新老讀者們的關注。其中不乏對 ChatDBA 感興趣的讀者前來咨詢&#xff0c;表達了想試用體驗 ChatDBA 的意愿&#xff0c;對此我們表示感謝 &#x1f91f;。 目前&#xff0c;ChatDBA 還在最后的準備…

MSVCR120.DLL丟失的多種修復方法,助你快速解決dll問題

在日常生活和工作中&#xff0c;電腦已經成為我們不可或缺的工具。然而&#xff0c;在使用電腦的過程中&#xff0c;我們常常會遇到一些問題&#xff0c;其中之一就是電腦運行軟件時提示找不到msvcr120.dll。如果該文件缺失或損壞&#xff0c;可能會導致依賴它的應用程序無法啟…

高優先線程

你開發的時候有么有遇到過一個問題&#xff1a;服務器的一個服務線程過幾個小時斷連一次&#xff0c;斷連之后會馬上重連這種情況。這是由于CPU負載較高,線程調度時將處理數據的線程掛起了一段時間導致的。 因此&#xff0c;我有考慮到把cpu的核心進行分散開來&#xff0c;就類…

CesiumJS【Basic】- #042 繪制紋理線(Primitive方式)

文章目錄 繪制紋理線(Primitive方式)1 目標2 代碼2.1 main.ts3 資源文件繪制紋理線(Primitive方式) 1 目標 使用Primitive方式繪制紋理線 2 代碼 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var

【劍指Offer系列】68-二叉樹的最近公共祖先(哈希)

思路&#xff1a;使用map存儲每個節點的父節點&#xff0c;則兩個節點的最近公共祖先&#xff0c;即二者的最近父節點 1、中序遍歷二叉樹&#xff08;當前節點的下一個節點&#xff09; 2、記錄每個節點的父節點 3、列出p的族譜、q的族譜 4、尋找二者最近的祖先 class Soluti…