工作流 x 深度學習:揭秘藍耘元生代如何用 ComfyUI 玩轉 AI 開發

目錄

一、從 “代碼噩夢” 到 “積木游戲”:我與工作流的初次碰撞

二、深度學習:復雜而迷人的 “數字迷宮”

(一)深度學習的神秘面紗

(二)深度學習的發展歷程

(三)深度學習面臨的挑戰

三、ComfyUI到底是啥?它能吃嗎?

四、深度學習的 “腳手架”:為什么需要工作流?

(一)傳統開發的 “三座大山”

(二)ComfyUI 工作流如何 “拆墻”?

五、藍耘元生代:給工作流插上 “算力翅膀”

(一)當 ComfyUI 遇見彈性算力

(二)工作流與模型訓練的 “化學反應”

六、手把手搭建第一個工作流

(一) 基礎圖像生成工作流

(二) 添加ControlNet控制

七、自定義節點開發 - 釋放ComfyUI的真正潛力

(一)開發環境配置

(二)實現一個高級圖像混合節點

(三)調試與優化自定義節點

八、學生黨視角:工作流如何改變深度學習開發?

(一)從 “調參俠” 到 “架構師” 的思維轉變

(二)協作開發的 “破冰神器”

(三)低成本試錯的 “煉丹爐”

九、結語:工具只是起點,思考才是核心


一、從 “代碼噩夢” 到 “積木游戲”:我與工作流的初次碰撞

作為一個計算機科學與技術專業的大三學生,我永遠記得第一次聽說ComfyUI時的困惑表情。"又一個可視化工具?"我當時的內心充滿了不屑,"真正的程序員不都應該用代碼搞定一切嗎?"

這種傲慢在我安裝ComfyUI的第一天就被徹底粉碎了。記得那是個周末的下午,我按照教程安裝好ComfyUI后,面對空白的畫布和側邊欄密密麻麻的節點選項,完全不知道從何下手。這與我想象中的"簡單拖拽"相去甚遠。

第一周的挫敗感簡直難以形容。我嘗試復現一個基礎的Stable Diffusion工作流,光是理解"CLIP文本編碼"和"KSampler"之間的關系就花了兩天時間。節點之間的連線總是出錯,要么是數據類型不匹配,要么是忘記連接關鍵參數。有次我折騰了三個小時,就因為漏連了一個"latent_image"的輸入。

# 這是我犯的第一個低級錯誤 - 漏連VAE解碼器
# 錯誤示例:
wrong_workflow = {"nodes": [{"type": "CheckpointLoader", "id": 1},{"type": "CLIPTextEncode", "id": 2, "text": "a cat"},{"type": "KSampler", "id": 3},# 忘記添加VAEDecode節點!{"type": "PreviewImage", "id": 4}],"connections": [{"from": 1, "to": 3, "output": "model", "input": "model"},{"from": 2, "to": 3, "output": "output", "input": "positive"},# 這里應該連接KSampler輸出到VAE解碼器# 但我直接連到了PreviewImage,導致報錯{"from": 3, "to": 4, "output": "output", "input": "image"}]
}

轉折點出現在第三周。當我終于成功搭建出第一個完整工作流時,那種成就感簡直難以言表。點擊"執行"按鈕后,看著進度條一點點前進,最終在預覽窗口顯示出根據我的提示詞生成的圖像,我激動得差點從椅子上跳起來。這一刻我突然理解了ComfyUI的設計哲學 - 它不是在替代編程,而是在用另一種方式展現深度學習的數據流動。?

二、深度學習:復雜而迷人的 “數字迷宮”

(一)深度學習的神秘面紗

深度學習,簡單來說,就是讓計算機通過大量的數據來學習模式和規律,從而實現對未知數據的預測和判斷。它就像是一個超級智能的大腦,能夠從海量的數據中提取出有價值的信息。

深度學習的核心是神經網絡,它由多個層次的神經元組成,就像人類大腦中的神經元一樣,通過相互連接和傳遞信號來完成復雜的任務。不同類型的神經網絡適用于不同的場景,比如卷積神經網絡(CNN)在圖像識別方面表現出色,循環神經網絡(RNN)則在自然語言處理中有著廣泛的應用。

然而,深度學習的實現并不是一件容易的事情。它需要大量的計算資源和數據支持,同時還需要對模型進行精心的設計和調優。這就好比在一個復雜的迷宮中尋找出口,每一個選擇都可能影響到最終的結果。

(二)深度學習的發展歷程

深度學習的發展可以追溯到上世紀 40 年代,但真正取得重大突破是在近年來。隨著計算機性能的不斷提升和數據量的爆炸式增長,深度學習迎來了黃金發展期。

早期的神經網絡由于計算資源的限制,規模較小,性能也不盡如人意。直到 2012 年,AlexNet 在 ImageNet 圖像識別競賽中取得了巨大的成功,它的準確率遠遠超過了傳統的方法,這標志著深度學習時代的正式到來。

此后,各種新的深度學習模型和算法層出不窮,如 GoogleNet、ResNet、BERT 等,它們在圖像識別、自然語言處理、語音識別等領域都取得了令人矚目的成果。深度學習的應用也越來越廣泛,從智能安防到醫療診斷,從自動駕駛到金融風控,無處不在。

(三)深度學習面臨的挑戰

盡管深度學習取得了巨大的成功,但它仍然面臨著許多挑戰。其中最大的挑戰之一就是數據的質量和數量。深度學習模型需要大量的標注數據來進行訓練,而數據的標注是一項非常耗時和費力的工作。此外,數據的質量也直接影響到模型的性能,如果數據存在噪聲或偏差,那么模型的準確率也會受到影響。

另一個挑戰是模型的可解釋性。深度學習模型通常是一個黑匣子,我們很難理解它是如何做出決策的。這在一些關鍵領域,如醫療和金融,是一個非常嚴重的問題,因為我們需要知道模型的決策依據,以確保其安全性和可靠性。

此外,深度學習的計算資源需求也非常高,訓練一個大型的深度學習模型需要消耗大量的電力和計算資源。這不僅增加了成本,還對環境造成了一定的壓力。

三、ComfyUI到底是啥?它能吃嗎?

經過一個月的實戰,我開始系統地研究ComfyUI的架構設計。通過閱讀源代碼(雖然是Python寫的,但結構非常清晰),我發現這個看似簡單的可視化工具背后蘊含著精妙的設計思想。

節點系統的本質實際上是一個有向無環圖(DAG)的執行引擎。每個節點都是一個獨立的處理單元,它們通過輸入輸出插座相互連接。當工作流執行時,ComfyUI會按照拓撲排序依次執行各個節點,自動處理數據依賴關系。

# 簡化的節點執行邏輯(基于源碼分析)
class Node:def __init__(self, node_type):self.inputs = {}  # 輸入插座self.outputs = {}  # 輸出插座self.function = None  # 處理函數def execute(self):# 收集輸入數據input_values = {}for input_name, connection in self.inputs.items():source_node, output_name = connectioninput_values[input_name] = source_node.outputs[output_name]# 執行節點邏輯output_values = self.function(**input_values)# 設置輸出數據for output_name, value in output_values.items():self.outputs[output_name] = value# 工作流執行器
class WorkflowExecutor:def __init__(self, nodes):self.nodes = nodesdef execute(self):# 拓撲排序確保執行順序正確sorted_nodes = topological_sort(self.nodes)for node in sorted_nodes:node.execute()

數據類型系統是ComfyUI另一個精妙設計。每個節點插座都有嚴格的數據類型要求,比如"LATENT"、"IMAGE"、"CONDITIONING"等。這種強類型系統在可視化環境下尤為重要,它能在連接時立即發現類型不匹配的錯誤,避免執行時才發現問題。

我特別欣賞ComfyUI對中間狀態可視化的支持。在傳統編程中,查看張量的中間值需要寫print語句或使用調試器。而在ComfyUI中,只需在任何兩個節點之間插入一個預覽節點,就能實時觀察數據變化。這對于理解Stable Diffusion這類復雜模型的工作機制幫助巨大。

四、深度學習的 “腳手架”:為什么需要工作流?

(一)傳統開發的 “三座大山”

  1. 環境配置地獄
    深度學習模型對框架版本、依賴庫、硬件驅動的要求極其苛刻。我曾因為 PyTorch 從 1.8 升級到 2.0,導致整個項目的 CUDA 核函數全部報錯,花了三天時間逐行調試。更崩潰的是,不同模型可能需要完全隔離的環境,比如 Stable Diffusion 需要 Python 3.8+Torch 2.0,而 BERT 卻依賴 Python 3.9+Torch 1.12,手動切換環境堪比玩俄羅斯方塊。

  2. 流程可視化缺失
    傳統代碼式開發中,數據預處理、模型訓練、推理部署的流程隱藏在成百上千行代碼里,調試時就像在迷宮里找出口。有次我想調整數據增強的順序,結果因為代碼邏輯太復雜,改完后發現模型準確率暴跌,排查半天才發現是數據歸一化步驟放錯了位置。

  3. 協作成本爆炸
    小組合作開發時,最頭疼的不是寫代碼,而是給隊友解釋 “為什么我的代碼在你電腦上跑不起來”。去年我們做目標檢測項目,光是統一開發環境就開了三次線上會議,最后還是用 Docker 打包環境才勉強解決,但每次更新代碼都要重新構建鏡像,效率低到讓人想摔鍵盤。

(二)ComfyUI 工作流如何 “拆墻”?

ComfyUI 就像一個可視化的 “流程翻譯官”,把深度學習開發中最繁瑣的環節變成了圖形化操作。比如搭建一個圖像生成流程,只需要:

  1. 拖入 “圖像輸入” 節點,指定數據集路徑;
  2. 連接 “UNet 模型” 節點,加載預訓練權重;
  3. 接入 “文本嵌入” 節點,輸入提示詞;
  4. 最后用 “圖像輸出” 節點保存結果。
    整個過程就像搭積木一樣直觀,每個節點的參數都可以雙擊修改,甚至可以實時預覽中間結果。我第一次用 ComfyUI 復現 Stable Diffusion 時,只用了半小時就搭好了整個流程,而且通過可視化連線,一眼就看出數據流動的邏輯,調試效率比純代碼開發高了至少 3 倍。
# 傳統代碼實現圖像生成(對比感受下)  
from diffusers import StableDiffusionPipeline  
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")  
prompt = "a photo of a cat wearing a hat"  
image = pipe(prompt).images[0]  
image.save("cat_with_hat.png")  # ComfyUI背后其實在幫你生成類似邏輯,但無需關心底層調用  

五、藍耘元生代:給工作流插上 “算力翅膀”

(一)當 ComfyUI 遇見彈性算力

以前在本地跑深度學習模型,最痛苦的就是 “算力焦慮”—— 我的 1660 顯卡跑一個 512x512 的圖像生成任務都要等 2 分鐘,訓練模型更是要掛著電腦一整夜。而藍耘元生代平臺直接把 ComfyUI 工作流和算力調度系統打通,點擊 “運行” 按鈕就能自動分配 GPU 資源,我試過用平臺的 A100 顯卡跑同樣的圖像生成任務,耗時直接縮短到 15 秒,這差距簡直像從自行車換成了高鐵。

# 藍耘元生代平臺調用算力的底層邏輯(簡化版)  
def run_workflow_on_gpu(workflow_json, gpu_type="A100"):  # 1. 解析工作流,生成可執行腳本  script = convert_comfyui_to_python(workflow_json)  # 2. 向平臺申請GPU資源  gpu_instance = allocate_gpu(gpu_type=gpu_type)  # 3. 在GPU實例上運行腳本  result = execute_on_gpu(script, gpu_instance)  # 4. 釋放資源  release_gpu(gpu_instance)  return result  

(二)工作流與模型訓練的 “化學反應”

在藍耘元生代平臺上,用 ComfyUI 搭建訓練工作流簡直像玩 “策略游戲”。比如訓練一個 MNIST 手寫數字識別模型,我只需要:

  1. 拖入 “MNIST 數據集加載” 節點,自動拆分訓練集和測試集;
  2. 連接 “CNN 模型構建” 節點,通過滑塊設置卷積層數量、神經元個數;
  3. 接入 “損失函數” 節點,選擇交叉熵損失;
  4. 添加 “模型評估” 節點,實時監控準確率;
  5. 最后用 “模型保存” 節點導出訓練好的模型。
    更厲害的是,平臺支持工作流并行運行 —— 我曾經同時跑了三個不同超參數的訓練流程,通過對比節點輸出的準確率曲線,輕松找到了最優的模型配置,這要是用傳統代碼開發,得寫三個獨立的腳本還要手動切換環境,想想都頭大。

??登錄與注冊:打開瀏覽器,訪問藍耘 GPU 智算云平臺官網(https://cloud.lanyun.net//#/registerPage?promoterCode=0131 )。新用戶需先進行注冊,注冊成功后即可享受免費體驗 18 小時算力的優惠。登錄后,用戶將進入藍耘平臺的控制臺,在這里可以看到豐富的功能模塊,如容器云市場、應用市場等 。??

六、手把手搭建第一個工作流

(一) 基礎圖像生成工作流

讓我們從最簡單的Stable Diffusion文本生成圖像開始。在ComfyUI中,基本工作流需要以下幾個節點:

  1. 加載模型:選擇要使用的Stable Diffusion模型

  2. CLIP文本編碼:把提示詞轉換為模型能理解的向量

  3. KSampler:實際的采樣器,控制生成過程

  4. VAE解碼:把隱變量解碼為最終圖像

  5. 圖像預覽:查看生成結果

具體實現如下:

# 偽代碼表示基礎工作流
def create_basic_workflow():# 創建節點checkpoint_loader = CheckpointLoaderSimple()clip_text_encoder = CLIPTextEncode()ksampler = KSampler()vae_decoder = VAEDecode()image_preview = PreviewImage()# 連接節點connect(checkpoint_loader.model, ksampler.model)connect(checkpoint_loader.clip, clip_text_encoder.clip)connect(clip_text_encoder.output, ksampler.positive)connect(ksampler.output, vae_decoder.latent)connect(vae_decoder.output, image_preview.image)# 設置參數checkpoint_loader.ckpt_name = "v1-5-pruned-emaonly.ckpt"clip_text_encoder.text = "a cute cat playing with a ball"ksampler.seed = random.randint(0, 2**32)return [checkpoint_loader, clip_text_encoder, ksampler, vae_decoder, image_preview]

在實際操作中,我們只需要在ComfyUI界面中拖拽這些節點并連接它們即可。這種可視化方式讓我第一次真正理解了Stable Diffusion的工作流程。

(二) 添加ControlNet控制

基礎工作流生成圖像后,我想加入ControlNet來控制圖像結構。這需要:

  1. 加載ControlNet模型

  2. 預處理輸入圖像(如邊緣檢測)

  3. 將處理結果作為條件輸入

對應的節點添加:

# 偽代碼表示添加ControlNet
def add_controlnet(workflow, controlnet_type="canny"):# 添加新節點controlnet_loader = ControlNetLoader()image_loader = ImageLoader()preprocessor = Preprocessor(controlnet_type)apply_controlnet = ApplyControlNet()# 連接節點connect(controlnet_loader.output, apply_controlnet.control_net)connect(image_loader.output, preprocessor.input)connect(preprocessor.output, apply_controlnet.image)connect(workflow.clip_text_encoder.output, apply_controlnet.positive)# 更新原有連接disconnect(workflow.clip_text_encoder.output, workflow.ksampler.positive)connect(apply_controlnet.output, workflow.ksampler.positive)# 設置參數controlnet_loader.control_net_name = f"control_v11p_sd15_{controlnet_type}.pth"image_loader.image_path = "input/reference.png"workflow.nodes.extend([controlnet_loader, image_loader, preprocessor, apply_controlnet])return workflow

通過這種方式,我逐步理解了Conditional Generation的概念,以及如何通過額外輸入控制生成過程。

七、自定義節點開發 - 釋放ComfyUI的真正潛力

當內置節點無法滿足需求時,開發自定義節點就成為必由之路。這個過程讓我對ComfyUI的擴展機制有了全新認識。

(一)開發環境配置

首先需要搭建開發環境:

  1. 克隆ComfyUI源碼

  2. 創建custom_nodes目錄

  3. 編寫節點Python文件

  4. 配置熱重載開發模式

# 目錄結構示例
comfyui/├── custom_nodes/│   └── my_nodes/│       ├── __init__.py│       ├── image_processing.py│       └── utilities.py└── ...

(二)實現一個高級圖像混合節點

我開發了一個支持多種混合模式的圖像合成節點:

class AdvancedBlendNode(Node):@classmethoddef INPUT_TYPES(cls):return {"required": {"image1": ("IMAGE",),"image2": ("IMAGE",),"blend_mode": (["normal", "multiply", "screen", "overlay"],),"opacity": ("FLOAT", {"default": 0.5, "min": 0, "max": 1})}}RETURN_TYPES = ("IMAGE",)FUNCTION = "blend_images"def blend_images(self, image1, image2, blend_mode, opacity):# 確保圖像大小一致if image1.shape != image2.shape:image2 = self.resize_to_match(image2, image1.shape)# 應用混合模式if blend_mode == "normal":result = opacity * image2 + (1 - opacity) * image1elif blend_mode == "multiply":result = image1 * image2elif blend_mode == "screen":result = 1 - (1 - image1) * (1 - image2)elif blend_mode == "overlay":result = torch.where(image1 < 0.5, 2 * image1 * image2,1 - 2 * (1 - image1) * (1 - image2))return (result.clamp(0, 1),)def resize_to_match(self, img, target_shape):# 簡化的調整大小邏輯return F.interpolate(img, size=(target_shape[2], target_shape[3]))

(三)調試與優化自定義節點

開發過程中遇到的主要挑戰包括:

  1. 數據類型轉換問題

  2. 自動微分導致的顯存泄漏

  3. 與ComfyUI原生節點的兼容性

  4. 多線程環境下的競態條件

通過添加詳細的日志和錯誤處理,最終使節點穩定運行:

class DebuggableNode(Node):@classmethoddef INPUT_TYPES(cls):return {"required": {"input": ("IMAGE",)}}RETURN_TYPES = ("IMAGE",)FUNCTION = "process"def process(self, input):try:self.log(f"Input shape: {input.shape}")self.log(f"Input range: {input.min():.2f}-{input.max():.2f}")# 處理邏輯...output = input * 2self.log("Processing completed successfully")return (output,)except Exception as e:self.error(f"Processing failed: {str(e)}")# 返回輸入作為fallbackreturn (input,)def log(self, message):print(f"[{self.__class__.__name__}] {message}")def error(self, message):print(f"[{self.__class__.__name__} ERROR] {message}")

八、學生黨視角:工作流如何改變深度學習開發?

(一)從 “調參俠” 到 “架構師” 的思維轉變

以前寫代碼時,我大部分時間都花在處理數據格式、調試框架報錯上,真正思考模型架構的時間少之又少。而用 ComfyUI 工作流開發時,我可以把精力集中在模型設計和超參數調整上 —— 比如嘗試不同的注意力機制模塊,只需要拖入不同的節點組合,幾分鐘就能看到效果對比,這種 “想法→驗證” 的快速迭代,讓我感覺自己更像一個算法架構師,而不是只會寫樣板代碼的 “調參俠”。

(二)協作開發的 “破冰神器”

小組合作時,ComfyUI 工作流成了我們的 “共同語言”。上周我們做一個多模態情感分析項目,負責文本處理的同學用 ComfyUI 搭了文本嵌入流程,負責圖像處理的同學搭了 CNN 特征提取流程,最后我只需要用 “特征融合” 節點把兩者連接起來,整個過程像拼拼圖一樣順暢。更方便的是,我們直接把工作流文件上傳到平臺,每個人都能在自己的環境中運行,再也不用為 “你的 PyTorch 版本比我新” 這種問題吵架了。

(三)低成本試錯的 “煉丹爐”

作為學生,我們很難擁有企業級的算力資源,但藍耘元生代平臺讓我們用很低的成本就能嘗試各種 “大膽想法”。我曾經用平臺的免費算力額度,跑了一個基于擴散模型的 3D 醫學圖像生成工作流,雖然最終效果沒達到預期,但整個過程讓我積累了寶貴的經驗。這種 “低成本試錯” 的機會,對我們學生黨來說簡直太珍貴了。

九、結語:工具只是起點,思考才是核心

從被深度學習「虐哭」到用 ComfyUI「虐菜」,我最大的感悟是:工具永遠只是效率的放大器,真正重要的是背后的算法思維和問題解決能力。藍耘元生代的 ComfyUI 工作流,本質上是把深度學習開發中「重復枯燥」的環節自動化,讓我們有更多精力去思考「怎么做更好」。

作為學生,我們不必糾結于「代碼寫得多漂亮」,而應該關注「能不能用最簡單的方式解決問題」。如果你也和我一樣,曾在深度學習的代碼迷宮里迷路,不妨試試用 ComfyUI 工作流重新定義開發方式 —— 畢竟,能把更多時間花在「想創意」而不是「調 bug」上,才是我們學計算機的終極浪漫,不是嗎?

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

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

相關文章

《軟件工程》第 14 章 - 持續集成

在軟件工程的開發流程中&#xff0c;持續集成是保障代碼質量與開發效率的關鍵環節。本章將圍繞持續集成的各個方面展開詳細講解&#xff0c;結合 Java 代碼示例與可視化圖表&#xff0c;幫助讀者深入理解并實踐相關知識。 14.1 持續集成概述 14.1.1 持續集成的相關概念 持續集…

1992-2021年各省工業增加值數據(無缺失)

1992-2021年各省工業增加值數據&#xff08;無缺失&#xff09; 1、時間&#xff1a;1992-2021年 2、來源&#xff1a;國家統計局、統計年鑒 3、指標&#xff1a;工業增加值 4、范圍&#xff1a;31省 5、缺失情況&#xff1a;無缺失 6、指標說明&#xff1a;工業增加值是…

Android15 Camera Hal設置logLevel控制日志輸出

這里說明三個內容 Camera Hal Demo默認使用的也是Android原生日志接口&#xff08;例如&#xff1a;ALOGD, ALOGV&#xff09;&#xff0c;為什么logLevel設置為V級別&#xff0c;但是通過ALOGV打印的日志不輸出&#xff0c;不生效Camera Hal Demo在不修改ALOGX接口使用的情況…

C++:設計模式--工廠模式

更多內容&#xff1a;XiaoJ的知識星球 目錄 1.簡單工廠模式1.1 簡單工廠1.2 實現步驟1.3 實現代碼1.4 優缺點 2.工廠模式2.1 工廠模式2.2 實現步驟2.3 實現代碼2.4 優缺點 3.抽象工廠模式3.1 抽象工廠模式3.2 實現步驟3.3 實現代碼3.4 優缺點 1.簡單工廠模式 . 1.1 簡單工廠 …

【DSP筆記】掌握數字世界的律動:時域離散信號與系統基礎

掌握數字世界的律動&#xff1a;時域離散信號與系統基礎 想象一下&#xff0c;你用手機拍了一張照片&#xff0c;或者聽了一首MP3歌曲。這些圖片和聲音&#xff0c;原本都是連續變化的模擬信號&#xff0c;但為什么它們能被你的手機存儲和處理呢&#xff1f;秘密就在于“數字化…

織夢dedecms上傳附件不自動改名的辦法

織夢dedecms的系統在上傳附件后&#xff0c;會將文件自動改名字&#xff0c;那怎么樣才能讓附件上傳后不自動改名字呢&#xff0c;讓附件上傳后不自動改名字(中文名的附件將會改成拼音文件名稱)&#xff0c;現在說一下方法吧&#xff1a; 我們打開網站目錄下include\dialog\se…

https下git拉取gitlab倉庫源碼

git init 創建倉庫 參考下面創建公私秘鑰對 GitLab配置ssh key - 阿豪聊干貨 - 博客園 Your identification has been saved in /home/xxx/.ssh/id_ed25519 Your public key has been saved in /home/xxx/.ssh/id_ed25519.pub 然后查看對應公鑰&#xff0c;復制 cat ~/.ss…

Mybatis使用update更新值為null時不生效問題解決

1.出現的問題 前端修改數據時把屬性內容刪除然后進行保存&#xff0c;默認傳的null&#xff0c;后端更新時屬性值為null&#xff0c; 然后調用updateById進行更新時發現該屬性還是原來的值&#xff1a; update方法不會對屬性null的進行更新 2.原因 mybatis-plus FieldStrat…

JAVA 學習日志

$2 周期小結 #8 工作匯報 數學建模部分 前三天的主要精力用在電工杯數學建模大賽上了&#xff0c;雖然這是Java學習筆記 當是還是總結一下吧 首先是任務分工方面 需要三個人都會python基礎語法 然后一起寫論文 &#xff0c;就是需要邊建模邊寫論文 &#xff0c;然后在 后續…

Java網絡編程性能優化

1.網絡編程性能優化基礎 1. 性能關鍵指標 指標 描述 優化目標 響應時間 從請求到響應的總時間 降低到毫秒級 吞吐量 單位時間內處理的請求數量 提高到每秒數千至數萬請求 并發用戶數 系統同時處理的用戶數量 支持數千至數萬并發連接 資源利用率 CPU、內存、網絡帶…

react native搭建項目

React Native 項目搭建指南 React Native 是一個使用 JavaScript 和 React 構建跨平臺移動應用的框架。以下是搭建 React Native 項目的詳細步驟&#xff1a; 1. 環境準備 安裝 Node.js 下載并安裝 Node.js (推薦 LTS 版本) 安裝 Java Development Kit (JDK) 對于 Androi…

Redis 容器啟動失敗Fatal error loading the DB, check server logs. Exiting.的解決方法

? 問題分析&#xff1a;Redis 容器啟動失敗 根據提供的 Redis 啟動日志&#xff0c;關鍵信息如下&#xff1a; &#x1f50d; 模塊加載情況 模塊名稱狀態備注RedisCompat? 成功search? 成功RediSearch 模塊timeseries? 成功RedisTimeSeries 模塊ReJSON? 成功bf? 成功R…

chrome打不開axure設計的軟件產品原型問題解決辦法

1、打開原型文件夾&#xff0c;進入到其中的如下目錄中&#xff1a;resources->chrome->axure-chrome-extension.crx&#xff0c;找到 Axure RP Extension for Chrome插件。 2、axure-chrome-extension.crx文件修改擴展名.rar&#xff0c;并解壓到文件夾 axure-chrome-ex…

Java 各版本核心新特性的詳細說明

一、Java 8&#xff08;2014&#xff09;—— 函數式編程的里程碑 1. Lambda 表達式 作用&#xff1a;簡化匿名內部類&#xff0c;支持函數式編程。示例&#xff1a;// 傳統匿名內部類 Runnable r1 new Runnable() {Overridepublic void run() {System.out.println("He…

【md2html python 將 Markdown 文本轉換為 HTML】

測試md文本 md_text """ # title## subtitle\python print("Hello, World!") \- item 1| Header 1 | Header 2 | |----------|----------| | Row 1 Col 1 | Row 1 Col 2 |- item 2> This is a blockquote.### SubsubtitleThis is a paragraph wi…

Prompt Engineering 提示工程介紹與使用/調試技巧

1. 介紹 Prompt Engineering 是一種人工智能&#xff08;AI&#xff09;技術&#xff0c;它通過設計和改進 AI 的 prompt 來提高 AI 的表現。Prompt Engineering 的目標是創建高度有效和可控的 AI 系統&#xff0c;使其能夠準確、可靠地執行特定任務。 如果你從來沒有使用過Pr…

如何把 Microsoft Word 中所有的漢字字體替換為宋體?

Ctrl H &#xff0c;然后&#xff0c;點擊更多&#xff0c;勾選使用通配符&#xff0c;查找內容中填入 [一-龥]{1,}&#xff0c; 這是 Word 通配符匹配漢字的經典寫法&#xff08;匹配 Unicode 范圍內的 CJK 漢字&#xff09;。 然后&#xff0c; “替換為”留空&#xff0c;點…

CMake從入門到實戰:現代C++項目構建指南

CMake從入門到實戰&#xff1a;現代C項目構建指南 引言 在跨平臺開發成為主流的今天&#xff0c;CMake作為開源構建系統的標桿工具&#xff0c;憑借其跨平臺性、靈活性和可擴展性&#xff0c;已成為C/C項目的事實標準。本文將帶你系統掌握CMake的核心機制&#xff0c;通過實戰…

Web安全滲透之長城杯奪旗賽

Web-Git flag1 掃描WEB目錄發現存在Git泄露&#xff08;這里是隊友掃的&#xff0c;我這圖是拿的我后面掃的截圖&#xff0c;所以時間對不上。 使用GitHub - gakki429/Git_Extract: 提取遠程 git 泄露或本地 git 的工具拉取泄露代碼。 讀取到flag&#xff0c;全場一血捏。…

機器學習與深度學習:區別與聯系

機器學習與深度學習&#xff1a;區別與聯系 在人工智能領域&#xff0c;機器學習和深度學習是兩個最熱門的概念&#xff0c;它們既相互關聯又有所區別。本文將深入探討這兩者的核心差異與內在聯系&#xff0c;幫助讀者更好地理解它們在實際應用中的定位。 一、基本概念 **機…