(!萬字血書!)文本預處理:NLP 版 “給數據洗澡” 指南

?好吧,我承認我是個標題黨!(不這樣你會點進來享受這篇 ' 通俗易懂 ' 的好文章嗎?)?

正經標題文本預處理全流程:從基礎到實踐

(屏幕前的你,帥氣低調有內涵,美麗大方很優雅…

所以,求個點贊、收藏、關注唄~)

前言

伊索寓言里,農夫沒理順葡萄藤就猛澆水,藤蔓纏成一團,果子又小又澀。?

這像極了做自然語言處理 —— 有開發者直接把爬來的文本喂給模型,結果 “差點沒贏” 被認成輸,“好得不得了” 成了三個無關詞。?

原始文本就像亂麻般的葡萄藤:亂碼是野草,重復語氣詞是多余卷須,近義詞異寫是纏繞枝蔓。不先梳理干凈,再聰明的模型也結不出 “準果子”。?

本文跟著寓言思路,拆解預處理全流程:?

  • 剪除 “野草”(清亂碼)?
  • 剪掉 “卷須”(去冗余)?
  • 理順 “枝蔓”(統一表述)?

新手入門、老手優化,做好這步,NLP 的 “葡萄藤” 才能結甜果。跟著詩人啊_開始整理藤蔓吧

目錄

前言

文本預處理

1 認識文本預處理

1.1 核心作用

1.2 關鍵環節

1.3 語言適配

2 文本處理的基本方法

2.1 分詞

示例(定制化文本)

工具:jieba(Python 主流分詞庫)

2.2 命名實體識別(NER)

示例(定制化文本延伸)

作用

工具推薦

2.3 詞性標注

示例(定制化文本)

作用

2.4 小結

3 文本張量表示方法

3.1 核心目標

3.2 One - Hot 編碼

示例(定制化詞匯表)

實現代碼

優缺點

3.3 Word2Vec 模型

示例(用?fasttext?實現)

工具優勢

3.4 Word Embedding(詞嵌入)

實現(PyTorch 示例)

核心價值

3.5 小結

4 文本數據分析

4.1 核心作用

4.2 分析維度

(1)標簽分布(以分類任務為例)

(2)句子長度分布

(3)詞頻統計與詞云

4.3 小結

5 文本特征處理

5.1 核心目標

5.2 N - Gram 特征

示例(定制化文本)

實現代碼

5.3 文本長度規范

實現(Keras 示例)

5.4 小結

6 文本數據增強

6.1 核心目標

6.2 回譯增強法

實現(調用有道翻譯 API 示例)? # 這個被封了看個思路舊縣..現在直接用GTP

6.3 同義詞替換

實現(jieba?+ 同義詞詞林)

總結


文本預處理

在自然語言處理(NLP)任務中,文本預處理是模型訓練的基石。高質量的預處理能讓模型 “讀懂” 文本,直接影響最終效果。本章系統拆解文本預處理核心環節,從基礎概念到代碼實操,幫你構建完整知識體系。

1 認識文本預處理

1.1 核心作用

將原始文本轉化為模型可理解的格式(如張量、規范長度的序列),同時通過分析數據分布,指導后續流程(如超參數選擇、數據增強策略),最終提升模型評估指標(準確率、F1 值等)。

1.2 關鍵環節

文本預處理是一套 “流水線”,包含以下遞進步驟:

  • 文本處理基礎方法:分詞、詞性標注、命名實體識別(拆解文本語義單元)。
  • 文本張量表示:將詞轉化為數值向量(如 One - Hot、Word2Vec),讓模型可計算。
  • 文本數據分析:統計標簽分布、句子長度等,發現數據問題(如樣本不平衡)。
  • 文本特征處理:增強有效特征(如 N - Gram)、規范數據格式(長度補齊 / 截斷)。
  • 文本數據增強:擴充數據集,提升模型泛化能力。

1.3 語言適配

本章方法覆蓋中文 + 英文(最常用語言),實操中可靈活擴展到其他語種。

2 文本處理的基本方法

2.1 分詞

定義:將連續文本拆分為詞(或字)序列的過程。

  • 英文依賴空格分詞,中文需算法(如統計、深度學習)識別詞邊界。

示例(定制化文本)

原始文本:

詩人啊程序員,是我學習路上的引路人,幫我解開代碼與創作的雙重謎題!  

分詞結果(jieba精確模式):

['詩人', '啊', '程序員', ',', '是', '我', '學習', '路上', '的', '引路人', ',', '幫', '我', '解開', '代碼', '與', '創作', '的', '雙重', '謎題', '!']  

工具:jieba(Python 主流分詞庫)

  • 安裝pip install jieba
  • 核心模式
    • 精確模式(默認):適合文本分析,優先精準切分。
      import jieba  
      content = "詩人啊程序員,是我學習路上的引路人..."  
      result = jieba.lcut(content, cut_all=False)  
      print(result)  
      
    • 全模式:速度快,但會切出冗余組合(適合初步探索)。
      result = jieba.lcut(content, cut_all=True)  
      # 輸出含冗余詞:['詩人', '啊', '程序', '程序員', ...]  
      
    • 搜索引擎模式:對長詞二次切分(適合搜索場景)。
      result = jieba.lcut_for_search(content)  
      # 輸出更細粒度:['詩人', '啊', '程序', '程序員', '學習', '路上', ...]  
      
    • 自定義詞典:添加專業詞匯(如 “詩人啊程序員”),提升切分準確率。
      jieba.load_userdict("custom_dict.txt")  # 詞典格式:詞語 詞頻 詞性  
      result = jieba.lcut(content)  
      # 輸出可能包含:['詩人啊程序員', ...]  
      

2.2 命名實體識別(NER)

定義:識別文本中的專有名詞(人名、地名、機構名、時間、數字等)。

示例(定制化文本延伸)

詩人啊程序員中的“詩性代碼”理念,像李白的浪漫與圖靈的嚴謹融合,在人工智能峰會引發熱議。  

識別結果(簡化示意):

  • 人名:李白
  • 機構名:人工智能峰會
  • 專有概念:詩性代碼

作用

情感分析、信息抽取、知識圖譜提供關鍵實體,讓模型聚焦核心信息。

工具推薦

  • 中文:jieba(基礎版)、BERT - NER(深度學習版,需訓練 / 加載模型)。
  • 英文:spaCyNLTK

2.3 詞性標注

定義:標記文本中每個詞的語法屬性(如名詞、動詞、形容詞)。

示例(定制化文本)

我在學習路上與程序員交流人工智能創意  

標注結果(jieba.posseg):

[pair('我', 'rr'), pair('在', 'p'), pair('學習', 'v'), pair('路上', 'n'), ...]  
# rr:人稱代詞;p:介詞;v:動詞;n:名詞  

作用

輔助模型理解語法結構,為句法分析、文本生成(如詩歌創作)打基礎。

2.4 小結

  • 分詞是文本理解的 “第一步”,jieba是中文場景的高效工具。
  • 命名實體識別和詞性標注,進一步拆解文本語義與語法,為高階任務(如情感分析、知識圖譜)提供支撐。


3 文本張量表示方法

3.1 核心目標

詞 / 文本轉化為數值張量(如向量、矩陣),讓模型通過數學運算 “理解” 語義。

3.2 One - Hot 編碼

原理:用長度等于 “詞匯表大小” 的向量表示詞,僅對應詞的位置為1,其余為0

示例(定制化詞匯表)

詞匯表:["詩人啊程序員", "學習路上", "引路人", "代碼謎題"]
One - Hot 表示:

"詩人啊程序員" → [1, 0, 0, 0]  
"學習路上" → [0, 1, 0, 0]  

實現代碼

from tensorflow.keras.preprocessing.text import Tokenizer  # 1. 構建詞匯表  
vocabs = ["詩人啊程序員", "學習路上", "引路人", "代碼謎題"]  
tokenizer = Tokenizer()  
tokenizer.fit_on_texts(vocabs)  # 2. 生成 One - Hot 編碼  
for word in vocabs:  seq = tokenizer.texts_to_sequences([word])[0]  # 詞轉索引  one_hot = [0] * len(vocabs)  one_hot[seq[0] - 1] = 1  # 索引從 1 開始,需減 1  print(f"{word}: {one_hot}")  # todo: 輸出結果
'''
詩人啊程序員: [1, 0, 0, 0]
學習路上: [0, 1, 0, 0]
引路人: [0, 0, 1, 0]
代碼謎題: [0, 0, 0, 1]
'''

優缺點

  • 簡單直觀,易實現。
  • 詞匯表大時向量極度稀疏,且無法表達詞間語義關聯(如 “詩人” 和 “程序員” 的關聯性)。

3.3 Word2Vec 模型

原理:通過無監督訓練,將詞映射為稠密向量(語義相關的詞,向量距離更近)。

  • 模式:CBOW(用上下文預測目標詞)、Skip - Gram(用目標詞預測上下文)。

示例(用?fasttext?實現)

import fasttext# 1. 訓練詞向量(可替換為自定義語料)
model = fasttext.train_unsupervised("corpus.txt", model="skipgram", dim=100, minCount=1)# 2. 查看詞向量
vec = model.get_word_vector("詩人啊程序員")
print(f"詞向量維度:{vec.shape}")  # 輸出 (100,)# 3. 找相似詞
similar_words = model.get_nearest_neighbors("程序員")
print(f"相似詞:{similar_words}")# 輸出結果:
'''
詞向量維度:(100,)
相似詞:[(0.10706065595149994, '</s>'), (0.10659360885620117, '我在學習過程中,感受到程序員的代碼智慧與詩人的創作靈感交融。'), (-0.00556528102606535, '詩人啊程序員,是我學習路上的好朋友,總能幫我解答疑惑。'), (-0.03436730429530144, '編程如同寫詩,需要邏輯的嚴謹和創意的迸發,程序員和詩人有相似的思維火花。')]
'''

工具優勢

  • 捕捉詞間語義關聯(如 “程序員” 和 “開發者” 向量相近)。
  • 支持生僻詞處理(通過子詞分詞)。

3.4 Word Embedding(詞嵌入)

原理:神經網絡中可訓練的 “詞向量層”,隨模型訓練動態優化,更貼合任務需求。

實現(PyTorch 示例)

import torch
import torch.nn as nn# 1. 構建詞匯表(假設已分詞)
vocab = ["詩人", "程序員", "學習", "路上", ...]
vocab_size = len(vocab)
embedding_dim = 8# 2. 定義 Embedding 層
embedding = nn.Embedding(vocab_size, embedding_dim)# 3. 查看詞向量(需先將詞轉索引)
word_index = {"詩人": 0, "程序員": 1}
word_vec = embedding(torch.tensor(word_index["詩人"]))
print(f"詩人的詞向量:{word_vec.detach().numpy()}")# todo: 輸出結果'''
詩人的詞向量:[ 1.8813473   0.35883304 -0.34900337 -0.96565574 -0.15248121  1.4000998-1.0328294   0.48301077]
'''

核心價值

  • 特定任務定制詞向量(如情感分析中,“驚喜” 和 “失望” 的向量會隨訓練優化)。
  • 可通過?TensorBoard?可視化詞向量,輔助分析語義關聯。

3.5 小結

  • One - Hot 適合小詞匯表,Word2Vec 適合無監督語義挖掘,Word Embedding 適合任務定制。
  • 選擇方法時,需權衡語料規模、任務需求、計算成本


4 文本數據分析

4.1 核心作用

通過統計分析,發現數據規律與問題(如樣本不平衡、句子長度異常),指導后續預處理策略(如數據增強、長度規范)。

4.2 分析維度

(1)標簽分布(以分類任務為例)

目標:檢查樣本是否平衡(如情感分析中 “正面”“負面” 樣本比例)。

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt  # 導入matplotlib用于顯示圖表# 模擬數據
data = pd.DataFrame({"text": ["詩人啊程序員不行", "代碼創作頂呱呱", "學習感悟幾乎沒有", "程序員是詩人", "代碼創作不行"],"label": [0, 1, 0, 1, 0]  # 0: 負面,1: 正面
})# 設置中文字體,避免中文亂碼
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]# 繪制分布
sns.countplot(x="label", data=data)# 添加標題和標簽
plt.title("情感標簽分布")
plt.xlabel("標簽類型")
plt.ylabel("樣本數量")# 替換x軸刻度為有意義的文本
plt.xticks([0, 1], ["負面 (0)", "正面 (1)"])# 顯示圖表(這一步是關鍵,沒有它圖表不會會顯示圖表)
plt.show()

圖表:

問題處理:若樣本不平衡(如 1:9),可通過數據增強(回譯、同義詞替換)或采樣(過采樣少數類、欠采樣多數類)調整。

(2)句子長度分布

目標:統計文本長度范圍,為 “長度規范” 提供依據。

import pandas as pd  # 導入 pandas 庫,用于數據處理和分析
import jieba  # 導入 jieba 庫,用于中文分詞# 導入數據
# 使用 pandas 的 read_csv 函數從 'data/train.csv' 文件中讀取數據
# 'utf-8' 編碼確保正確讀取中文字符'''
train.csv 文件數據結構如下:label,text1,選擇珠江花園的原因就是方便,有電動扶梯直接到達海邊,周圍餐館、食廊、商場、超市、攤位一應俱全。酒店裝修一般,但還算整潔。 泳池在大堂的屋頂,因此很小,不過女兒倒是喜歡。 包的早餐是西式的,還算豐富。 服務嗎,一般1,15.4寸筆記本的鍵盤確實爽,基本跟臺式機差不多了,蠻喜歡數字小鍵盤,輸數字特方便,樣子也很美觀,做工也相當不錯0,房間太小。其他的都一般。。。。。。。。。
'''
# 我們可以看到',' 作為列與列分隔符,所以sep = ',',將原本一列的label和text分成了兩列
data = pd.read_csv('data/train.csv', encoding='utf-8', sep=',')# 打印數據的前 2 行,查看數據的基本情況
print("前2行數據:\n", data.head(2),data.head().shape)# 計算句子長度
# 使用 apply 函數和 lambda 表達式計算 'text' 列中每個句子的長度
# 將長度值存儲在新的 'length' 列中
data['length'] = data['text'].apply(lambda x: len(x))
# 打印數據的前 2 行,查看句子長度計算的結果
print('新前2行數據:\n', data.head(2))# todo: 運行結果
前2行數據:label                                               text
0      1  選擇珠江花園的原因就是方便,有電動扶梯直接到達海邊,周圍餐館、食廊、商場、超市、攤位一應俱全...
1      1  15.4寸筆記本的鍵盤確實爽,基本跟臺式機差不多了,蠻喜歡數字小鍵盤,輸數字特方便,樣子也很... (5, 2)
新前2行數據:label                                               text  length
0      1  選擇珠江花園的原因就是方便,有電動扶梯直接到達海邊,周圍餐館、食廊、商場、超市、攤位一應俱全...     106
1      1  15.4寸筆記本的鍵盤確實爽,基本跟臺式機差不多了,蠻喜歡數字小鍵盤,輸數字特方便,樣子也很...      56

實操建議

  • 若 90% 文本長度 < 100,可將最大長度設為 100(截斷 / 補齊)。
  • 若存在極端長文本(如 1000 字),需人工核驗是否為無效數據。

(3)詞頻統計與詞云

目標:發現高頻詞、分析文本主題。

import jieba.posseg as pseg
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 詞云生成
def word_cloud(data_good, data_bad):# 生成好評詞云# 1. 實例化一個詞云對象wordcloud_good = WordCloud(font_path='C:/Windows/Fonts/simhei.ttf', width=1000, height=800, background_color='white',max_words=12163, max_font_size=100, random_state=42, scale=2)# 2. 生成詞云wordcloud_good.generate(' '.join(data_good))# 3. 畫圖plt.imshow(wordcloud_good, interpolation='bilinear')plt.axis('off')  # 隱藏坐標軸plt.title("好評詞云", fontsize=18, fontproperties='simhei')  # 設置標題plt.show()  # 顯示圖像# 生成差評詞云# 1. 實例化一個詞云對象wordcloud_bad = WordCloud(font_path='C:/Windows/Fonts/simhei.ttf', width=1000, height=800, background_color='white',max_words=12163, max_font_size=100, random_state=42, scale=2)# 2. 生成詞云wordcloud_bad.generate(' '.join(data_bad))# 3. 畫圖plt.imshow(wordcloud_bad, interpolation='bilinear')plt.axis('off')  # 隱藏坐標軸plt.title("差評詞云", fontsize=18, fontproperties='simhei')  # 設置標題plt.show()  # 顯示圖像# 生成好評與差評混合詞云# 1. 實例化一個詞云對象wordcloud_mixed = WordCloud(font_path='C:/Windows/Fonts/simhei.ttf', width=1000, height=800, background_color='white',max_words=1000, max_font_size=100, random_state=42, scale=2)# 2. 生成詞云wordcloud_mixed.generate(' '.join(data_good + data_bad))# 3. 畫圖plt.imshow(wordcloud_mixed, interpolation='bilinear')plt.axis('off')  # 隱藏坐標軸plt.title("好評與差評混合詞云", fontsize=18, fontproperties='simhei')  # 設置標題plt.show()  # 顯示圖像# 測試
if __name__ == '__main__':data = pd.read_csv('./data/train.csv', sep=',')# process_data(data)print(f'數據總量---> {len(data)}條')data_t = data[data['label'] == 1]['text']print(f'好評數據量---> {len(data_t)}條')data_f = data[data['label'] == 0]['text']print(f'差評數據量---> {len(data_f)}條')list_t = []for line in data_t:for word, flag in pseg.lcut(line):if flag == 'a':list_t.append(word)print(f'好評形容詞---> {len(list_t)}個')list_f = []for line in data_f:for word, flag in pseg.lcut(line):if flag == 'a':list_f.append(word)print(f'差評形容詞---> {len(list_f)}個')word_cloud(list_t, list_f)# todo: 輸出結果
'''
好評數據量---> 4799條
差評數據量---> 4801條
好評形容詞---> 16368個
差評形容詞---> 12163個'''

詞云圖像:

價值:若高頻詞與任務無關(如 “的”“了”),需考慮停用詞過濾

4.3 小結

  • 數據分析是 “預處理的預處理”,能幫你避開數據分布不均、無效數據等坑。
  • 核心工具:pandas(統計)、seaborn(可視化)、wordcloud(詞云)。


5 文本特征處理

5.1 核心目標

  • 增強有效特征:如 N - Gram(捕捉詞的相鄰關系)。
  • 規范數據格式:統一文本長度(截斷 / 補齊),適配模型輸入。

5.2 N - Gram 特征

定義:提取文本中連續 n 個詞的組合(如 2 - Gram:“詩人 啊”“啊 程序員”),補充語義信息。

示例(定制化文本)

分詞列表:["詩人", "啊", "程序員", "是", "引路人"]
2 - Gram 特征:("詩人", "啊"), ("啊", "程序員"), ("程序員", "是"), ("是", "引路人")

實現代碼

def create_ngram_set(input_list, n=2):return set(zip(*[input_list[i:] for i in range(n)]))# 調用
words = ["詩人", "啊", "程序員", "是", "引路人"]
ngrams = create_ngram_set(words)
print(f"2 - Gram 特征:{ngrams}")# todo: 輸出結果
# 2 - Gram 特征:{('程序員', '是'), ('詩人', '啊'), ('啊', '程序員'), ('是', '引路人')}

價值:讓模型捕捉 “詞序關聯”(如 “詩人” 常和 “創作” 搭配)。

5.3 文本長度規范

需求:模型輸入需固定長度(如 RNN、Transformer 要求等長序列)。

實現(Keras 示例)

from tensorflow.keras.preprocessing.sequence import pad_sequences  # 模擬數據(數值化后的文本序列)  
sequences = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]  # 規范長度(最大長度 3,補齊用 0)  
padded = pad_sequences(sequences, maxlen=3, padding="post", truncating="post")  
print(padded)  
# 輸出:  
# [[1 2 3]  
#  [4 5 0]  
#  [6 7 8]]  

策略

  • padding="post":在序列末尾補齊。
  • truncating="post":超長時截斷末尾。

5.4 小結

  • N - Gram 補充詞序信息,適合捕捉短語、搭配。
  • 長度規范是模型輸入的 “必修課”,需結合數據分析結果(如 90% 文本長度)設置?maxlen

6 文本數據增強

6.1 核心目標

擴充數據集,緩解樣本不平衡問題,提升模型泛化能力(讓模型見更多 “變種文本”)。

6.2 回譯增強法

原理:利用翻譯工具,將文本譯為其他語言(如中文→英文→中文),生成 “語義相似但表述不同” 的新樣本。

實現(調用有道翻譯 API 示例)? # 這個被封了看個思路舊縣..現在直接用GTP

import requests  def back_translate(text):  # 中文→英文  url = "http://fanyi.youdao.com/translate"  data = {  "from": "zh", "to": "en", "i": text, "doctype": "json"  }  res = requests.post(url, data).json()  en_text = res["translateResult"][0][0]["tgt"]  # 英文→中文  data["from"] = "en"  data["to"] = "zh"  data["i"] = en_text  res = requests.post(url, data).json()  return res["translateResult"][0][0]["tgt"]  # 調用  
text = "詩人啊程序員,是我學習路上的引路人"  
new_text = back_translate(text)  
print(f"原文本:{text}\n新文本:{new_text}")  
# 輸出示例:  
# 原文本:詩人啊程序員,是我學習路上的引路人  
# 新文本:詩人啊程序員,是我學習道路上的引路人  

優化

  • 多語言接力翻譯(如中→日→英→中),降低與原文本重復率。
  • 控制翻譯次數(≤3 次),避免語義失真。

6.3 同義詞替換

原理:用同義詞替換文本中的詞(如 “好”→“優秀”),生成變體。

實現(jieba?+ 同義詞詞林)

import jieba  
from synonyms import near synonyms  # 需安裝:pip install synonyms  def replace_synonyms(text):  words = jieba.lcut(text)  new_words = []  for word in words:  syns = near synonyms(word)  if syns and len(syns[0]) > 1:  # 存在同義詞  new_words.append(syns[0][0])  # 選第一個同義詞  else:  new_words.append(word)  return "".join(new_words)  # 調用  
text = "詩人啊程序員,幫我解開代碼謎題"  
new_text = replace_synonyms(text)  
print(f"原文本:{text}\n新文本:{new_text}")  
# 輸出示例:  
# 原文本:詩人啊程序員,

總結

文本預處理這幾步看似瑣碎,卻是 NLP 的 “地基”。把數據 “洗” 干凈,模型才能少踩坑、出效果~

覺得有用?點個關注~

系列文章持續更新中, 欲知后事如何,且聽下回分解~

下一集鏈接---->?
文本預處理:NLP 版 “給數據洗澡” 指南-CSDN博客


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

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

相關文章

最新chrome瀏覽器elasticsearch-head無法安裝使用問題

chrome瀏覽器網址欄復制粘貼以下內容輸入回車 chrome://flags/#allow-legacy-mv2-extensions 找到Allow legacy extension manifest versions項右側選擇Enabled啟用&#xff0c;重啟瀏覽器即可。

CSS aspect-ratio 屬性

aspect-ratio 是 CSS 中用于控制元素寬高比的屬性&#xff0c;通過一行代碼即可實現響應式比例布局&#xff0c;無需復雜計算。它確保元素在不同屏幕尺寸下保持固定比例&#xff0c;提升響應式設計效率。一、基本語法與取值selector {aspect-ratio: <width> / <height…

FreeRTOS多核支持

個人博客&#xff1a;blogs.wurp.top 簡介 1. 多核支持概述 在傳統的單核系統中&#xff0c;FreeRTOS 通常運行在一個 CPU 核心上&#xff0c;負責任務調度、中斷處理和資源管理。然而&#xff0c;在多核系統中&#xff0c;多個核心可以并行執行不同的任務或線程&#xff0c…

CUDA中的基本概念

要學習cuda的同學相信已經對其有一定的了解了&#xff0c;至少直到它是干什么的了。這篇文章主要是對cuda編程中的主要概念進行總結&#xff0c;有了一個大致的輪廓后就好入手了。 異構架構 異構架構即使用CPU和GPU共同進行計算。GPU不能作為一個獨立的運行平臺&#xff08;程序…

【LINUX網絡】HTTP協議基本結構、搭建自己的HTTP簡單服務器

目錄 1. 初識HTTP 2. URL 2.1 基本結構 2.2 URL中的?與urldecode\urlencode 易混淆&#xff1a;URL和HTTP傳輸請求兩者是什么關系&#xff1f; HTTP的宏觀結構 3. DEMO CODE loop模塊&#xff0c;核心邏輯 HttpServer 初代版本&#xff08;DEMO 0.0&#xff09; DEMO 1.0 DEMO…

Spring Boot 靜態函數無法自動注入 Bean?深入解析與解決方案

在 Spring Boot 項目中&#xff0c;開發者常遇到一個典型問題&#xff1a;在靜態方法或靜態變量中嘗試使用 Autowired 注入 Bean 時&#xff0c;始終得到 null 值。本文將深入剖析這一問題的根源&#xff0c;并提供多種可靠解決方案。問題重現&#xff1a;為什么注入失敗&#…

存儲過程作為系統邏輯核心的架構思考 —— 以 SaaS 系統為例

在企業級系統尤其是 SaaS 架構中&#xff0c;技術選型一旦確定&#xff0c;就意味著底層數據庫類型基本不會輕易更換。既然如此&#xff0c;我們可以更大膽地將數據庫能力本身納入系統設計的核心&#xff0c;而不僅僅把它當成一個被動的存儲引擎。存儲過程&#xff08;Stored P…

Ubuntu20.04下Remmina的VNC密碼忘記后重置

你遇到的錯誤&#xff1a; ** error creating password: /home/ysc/.vnc/passwd storepasswd: No such file or directory說明&#xff1a;x11vnc -storepasswd 無法創建密碼文件&#xff0c;因為 .vnc 目錄不存在。 雖然你可能以為路徑是對的&#xff0c;但系統找不到 /home/y…

從“存得對”到“存得準”:MySQL 數據類型與約束全景指南

目錄 一、為什么需要數據類型與約束&#xff1f; 二、MySQL 數據類型全覽 1. 數值類型&#xff1a;精確 VS 近似 2. 日期時間類型&#xff1a;別讓“0000-00-00”出現 3. 字符串類型&#xff1a;CHAR、VARCHAR、TEXT、BLOB 4. JSON 類型&#xff1a;文檔與關系共舞 5. 空…

Effective C++ 條款42:了解 typename 的雙重含義

Effective C 條款42&#xff1a;了解typename的雙重含義 核心思想&#xff1a;在模板聲明中&#xff0c;typename和class可互換使用&#xff0c;但在模板內部&#xff0c;typename必須用于顯式指明嵌套從屬類型名稱&#xff08;nested dependent type name&#xff09;&#xf…

ENCOPIM, S.L. 參展 AUTO TECH China 2025 廣州國際汽車技術展覽會

ENCOPIM, S.L. 參展 AUTO TECH China 2025 廣州國際汽車技術展覽會2025年11月21-24日中國進出口商品交易會展館D區(廣州)AUTO TECH China 2025同期&#xff1a;第二十三屆廣州車展即將盛大開幕展商推薦ENCOPIM, S.L.展位號&#xff1a;3916企業簡介&#xff1a;ENCOPIM, S.L.于…

30 HTB Soccer 機器 - 容易

主要知識點 第一階段&#xff1a;偵查 nmap nmap快速掃描&#xff1a; oxdfhacky$ nmap -p- --min-rate 10000 10.10.11.194 Starting Nmap 7.80 ( https://nmap.org ) at 2023-06-04 13:32 EDT Nmap scan report for 10.10.11.194 Host is up (0.093s latency). Not shown:…

阿里云機器翻譯接口SDK-RAM權限配置

用戶授權翻譯權限在數字化時代&#xff0c;短信作為企業與用戶溝通的重要橋梁&#xff0c;其高效、可靠的送達直接影響業務轉化與用戶體驗。SDK&#xff08;軟件開發工具包&#xff09;的出現極大簡化了短信功能的集成過程&#xff0c;讓開發者能夠快速在應用中嵌入短信驗證、通…

ESXI 6.7服務器時間錯亂問題

1. 設置ESXI服務器&#xff1a;在此主機上手動配置日期和時間管理-服務-ntpd-鼠標右鍵-策略-手動啟動和停止&#xff0c;狀態已停止管理-系統-時間和日期-編輯設置-檢查是否選擇了【在此主機上手動配置日期和時間】ntp服務狀態已停止ntp服務器已停止2. 停止所有虛擬機自動更新時…

CV 醫學影像分類、分割、目標檢測,之【皮膚病分類】項目拆解

CV 醫學影像分類、分割、目標檢測&#xff0c;之【皮膚病分類】項目拆解第1-12行&#xff1a;導入庫第14-17行&#xff1a;讀取標簽文件第19-21行&#xff1a;獲取疾病名稱第23-26行&#xff1a;獲取圖片名列表第28-35行&#xff1a;篩選有標簽的圖片第38-43行&#xff1a;提取…

【JavaEE】多線程 -- 線程狀態

目錄六大狀態舉例說明六大狀態 New 新建狀態&#xff1a;線程還沒出創建&#xff0c;只有Thread 實例化的對象&#xff0c;調用start 方法之前的狀態。Runnable 運行狀態&#xff1a;被系統調度后&#xff0c;CPU 正在執行的&#xff0c;Ready 就緒態&#xff0c;系統調度&…

網絡流初步

網絡流初步 文章目錄網絡流初步概念介紹最大流費用流概念介紹 網絡流不同之處在于它的本質圖論&#xff0c;但是把圖論的某些概念換了一個說法而已&#xff0c;初步只要了解網絡流的各個概念就可以明白的很快。 下述概念是本人自己定義的&#xff0c;對于網絡流的題目做的還不…

[系統架構設計師]系統架構基礎知識(一)

[系統架構設計師]系統架構基礎知識&#xff08;一&#xff09; 一.計算機系統基礎知識 1.計算機系統概述 硬件軟件及網絡組成的系統 2.計算機硬件基礎知識 馮 諾依曼結構&#xff1a;運算器&#xff0c;控制器&#xff0c;存儲器&#xff0c;輸入設備&#xff0c;輸出設備 專用…

深入解析Java代理模式:靈活控制對象訪問的核心技術

在日常開發中&#xff0c;我們常遇到這樣的場景&#xff1a;需要控制對象訪問權限、優化高成本操作&#xff0c;或給方法添加額外功能&#xff08;如日志、事務&#xff09;。代理模式&#xff08;Proxy Pattern&#xff09; 正是解決這類問題的金鑰匙。作為結構型設計模式的代…

【學習筆記】Java并發編程的藝術——第9章 Java中的線程池

第9章 Java中的線程池 線程池優勢&#xff1a; ①減少資源消耗 ②提高響應速度 ③統一管理 9.1 線程池的實現原理 當任務來后 ①判斷核心線程池是否已滿&#xff0c;若未滿&#xff0c;創建一個核心線程來執行任務 ②若無空閑核心線程且核心線程已滿&#xff0c;則將任務放入任…