neo4j 圖數據庫:Cypher 查詢語言、醫學知識圖譜

neo4j 圖數據庫:Cypher 查詢語言、醫學知識圖譜

    • Cypher 查詢語言
      • 創建數據
      • 查詢數據
        • 查詢并返回所有節點
        • 查詢并返回所有帶有特定標簽的節點
        • 查詢特定屬性的節點及其所有關系和關系的另一端節點
        • 查詢從名為“小明”的節點到名為“小紅”的節點的路徑
      • 更新數據
        • 更新一個節點的屬性
        • 添加新屬性
        • 更新關系的屬性
      • 刪除數據
        • 刪除節點
        • 刪除關系
        • 刪除屬性
      • 三元組導入知識圖譜
        • 對于 `kg_triples_small.txt`
        • 對于 `CPubMed-KGV_1.1.txt`
        • 深度級聯查詢 - 獲取全面的癥狀-疾病網絡
      • Python 交互 Neo4j
        • 步驟 1: 安裝 Neo4j Python 驅動程序
        • 步驟 2: 建立連接
        • 步驟 3: 執行查詢
        • 步驟 4: 處理事務
        • 步驟 5: 關閉驅動
      • 查詢性能優化
        • 使用索引
        • 合理使用標簽
        • 優化Cypher查詢
        • 使用參數化查詢
        • 使用更高效的查詢模式
        • 監控和分析查詢性能

?


Cypher 查詢語言

Cypher 是 neo4j 查詢語言。

以下列舉一些最少必要知識,能用就行。

其他用法,可以問大模型。

創建數據

CREATE (n:User {name:"小明", age:18}) RETURN n
# 創建一個屬性為 name:"小明" 和 age:18 的 User 類型的節點,并返回這個節點。CREATE (n:User {name:"小明"}) -[r:LOVE{time:"一萬年"}]-> (m:User{name:"小紅"}) return n,r,m
# 創建了兩個用戶節點:小明 和 小紅。它還創建了一個從 小明 指向 小紅 的 LOVE 類型的關系,并設置了屬性 time:"一萬年"。該命令返回這兩個節點以及他們之間的關系。CREATE (n:User {name:"小明"}) <-[r:LOVE{time:"一萬年"}]- (m:User{name:"小紅"}) return n,r,m
# 與第二條命令類似,但關系的方向相反。

在 Cypher 查詢語言中,用于圖數據庫操作的特定符號有特殊意義,這里對您提到的符號進行詳細解釋:

  1. {}(花括號):

    花括號用于定義節點或關系的屬性。

    在創建節點或關系時,花括號內可以包含一系列的鍵值對,鍵與值之間用冒號分隔。例如:

    CREATE (n:User {name: "小明", age: 18})
    

    這里 {name: "小明", age: 18} 定義了一個 User 類型的節點,具有 nameage 兩個屬性。

  2. :(冒號):
    冒號在 Cypher 中用于指定節點的標簽或關系的類型。

    標簽通常用來分類或標識不同的節點,而關系的類型用來描述節點之間的連接方式。

    例如:

    MATCH (n:User) -[:FRIEND]-> (m:User)
    

    這里 :User 表明 nmUser 類型的節點,而 :FRIEND 指明兩者之間的關系類型為 FRIEND

  3. ->(箭頭):
    箭頭用于指明關系的方向。

    在圖數據庫中,關系可以是有向的,箭頭顯示了從一個節點指向另一個節點的路徑。例如:

    CREATE (n) -[:LIKES]-> (m)
    

    這表示從節點 n 到節點 m 存在一個 LIKES 類型的關系,并且方向是從 n 指向 m

  4. ()(圓括號):

    圓括號用于圍繞節點,并可與其他符號結合表示關系和屬性。

    在定義節點時,圓括號內可以包含節點的變量名(可選)、標簽(可選)和屬性(可選)。例如:

    MATCH (n) -[:KNOWS]-> (m)
    

    這里 (n)(m) 分別代表圖中的兩個節點,通過 KNOWS 關系相連。

這些符號的組合使得 Cypher 查詢語言能夠直觀地描述和操作圖數據結構。

查詢數據

這三個 Cypher 查詢示例都是用來從圖數據庫中檢索數據的:

查詢并返回所有節點
MATCH (n) 
RETURN n
  • MATCH (n): 匹配圖中的所有節點,這里 n 是節點的變量名,可以用來引用任何被匹配到的節點。
  • RETURN n: 返回所有匹配到的節點。
  • 注釋:// 匹配并返回圖中的所有節點
查詢并返回所有帶有特定標簽的節點
MATCH (n:User) 
RETURN n
  • MATCH (n:User): 匹配圖中所有標記為 User 的節點,:User 指定了節點的標簽。
  • RETURN n: 返回所有帶有 User 標簽的節點。
  • 注釋:// 查詢并返回所有標為“User”的節點
查詢特定屬性的節點及其所有關系和關系的另一端節點
MATCH (n:User {name:"小明"}) -[r]- (m) 
RETURN n, r, m
  • MATCH (n:User {name:"小明"}) -[r]- (m): 匹配圖中名為 “小明” 的 User 類型節點,并匹配該節點的所有關系 r 及關系的另一端節點 m。關系 [r] 沒有指定方向,表示可以是任何方向。
  • RETURN n, r, m: 返回與名為 “小明” 的 User 節點有關系的所有節點和這些關系。寫成 return * 等同
  • 注釋:// 查詢名為“小明”的用戶節點及其所有關系和關聯節點
查詢從名為“小明”的節點到名為“小紅”的節點的路徑
MATCH path = (a:User {name: "小明"})-[*]->(b:User {name: "小紅"})
RETURN path

這條查詢的解釋如下:

  • MATCH path = (a:User {name: "小明"})-[*]->(b:User {name: "小紅"}): 這里定義了一個變量 path 來保存從“小明”到“小紅”的路徑。(a:User {name: "小明"})(b:User {name: "小紅"}) 分別指定了起點和終點節點,而 [*] 表示路徑中可以包含任意數量和類型的關系,并且是有方向的,從“小明”指向“小紅”。
  • RETURN path: 返回找到的所有路徑。

如果你想限制路徑的長度,例如,查找最多經過3個關系的路徑,可以修改查詢如下:

MATCH path = (a:User {name: "小明"})-[*..3]->(b:User {name: "小紅"})
RETURN path

這個修改使得查詢只返回最多包含三個關系的路徑。

這樣的限制有助于避免在大圖中執行過于復雜的查詢,從而可能導致性能問題。

此外,如果你對路徑的詳細信息感興趣,比如路徑中每個節點和關系的具體屬性,你可以展開路徑的返回內容:

MATCH path = (a:User {name: "小明"})-[*]->(b:User {name: "小紅"})
RETURN nodes(path) AS nodes, relationships(path) AS relationships

這將返回路徑中的所有節點和關系,使得你能夠獲取更多關于路徑的具體細節。

這些查詢覆蓋了從最基本的節點檢索到更具體的帶有條件和關系的檢索,適合不同的查詢需求。

在實際使用時,根據圖的大小和復雜性,你可能需要考慮查詢的效率和性能。

更新數據

在 Cypher 查詢語言中,更新數據通常涉及修改節點或關系的屬性。這些操作通過 SET 關鍵詞來實現。下面,我會給出一些常見的更新數據的示例:

更新一個節點的屬性

假設你想更新名為“小明”的用戶的年齡。你可以使用以下Cypher命令:

MATCH (n:User {name: "小明"})
SET n.age = 20
RETURN n

這條命令的解釋如下:

  • MATCH (n:User {name: "小明"}): 找到所有名為“小明”的 User 節點。
  • SET n.age = 20: 將這些節點的 age 屬性設置為 20
  • RETURN n: 返回更新后的節點。
添加新屬性

如果你想給“小明”添加一個新的屬性,比如 email

MATCH (n:User {name: "小明"})
SET n.email = "xiaoming@example.com"
RETURN n

這將給“小明”節點添加一個 email 屬性,并設其值為 “xiaoming@example.com”。

更新關系的屬性

假設你想更新“小明”和“小紅”之間 LOVE 關系的時間屬性:

MATCH (a:User {name: "小明"})-[r:LOVE]->(b:User {name: "小紅"})
SET r.time = "兩萬年"
RETURN a, r, b

這條命令的解釋如下:

  • MATCH (a:User {name: "小明"})-[r:LOVE]->(b:User {name: "小紅"}): 找到從“小明”到“小紅”的 LOVE 類型的關系。
  • SET r.time = "兩萬年": 更新這個關系的 time 屬性。
  • RETURN a, r, b: 返回更新后的節點和關系。

刪除數據

在 Cypher 查詢語言中,刪除操作涉及到移除節點、關系、屬性或整個圖結構的一部分。

刪除節點

要刪除特定的節點,你需要先匹配到這個節點,然后使用 DELETE 命令。

需要注意的是,如果該節點還有任何關系,直接刪除會失敗,因為圖數據庫要求任何存在的關系都必須有明確的起點和終點。

如果你想刪除一個節點及其所有關系,可以使用 DETACH DELETE

示例:刪除名為“小紅”的用戶節點及其所有關系:

MATCH (n:User {name: "小紅"})
DETACH DELETE n

這里,DETACH DELETE n 會刪除匹配到的節點 n 及其所有關系。

刪除關系

如果你想單獨刪除節點之間的關系而保留節點本身,可以匹配到這些關系然后刪除它們。

示例:刪除“小明”和“小紅”之間的所有關系:

MATCH (a:User {name: "小明"})-[r]-(b:User {name: "小紅"})
DELETE r

這條命令不會刪除任何節點,只會刪除兩個用戶之間的所有關系。

刪除屬性

你可以使用 REMOVE 命令來刪除節點或關系上的某個屬性。

示例:刪除“小明”節點的 age 屬性:

MATCH (n:User {name: "小明"})
REMOVE n.age
RETURN n

執行后,“小明”的節點將不再有 age 屬性。

三元組導入知識圖譜

對于 kg_triples_small.txt
  1. 檢查數據格式

    • 確認每行是不是標準的三元組形式,例如 "主體, 關系, 賓體"
  2. 導入到Neo4j

    • 如果文件已經是CSV格式,直接使用如下Cypher命令導入:
      LOAD CSV FROM 'file:///path_to_kg_triples_small.csv' AS line
      MERGE (subject:Entity {name: line[0]})
      MERGE (object:Entity {name: line[2]})
      MERGE (subject)-[r:RELATION {type: line[1]}]->(object)
      
對于 CPubMed-KGV_1.1.txt

CPubMed-KGV_1.1.txt 格式有點特別。

是@@形式,這種和三元祖形式有差異,要怎么處理呢?

這種數據是人工做的標識文本,是分類,特有的設計模式,直接導入就可以了。

可以用llamaindex,可以直接導入,因為AI幫你處理了數據,就不用你手動寫代碼轉csv。

深度級聯查詢 - 獲取全面的癥狀-疾病網絡

在醫學領域,構建和查詢癥狀與疾病之間的網絡可以極大地幫助醫生和研究人員理解疾病的復雜關系,從而改進診斷和治療方法。

在這樣的應用場景中,深度級聯查詢可以用來探索癥狀和疾病之間的多級關聯,比如通過中間狀態或其他相關癥狀/疾病來鏈接起始癥狀和目標疾病。

首先,我們需要構建一個圖模型,其中包含兩種基本類型的節點:Symptom(癥狀)和Disease(疾病)。

這些節點通過關系如INDICATES(表征)、LEADS_TO(導致)或ASSOCIATED_WITH(相關聯)相連。

例如:

  • 癥狀A INDICATES 疾病B
  • 疾病B LEADS_TO 疾病C
  • 癥狀A ASSOCIATED_WITH 癥狀D

假設我們想要探索某個特定癥狀如何通過一系列其他癥狀和疾病最終可能導致某個具體疾病。

這種查詢不僅有助于診斷,還能揭示潛在的病理路徑。

MATCH path = (s:Symptom {name: "Persistent Cough"})-[:INDICATES|ASSOCIATED_WITH*1..4]->(d:Disease {name: "Lung Cancer"})
RETURN path

這里的查詢做了以下幾點:

  • 起始節點:癥狀節點,名為“Persistent Cough”(持續性咳嗽)。
  • 目標節點:疾病節點,名為“Lung Cancer”(肺癌)。
  • 關系類型和深度:通過INDICATES(表征)或ASSOCIATED_WITH(相關聯)關系,探索從起始癥狀到目標疾病的所有可能路徑,路徑的深度從1到4級不等。
  • 返回:返回從“持續性咳嗽”可能導致“肺癌”的所有路徑。

為了進一步探索可能的中間疾病和癥狀,可以擴展查詢來包含更多的關系類型和節點:

MATCH path = (s:Symptom {name: "Persistent Cough"})-[:INDICATES|ASSOCIATED_WITH|LEADS_TO*1..6]->(d:Disease {name: "Lung Cancer"})
RETURN path

在這個查詢中,添加了LEADS_TO關系,這表示疾病到疾病的直接影響,允許探索更長的病理路徑。

Python 交互 Neo4j

在項目中,一般是Python中執行Cypher查詢語句,從而操作Neo4j數據庫中的數據,而不是直接對著 neo4j 操作。

步驟 1: 安裝 Neo4j Python 驅動程序

首先,確保你已經安裝了neo4j包。如果還未安裝,可以通過pip安裝:

pip install neo4j
步驟 2: 建立連接

你需要創建一個與Neo4j數據庫的連接。通常這涉及到指定數據庫的URL、用戶名和密碼。

from neo4j import GraphDatabaseuri = "bolt://localhost:7687"  # Neo4j實例的Bolt URL
username = "neo4j"
password = "your_password"driver = GraphDatabase.driver(uri, auth=(username, password))
步驟 3: 執行查詢

通過定義一個函數來執行查詢。這個函數使用一個驅動實例來運行Cypher查詢并返回結果。

def get_user(driver, name):with driver.session() as session:result = session.run("MATCH (u:User {name: $name}) RETURN u", name=name)return [record["u"] for record in result]# 調用函數
user_data = get_user(driver, "小明")
print(user_data)
步驟 4: 處理事務

為了處理更復雜的業務邏輯,可以在會話中執行多個操作作為一個事務。

def create_friendship(driver, name1, name2):with driver.session() as session:session.write_transaction(lambda tx: tx.run("MATCH (a:User), (b:User) ""WHERE a.name = $name1 AND b.name = $name2 ""CREATE (a)-[:FRIENDS_WITH]->(b)", name1=name1, name2=name2))create_friendship(driver, "小明", "小紅")
步驟 5: 關閉驅動

操作完成后,確保關閉驅動連接。

driver.close()

查詢性能優化

在醫學問診的場景中,使用Neo4j來存儲和查詢有關疾病、癥狀、治療方法及其相互關系的數據時,可以采取以下優化策略來提升查詢性能。每個策略下將給出一個具體的例子:

使用索引

應用場景:快速查找特定癥狀或疾病的記錄。
示例:為疾病的名稱創建索引,以便快速啟動診斷過程。

CREATE INDEX ON :Disease(name)
合理使用標簽

應用場景:確保查詢只涉及相關類型的節點,以減少查詢范圍。
示例:在查詢涉及特定類型的節點時,使用合適的標簽。

MATCH (s:Symptom)-[:INDICATES]->(d:Disease)
WHERE s.name = 'Headache'
RETURN d.name

在此例中,SymptomDisease 標簽幫助數據庫引擎快速定位和查詢相關節點。

優化Cypher查詢

應用場景:避免返回不必要的數據,減少數據傳輸。
示例:只返回需要的屬性,而不是整個節點。

MATCH (p:Patient)-[:HAS_SYMPTOM]->(s:Symptom)
RETURN s.name

這里,只返回癥狀名稱而非整個癥狀節點的所有屬性。

使用參數化查詢

應用場景:提高查詢的重用性和安全性。
示例:使用參數化的方式來查詢具有特定癥狀的所有患者。

MATCH (p:Patient)-[:HAS_SYMPTOM]->(s:Symptom {name: $symptomName})
RETURN p.name

參數 $symptomName 可以在運行時提供,這樣同一查詢可以用于不同的癥狀。

使用更高效的查詢模式

應用場景:避免過于復雜的匹配模式,特別是在大型圖中。
示例:使用較短的路徑和限制結果集的大小來優化查詢。

MATCH path = (s:Symptom {name: 'Fever'})-[:INDICATES*1..2]->(d:Disease)
RETURN d.name LIMIT 10

這里,路徑長度限制為1到2跳,查詢結果也限制為最多10個。

監控和分析查詢性能

應用場景:識別和優化慢查詢。
示例:使用PROFILE來分析查詢并找出性能瓶頸。

PROFILE MATCH (p:Patient)-[:HAS_DISEASE]->(d:Disease)
WHERE d.name = 'Diabetes'
RETURN p.name

PROFILE 提供了關于查詢如何執行的詳細信息,包括每個操作的數據庫命中次數和資源消耗。

通過應用這些策略,醫學問診系統的數據庫查詢可以更加快速和有效,從而提升系統的整體性能和用戶體驗。

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

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

相關文章

python爬蟲和用騰訊云API接口進行翻譯并存入excel,通過本機的Windows任務計劃程序定時運行Python腳本!

項目場景&#xff1a; 提示&#xff1a;這里簡述項目相關背景&#xff1a;定時爬取外網的某個頁面&#xff0c;并將需要的部分翻譯為中文存入excel 接下了的&#xff0c;沒學過的最好看一下 基本爬蟲的學習 【爬蟲】requests 結合 BeautifulSoup抓取網頁數據_requests beauti…

Vue CoreVideoPlayer 一款基于 vue.js 的輕量級、優秀的視頻播放器組件

大家好,我是程序視點的小二哥!今天小二哥給大家推薦一款非常優秀的視頻播放組件 效果欣賞 介紹 Vue-CoreVideoPlayer 一款基于vue.js的輕量級的視頻播放器插件。 采用Adobd XD進行UI設計&#xff0c;支持移動端適配,不僅功能強大&#xff0c;顏值也是超一流&#xff01; Vue-…

第一次構建一個對話機器人流程解析(二)

1. 問答機器人的組成-基于知識圖譜的搜索 在教育場景下&#xff0c;若學生有關于學習內容的提問&#xff0c;或業務層面的提問&#xff0c;則要求問答機器人的回答必須精準&#xff0c;來滿足業務的要求因此需要通過知識圖譜來快速檢索&#xff0c;所提內容的相關信息&#xf…

數字系統與進制轉換

數字系統 數字邏輯是計算機科學的基礎&#xff0c;它研究的是如何通過邏輯門電路&#xff08;與門、或門、非門等&#xff09;實現各種邏輯功能。數字系統則是由數字邏輯電路組成的系統&#xff0c;可以實現各種復雜的運算和控制功能。在計算機科學中&#xff0c;數字邏輯和數…

C++ 假設今天是星期日,那么過a^b天之后是星期幾?

題目 假設今天是星期日&#xff0c;那么過a^b天之后是星期幾&#xff1f; 【輸入】 兩個正整數a&#xff0c;b&#xff0c;中間用單個空格隔開。0<a≤100,0<b≤10000。 【輸出】 一個字符串&#xff0c;代表過a^b天之后是星期幾。 其中&#xff0c;Monday是星期一&…

自定義波形圖View,LayoutInflater動態加載控件保存為本地圖片

效果圖: 頁面布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="…

C#多線程并行計算實例

在C#中實現多線程并行計算可以通過使用 Task 和 Parallel 類來實現。這里給出兩個簡單的示例&#xff0c;一個是使用 Task&#xff0c;另一個是使用 Parallel.ForEach。 使用 Task 進行多線程并行計算 using System; using System.Threading.Tasks;class Program {static voi…

Kubernetes基于helm部署jenkins

Kubernetes基于helm安裝jenkins jenkins支持war包、docker鏡像、系統安裝包、helm安裝等。在Kubernetes上使用Helm安裝Jenkins可以簡化安裝和管理Jenkins的過程。同時借助Kubernetes&#xff0c;jenkins可以實現工作節點的動態調用伸縮&#xff0c;更好的提高資源利用率。通過…

MySQL Innodb存儲引擎中,當頁默認的大小是16K時,頁中最多存放多少行的記錄?

1、題目引入 Innodb存儲引擎是面向行的(row-oriented)&#xff0c;也就是說數據的存放按行進行&#xff0c;每頁存放的行記錄是有硬性定義的&#xff0c;當頁默認的大小是16K時&#xff0c;頁中最多存放多少行的記錄&#xff1f; A、1600 行B、8192 行C、16383 行D、7992 行 …

基于Python協同過濾的旅游景點推薦系統,采用Django框架,MySQL數據存儲,Bootstrap前端,echarts可視化實現

隨著旅游業的迅速發展&#xff0c;個性化旅游推薦系統成為提升用戶體驗和促進旅游市場增長的重要工具。本研究旨在設計并實現一種基于Python協同過濾的旅游景點推薦系統&#xff0c;結合Django框架、MySQL數據庫存儲、Bootstrap前端框架以及echarts數據可視化技術&#xff0c;為…

Flask發布一個及時止損(止盈)服務(二)

生成可視化的止盈止損結果&#xff08;圖片&#xff09; 媽的&#xff0c;還是得用 akshare&#xff0c;還需要指定python版本3.9以上 conda remove -n fonxsys --all conda search pythonconda create -n fonxsys python3.9 conda activate fonxsys python.exe -m pip insta…

【粉絲福利 | 第8期】值得收藏!推薦10個好用的數據血緣工具

?? 寫在前面參與規則&#xff01;&#xff01;&#xff01; ?參與方式&#xff1a;關注博主、點贊、收藏、評論&#xff0c;任意評論&#xff08;每人最多評論三次&#xff09; ??本次送書1~4本【取決于閱讀量&#xff0c;閱讀量越多&#xff0c;送的越多】 目前市面上絕…

數據遷移探索

概念 數據遷移是指將數據從一個計算環境或存儲系統移動到另一個計算環境或存儲系統。 隨著公司業務的發展&#xff0c;出于成本優化、系統升級、分庫分表、整合數據等原因。數據遷移工作在日常工作中會陸續出現。 我們可以將數據遷移分成兩個部分&#xff0c;第一部分是數據…

springboot高職院校畢業生信息管理系統-計算機畢業設計源碼27889

摘 要 基于Java語言開發的高職院校畢業生信息管理系統旨在提供一個便捷、高效的方式來管理畢業生的相關信息。系統包括學生基本信息管理、成績管理、就業信息管理等模塊&#xff0c;通過界面友好、操作簡單的設計&#xff0c;方便管理員快速查詢和更新學生信息。系統還提供數據…

采用前后端分離技術架構+java語言開發的全套產科信息管理系統源碼 可與醫院HIS、LIS、PACS、RIS等系統進行對接

采用前后端分離技術架構java語言開發的全套產科信息管理系統源碼 可與醫院HIS、LIS、PACS、RIS等系統進行對接 什么是產科信息管理系統-建檔管理&#xff1f; 產科信息管理系統建檔管理通過信息技術實現了孕產婦健康信息的電子化、網絡化和智能化管理&#xff0c;提高了醫療服…

Riscv 架構的合規測試

為啥直接關注riscv-arch-test&#xff0c;是因為RISCOF 測試框架使用的是riscv-arch-test 1. The architectural test 架構測試是一個單一的測試&#xff0c;代表了可編譯和運行的最小測試代碼。它是用匯編代碼編寫的&#xff0c;其產品是test signature。一個架構測試可能由…

微信小程序推送消息java版

需求背景 使用springboot2微信小程序推送消息。百度了一下看了一篇文章整體還可以&#xff0c;這里推薦一下。 教程解析 1、微信平臺開通訂閱消息。 2、添加模板。 3、springboot后臺接口開發 微信平臺驗證地址接口開發&#xff0c;然后部署到公網服務器。 4、微信平臺驗…

基于FPGA的數字信號處理(15)--定點數的舍入模式(6)向0取整fix

前言 在之前的文章介紹了定點數為什么需要舍入和幾種常見的舍入模式。今天我們再來看看另外一種舍入模式&#xff1a;向上取整fix。 10進制數的fix fix&#xff1a;也叫 向0取整。它的舍入方式是數據往0的方向&#xff0c;舍入到最近的整數&#xff0c;比如1.75 fix到2&#xf…

Docker技術簡介

Docker是一種開源的容器化平臺&#xff0c;旨在簡化應用程序的創建、部署和運行過程。它通過將應用程序及其所有依賴項打包到一個稱為容器的可移植單元中來實現這一目標。以下是Docker技術的簡介&#xff1a; Docker的核心概念 1、容器&#xff08;Container&#xff09;&…

將WordPress的文章重新排序的3個方法

有效的調整文章顯示順序看開可以更好突出內容&#xff0c;還可以保持網站的新鮮感&#xff0c;今天我將帶您了解三種方法&#xff0c;通過重新排序文章顯著提升網站的吸引力。我們將逐步講解從調整設置到使用插件以及“置頂”文章的每一種方法&#xff0c;確保WordPress 新手也…