十一、容器化 vs 虛擬化-Docker

文章目錄

  • 前言
  • 一、Docker 介紹
    • 1. 簡介
    • 2. 應用場景
    • 3. 特點
    • 4. Docker和虛擬機之間的區別
    • 5. 解決痛點
      • 1. 解決依賴兼容
      • 2. 解決操作系統環境差異
      • 3. 小結
  • 二、Docker 架構
  • 三、工作流程
  • 五、Docker 核心組件及其工作機制
    • 1. Docker 客戶端(Docker Client)
    • 2. Docker 守護進程(Docker Daemon)
    • 3. Docker 引擎 API(Docker Engine API)
    • 4. Docker 容器(Docker Containers)
    • 5. Docker 鏡像(Docker Images)
    • 6. Docker 倉庫(Docker Registries)
    • 7. Docker Compose
    • 8. Docker Swarm
    • 9. Docker 網絡(Docker Networks)
    • 10. Docker 卷(Docker Volumes)
  • Docker 命令


前言

容器化?

??我們搭建了微服務體系,同時借助Idea編譯工具多次完成本地服務啟動、部署和驗證。就會出現下面場景:

  • 開發人員A寫好的代碼–>開發人員B的電腦上運行,B必須保證跟A一樣的系統環境(JDK/MySQL等)
  • 系統代碼部署從DEV–>TEST–>PRE–>PROD,每個環節都必須保證一樣的系統環境(同上)
  • 分布式系統中依賴組件非常多,組件與組件之間的部署往往會產生一些沖突(端口/依賴/環境等)

傳統基礎架構部署
??這樣的版本一致保證會耗費我們大量的時間和精力,同時萬一有問題產生,我們也很難第一時間考慮到是因為版本不一致導致的問題。

??因此我們需要一套可以平滑切換的部署引擎,這就是容器化技術Docker


一、Docker 介紹

1. 簡介

Docker標識
??Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協議開源。

??Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。

??容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低

??Docker 從 17.03 版本之后分為 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),我們用社區版就可以了。

相關鏈接

Docker 官網

Github Docker 源碼

2. 應用場景

  • Web 應用的自動化打包和發布(編譯構建和部署)

  • 自動化測試和持續集成、持續交付(CI/CD)

  • 在服務型環境中部署和調整數據庫或其他的后臺應用。

  • 從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。

3. 特點

??Docker 是一個用于開發,交付和運行應用程序的開放平臺。

??Docker 使您能夠將應用程序與基礎架構分開,從而可以快速交付軟件。借助 Docker,您可以采用與管理應用程序相同的方式來管理基礎架構。

??通過利用 Docker 的方法實現快速交付,測試和部署代碼,您可以大幅提高,開發迭代和部署上限的效率。

  1. 快速,一致地交付應用程序

Docker 允許開發人員使用您提供的應用程序或服務的本地容器在標準化環境中工作,從而簡化了開發的生命周期。

容器非常適合持續集成和持續交付(CI / CD)工作流程,請考慮以下示例方案:

  • 您的開發人員在本地編寫代碼,并使用 Docker 容器與同事共享他們的工作。

  • 他們使用 Docker 將其應用程序推送到測試環境中,并執行自動或手動測試。

  • 當開發人員發現錯誤時,他們可以在開發環境中對其進行修復,然后將其重新部署到測試環境中,以進行測試和驗證。

  • 測試完成后,將修復后的程序推送給生產環境,就像將更新的鏡像推送到生產環境一樣簡單。

  1. 響應式部署和擴展

Docker 是基于容器的平臺,允許高度可移植的工作負載。Docker 容器可以在開發人員的本機上,數據中心的物理或虛擬機上,云服務上或混合環境中運行。

Docker 的可移植性和輕量級的特性,還可以使您輕松地完成動態管理的工作負擔,并根據業務需求指示,實時擴展或拆除應用程序和服務。

  1. 在同一硬件上運行更多工作負載

Docker 輕巧快速。它為基于虛擬機管理程序的虛擬機提供了可行、經濟、高效的替代方案,因此您可以利用更多的計算能力來實現業務目標。Docker 非常適合于高密度環境以及中小型部署,而您可以用更少的資源做更多的事情。

4. Docker和虛擬機之間的區別

?虛擬機?:是基于虛擬硬件的操作系統。虛擬機是通過Hypervisor(虛擬機管理系統,常見的有VMWare workstation、VirtualBox),虛擬出網卡、CPU、內存等虛擬硬件,再在其上建立虛擬機,每個虛擬機是個獨立的操作系統,擁有自己的系統內核。體積大、啟動速度慢、性能一般。

?Docker?:是一個系統進程。容器是利用namespace將文件系統、進程、網絡、設備等資源進行隔離,利用cgroup對權限、CPU資源進行限制,最終讓容器之間互不影響,容器無法影響宿主機。體積小、啟動速度快、性能好。

Docker和虛擬機的區別

特性虛擬機容器
啟動分鐘級秒級
硬盤使用一般為 GB一般為 MB
性能接近原生
系統支持量一般幾十個單機支持上千個容器

5. 解決痛點

1. 解決依賴兼容

Docker為了解決依賴的兼容問題的,采用了兩個手段:

  • 【依賴打包】將應用的Libs(函數庫)、Deps(依賴)、配置與應用一起打包
  • 【部署隔離】將每個應用放到一個隔離容器去運行,避免互相干擾

Docker解決依賴兼容此時打包好的應用包(不再是原來的jar包)既包含應用本身,也包含應用所需的Libs、Deps,無需在操作系統上安裝,自然不存在應用間的兼容問題。
雖然解決了不同應用的兼容問題,但是開發、測試等多個環境,不同的操作系統版本之間也會有差異,這個不解決一樣會面臨開篇所說的問題,想了解這個必須先了解下操作系統的結構。

2. 解決操作系統環境差異

以一個ubuntu操作系統為例,如下:

Docker解決操作系統環境差異其結構包括:

  • 計算機硬件:如CPU、內存、磁盤等
  • 系統內核:所有Linux發行版內核都是Linux,如CentOS/Ubuntu/Fedora等,內核與計算機硬件交互,對外提供內核指令,用于操作計算機硬件。
  • 系統應用:操作系統本身提供的應用、函數庫。這些函數是對內核指令的封裝,使用更方便。

應用與計算機交互的流程大致如下:

  • 應用(外部應用如redis/web應用等)調用操作系統應用(函數庫),實現各種功能
  • 系統函數庫是對內核指令集的封裝,會調用內核指令
  • 內核指令操作計算機硬件
    如Ubuntu和CenOS雖然都是基于Linux內核,無非是系統應用不同,提供函數庫有差異,如下:

在這里插入圖片描述
但就是這種差異,當一個Ubuntu版本的MySQL嘗試安裝到CentOS系統時,MySQL還是調用的Ubuntu函數庫,會出現找不到或者不匹配的情況,從而導致報錯,即出現我們上面提到的系統環境差異導致的不兼容問題:

在這里插入圖片描述
我們來看下Docker是如何處理這種環境間的差異的:

  • Docker將應用程序與所需調用的系統(如Ubuntu)函數庫一起打包
  • Docker運行到不同操作系統時,直接基于打包的函數庫,借助于操作系統Linux內核來運行

在這里插入圖片描述

3. 小結

  1. Docker如何解決大型項目依賴關系復雜,不同組件依賴的兼容性問題?
  • Docker允許開發中將應用、依賴、函數庫、配置一起打包,形成可移植鏡像
  • Docker應用運行在容器中,使用沙箱機制,相互隔離
  1. Docker如何解決開發、測試、生產環境有差異的問題?
  • Docker鏡像中包含完整運行環境,包括系統函數庫,僅依賴系統的Linux內核,因此可以在任意Linux操作系統上運行
  1. Docker是一個快速交付應用、運行應用的技術,具備下列優勢:
  • 可以將程序及其依賴、運行環境一起打包為一個鏡像,可以遷移到任意Linux操作系統
  • 運行時利用沙箱機制形成隔離容器,各個應用互不干擾
  • 啟動、移除都可以通過一行命令完成,方便快捷

二、Docker 架構

??Docker 架構是基于客戶端-服務器的C/S模式,其中包括多個關鍵組件,確保容器化應用的高效構建、管理和運行。可以使用遠程 API 來管理和創建 Docker 容器

??Docker 容器(Container),是獨立運行的一個或一組應用,基于 Docker 鏡像來創建,是鏡像運行時的實體。

??Docker 鏡像(Image),用于創建 Docker 容器的模板,就相當于是一個 root 文件系統。

??鏡像和容器的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

Docker面向對象
容器對象實例
鏡像

Docker架構1
Docker架構2
??Docker是一個CS架構的程序,底層由Go 語言進行開發實現,由兩部分組成:

  • 服務端(Server):Docker 守護進程,負責處理 Docker 指令,管理鏡像、容器等。
  • 客戶端(Client):通過命令或 RestAPI 向 Docker 服務端發送指令。可以在本地或遠程向服務端發送指令。

Docker架構3

三、工作流程

  • 構建鏡像:使用 Dockerfile 創建鏡像。

  • 推送鏡像到倉庫:將鏡像上傳到 Docker Hub 或私有鏡像倉庫中。

  • 拉取鏡像:通過 docker pull 從鏡像倉庫中拉取鏡像。

  • 運行容器:使用鏡像創建并啟動容器。

  • 管理容器:使用 Docker 客戶端命令管理正在運行的容器(例如查看日志、停止容器、查看資源使用情況等)。

  • 網絡與存儲:容器之間通過 Docker 網絡連接,數據通過 Docker 卷或綁定掛載進行持久化。

五、Docker 核心組件及其工作機制

1. Docker 客戶端(Docker Client)

Docker 客戶端是用戶與 Docker 守護進程交互的命令行界面(CLI)。它是用戶與 Docker 系統的主要交互方式,用戶通過 Docker CLI 發出命令,這些命令被發送到 Docker 守護進程,由守護進程執行相應的操作。

  • 功能:允許用戶使用命令與 Docker 守護進程通信,如創建容器、構建鏡像、查看容器狀態等。

  • 交互方式:Docker 客戶端與 Docker 守護進程之間通過 REST API 或 Unix 套接字通信。常用的命令行工具是 docker,通過它,用戶可以發出各種 Docker 操作命令。

常用命令:

  • docker run:運行容器。

  • docker ps:列出正在運行的容器。

  • docker build:構建 Docker 鏡像。

  • docker exec:在容器中執行命令。

2. Docker 守護進程(Docker Daemon)

Docker 守護進程(通常是 dockerd)是 Docker 架構的核心,負責管理容器生命周期、構建鏡像、分發鏡像等任務。

守護進程通常以后臺進程的方式運行,等待來自 Docker 客戶端的 API 請求。

功能:

  • 啟動和停止容器。

  • 構建、拉取和推送鏡像。

  • 管理容器的網絡和存儲。

  • 啟動、停止、查看容器日志等。

  • 與 Docker 注冊表進行通信,管理鏡像的存儲與分發。

Docker 守護進程監聽來自 Docker 客戶端的請求,并且通過 Docker API 執行這些請求。守護進程將負責容器、鏡像等 Docker 對象的管理,并根據請求的參數啟動容器、刪除容器、修改容器配置等。

啟動 Docker 守護進程(通常是自動啟動的):

sudo systemctl start docker

3. Docker 引擎 API(Docker Engine API)

Docker 引擎 API 是 Docker 提供的 RESTful 接口,允許外部客戶端與 Docker 守護進程進行通信。通過這個 API,用戶可以執行各種操作,如啟動容器、構建鏡像、查看容器狀態等。API 提供了 HTTP 請求的接口,支持跨平臺調用。

功能:

  • 向 Docker 守護進程發送 HTTP 請求,實現容器、鏡像的管理。

  • 提供 RESTful 接口,允許通過編程與 Docker 進行交互。

可以通過 curl 或其他 HTTP 客戶端訪問 Docker 引擎 API。例如,查詢當前 Docker 守護進程的版本:

curl --unix-socket /var/run/docker.sock http://localhost/version

4. Docker 容器(Docker Containers)

容器是 Docker 的執行環境,它是輕量級、獨立且可執行的軟件包。容器是從 Docker 鏡像啟動的,包含了運行某個應用程序所需的一切——從操作系統庫到應用程序代碼。容器在運行時與其他容器和宿主機共享操作系統內核,但容器之間的文件系統和進程是隔離的。

功能:

  • 提供獨立的運行環境,確保應用程序在不同的環境中具有一致的行為。

  • 容器是臨時的,通常在任務完成后被銷毀。

容器的生命周期是由 Docker 守護進程管理的。容器可以在任何地方運行,因為它們不依賴于底層操作系統的配置,所有的運行時依賴已經封裝在鏡像中。

啟動一個容器:

docker run -d ubuntu

5. Docker 鏡像(Docker Images)

Docker 將應用程序及其所需的依賴、函數庫、環境、配置等文件打包在一起的特殊文件系統,稱為鏡像。

Docker 鏡像是容器的只讀模板,用戶可以根據鏡像啟動容器。每個鏡像除了提供容器應用程序運行所需的操作系統、應用程序、庫、資源配置等文件外,還包含了為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像是靜態的,不包含任何動態數據,其內容在構建之后也不會被改變。

功能:

  • 鏡像是構建容器的基礎,每個容器實例化時都會使用鏡像。

  • 鏡像是只讀的,不同容器使用同一個鏡像時,容器中的文件系統層是獨立的。

Docker 鏡像可以通過 ?docker pull? 從 Docker Hub 或私有注冊表拉取,也可以通過 docker build 從 Dockerfile 構建。

拉取 Ubuntu 鏡像:

docker pull ubuntu

6. Docker 倉庫(Docker Registries)

Docker 倉庫是用來存儲 Docker 鏡像的地方,最常用的公共倉庫是 Docker Hub。用戶可以從 Docker Hub 下載鏡像,也可以上傳自己的鏡像分享給其他人。除了公共倉庫,用戶也可以部署自己的私有 Docker 倉庫來管理企業內部的鏡像。

功能:

  • 存儲 Docker 鏡像。

  • 提供鏡像的上傳和下載功能。

Docker Hub 提供了大量官方和社區維護的鏡像,如 Ubuntu、Nginx、MySQL 等。

推送鏡像到 Docker Hub:

docker push <username>/<image_name>

7. Docker Compose

Docker Compose 是一個用于定義和運行多容器 Docker 應用的工具。通過 Compose,用戶可以使用一個 docker-compose.yml 配置文件定義多個容器(服務),并可以通過一個命令啟動這些容器。Docker Compose 主要用于開發、測試和部署多容器的應用。

功能:

  • 定義和運行多個容器組成的應用。

  • 通過 YAML 文件來配置應用的服務、網絡和卷等。

創建一個簡單的 docker-compose.yml 文件來配置一個包含 Web 服務和數據庫服務的應用:

version: '3'
services:web:image: nginxports:- "8080:80"db:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: example

啟動 Compose 定義的所有服務:

docker-compose up

8. Docker Swarm

Docker Swarm 是 Docker 提供的集群管理和調度工具。它允許將多個 Docker 主機(節點)組織成一個集群,并通過 Swarm 集群管理工具來調度和管理容器。Swarm 可以實現容器的負載均衡、高可用性和自動擴展等功能。

功能:

  • 管理多節點 Docker 集群。

  • 通過調度器管理容器的部署和擴展。

初始化 Swarm 集群:

docker swarm init

9. Docker 網絡(Docker Networks)

Docker 網絡允許容器之間相互通信,并與外部世界進行連接。Docker 提供了多種網絡模式來滿足不同的需求,如 bridge 網絡(默認)、host 網絡和 overlay 網絡等。

功能:

  • 管理容器間的網絡通信。

  • 支持不同的網絡模式,以適應不同場景下的需求。

創建一個自定義網絡并將容器連接到該網絡:

docker network create my_network
docker run -d --network my_network ubuntu

10. Docker 卷(Docker Volumes)

Docker 卷是一種數據持久化機制,允許數據在容器之間共享,并且獨立于容器的生命周期。與容器文件系統不同,卷的內容不會隨著容器的銷毀而丟失,適用于數據庫等需要持久存儲的應用。

功能:

  • 允許容器間共享數據。

  • 保證數據持久化,獨立于容器的生命周期。

創建并掛載卷:

docker volume create my_volume
docker run -d -v my_volume:/data ubuntu

Docker 命令

Docker 命令


本文的引用僅限自我學習如有侵權,請聯系作者刪除。
參考知識
Docker 教程


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

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

相關文章

linux學習筆記01 基礎命令

目錄 創建 touch 創建文件 &#xff08;創建但是不打開&#xff09; vi / vim 創建文件 (創建一個文件并打開) mkdir 創建文件夾 切換目錄 cd 查看 pwd 查看當前目錄完整路徑 ls 查看目錄信息 dir 查看目錄信息 ll 表示查看目標目錄下的信息 ls -a 查看當前目錄下的…

【深度學習】深刻理解多模態模型CLIP

CLIP&#xff08;Contrastive Language-Image Pretraining&#xff09; 是由 OpenAI 提出的一個多模態模型&#xff0c;旨在學習視覺和語言的聯合表示&#xff0c;能夠通過圖像和文本之間的對比學習來實現圖像和文本之間的緊密聯系。CLIP 模型可以通過自然語言描述理解和處理圖…

android 聊天界面鍵盤、表情切換絲滑

1、我們在聊天頁面時候&#xff0c;往往會遇到&#xff0c;鍵盤、表情、其他選擇切換時候頁面會出現掉下來再彈起問題&#xff0c;這是因為&#xff0c;我們切換時候&#xff0c;鍵盤異步導致內容View高度變化&#xff0c;頁面掉下來后&#xff0c;又被其他內容頂起這種很差視覺…

Nginx 緩存系統 proxy_cache詳解

系列文章目錄 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 例如&#xff1a;第一章 Python 機器學習入門之pandas的使用 提示&#xff1a;寫完文章后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目…

mysql時間戳格式化yyyy-mm-dd

格式化到 年月日 # 將時間換成列名就行&#xff1b;當前是秒級時間戳&#xff0c;如果是毫秒的 / 1000即可 # SELECT FROM_UNIXTIME(1602668106666.777888999 / 1000,%Y-%m-%d) AS a; # SELECT FROM_UNIXTIME(列名 / 1000,%Y-%m-%d) AS a; SELECT FROM_UNIXTIME(1602668106.666…

PDFMathTranslate,PDF多語言翻譯,批量處理,學術論文,雙語對照(WIN/MAC)

分享一個非常實用的PDF文檔翻譯項目——PDFMathTranslate。作為一個經常逛GitHub的開發者&#xff0c;我總喜歡翻看各種項目附帶的論文&#xff0c;雖然大多時候是瞎研究&#xff0c;但卻樂在其中。該項目能夠完美保留公式、圖表、目錄和注釋&#xff0c;對于需要閱讀外文文獻的…

網絡藥理學:(待更)Alphafold3和批量分子動力學模擬(Desmond、AutoMD)

批量動力學模擬 注意全都需要在類linux平臺上進行 安裝Desmond模塊&#xff1a; https://github.com/Wang-Lin-boop/Schrodinger-Script 安裝AutoMD模塊&#xff1a; Wang-Lin-boop/CADD-Scripts: Scripts for virtual screening, cross docking and protein relax using Sc…

爬蟲基礎之代理的基本原理

在做爬蟲的過程中經常會遇到一種情況&#xff0c;就是爬蟲最初是正常運行、正常抓取數據的&#xff0c;一切看起來都是那么美好&#xff0c;然而一杯茶的工夫就出現了錯誤&#xff0c;例如 403 Forbidden&#xff0c;這時打開網頁一看&#xff0c;可能會看到“您的IP訪問頻率太…

第十七屆山東省職業院校技能大賽 中職組“網絡安全”賽項資源任務書樣題③

第十七屆山東省職業院校技能大賽 中職組“網絡安全”賽項資源任務書樣題③ 模塊A 基礎設施設置與安全加固(200分)A-1 登錄安全加固&#xff08;Windows, Linux&#xff09;A-2 Nginx安全策略&#xff08;Linux&#xff09;A-3日志監控&#xff08;Windows&#xff09;A-4中間件…

鯤鵬麒麟安裝Kafka-v1.1.1

因項目需要在鯤鵬麒麟服務器上安裝Kafka v1.1.1&#xff0c;因此這里將安裝配置過程記錄下來。 環境說明 # 查看系統相關詳細信息 [roottest kafka_2.12-1.1.1]# uname -a Linux test.novalocal 4.19.148 #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Li…

群控系統服務端開發模式-應用開發-登錄退出發送郵件

一、登錄成功發送郵件 在根目錄下app文件夾下controller文件夾下common文件夾下&#xff0c;修改Login.php&#xff0c;代碼如下 <?php /*** 登錄退出操作* User: 龍哥三年風水* Date: 2024/10/29* Time: 15:53*/ namespace app\controller\common; use app\controller\Em…

[游戲開發] Unity中使用FlatBuffer

什么是FlatBuffer 官網&#xff1a; GitHub - google/flatbuffers: FlatBuffers: Memory Efficient Serialization LibraryFlatBuffers: Memory Efficient Serialization Library - google/flatbuffershttps://github.com/google/flatbuffers 為什么用FloatBuffer&#xff0c…

MySQL其一,概念學習,可視化軟件安裝以及增刪改查語句

目錄 MySQL 1、數據庫的概念 2、數據庫分類 3、MySQL的安裝 4、安裝過程中的問題 DataGrip的使用&#xff1a; SQLynx的使用&#xff1a; 5、編寫SQL語句 6、DDL語句 7、DML 新增數據&#xff1a; 刪除數據&#xff1a; 修改數據&#xff1a; MySQL SQL其實是一門…

05 在 Linux 使用 AXI DMA

DMA簡介 DMA 是一種采用硬件實現存儲器與存儲器之間或存儲器與外設之間直接進行高速數據傳輸的技術&#xff0c;傳輸過程無需 CPU 參與&#xff08;但是CPU需要提前配置傳輸規則&#xff09;&#xff0c;可以大大減輕 CPU 的負擔。 DMA 存儲傳輸的過程如下&#xff1a; CPU 向…

linux 安裝 vsftpd 服務以及配置全攻略,vsftpd 虛擬多用戶多目錄配置,為每個用戶配置不同的使用權限

linux 安裝 vsftpd 服務以及配置全攻略&#xff0c;vsftpd 虛擬多用戶多目錄配置&#xff0c;為每個用戶配置不同的使用權限。 linux 安裝 vsftpd 服務以及配置全攻略 FTP 是 File Transfer Protocol 的簡稱&#xff0c;用于 Internet 上的控制文件的雙向傳輸。同時&#xff0…

SQL語句在MySQL中如何執行

MySQL的基礎架構 首先就是客戶端&#xff0c;其次Server服務層&#xff0c;大多數MySQL的核心服務都在這一層&#xff0c;包括連接、分析、優化、緩存以及所有的內置函數&#xff08;時間、日期、加密函數&#xff09;&#xff0c;所有跨存儲引擎功能都在這一層實現&#xff1…

ragflow連不上ollama的解決方案

由于前期wsl默認裝在C盤&#xff0c;后期部署好RagFlow后C盤爆紅&#xff0c;在連接ollama的時候一直在轉圈圈&#xff0c;問其他人沒有遇到這種情況&#xff0c;猜測是因為內存不足無法加載模型導致&#xff0c;今天重新在E盤安裝wsl 使用wsl裝Ubuntu Win11 wsl-安裝教程 如…

力扣-漢明距離

1.兩個整數之間的 漢明距離 指的是這兩個數字對應二進制位不同的位置的數目。 給你兩個整數 x 和 y&#xff0c;計算并返回它們之間的漢明距離。 看到這題&#xff0c;當然想到了按位異或^,并且c內置了計算二進制數中1數量的函數__builtin_popcount() class Solution { publ…

關于成功插入 SQLite 但沒有數據的問題

背景 技術棧&#xff1a;SpringBoot Mybatis-flex SQLite 項目中集成了SQLite&#xff0c;配置如下&#xff1a; spring:datasource:url: jdbc:sqlite::resource:db/project.dbdriver-class-name: org.sqlite.JDBC在進行測試時&#xff0c;使用Mybatis-flex往表中插入數據&…

C#常見錯誤—空對象錯誤

System.NullReferenceException&#xff1a;未將對象引用設置到對象的實例 在C#編程中&#xff0c;System.NullReferenceException是一個常見的運行時異常&#xff0c;其錯誤信息“未將對象引用設置到對象的實例”意味著代碼試圖訪問一個未被初始化或已被設置為null的對象的成…