關于大型語言模型的“生物學”

我知道我們已經聊過很多次,關于LLM是怎么運作的,它們的影響力,還有它們的使用場景。但盡管現在有那么多講LLM的文章,它們本質上還是個黑箱。

但我們真正要問自己的問題是,為什么理解這些系統的內部結構很重要?我們需要這種理解,是為了不被這些系統的能力搞混淆。LLM很容易讓我們以為它們是靠推理在解決問題,而不是靠記憶。

而今天這篇博客,我們就要更深入地看看內部結構,探一探LLM的“生物學”,搞明白它到底是怎么動起來的。

目錄
? 人工智能可解釋性的背景
? 什么是單義性(Monosemanticity)?
? 稀疏自編碼器(SAE)
? 多步驟推理
? 詩歌中的規劃
? LLM中的加法
? 鏈式思維不忠實性與語言模型中的隱藏目標
? 最后一點說明

人工智能可解釋性的背景

深度學習模型可以學到人類可以理解的算法。這些模型是可以被理解的,但默認情況下,它們沒有動力讓自己對我們“可讀”。

在深度學習里的“機械可解釋性”(Mechanistic Interpretability),是要深入模型的內部運作機制,理解每個組件是怎么對整體行為產生影響的。技術點說,就是我們想搞明白模型里每一個神經元、每一層、每一條路徑的功能,它們是怎么處理輸入,怎么影響最終輸出的。

但我們是怎么敢說深度學習模型是可以被分解和解釋的?這種直覺是來自這樣一個想法:說到底,DL模型就是一堆在做線性代數的神經元,所以理論上,我們應該是可以把它拆成一種人類可以理解的方式的。

“機械可解釋性”其實就是想反向工程神經網絡,就像你要反編譯一個二進制的計算機程序一樣。畢竟神經網絡的參數,從某種意義上來說,也就是一個跑在某種神秘虛擬機上的二進制程序,這個虛擬機我們就叫它神經網絡架構。

什么是單義性?

在機械可解釋性里,“單義性”就是說模型里每一個組件或機制,都應該有一個清晰明確、毫不含糊的功能或含義。

單義性的目標,是想做出一本“詞典”,可以查到每組特征到底代表什么概念。這個過程被稱為“字典學習(dictionary learning)”,而在這個案例中,他們用的是稀疏自編碼器來構造這本“詞典”。

唉,要是生活能這么簡單就好了,但它不是。

因為在深度學習結構中,很多概念是疊加在一起的(superposition),這也正是為什么解釋性這么難搞。所以在我們深入講Anthropic是怎么用自編碼器實現單義性之前,先來詳細搞明白這個問題。

深度學習模型中的疊加(Superposition

如果人工神經網絡中的每個神經元,都剛好對應輸入中的某個可解釋特征,那可太省事了。比如,在一個“理想”的ImageNet圖像分類器中,每個神經元只在某個特定的視覺特征出現時才激活,比如紅色、一個朝左的彎曲、或是一只狗鼻子。

在我們研究過的一些模型中,確實有些神經元確實能清晰地映射到特定特征。但并不是每次都這么干凈,特別是在大型語言模型中,神經元和清晰特征的對應關系非常罕見。這就引發了很多問題:為什么有些模型或任務里有很多這樣的清晰神經元,而另一些卻幾乎沒有?

研究人員發現,模型其實是可以容忍干擾的,從而把更多的特征“疊加”存進去。而且他們還展示了,至少在某些有限的情況下,模型是可以在這種“疊加”狀態下做計算的。(比如,他們展示了模型可以在疊加中跑一個簡單的絕對值函數電路。)

這讓他們提出一個假設:我們現實中看到的神經網絡,在某種意義上,其實是“帶噪聲地”在模擬一個更大、稀疏得多的神經網絡。換句話說,我們可以把現在訓練的模型,看作是在執行一個“更大的虛擬模型”的行為,只不過它們把所有特征塞在了一起。

使用稀疏自編碼器

自編碼器的基本做法是:拿一個輸入,把它映射成一個新的值集合,然后再從這個新的集合中重建原來的輸入。通常,自編碼器用來把信息從高維壓縮成低維,比如從1024維壓成32維,然后再還原回1024。

但為了提取單義性的特征,他們反其道而行之:不是壓縮,而是把信息編碼到一個更高維的空間里。

這就叫“稀疏自編碼器”。因為每個神經元里可能代表了多個概念,所以我們要把它分解成比神經元數量還多的特征。

稀疏自編碼器

稀疏自編碼器(SAE

SAE是由兩層組成的。第一層是“編碼器”,它通過一個可學習的線性變換,加上ReLU非線性函數,把激活值映射到一個更高維度的空間。這些高維空間的單元我們稱為“特征”。

第二層是“解碼器”,它嘗試通過這些特征的激活值線性組合,重建模型原來的激活值。訓練的目標是最小化兩個東西:(1)重建誤差,(2)特征激活值的L1正則項,也就是促使稀疏性。

SAE訓練好之后,它可以幫我們把模型激活值近似分解成“特征方向”的線性組合(也就是SAE解碼器的權重),其系數就是特征的激活值。

稀疏性這東西能確保,在模型輸入某個值時,只有極少數特征會被激活。因此,模型在任意上下文中處理某個token時,它的激活值可以由一小撮特征來解釋(盡管整個特征池子很大)。

他們把SAE應用在模型中途的殘差流(residual stream)上。

因為殘差流比MLP層小很多,這讓訓練SAE的成本更低。而且它正好處在模型中間的信息流通節點,有一定程度的抽象能力。

局部替代模型(Local Replacement Model

這個模型是針對特定提示(prompt)構建的。它在原始模型的attention模式保持不變的基礎上,加入了一個誤差修正項。結果是,它的輸出和原模型完全一樣,但內部盡可能多地用“特征”來替代原來的計算。

歸因圖(Attribution Graph

從輸入追蹤到輸出,沿著激活的特征路徑,剪掉那些不影響輸出的路徑。

通過分析局部替代模型中,特征之間的交互,我們可以追蹤模型在產生響應時的中間步驟。更具體地說,我們會生成歸因圖,也就是一個圖形化表示,描繪模型是怎么一步一步推導出最終輸出的。在圖中,節點代表特征,邊代表它們之間的因果關系。

由于歸因圖往往很復雜,我們會通過剪枝來精簡,只保留對輸出有顯著影響的節點和邊。

當我們拿到這個剪枝后的歸因圖后,常常能看到一些語義相關、在圖中起類似作用的特征被聚集在一起。我們會手動把這些特征節點合并成“超級節點”,從而得到一個更簡化的模型計算流程圖。

多步驟推理(Multi-Step Reasoning

比如我們有一個提示:

Fact: “the capital of the state containing Dallas is?”

LLM如果要完成這句,它需要兩個步驟——第一步,判斷Dallas在哪個州(Texas),第二步,Texas的首府是啥(Austin)。但真正的問題是,LLM是不是確實在內部完成了這兩步?還是說它用了某種“捷徑”?(比如它可能見過類似的句子,直接記住了結果?)

我們可以通過計算這個prompt的歸因圖來回答這個問題,看看模型到底用了哪些特征,它們之間怎么互動。首先,我們看特征的可視化圖,然后把它們歸類成“超級節點”。

語言模型是通過不同的、關聯的特征來識別首府的,來看幾個例子:

  1. 詞匯特征:找到精確的詞,比如我們這里的“capital”。
  2. 概念特征:識別“capital”在各種上下文中的含義,因為“capital”這個詞可以用在好幾種情況里:
    • 跟州首府有關的問題;
    • 多語言場景下的“capital”(比如土耳其語“ba?kenti”,印地語“???????”等)。
  3. 輸出特征:驅動模型輸出特定的首府名字:
    • 有些特征就是為了輸出“Austin”而激活;
    • 有些用于輸出各種美國州的首府;
    • 還有些用于輸出國家首都。
  4. 上下文特征:識別類似“Texas”這種地點,但不是具體到城市。

系統把這些相關的特征合并成“超級節點”,這些節點可以代表諸如“說出一個首府”或“Texas”這類概念,即便單個特征只是這些概念的某一部分。

創建完超級節點后,我們可以在歸因圖界面看到,比如“capital”這個超級節點會促使“say a capital”節點激活,后者又促使“say Austin”節點激活。我們用棕色箭頭在圖中把每個超級節點依次連起來,大概像下面這個圖片段那樣:

歸因圖里包含了很多有意思的路徑,下面是總結:
? “Dallas”特征(再加上一些州的特征)會激活代表德克薩斯州的那一組特征。
? 與此同時,我們也看到,“capital”這個詞激活的特征,會激活另一組輸出特征,讓模型說出一個首府的名字。
? “Texas”特征和“say a capital”特征合在一起,會提高模型說出“Austin”的概率。這是通過兩條路徑完成的:
— 直接影響“Austin”輸出,
— 間接地,通過激活“say Austin”那一組輸出特征。
? 還有一條“捷徑”邊,是從“Dallas”直接通向“say Austin”的。你看,這種東西就明顯是靠記憶來的。這條捷徑就是記憶的直接結果。

上面這個圖清楚地說明,替代模型確實做了“多跳推理” —— 它決定說“Austin”是經過了一連串中間計算步驟的(Dallas → Texas,然后 Texas + capital → Austin)。

這個圖其實把真實的機制簡化了不少,我也建議大家親自去看看更完整的可視化圖,才能真正感受到它背后有多復雜。

詩歌中的規劃(Planning In Poem

我們都知道LLM能寫出很押韻的詩,但它到底是怎么做到的?就算是最厲害的人類寫手都挺難的。所以我們來深入看看這個事兒。

當LLM寫押韻詩的時候,它不是一句一句即興來寫的。它其實用了一種“規劃機制”:

  1. 提前規劃:寫完第一行,比如結尾是“grab it”,LLM立馬就會激活表示可能押韻詞的特征(像“rabbit”或者“habit”)。這個對LLM來說很容易,因為它基本上知道整個字典。
  2. 反向構思:一旦它想好了結尾可能是哪些詞,它就開始構造上一整行內容,讓這一行自然地通向那個結尾。反向構思肯定是需要規劃的,但這更像是圖案匹配出來的,而不是像上面回答德州首府那種做概念構建。
  3. 多個選項同時考慮:LLM會同時考慮好幾個押韻結尾詞,然后選一個最合適的。

于是我們開始測試它的極限,試著“封鎖”某些詞:

? 當我們封掉了和“rabbit”相關的特征后,LLM就換成以“habit”結尾。
? 當所有押韻的詞都被封掉,LLM就很難把詩寫下去。這說明LLM并不是先構建一個大概念來講故事,然后再把詞寫出來,它其實更像是在找看起來差不多的句子來押韻。
? 當我們注入像“green”這樣的新詞特征,LLM會把整句話重寫來以那個詞結尾。

沒寫過詩的人一開始看到AI寫詩會覺得特別厲害。LLM確實是匹配風格的高手,但詩是既要風格也要故事。所以,AI寫出來的詩經常缺乏連貫性。

LLM是如何押韻的拆解分析

LLM是怎么押韻的

盡管LLM有不少限制,但它能寫詩這件事還真挺厲害的,因為它表明LLM不是只在按順序預測下一個詞,它還能提前規劃,甚至從目標倒推回來 —— 這比簡單即興寫作要復雜得多。

LLM里的加法(Addition In LLMs

對了,你知道嗎,LLM在做簡單數學的時候,其實用的是完全不同的一套概念?我們一起來看看這些神奇的機器內部到底發生了什么。

我們從一個簡單例子出發來看,當LLM在解像36+59=95這種數學題時,它其實用了并行路徑

  1. 近似路徑:它會大概估算,比如 ~36 + ~60 ≈ 92。為啥它會用這種方式,我們也說不準。但我猜,在它訓練壓縮互聯網上的內容時,它發現這樣是個最優解。
  2. 精確路徑:它會用一些“查表”特征,知道像 6+9=15,所以個位是5。但注意啊,它不是一下子看整個數字,而是只盯著某些特定位數。而且我們沒法控制它到底在看哪些位數。
  3. 組合:最后,它把這兩條路徑的信息合并在一起,得出最終答案 95。

這個方式和人類做數學題完全不一樣 —— LLM是記住了某些數字組合,但處理方式跟人類標準算法完全不同。

特征類型

LLM內部的特征,在可視化后能看到一些明顯的模式:

? 對角線圖案:表示能檢測加法和乘法結果的特征。
? 水平/垂直圖案:對輸入數字特別敏感的特征,它們跟提示詞里的具體數字有關。
? 點狀圖案:像“查表”功能,識別具體的數字組合。這些查表是它自己訓練過程中生成的,不是人造的,所以結果不是很一致。
? 重復圖案:追蹤模運算信息(比如個位數)的特征。

泛化到其他場景

這些加法特征,在一些出人意料的地方也起作用:

? 學術引用里算出版年份(所以LLM引用經常錯)。
? 天文數據里預測時間(別信LLM給你算星星,差一個點就全錯了)。
? 財務報表中計算序列值(同上,信不過)。
? 把加法當作復雜表達式中的中間步驟來用。

當加法是某個多步驟問題的一部分時(比如(4+5)×3),LLM會把“9”當成一個中間結果,而不是最終答案。

有趣的是,LLM雖然能在一組特定數字上算得很準,但你要問它怎么算的,它給你的還是標準人類算法說明 —— 因為它自己也不知道它是怎么得出這個答案的。所以啊,它一說“讓我再想想”,你下次別被它騙了。

LLM的計算本質上靠的是記憶,它甚至可能會在簡單數學題上出錯,而你自己還不知道。尤其一碰到大數,錯得就更容易了。

LLM在長乘法里崩了

鏈式思維不忠實與隱藏目標(Chain-of-Thought Unfaithfulness and Hidden Goals In Language Models

鏈式思維(CoT)是LLM社交時最裝的那一招。

現在已經有很多研究表明,這種鏈式思維其實和模型真實的內部處理邏輯并不一致。研究者用歸因圖分析模型行為后,發現了三種不同的推理模式:

觀察到的推理類型

  1. 忠實推理:比如算 sqrt(0.64),模型確實是算了平方根,然后乘以5。有時候模型確實能學會真正的通用性。有人把一堆無關權重都歸零了,它還能正常跑。
  2. 胡扯型:比如讓它算 cos(23423),它可能會說“我用計算器算的”(其實根本沒有)。這類情況,它是裝的,它根本沒算。
  3. 目標驅動型:比如你暗示它答案是4,它就反向推,想出一套中間值來“湊”這個結果,而不是老老實實計算。就像你在引導它到正確答案,但前提是你自己先知道答案。

LLM背后的隱藏機制

我們來問自己:“AI在回答我們的時候,背后到底發生了啥?”

這些模型不是只用一種辦法來解決問題 —— 它們是同時激活多個路徑的。比如你問 Michael Jordan 是搞什么運動的,模型可能同時激活了和籃球相關的神經元,還有跟“運動類別”相關的一般路徑。這些并行過程有時候是合作,有時候互相打架。而我們研究者完全控制不了它到底哪條路徑在生效。

這是因為模型在訓練時壓縮了互聯網,自動提煉出一種“泛化方式”。這泛化到底準不準,我們控制不了,只能希望喂得數據越多,泛化就越準。

這不是理論 —— 你可以直接看到模型是怎么解36+59這種簡單題的。它會用不同神經路徑分別處理個位數和整體估值。

抽象能力(Abstraction Abilities

這些模型真的學會了可以跨場景通用的抽象概念。比如:

? 加法特征也能用于算學術出版年;
? 用于預測天文時間段;
? 用于算財務表格里的序列值。

這說明,模型內部也許在發展一種“通用的心理語言”。越先進的系統,這種語言越成熟。但問題是,有時我們希望模型自由發揮,有時又想嚴格控制。這點我們現在做不到,將來也不一定能。

“幻覺”對LLM來說不是bug,而正是它擅長的原因 —— 幻覺是LLM的本質屬性

規劃,而不是即興

AI并不是只在預測下一個詞。比如寫需要押“grab it”的詩時,它不是一句一句瞎寫的 —— 它會提前激活像“rabbit”“habit”這些結尾的特征,甚至還沒開始寫這行。

研究者可以操控這些“規劃特征”,逼模型把整行重寫成押這些詞的結尾。這不是簡單的詞預測 —— 是一種復雜的規劃。或者更準確說,是“大概記起來”然后順著往下寫。

它們還能做“倒推鏈式”,也就是從最終目標反推中間步驟。它有時候會先決定答案,再倒推一套看起來邏輯通的過程,而不是一步一步真算。

所以你看到模型寫的“推理過程”時,別太當真。有論文指出,這些推理過程可能完全是編的,結果卻是對的。大多數研究只是因為結果對了就以為過程也對,其實不一定。

LLM是在構建自我意識嗎?

有些神經特征會代表“我知道答案” vs “我不知道”的概念。這些特征會跟模型認識的某些實體有關。當研究者操控這些特征時,可以讓模型對它根本不知道的事變得很自信,這說明它的“元認知”其實還挺原始的。

為什么這不只是學術問題?

這些發現不僅僅是好玩的,它們有很嚴重的影響。研究者其實早就知道LLM內部有這些問題。但現在是一個主流AI實驗室把它寫出來了,這就有意義了,特別是現在AI在現實社會里影響這么大。

隨著這些模型越來越融入社會,我們必須理解它們的內部機制來確保安全。現有方法可能能抓到一些問題,但也有很多會漏掉。不過這些探索給未來做更好的審計工具打了基礎。

這種從底層往上挖的方式,揭示了很多之前靠猜測根本想不到的細節,比如:

? 模型生成文字時,是怎么在多種可能詞中切換的;
? 哪些路徑會抑制有害輸出(要是我們能鎖定這些路徑,就能直接關掉某些神經元,讓模型更安全);
? 哪些特征在多個上下文之間泛化得很廣。

隨著語言模型越來越大,我們越難理解它們的工作機制。探索工具 + 精準測試,會是理解這些系統的關鍵。

理解AI,不只是一個技術活 —— 這是一場高風險的探索。

這些發現告訴我們,雖然這些系統很復雜,但我們還是能開發工具看清它們的內部結構。它們歸根結底,仍然是人類推理和聰明才智的產物。

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

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

相關文章

壓濾機與錫泥產生效率

的關系可從設備作用機制、工藝參數影響及效率評估方法三個維度展開,結合工業實踐與實驗室研究,其關聯邏輯如下: 一、壓濾機在錫泥處理中的核心作用 固液分離原理 壓濾機通過正壓強壓脫水、擠壓脫水、風吹脫水三步實現固液分離: …

簡單線段樹的講解(一點點的心得體會)

目錄 一、初識線段樹 圖例: ?編輯 數組存儲: 指針存儲: 理由: build函數建樹 二、線段樹的區間修改維護 區間修改維護: 區間修改的操作: 遞歸更新過程: 區間修改update&#xff1a…

Jenkins 2.492.2 LTS 重置管理員密碼

文章目錄 1. Jenkins 關閉用戶認證2. jenkins 修改密碼 如果忘記了 Jenkins 的管理員密碼的話,也不用擔心,只要你有權限訪問 Jenkins 的根目錄,就可以輕松地重置密碼。 1. Jenkins 關閉用戶認證 // 查看 jenkins 家目錄(使用 doc…

《AI大模型應知應會100篇》第26篇:Chain-of-Thought:引導大模型進行步驟推理

第26篇:Chain-of-Thought:引導大模型進行步驟推理 摘要 在自然語言處理(NLP)和人工智能領域,如何讓大模型像人類一樣進行逐步推理是一個核心挑戰。Chain-of-Thought (思維鏈) 技術的出現為這一問題提供了強有力的解決…

SICAR 標準 安全門鎖操作箱 按鈕和指示燈說明

1、安全門鎖操作箱 2、按鈕和指示燈說明 一、指示燈說明 紅燈: 常亮:表示安全門已解鎖;閃爍:表示安全門未復位;熄滅:表示安全門已復位。 黃燈: 常亮:表示處于維修模式。 綠燈&…

MAC-??需求??:10萬訂單異步執行庫存扣減、短信通知。

批量任務并行處理?? 實現,通過拆分任務、異步執行和線程池管理提升處理。 ??10萬訂單異步處理方案設計?? 基于圖中代碼的批量處理框架,結合訂單業務需求,以下是 ??庫存扣減與短信通知的異步實現??: ??1. 代碼實現(基于原有框架改造)?? @Service public…

python 庫 下載 ,整合在一個小程序 UIUIUI

上圖 import os import time import threading import requests import subprocess import importlib import tkinter as tk from tkinter import ttk, messagebox, scrolledtext from concurrent.futures import ThreadPoolExecutor, as_completed from urllib.parse import…

Flutter與FastAPI的OSS系統實現

作者:孫嘉成 目錄 一、對象存儲 二、FastAPI與對象存儲 2.1 繽紛云S4服務API對接與鑒權實現 2.2 RESTful接口設計與異步路由優化 三、Flutter界面與數據交互開發 3.1 應用的創建 3.2頁面的搭建 3.3 文件的上傳 關鍵詞:對象存儲、FastAPI、Flutte…

洛谷P3373線段樹詳解【模板】

洛谷P3373題目概述 洛谷P3373是一道關于線段樹的模板題,題目名稱為“【模板】線段樹 2”。題目的主要要求是對一個長度為 n 的數列進行如下操作: 將某區間每個數乘上一個數。將某區間每個數加上一個數。求出某區間所有數的和。 線段樹簡介 線段樹是一…

【計算機視覺】CV實戰項目- COVID 社交距離檢測(covid-social-distancing-detection)

COVID 社交距離檢測(covid-social-distancing-detection) 一、項目概述二、項目架構三、環境搭建四、運行項目五、輸出結果六、常見問題及解決方法報錯1. cv2.error: OpenCV(4.11.0) :-1: error: (-5:Bad argument) in function circle報錯2 cv2.circle(…

CMake使用教程

一、CMake 簡介 CMake 是一個跨平臺的構建工具,用于自動化生成不同平臺(如 Makefile、Visual Studio、Xcode 等)的構建文件。它的核心是編寫 CMakeLists.txt 文件,定義項目的構建規則。 二、安裝 CMake Linux: sudo apt-get ins…

大模型Rag - 兩大檢索技術

一、稀疏檢索:關鍵詞匹配的經典代表 稀疏檢索是一種基于關鍵詞統計的傳統檢索方法。其基本思想是:通過詞頻和文檔頻率來衡量一個文檔與查詢的相關性。 核心原理 文檔和查詢都被表示為稀疏向量(如詞袋模型),只有在詞…

LNA設計

設計目的 為后級提供足夠的增益以克服后級電路噪聲 盡可能小的噪聲和信號失真 確保輸入和輸出端的阻抗匹配 確保信號線性度 評價標準 噪聲系數 功率增益 工作頻率和帶寬 輸入信號功率動態范圍 端口電壓駐波比 穩定性 基于SP模型的LNA設計 直流分析 S參數分析 設計指標 &#xf…

Vue 常見組件及使用方式全解析

一、引言 在 Vue 開發中,組件是構建復雜用戶界面的基石。通過使用各種常見組件,我們可以快速搭建出功能豐富、交互性強的應用程序。本文將詳細介紹 Vue 開發中一些常見組件及其使用方式。 二、基礎 UI 組件 (一)按鈕組件&#…

設計測試用例模板

面試時問你一個場景,要你設計測試用例,你會怎么回答? 面試官讓你設計一個功能的測試用例,比如“上傳文件功能”,其實就是想考你: 思維是否全面能不能抓住重點會不會分類和使用測試方法有沒有考慮異常情況…

Git 解決“Filename too long”問題

在 Windows 系統中使用 Git 時,遇到 Filename too long 錯誤通常是由于系統默認的路徑長度限制(260 字符)導致的。以下是綜合多種場景的解決方案: 一、快速解決方法 啟用 Git 長路徑支持 通過 Git 配置命令允許處理超長文件名&am…

Spring Boot 3 + SpringDoc:打造接口文檔

1、背景公司 新項目使用SpringBoot3.0以上構建,其中需要對外輸出接口文檔。接口文檔一方面給到前端調試,另一方面給到測試使用。 2、SpringDoc 是什么? SpringDoc 是一個基于 Spring Boot 項目的庫,能夠自動根據項目中的配置、…

Swagger2Refit

把swagger相關接口轉成refit格式,以便其他服務調用 使用工具Refitter. Refitter 項目使用教程 Refit Client API Generator for OpenAPI 項目地址: github.com GitCode - 全球開發者的開源社區,開源代碼托管平臺 安裝 Refitter CLI 工具 首先,通過…

【java 13天進階Day05】數據結構,List,Set ,TreeSet集合,Collections工具類

常見的數據結構種類 集合是基于數據結構做出來的,不同的集合底層會采用不同的數據結構。不同的數據結構,功能和作用是不一樣的。數據結構: 數據結構指的是數據以什么方式組織在一起。不同的數據結構,增刪查的性能是不一樣的。不同…

systemctl管理指令

今天我們來繼續學習服務管理指令,接下來才是重頭戲-systemctl,那么話不多說,直接開始吧. systemctl管理指令 1.基本語法: systemctl [start | stop | restart | status]服務 注:systemctl指令管理的服務在/usr/lib/ systemd/system查看 2.systemctl設置服務的自…