實測,大模型誰更懂數據可視化?

大家好,我是 Ai 學習的老章

看論文時,經常看到漂亮的圖表,很多不知道是用什么工具繪制的,或者很想復刻類似圖表。

實測,大模型?LaTeX?公式識別,出乎預料

前文,我用 Kimi、Qwen-3-235B-A22B、Claude-3.7-sonnet、GPT-4.1、Gemini 2.5 Pro 測試了其在 LaTeX 公式識別中的表現。

本文就測試一下他們在圖表識別、復刻中的表現,看看誰更擅長干這件事

備注:Kimi 開啟了長思考,Qwen3 未開啟深度思考,因為開啟之后巨慢且失敗

省流:Gemini 2.5 Pro 是最強大的代碼模型,毫無爭議

排名:Gemini 2.5 Pro > Claude 3.7 Sonnet > Kimi = Qwen3 > GPT-4.1

第一題

來源:https://www.biorxiv.org/content/10.1101/2024.04.02.587723v1.full.pdf

Kimi

有點弱智,繪制了傻瓜箱線圖,圖像理解有問題

Qwen-3-235B-A22B

也很傻瓜,與 kimi 半斤八兩

Claude-3.7-sonnet

好一點點,繪制了半小提琴圖 (half-violin plot) 結合箱線圖 (box plot)

后續我又試了一下

如果明確告訴它用 R 繪制,Claude-3.7 結果如下,還不錯!

GPT-4.1

失敗,生成的代碼滿滿得 bug,無法生成圖表

Gemini 2.5 Pro

震驚了

它識別出這是雨云圖 (raincloudplot),結合了以下 3 圖表的元素:

散點圖 (Scatter/Strip plot):顯示每 1.個單獨的數據點 (圖中的綠色和藍色小點)

箱形圖 (Box plot):顯示數據的分布摘要 (中位數、四分位數、均值和標準差范圍)

小提琴圖 (Violin plot) 或 核密度估計圖 (KDE plot):顯示數據分布的平滑曲線 (圖中數據點左側的曲線)

代碼放文末了,大家欣賞一下

第二題

上難度,一次性復刻、輸出 4 張圖表

來源:《Benchmarking Supervised Machine Learning Models for the Classification of Primary Graft Dysfunction》

Kimi

看了下,其樣例數據很簡單,第四幅圖沒有完美復刻

Qwen-3-235B-A22B

沒理解意思,且只生成了一張,出現 bug

沒想到它居然還不如 kimi。。。

Claude-3.7-sonnet

第四幅圖沒有繪制成功,報錯是顏色問題

讓其修復顏色問題后,輸出如下,第四幅圖沒有依然沒有完美復刻

GPT-4.1

繪制失敗,換了 GPT-4o 依然失敗

Gemini 2.5 Pro

第四張繪制失敗

第三題

換個簡單點的

省點事兒,直接讓大模型用 R 復刻

用?R?_復刻_了一張圖,附代碼

Obsidian 2025-05-14 09.49.07.png

Kimi

復刻失敗

Qwen-3-235B-A22B

還行,有點丑

Claude-3.7-sonnet

“徑向條形圖”或“放射狀條形圖”(Radial Bar Chart)

GPT-4.1

復刻失敗

Gemini 2.5 Pro

接近完美復刻

Gemini-2.5-Pro 繪制的云雨圖代碼

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np# 1. 生成模擬數據
# 根據圖片估算 R 和 rho 的數據特征
np.random.seed(0) # 為了結果可復現# R 的數據
r_mean = 0.78
r_std = 0.02 # 根據 1 SD 范圍 (0.76-0.80) 估算
r_data = np.random.normal(loc=r_mean, scale=r_std, size=100)
# 限制數據在圖中大致范圍內
r_data = np.clip(r_data, 0.72, 0.82)# rho 的數據
rho_mean = 0.77
rho_std = 0.02 # 根據 1 SD 范圍 (0.75-0.79) 估算
rho_data = np.random.normal(loc=rho_mean, scale=rho_std, size=100)
# 限制數據在圖中大致范圍內
rho_data = np.clip(rho_data, 0.70, 0.81)# 將數據整合到 Pandas DataFrame 中,方便 seaborn 處理
df_r = pd.DataFrame({'value': r_data, 'category': 'R'})
df_rho = pd.DataFrame({'value': rho_data, 'category': 'ρ'})
df_combined = pd.concat([df_r, df_rho])# 2. 繪制圖表
fig, ax = plt.subplots(figsize=(8, 6))# 使用 seaborn 繪制
# 為了實現雨云圖的效果,我們會組合 stripplot, boxplot, 和 violinplot (只顯示一半)# 定義顏色
colors = {"R": "green", "ρ": "blue"}# 繪制 R
# 散點 (左移一點,給箱線圖和 KDE 留空間)
sns.stripplot(x='category', y='value', data=df_r, order=['R'],color=colors['R'], alpha=0.7, jitter=0.2, size=5, ax=ax, dodge=True, label='_nolegend_')# 箱線圖 (居中)
sns.boxplot(x='category', y='value', data=df_r, order=['R'],color=colors['R'], width=0.3, showfliers=False, ax=ax,boxprops=dict(alpha=0.5), medianprops=dict(color='black'))# 小提琴圖/KDE (右移一點,只畫一半)
# Seaborn 的 violinplot 可以通過 cut=0 和 inner=None 以及調整位置來實現類似效果
# 或者更精確地使用 KDE 圖并手動定位
from scipy import stats
kde_r = stats.gaussian_kde(df_r['value'])
x_vals_r = np.linspace(df_r['value'].min(), df_r['value'].max(), 100)
y_vals_r = kde_r(x_vals_r)
# 將 KDE 曲線畫在散點圖的左邊
# 需要計算合適的橫坐標位置,這里簡化處理,通常雨云圖庫會處理這個對齊
ax.plot(0 - 0.35 - y_vals_r / (y_vals_r.max()*3) , x_vals_r, color=colors['R'], lw=2) # 調整分母控制寬度# 繪制 ρ
# 散點
sns.stripplot(x='category', y='value', data=df_rho, order=['ρ'],color=colors['ρ'], alpha=0.7, jitter=0.2, size=5, ax=ax, dodge=True, label='_nolegend_')# 箱線圖
sns.boxplot(x='category', y='value', data=df_rho, order=['ρ'],color=colors['ρ'], width=0.3, showfliers=False, ax=ax,boxprops=dict(alpha=0.5), medianprops=dict(color='black'))# 小提琴圖/KDE for rho
kde_rho = stats.gaussian_kde(df_rho['value'])
x_vals_rho = np.linspace(df_rho['value'].min(), df_rho['value'].max(), 100)
y_vals_rho = kde_rho(x_vals_rho)
ax.plot(1 - 0.35 - y_vals_rho / (y_vals_rho.max()*3) , x_vals_rho, color=colors['ρ'], lw=2)# 3. 添加圖例和標簽 (類似原圖)
# R 的均值和標準差標注
mean_r_val = df_r['value'].mean()
std_r_val = df_r['value'].std()
ax.plot([0 + 0.15, 0.25 + 0.15], [mean_r_val + std_r_val, mean_r_val + std_r_val], color='black', lw=1)
ax.text(0.28 + 0.15, mean_r_val + std_r_val, f'{mean_r_val + std_r_val:.2f}(1 SD)', va='center')
ax.plot([0 + 0.15, 0.25 + 0.15], [mean_r_val, mean_r_val], color='black', lw=1, linestyle='--') # 均值線 (用星號表示)
ax.plot(0, mean_r_val, marker='*', markersize=10, color='black', markeredgecolor='white') # 原圖是星號
ax.text(0.28 + 0.15, mean_r_val, f'{mean_r_val:.2f}(MEAN)', va='center')
ax.plot([0 + 0.15, 0.25 + 0.15], [mean_r_val - std_r_val, mean_r_val - std_r_val], color='black', lw=1)
ax.text(0.28 + 0.15, mean_r_val - std_r_val, f'{mean_r_val - std_r_val:.2f}(-1 SD)', va='center')# ρ 的均值和標準差標注
mean_rho_val = df_rho['value'].mean()
std_rho_val = df_rho['value'].std()
ax.plot([1 + 0.15, 1.25 + 0.15], [mean_rho_val + std_rho_val, mean_rho_val + std_rho_val], color='black', lw=1)
ax.text(1.28 + 0.15, mean_rho_val + std_rho_val, f'{mean_rho_val + std_rho_val:.2f}(1 SD)', va='center')
ax.plot([1 + 0.15, 1.25 + 0.15], [mean_rho_val, mean_rho_val], color='black', lw=1, linestyle='--')
ax.plot(1, mean_rho_val, marker='*', markersize=10, color='black', markeredgecolor='white')
ax.text(1.28 + 0.15, mean_rho_val, f'{mean_rho_val:.2f}(MEAN)', va='center')
ax.plot([1 + 0.15, 1.25 + 0.15], [mean_rho_val - std_rho_val, mean_rho_val - std_rho_val], color='black', lw=1)
ax.text(1.28 + 0.15, mean_rho_val - std_rho_val, f'{mean_rho_val - std_rho_val:.2f}(-1 SD)', va='center')# 圖表標題和軸標簽
ax.set_ylabel('R or ρ Range')
ax.set_xlabel('') # X 軸通常不顯示標簽,直接用類別名
ax.set_xticks([0, 1])
ax.set_xticklabels(['R', 'ρ'])
ax.set_ylim(0.65, 0.85) # 根據原圖設定
ax.text(0.05, 0.95, '(d)', transform=ax.transAxes, fontsize=14, va='top') # 子圖標簽# 添加圖例 (模擬原圖的圖例)
from matplotlib.lines import Line2D
from matplotlib.patches import Patch
legend_elements = [Patch(facecolor='grey', alpha=0.3, edgecolor='black', label='25%~75%'),Line2D([0], [0], color='black', lw=2, label='Mean ± 1 SD', marker='|', markersize=5, linestyle='-'),Line2D([0], [0], color='black', lw=1, label='Median Line'),Line2D([0], [0], marker='*', color='w', label='Mean',markerfacecolor='black', markersize=10)
]
ax.legend(handles=legend_elements, loc='upper right', bbox_to_anchor=(1.0, 1.0))plt.tight_layout()
plt.show()

Gemini-2.5-Pro 繪制南丁格爾玫瑰圖代碼

# 安裝和加載必要的包
# install.packages("ggplot2")
# install.packages("dplyr")
# install.packages("tidyr") # For pivot_longer if neededlibrary(ggplot2)
library(dplyr)# 1. 準備數據
# 主模型數據
model_data <- data.frame(benchmark = factor(rep(c("HumanEval", "CodeArena", "EvalPlus", "BIRD-SQL", "CRUXEval-O", "Aider", "BigCodeBench", "McEval", "LiveCodeBench", "MBPP"), each = 4),levels = c("HumanEval", "CodeArena", "EvalPlus", "BIRD-SQL", "CRUXEval-O", "Aider", "BigCodeBench", "McEval", "LiveCodeBench", "MBPP")),model = factor(rep(c("Qwen2.5-Coder-32B-Instruct", "DeepSeek-Coder-V2-Instruct", "DeepSeek-Coder-33B-Instruct", "CodeLlama-Instruct-22B"), times = 10),levels = c("Qwen2.5-Coder-32B-Instruct", "DeepSeek-Coder-V2-Instruct", "DeepSeek-Coder-33B-Instruct", "CodeLlama-Instruct-22B")),value = c(# HumanEval92.7, 88.4, 79.3, 78.1,# CodeArena68.9, 57.4, 21.7, 16.8,# EvalPlus86.3, 83.8, 74.9, 73.5,# BIRD-SQL58.4, 51.9, 46.2, 45.6,# CRUXEval-O83.4, 75.1, 63.5, 50.6,# Aider73.7, 72.9, 59.4, 51.1,# BigCodeBench38.3, 36.3, 29.8, 29.4,# McEval65.9, 62.9, 54.3, 50.5,# LiveCodeBench31.4, 27.9, 22.6, 21.3,# MBPP90.2, 89.2, 81.2, 73.3)
)# GPT-4o 背景數據 (定義每個 benchmark "軌道" 的最大值)
gpt4o_data <- data.frame(benchmark = factor(c("HumanEval", "CodeArena", "EvalPlus", "BIRD-SQL", "CRUXEval-O", "Aider", "BigCodeBench", "McEval", "LiveCodeBench", "MBPP"),levels = levels(model_data$benchmark)),value = c(92.1, 69.1, 84.4, 54.2, 89.2, 71.4, 37.6, 65.8, 34.6, 86.8)
)# 2. 定義顏色
# 順序應與 model factor levels 對應: Blue, Green, Beige, Pink
color_palette <- c("Qwen2.5-Coder-32B-Instruct" = "#2A7FFF", # 鮮艷的藍色"DeepSeek-Coder-V2-Instruct" = "#7CFC00", # 亮綠色/酸橙綠"DeepSeek-Coder-33B-Instruct" = "#E0C097", # 米色/淺棕"CodeLlama-Instruct-22B" = "#FF1493", # 深粉色/品紅"GPT-4o-Track" = "#4A4A3B" # 暗橄欖色 (用于背景軌道)
)# 3. 創建圖表
# 計算 benchmark 標簽的位置
num_benchmarks <- length(levels(model_data$benchmark))
benchmark_labels_data <- data.frame(benchmark = levels(model_data$benchmark),angle = 90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2,hjust_val = ifelse( (90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2) < -90 | (90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2) > 90, 1, 0),angle_text = ifelse( (90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2) < -90 | (90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2) > 90, (90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2) + 180, (90 - seq(0, 360 - 360/num_benchmarks, length.out = num_benchmarks) - (360/num_benchmarks)/2) )
)
# 合并以獲取 benchmark 的 x 值
benchmark_labels_data <- benchmark_labels_data %>%mutate(x_pos = as.numeric(factor(benchmark, levels = levels(model_data$benchmark))))# 調整y軸上限以容納標簽
y_axis_max <- 115 #max(c(model_data$value, gpt4o_data$value)) * 1.15p <- ggplot() +# A. 繪制 GPT-4o 背景 "軌道"# 使用 geom_col 為每個 benchmark 創建一個單獨的背景條,寬度覆蓋整個類別geom_col(data = gpt4o_data,aes(x = benchmark, y = value), # 使用 y = y_axis_max 來創建完整的扇區背景fill = color_palette["GPT-4o-Track"], # 使用預定義的顏色alpha = 0.8, # 透明度width = 0.95) + # 寬度,確保覆蓋# B. 繪制模型數據條形geom_col(data = model_data, aes(x = benchmark, y = value, fill = model),position = position_dodge2(width = 0.9, preserve = "single"), # 分組條形width = 0.85, # 條形寬度alpha = 0.9) + # 條形透明度# C. 在 GPT-4o 軌道上添加數值標簽geom_text(data = gpt4o_data,aes(x = benchmark, y = value + 4, label = sprintf("%.1f", value)), # 標簽位置略高于軌道末端color = "white", size = 2.5, fontface = "bold", vjust = 0.5) +# D. 在模型數據條形上添加數值標簽geom_text(data = model_data,aes(x = benchmark, y = value + 2, label = sprintf("%.1f", value), group = model),position = position_dodge2(width = 0.9, preserve = "single"),color = "white", size = 2, vjust = 0.5, hjust=0.5, fontface="bold") +# E. 應用極坐標轉換coord_polar(theta = "x", start = 0, direction = 1) +# F. 設置 Y 軸范圍和刻度 (半徑)# 移除默認的Y軸網格線和標簽,因為它們在極坐標圖中通常不直觀scale_y_continuous(limits = c(-20, y_axis_max), breaks = c(0, 25, 50, 75, 100), labels = c("0", "25", "50", "75", "100")) +# G. 自定義顏色scale_fill_manual(values = color_palette, name = "Model") +# H. 添加 Benchmark 標簽 (X軸標簽)# 使用 annotate 或 geom_text 來手動放置 benchmark 標簽# 這里我們使用 scale_x_discrete 并嘗試通過主題調整,但自定義 geom_text 通常效果更好geom_text(data = benchmark_labels_data,aes(x = x_pos, y = y_axis_max * 0.95, label = benchmark, angle = angle_text, hjust = hjust_val), # y值設在外部color = "white", size = 3.5, fontface = "bold") +# I. 設置主題和樣式theme_minimal() +theme(plot.background = element_rect(fill = "black", color = "black"),panel.background = element_rect(fill = "black", color = "black"),panel.grid = element_blank(), # 移除主要網格線axis.title = element_blank(),axis.text.y = element_text(color = "white", size = 8), # Y軸刻度標簽(半徑)axis.text.x = element_blank(), # 移除默認的X軸標簽,因為我們用geom_text自定義了legend.position = "bottom",legend.background = element_rect(fill = "black"),legend.title = element_text(color = "white", face = "bold"),legend.text = element_text(color = "white"),plot.title = element_text(color = "white", size = 20, hjust = 0.5, face = "bold", margin = margin(b = 20))) +# J. 添加標題ggtitle("Qwen2.5-Coder-32B")# 顯示圖表
print(p)

制作不易,如果這篇文章覺得對你有用,可否點個關注。給我個三連擊:點贊、轉發和在看。若可以再給我加個🌟,謝謝你看我的文章,我們下篇再見!

搭建完美的寫作環境:工具篇(12 章)
圖解機器學習 - 中文版(72 張 PNG)
ChatGPT、大模型系列研究報告(50 個 PDF)
108 頁 PDF 小冊子:搭建機器學習開發環境及 Python 基礎?
116 頁 PDF 小冊子:機器學習中的概率論、統計學、線性代數?
史上最全!371 張速查表,涵蓋 AI、ChatGPT、Python、R、深度學習、機器學習等

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

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

相關文章

深度學習-梯度消失和梯度爆炸

梯度消失 在某些神經網絡中&#xff0c;隨著網絡深度的增加&#xff0c;梯度在隱藏層反向傳播時傾向于變小&#xff0c;這就意味著&#xff0c;前面隱藏層中的神經元要比后面的學習起來更慢&#xff0c;這種現象就叫做“梯度消失”&#xff1b; 梯度爆炸 如果我們進行一些特殊…

Go 語言基礎 2 Func,流程控制

更多個人筆記見&#xff1a; github個人筆記倉庫 gitee 個人筆記倉庫 個人學習&#xff0c;學習過程中還會不斷補充&#xff5e; &#xff08;后續會更新在github上&#xff09; 文章目錄 Func 函數函數棧概念 函數表示類型 Anonymous func 匿名函數closure 閉包基礎示例http利…

【Linux 學習計劃】-- 倒計時、進度條小程序

目錄 \r 、\n、fflush 倒計時 進度條 進度條進階版 結語 \r 、\n、fflush 首先我們先來認識這三個東西&#xff0c;這將會是我們接下來兩個小程序的重點之一 首先是我們的老演員\n&#xff0c;也就是回車加換行 這里面其實包含了兩個操作&#xff0c;一個叫做回車&…

從零實現wss通信示例(WebSocket SSL)

客戶端和服務端代碼框架跟上一篇一致,僅增加了ssl的證書部分用于加密通信,明文通信(ws協議)見上一篇【https://blog.csdn.net/suoxd123/article/details/148093934】 1. 證書創建 1. 安裝openssl 【官網地址】:https://slproweb.com/products/Win32OpenSSL.html 1.2 …

mysql 索引失效有哪些

InnoDB存儲引擎根據索引類型不同&#xff0c;分為聚簇索引和二級索引 聚簇索引&#xff1a;葉子節點存放的是實際數據 二級索引&#xff1a;存放的是主鍵值&#xff0c;不是實際數據 1.對索引使用左或者左右模糊匹配 select * from t_user where name like %林‘&#xff1b…

LabVIEW通用測控平臺設計

基于 LabVIEW 圖形化編程環境&#xff0c;設計了一套適用于工業自動化、科研測試領域的通用測控平臺。通過整合研華、NI等品牌硬件&#xff0c;實現多類型數據采集、實時控制及可視化管理。平臺采用模塊化架構&#xff0c;支持硬件靈活擴展&#xff0c;解決了傳統測控系統開發周…

華為OD機試真題——智能駕駛(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 200分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

速賣通,國際站測評補單,如何平衡效率和安全

測評能夠幫助賣家讓平臺更喜歡自己的產品&#xff0c;給予更好排名的同時也讓后續進入店鋪的買家更容易認可自己的產品。這是進行真實交易后形成的評價&#xff0c;而不是通過機器軟件生成&#xff0c;形成虛擬數據后&#xff0c;那種刷評形式產生的評論。它符合任何電商平臺的…

學習路之PHP--easyswoole3.3入門及文件熱加載

學習路之PHP--easyswoole入門 一、框架說明二、常用命令三、文件熱加載 一、框架說明 目錄結構 目錄結構 project 項目部署目錄 ├─App 應用目錄(可以有多個) │ ├─HttpController 控制器目錄 │ │ └─Index.php …

設計模式26——解釋器模式

寫文章的初心主要是用來幫助自己快速的回憶這個模式該怎么用&#xff0c;主要是下面的UML圖可以起到大作用&#xff0c;在你學習過一遍以后可能會遺忘&#xff0c;忘記了不要緊&#xff0c;只要看一眼UML圖就能想起來了。同時也請大家多多指教。 解釋器模式&#xff08;Interp…

第三屆寧波技能大賽網絡安全賽項樣題

2025 第三屆寧波技能大賽網絡安全賽項樣題 模塊A: 網絡安全事件響應、數字取證調查和應用安全任務一:應急響應任務二:操作系統取證任務三:網絡數據包分析任務四:代碼審計 模塊B:CTF 奪旗-攻擊模塊C:CTF 奪旗-防御需要環境培訓可以私信博主&#xff01;&#xff01;&#xff01;…

GO語言進階:掌握進程OS操作與高效編碼數據轉換

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦&#xff1a;「storms…

IO進程(進程 Process)

什么是進程&#xff1f; 1.概念 程序&#xff1a;編譯好的可執行文件&#xff0c;存放在磁盤上的指令和數據的有序集合。 由此可見程序是靜態的&#xff0c;沒有執行的概念。 進程&#xff1a;是程序的一次執行的過程&#xff0c;是一個可調度的任務&#xff0c;也是執行一…

CSS傳統布局與定位詳解與TDK三大標簽SEO優化

一、傳統布局基礎 1. 文檔流布局 瀏覽器默認的文檔流布局方式遵循以下規則&#xff1a; 塊級元素&#xff08;如<div>、<p>、<h1>&#xff09;&#xff1a; 獨占一行寬度默認100%可以設置寬高、內外邊距 div {width: 500px;height: 200px;margin: 10px …

【GraphQL】深入解析 Apollo Client:從架構到實踐的一站式 GraphQL 解決方案

深入解析 Apollo Client&#xff1a;從架構到實踐的一站式 GraphQL 解決方案 1. 引言 GraphQL 作為現代 API 開發的核心技術&#xff0c;其靈活性和高效性正在重塑數據交互模式。Apollo Client 作為 GraphQL 生態中最受歡迎的客戶端庫&#xff0c;憑借強大的緩存機制、框架集…

docker學習基本使用教程

docker是一款用于開發部署和運行容器化平臺&#xff0c;能將應用及其依賴打包成輕量級、可移植的容器&#xff0c;實現一次構建&#xff0c;隨處運行。docker是cs架構程序&#xff08;客戶端和服務端&#xff09;&#xff0c;docker客戶端向docker守護進程發送請求&#xff0c;…

萬字詳解RTR RTSP SDP RTCP

目錄 1 RTSP1.1 RTSP基本簡介1.2 RSTP架構1.3 重點內容分析 2 RTR2.1 RTR簡介2.2 RTP 封裝 H.2642.3 RTP 解封裝 H.2642.4 RTP封裝 AAC2.5 RTP解封裝AAC 3 SDP3.1 基礎概念3.2 SDP協議示例解析3.3 重點知識 4 RTCP4.1 RTCP基礎概念4.2 重點 5 總結 1 RTSP 1.1 RTSP基本簡介 一…

唯一原生適配鴻蒙電腦的遠程控制應用,向日葵正式上線

近日&#xff0c;華為正式發布鴻蒙電腦新品&#xff0c;標志著HarmonyOS在PC端生態的進一步拓展。作為遠程控制領域的先行者&#xff0c;貝銳科技旗下的向日葵遠程控制軟件也在第一時間完成了對鴻蒙電腦系統的原生適配&#xff0c;并已正式上線華為鴻蒙電腦應用市場&#xff0c…

vue2中,codemirror編輯器的使用

交互說明 在編輯器中輸入{時&#xff0c;會自動彈出選項彈窗&#xff0c;然后可以選值插入。 代碼 父組件 <variable-editorv-model"content":variables"variables"placeholder"請輸入模板內容..."blur"handleBlur" />data…

Kafka自定義分區策略實戰避坑指南

文章目錄 概要代碼示例小結 概要 kafka生產者發送消息默認根據總分區數和設置的key計算哈希取余數&#xff0c;key不變就默認存放在一個分區&#xff0c;沒有key則隨機數分區&#xff0c;明顯默認的是最不好用的&#xff0c;那kafka也提供了一個輪詢分區策略&#xff0c;我自己…