生成完美口型同步的 AI 數字人視頻

目錄

摘要

關鍵詞

1 前言

1.1 研究背景

1.2 研究意義

2 技術框架

2.1 深度學習框架

2.2 語音識別

2.3 面部動作捕捉和口型同步

2.4 綜合項目

3 實現過程

3.1 環境搭建

3.2 代碼開發

3.3 整合代碼

3.4 部署

3.5 更多細節

4 測試過程

4.1 數據準備

4.2 面部檢測測試

4.3 語音識別測試

4.4 文本到口型映射測試

4.5 面部動作遷移和口型同步測試

4.6 如何評估面部動作遷移的效果

5 實驗結果

5.1 技術整合與實現

5.2 最后結果

結論

參考文獻


摘要

在當今數字媒體和人工智能技術的推動下,生成完美口型同步的AI數字人視頻成為備受關注的研究領域。本研究旨在開發一種技術,能夠實現生成完美口型同步的AI數字人視頻,使虛擬人物的口型與語音內容完美匹配。采用了深度學習方法,結合了語音識別、面部運動生成和視頻合成技術,以實現這一目標。通過語音識別模型將輸入的文本轉換為音頻波形,利用面部運動生成模型根據音頻波形生成對應的面部動作序列,這些動作序列可以準確地反映出發音的口型和面部表情,最后生成口型同步的AI數字人視頻。這項技術具有廣泛的應用前景,可用于虛擬主持人、教育視頻、學習平臺等領域,提升視頻內容的真實感和溝通效果。

關鍵詞

深度學習;語音識別;面部動作捕捉;口型同步

1 前言

1.1 研究背景

隨著人工智能技術的快速發展和普及,數字媒體內容的需求與日俱增。在多媒體應用中,生成完美口型同步的AI數字人視頻成為了一個備受關注的前沿技術研究領域。該技術旨在利用語音識別、面部表情合成和計算機圖形學等技術,實現從語音或文本輸入生成逼真的人臉動畫,并確保其與語音內容完美同步。口型同步AI數字人視頻具有廣泛的應用前景,可應用于虛擬助手、數字媒體內容制作、在線教育等領域,為用戶提供更生動、更具交互性的體驗。

1.2 研究意義

在理論上,探索口型同步技術的關鍵問題,推動語音識別、面部表情合成等領域的交叉發展和創新。在應用上,促進虛擬助手、在線教育、數字媒體內容制作等領域的智能化和人機交互體驗的提升。為未來智能交互界面和數字內容創作提供新的可能性和前景,推動人工智能技術在多媒體領域的應用和發展。

2 技術框架

在實現生成完美口型同步的AI數字人視頻過程中,涉及到多個關鍵的技術框架和工具,包括深度學習框架、語音識別系統、面部動作捕捉和口型同步模型等。以下將針對每個方面進行詳細解釋和介紹。

2.1 深度學習框架

TensorFlow:https://github.com/tensorflow/tensorflow

TensorFlow是一個由Google Brain團隊開發的開源深度學習框架。它允許開發者創建多種機器學習模型,包括卷積神經網絡、循環神經網絡和深度神經網絡等。TensorFlow支持多硬件加速,包括CPU、GPU和TPU,使其適合高性能計算和分布式訓練。它擁有龐大而活躍的社區,提供了大量的文檔、教程和資源,使得學習和使用TensorFlow變得更加容易。

PyTorch:https://github.com/pytorch/pytorch

PyTorch是一個動態圖深度學習框架,以其易用性和靈活性而著稱。它允許開發者使用Python進行高效的GPU加速深度學習模型開發。PyTorch具有簡潔的API和快速的原型設計能力,使其在研究和實驗方面非常受歡迎。

2.2 語音識別

DeepSpeech:https://github.com/mozilla/DeepSpeech

DeepSpeech是Mozilla開發的一個開源語音識別工具包,它基于TensorFlow或PyTorch。DeepSpeech可以識別多種語言和方言,并在實時語音識別和離線語音識別方面取得了顯著成果。它提供了一個端到端的系統,包括特征提取、聲學模型、語言模型和解碼器等部分。

Kaldi:https://github.com/kaldi-asr/kaldi

Kaldi是一個廣泛使用的語音識別工具包,由約翰霍普金斯大學開發。它提供了豐富的語音識別算法和工具,包括特征提取、聲學模型訓練、解碼器構建等。Kaldi在學術和工業界都有廣泛的應用,并在多個語音識別比賽中取得了優異的成績。

2.3 面部動作捕捉和口型同步

First Order Motion Model:https://github.com/AliaksandrSiarohin/first-order-motion-model

First Order Motion Model是一個使用深度學習進行面部動作遷移的項目。它基于自監督學習方法,可以捕捉源視頻中人物的面部動作,并將其遷移到目標視頻中的人物上。該項目在口型同步方面取得了很好的效果,使得生成的視頻看起來更加自然和真實。

VoxCeleb:VoxCeleb (數據集鏈接)

VoxCeleb是一個大型音頻-視頻數據集,包含來自YouTube的短視頻片段。該數據集主要用于面部動作捕捉、語音識別等任務的研究。通過利用VoxCeleb數據集,研究人員可以訓練出更加準確和魯棒的模型,提高面部動作捕捉和口型同步的性能。

Dlib:https://github.com/davisking/dlib

Dlib是一個包含機器學習算法的C++庫,其中包括面部關鍵點檢測的功能。它提供了一系列高效的面部關鍵點檢測算法,可以實時捕捉面部表情和動作。Dlib的面部關鍵點檢測算法在精度和速度方面都取得了很好的平衡,因此在面部動作捕捉和口型同步等應用中得到了廣泛應用。

2.4 綜合項目

DeepFaceLive:https://github.com/iperov/DeepFaceLive

DeepFaceLive是一個實時面部動作遷移工具,它使用深度學習模型將一個人的面部動作應用到另一個人的視頻上。該項目基于First Order Motion Model算法,并進行了優化和改進,使其能夠在實時視頻流中實現高質量的面部動作遷移。DeepFaceLive可以應用于虛擬直播、電影特效等領域。

FaceGAN:https://github.com/eladrich/pixel2style2pixel

FaceGAN是一個使用生成對抗網絡(GANs)進行面部生成和動畫化的項目。它基于一種新穎的編碼器-解碼器架構,可以生成高質量的面部圖像并進行動畫化。FaceGAN在面部動作捕捉和口型同步方面有著廣泛的應用前景,可以生成逼真的面部表情和動作。

3 實現過程

3.1 環境搭建

選擇操作系統:推薦使用Ubuntu或macOS,確保系統支持深度學習和圖像處理。

安裝Python:確保安裝了Python 3.x版本,并配置好Python環境變量。

安裝深度學習框架:選擇TensorFlow或PyTorch作為深度學習框架,并根據所選框架安裝相應版本。

安裝其他依賴庫:安裝OpenCV、Dlib、NumPy、Pandas、PyDub、librosa等庫,以及所需的語音識別工具(如DeepSpeech或Kaldi)。

下載和配置模型:下載First Order Motion Model(FOMM)或FaceGAN的預訓練模型,并下載語音識別工具的模型或語言包。

3.2 代碼開發

(1)面部關鍵點檢測

確保安裝了dlib和opencv-python庫,因為它們分別用于面部檢測和圖像處理。

import dlib  
import cv2  def get_landmarks(img_path):  # 初始化面部檢測器和關鍵點預測器  detector = dlib.get_frontal_face_detector()  predictor_path = "shape_predictor_68_face_landmarks.dat"  # 確保該文件位于當前工作目錄或提供完整路徑  predictor = dlib.shape_predictor(predictor_path)  # 讀取圖像  img = cv2.imread(img_path)  if img is None:  raise FileNotFoundError(f"Image not found at {img_path}")  # 轉換為灰度圖像以加快處理速度  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 檢測面部  dets = detector(gray, 1)  landmarks = []  # 對每個檢測到的面部,獲取關鍵點  for k, d in enumerate(dets):  shape = predictor(gray, d)  # 獲取68個關鍵點的坐標,并添加到列表中  landmark_list = [(shape.part(i).x, shape.part(i).y) for i in range(shape.num_parts)]  landmarks.append(landmark_list)  # 如果沒有檢測到面部,返回空列表  if not landmarks:  print("No faces detected in the image.")  return landmarks

(2)語音識別

對于DeepSpeech或Kaldi,按照其文檔來安裝和配置。

from deepspeech import Model  def asr_from_audio(audio_file_path, model_path, scorer_path=None):  # 加載DeepSpeech模型  ds = Model(model_path)  if scorer_path:  ds.enableExternalScorer(scorer_path)  # 如果提供了評分器模型,則啟用它  # 此處實現音頻文件加載和預處理的代碼,例如轉換為MFCC特征等  # audio_data = load_and_preprocess_audio(audio_file_path)  # 假設audio_data現在包含了處理后的音頻數據  # 使用模型進行語音識別  text = ds.stt(audio_data)  # 清理資源(如果有必要)  # ds.destroy()  return text  # 實現load_and_preprocess_audio函數來加載和預處理音頻文件

(3)面部動作遷移與口型同步

面部動作遷移是一個復雜的任務,涉及到深度學習和計算機視覺的多個方面。

import cv2  
import numpy as np  
from first_order_motion_model import FirstOrderMotionModel  # 假設已經有了處理音頻并返回文本的函數  
def get_text_from_audio(audio_file_path):  # 實現音頻到文本的轉換  pass  def animate_face(source_image_path, driving_video_path, audio_file_path, model_path):  # 加載預訓練模型  fomm = FirstOrderMotionModel(config_path=model_path)  # 讀取源圖像和驅動視頻  source_image = cv2.imread(source_image_path)  driving_video = cv2.VideoCapture(driving_video_path)  # 獲取源圖像的關鍵點  source_landmarks = get_landmarks(source_image_path)[0] if source_image is not None else None  # 初始化輸出視頻  fourcc = cv2.VideoWriter_fourcc(*'mp4v')  out = cv2.VideoWriter('output.mp4', fourcc, driving_video.get(cv2.CAP_PROP_FPS), (int(driving_video.get(cv2.CAP_PROP_FRAME_WIDTH)), int(driving_video.get(cv2.CAP_PROP_FRAME_HEIGHT))))  # 文本到口型關鍵點的轉換(如果的話)  def text_to_mouth_movements(text):  # 這里實現一個復雜的系統來將文本轉換為

3.3 整合代碼

初始化項目

創建一個新的項目目錄,并在其中組織代碼和依賴項。

編寫主函數或腳本

編寫一個主函數或腳本,它按順序執行以下步驟

a 讀取源圖像和驅動視頻

使用cv2.imread()讀取源圖像,并使用cv2.VideoCapture()打開驅動視頻。

source_image = cv2.imread(source_image_path)  
driving_video = cv2.VideoCapture(driving_video_path)

b 面部關鍵點檢測

對驅動視頻中的每一幀進行面部關鍵點檢測。可以使用前面定義的get_landmarks函數。

landmarks_list = []  
while True:  ret, frame = driving_video.read()  if not ret:  break  landmarks = get_landmarks(frame)  if landmarks:  landmarks_list.append(landmarks[0])  # 假設每幀只有一個面部  # ...(可能的其他處理)  
driving_video.release()

c 語音識別

使用asr_from_audio函數(或類似的函數)將音頻文件轉換為文本。先實現音頻加載和預處理的代碼。

text = asr_from_audio(audio_file_path, model_path, scorer_path)

d 面部動作遷移

使用First Order Motion Model或其他面部動作遷移模型,結合檢測到的面部關鍵點和語音識別得到的文本,生成動畫。

# 初始化面部動作遷移模型  
effector = FirstOrderMotionModel(...)  
# 使用源圖像、關鍵點信息和文本進行面部動作遷移  
# 這通常是一個迭代過程,處理驅動視頻的每一幀  
generated_frames = []  
for landmarks in landmarks_list:  # 根據文本調整模型行為(這部分是偽代碼)  # adjust_model_for_text(effector, text)  frame = effector.predict(source_image, landmarks)  generated_frames.append(frame)

e 保存或顯示生成的動畫

將生成的幀保存為視頻文件或逐幀顯示。

# 使用cv2.VideoWriter保存為視頻文件  
# ...  # 或者使用matplotlib或OpenCV的imshow函數逐幀顯示  
# ...

3.4 部署

本地運行

在本地計算機上運行腳本或主函數,確保所有依賴項都已正確安裝。

Web應用

設置后端:使用Flask、Django等框架設置后端API,處理文件上傳、調用面部關鍵點檢測、語音識別和面部動作遷移功能。

構建前端:使用HTML、CSS和JavaScript構建前端界面,允許用戶上傳圖像、視頻和音頻文件,并顯示生成的動畫。

前后端通信:使用AJAX、Fetch API或WebSocket等技術實現前后端之間的通信。

部署:將Web應用部署到Web服務器上,如Nginx、Gunicorn等。

云服務

將Web應用部署到云服務提供商(如阿里云,華為云等)上,以便從任何位置訪問應用程序。這通常涉及到配置云服務提供商提供的虛擬機、容器服務或服務器無服務器函數。

3.5 更多細節

(1)面部檢測和關鍵點定位

使用dlib庫中的get_frontal_face_detector來檢測圖像或視頻幀中的面部。

使用shape_predictor來定位面部的關鍵點,如眼睛、鼻子、嘴巴等。

這些關鍵點對于后續的面部動作遷移至關重要,因為它們提供了面部形狀和表情的信息。

(2)語音識別(ASR)

使用如Google Speech-to-Text、Mozilla DeepSpeech或Kaldi等ASR工具將音頻轉換為文本。

這些工具通常預訓練的模型來處理不同語言的音頻輸入。

ASR的準確性對于后續的口型同步至關重要,因為錯誤的文本會導致不自然的口型變化。

(3)文本到口型映射

這一步是將ASR生成的文本轉換為口型關鍵點的變化。

通常訓練一個專門的模型來實現這個映射,因為文本和口型之間的關系并不是直接對應的。

這個模型可能大量的標注數據來訓練,其中每個文本單詞或短語都與一組口型關鍵點相對應。

如果沒有現成的模型,可能使用技術如序列到序列模型(Seq2Seq)或生成對抗網絡(GAN)來訓練自己的模型。

(4)面部動作遷移

使用如First Order Motion Model(FOMM)或類似的技術來遷移面部動作。

FOMM基于自監督學習,能夠分離出源視頻中的身份信息和目標視頻中的動作信息。

通過將源圖像的身份信息與目標視頻的動作信息相結合,可以生成具有目標動作但保持源身份的新視頻幀。

這個過程通常涉及到密集的光流估計、關鍵點轉換和圖像渲染等技術。

(5)口型同步

在面部動作遷移的基礎上,將文本到口型映射的結果與遷移后的面部動作相結合,以實現口型的同步。

這可能將口型關鍵點的變化與面部動作遷移的結果進行融合,以確保口型的變化與文本內容一致。

可能還進行一些后處理步驟,如平滑處理、邊界處理等,以提高生成視頻的質量。

(6)視頻生成和輸出

將遷移后的面部動作和同步的口型與原始視頻的背景相結合,生成最終的輸出視頻。

這可能涉及到圖像合成、視頻編碼和壓縮等技術。

最終的視頻可以通過常見的視頻格式(如MP4、AVI等)進行保存和分享。

4 測試過程

4.1 數據準備

面部檢測數據:準備包含不同面部角度、光照條件、遮擋情況的圖像和視頻數據集。

語音識別數據:收集包含不同語音質量(如清晰、有噪聲、不同語速等)的音頻文件,并準備相應的文本標簽用于驗證。

面部動作遷移數據:準備源圖像、目標視頻和對應的音頻文件,以模擬實際應用場景。

4.2 面部檢測測試

使用面部檢測算法在面部檢測數據集上進行測試。

評估檢測結果的準確性,包括召回率(檢測到的面部數量與真實面部數量的比例)和精確率(檢測到的面部中真實面部的比例)。

檢查是否存在誤檢或漏檢的情況,并嘗試優化算法以提高性能。

4.3 語音識別測試

使用語音識別系統對語音識別數據集進行轉錄。

將轉錄結果與真實的文本標簽進行比較,計算詞錯誤率(WER)或字符錯誤率(CER)來評估識別的準確性。

分析識別錯誤的類型和原因,如噪聲干擾、語速過快、發音不清晰等,并嘗試通過調整模型參數或增加訓練數據來提高識別性能。

4.4 文本到口型映射測試

準備一個包含文本和對應口型關鍵點變化的數據集。

使用文本到口型映射模型將文本轉換為口型關鍵點變化。

將生成的口型關鍵點變化與真實的口型關鍵點變化進行比較,評估映射的準確性和可靠性。

如果可能的話,可以使用可視化工具來直觀地檢查生成的口型是否與文本內容相符。

4.5 面部動作遷移和口型同步測試

使用面部動作遷移系統對源圖像和目標視頻進行遷移。

在遷移過程中,將文本到口型映射的結果與面部動作遷移的結果相結合,實現口型的同步。

評估遷移后視頻的視覺效果和口型同步的效果。

可以通過人工評估和定量指標(如結構相似性度量SSIM、峰值信噪比PSNR等)來評估視頻質量。

檢查是否存在不自然的面部動作或口型變化,并嘗試優化遷移算法和同步機制以提高效果。

4.6 如何評估面部動作遷移的效果

評估面部動作遷移的效果通常涉及對比原始視頻與遷移后視頻的視覺質量、身份保持、表情真實性和動作一致性等方面。

如果遷移技術不夠成熟或應用不當,可能會導致生成的面孔表情或動作顯得不自然,甚至扭曲,給人帶來不舒適的感覺。

在遷移過程中,如果處理不當,可能會導致原始面孔的身份特征丟失或被混淆,使得生成的面孔難以辨認或識別。

5 實驗結果

5.1 技術整合與實現

首先通過語音識別技術將輸入的語音或文本轉化為音頻特征,接著利用深度學習模型對音頻特征進行處理,提取出與語音內容相關的關鍵信息。

在面部動作捕捉階段,采用了面部關鍵點檢測技術,能夠準確識別并跟蹤人臉的細微動作。通過將這些動作與從音頻特征中提取的關鍵信息相結合,能夠實現面部動作的遷移。

最后,利用口型同步技術,確保生成的面部動畫與語音內容在時間上保持一致。通過調整面部動畫的播放速度、口型形狀等參數,能夠使動畫與語音內容完美同步。

5.2 最后結果

為了驗證系統的性能,進行了一系列實驗。在標準數據集上測試了語音識別技術的準確率,并發現其能夠準確地將語音或文本轉化為音頻特征。接著利用深度學習模型對音頻特征進行處理,并生成了與語音內容相關的面部動作。通過對比真實人臉動畫和生成的動畫,發現生成的動畫在表情、口型等方面都非常逼真。

此外,還對生成的動畫進行了口型同步的評估。結果表明口型同步技術能夠有效地確保動畫與語音內容在時間上保持一致。無論是快速講話還是慢速講話,系統都能夠準確地調整動畫的播放速度,以實現與語音內容的完美同步。

結論

本文所提出的方法成功地將深度學習、語音識別、面部動作捕捉以及口型同步技術融合在一起,實現了從語音或文本輸入生成逼真的人臉動畫,并確保其與語音內容完美同步。通過一系列實驗驗證和結果展示,證明了該系統的有效性和實用性。

首先,語音識別模塊能夠準確地將輸入的語音或文本轉化為音頻特征,為后續的面部動作捕捉和口型同步提供了堅實的基礎。

其次,面部動作捕捉模塊通過先進的面部關鍵點檢測技術,能夠準確地識別并跟蹤人臉的細微動作,包括表情變化和口型運動。這一步驟的準確性直接決定了最終生成的人臉動畫的逼真程度。

最后,口型同步技術通過調整面部動畫的播放速度、口型形狀等參數,確保了動畫與語音內容在時間上的完美同步。這不僅提高了用戶體驗,還使得生成的動畫更加自然和流暢。

總的來說,本文的研究不僅推動了深度學習、語音識別、面部動作捕捉以及口型同步技術的融合與發展,還為相關領域的研究和應用提供了新的思路和方法。未來將進一步優化系統的性能,提高動畫的逼真度和自然度,并探索更多應用場景,以推動該領域的發展。

參考文獻

[1] 作者: Martín Abadi, et al. 文獻題名:TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems 發布地方:GitHub倉庫(https://github.com/tensorflow/tensorflow)

[2] 作者: Adam Paszke, et al. 文獻題名:Automatic differentiation in PyTorch 發布地方: GitHub倉庫(https://github.com/pytorch/pytorch)

[3] 作者: Baidu Research. 文獻題名:DeepSpeech: Scaling up end-to-end speech recognition 發布地方: ArXiv

[4] 作者: Daniel Povey, et al. 文獻題名:The Kaldi Speech Recognition Toolkit 發布地方: ASRU 2011 Tutorial

[5] 作者: Aliaksandr Siarohin, et al. 文獻題名: First Order Motion Model for Image Animation 發布地方: ArXiv

[6] 作者: Arsha Nagrani, et al. 文獻題名: VoxCeleb: A Large-scale Speaker Identification Dataset 發布地方: INTERSPEECH 2017

[7]作者: Elad Richardson, et al. 文獻題名: Encoding in Style: a StyleGAN Encoder for Image-to-Image Translation 發布地方: ArXiv

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

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

相關文章

語法分析-文法

如果對于一部文法中,存在至少一個句子有兩個或者兩個以上的語法樹則該文法是二義性的。 我們可以以上面的例子進行解釋,對于第棵個語法樹,我們可以看到是先進行了加法運算再進行的乘法運算,因為需要先把EE作為整體運算完后再成為E…

上海亞商投顧:滬指低開低走 兩市成交額跌破8000億

上海亞商投顧前言:無懼大盤漲跌,解密龍虎榜資金,跟蹤一線游資和機構資金動向,識別短期熱點和強勢個股。 一.市場情緒 市場全天震蕩走低,三大股指尾盤均跌近1%。地產股逆勢走強,光大嘉寶、天地源、云南城投…

幻獸帕魯Palworld服務器手動+docker部署方法+備份遷移

目錄 帕魯部署官方文檔帕魯手動安裝法手動安裝steamcmd通過steamcmd安裝帕魯后端 docker容器一鍵部署幻獸帕魯綠聯云NAS機器部署幻獸帕魯客戶端連接附錄1:PalServer.sh的啟動項附錄2:配置文件游戲存檔保存和遷移 關于阿里云計算巢 帕魯部署官方文檔 htt…

學習MySQL(五):窗口函數

窗口函數介紹 窗口函數的引入是為了解決想要既顯示聚集前的數據,又要顯示聚集后的數據;窗口數對一組值進行操作,不需要使用GROUP BY子句對數據進行分組,能夠在同一行中同時返回基礎行的列和聚合列。 強調:使用MySQL …

?學者觀察 | 從區塊鏈應用創新看長安鏈發展——CCF區塊鏈專委會榮譽主任斯雪明

導語 2024年1月27日,斯雪明教授在長安鏈發布三周年慶暨生態年會上發表演講,認為在區塊鏈發展過程中,不僅需要技術創新,同時需要有價值、有特色、有示范意義的應用創新。斯雪明教授介紹了國內區塊鏈技術與應用發展的現狀、趨勢與挑…

【數據結構】排序(直接插入排序,希爾排序)

目錄 一、排序的概念 二、常見的排序算法 三、插入排序 1.直接插入排序 1.直接插入排序實現 2.直接插入排序特性及復雜度 2.希爾排序 1.排序思路 2.希爾排序實現 3.希爾排序的特性及復雜度 一、排序的概念 排序:所謂排序,就是使一串記錄&#x…

python手寫數字識別(PaddlePaddle框架、MNIST數據集)

python手寫數字識別(PaddlePaddle框架、MNIST數據集) import paddle import paddle.nn.functional as F from paddle.vision.transforms import Compose, Normalizetransform Compose([Normalize(mean[127.5],std[127.5],data_formatCHW)]) # 使用tran…

[Java基礎揉碎]多線程基礎

多線程基礎 什么是程序, 進程 什么是線程 什么是單線程,多線程 并發, 并行的概念 單核cpu來回切換, 造成貌似同時執行多個任務, 就是并發; 在我們的電腦中可能同時存在并發和并行; 怎么查看自己電腦的cpu有幾核 1.資源監視器查看 2.此電腦圖標右鍵管理- 設備管理器- 處理器…

k8s 二進制安裝 詳細安裝步驟

目錄 一 實驗環境 二 操作系統初始化配置(所有機器) 1,關閉防火墻 2,關閉selinux 3,關閉swap 4, 根據規劃設置主機名 5, 做域名映射 6,調整內核參數 7, 時間同步 三 部署 dock…

uniapp vu3 scroll-view 滾動到指定位置

設置 scroll-view <scroll-view :scroll-y"true" :scroll-with-animation"true" :scroll-top"scrollTop" :style"height:${height}px"><view v-for"item in 10" :id"box${item}">box {{item}}</v…

原生IP介紹

原生IP&#xff0c;顧名思義&#xff0c;即初始真實IP地址&#xff0c;是指從互聯網服務提供商獲得的IP地址&#xff0c;IP地址在互聯網與用戶之間直接建立聯系&#xff0c;不需要經過代理服務器代理轉發。 原生IP具備以下特點。 1.直接性 原生IP可以直接連接互聯網&#xff…

337_C++_內存對齊操作,內存分配、或其他需要數據對齊的場合中是很常見的操作

size_t ImagesCache::_alignSize(size_t srcSz, size_t alnSz) {if (0 == alnSz) {printf("[ImagesCache] Incorrect input parameters\n");return srcSz;

代碼隨想錄算法訓練營第五十四天

第二題我看了很久還是沒太明白&#xff0c;我發現理解動規有一點點吃力了啊&#xff0c;努努力。 392.判斷子序列 總感覺在不等于的時候&#xff0c;應該是dp[i][j] dp[i-1][j-2]; 這里其實按他那個圖會更好理解一點。 class Solution { public:bool isSubsequence(string s, …

Gone框架介紹19 -如何進行單元測試?

gone是可以高效開發Web服務的Golang依賴注入框架 github地址&#xff1a;https://github.com/gone-io/gone 文檔地址&#xff1a;https://goner.fun/zh/ 請幫忙在github上點個 ??吧&#xff0c;這對我很重要 &#xff1b;萬分感謝&#xff01;&#xff01; 文章目錄 單元測試…

CentOs安裝

安裝 開發工具 &#xff1a;GCC、 JDK、mysql 如果出現藍屏&#xff0c;要在BIOS開啟虛擬化支持&#xff0c;或者移除打印機。

Google:站長移除無效網址

當您的網址不需要呈現在Google站長中時&#xff0c;您可以在站長工具中移除網址 操作步驟&#xff1a;登錄Google站長&#xff0c;綁定網站完成后&#xff0c;點擊左側刪除 >> 輸入網址 如果遇到一些網址&#xff0c;可以找尋網址間的規律&#xff0c;比如說&#xff0…

2024生日快樂祝福HTML源碼

源碼介紹 2024生日快樂祝福HTML源碼&#xff0c;源碼由HTMLCSSJS組成&#xff0c;記事本打開源碼文件可以進行內容文字之類的修改&#xff0c;雙擊html文件可以本地運行效果&#xff0c;也可以上傳到服務器里面&#xff0c; 源碼截圖 源碼下載 2024生日快樂祝福HTML源碼

Shell腳本 <<EOF ... EOF語法(Here Document)(特殊的輸入重定向方式)(定界符)

文章目錄 Here Document語法Here Document 的基本語法使用場景 關于定界符定界符不是變量定界符在 Here Document 中只是一個字符串&#xff0c;主要功能是標記輸入文本的開始和結束&#xff0c;使用時應遵循最佳實踐格式要求例子和說明如何使用定界符定界符可重復使用&#xf…

Spring數據訪問全攻略:從JdbcTemplate到聲明式事務

上文講到 —— 航向數據之海&#xff1a;Spring的JPA與Hibernate秘籍 本文目錄 四. JdbcTemplate的使用定義JdbcTemplate及其在Spring中的作用展示如何使用JdbcTemplate簡化數據庫操作1. 配置JdbcTemplate2. 使用JdbcTemplate查詢數據3. 打印查詢結果 五. Spring的事務管理介紹…

橋接模式

橋接模式&#xff1a;在這種模式下&#xff0c;虛擬機就像是局域網中一臺獨立的主機&#xff0c;能夠訪問網內任何一臺機器。在橋接模式下&#xff0c;必須為虛擬系統手動配置IP地址、子網掩碼&#xff0c;并且這些配置需要與宿主機器處于同一網段&#xff0c;以便虛擬系統和宿…