破解數據可視化難題:帶軸斷裂的柱狀圖繪制全指南

引言:當數據跨度讓圖表失真時,軸斷裂技術如何力挽狂瀾?

在數據可視化的世界里,我們常常會遇到這樣的困境:一組數據中既有 "巨無霸" 般的極端值,又有需要精細展示的小數據。比如在財務報表中,某個項目的金額達到千萬級別,而其他項目只有個位數;在生物實驗中,某個樣本的指標值突破上限,而其他樣本集中在較低區間。這時候如果直接繪制普通柱狀圖,小數據會被壓縮到幾乎看不見,可視化效果大打折扣😓。

今天要分享的帶軸斷裂的柱狀圖,就像一位神奇的 "數據魔術師",通過在縱軸上制造 "斷裂",讓大小數據各得其所 —— 既能展示極端值的真實規模,又能清晰呈現小數據的細節差異。讓我們通過一段完整的 Python 代碼,揭開這項技術的神秘面紗,從此告別數據可視化中的 "尺度焦慮"!🌟

代碼全景:先睹為快的軸斷裂柱狀圖實現

import matplotlib.pyplot as plt# 數據準備
data = [10000, 3, 7, 9, 10, 6]
labels = ['A', 'B', 'C', 'D', 'E', 'F']# 斷裂參數設置
break_point = 20
upper_ylim = max(data) * 1.1# 創建圖形和兩個子軸
fig, (ax_upper, ax_lower) = plt.subplots(2, 1, sharex=True,gridspec_kw={'height_ratios': [1, 3]},figsize=(8, 6))# 在兩個軸上繪制數據
ax_upper.bar(labels, data)
ax_lower.bar(labels, data)# 設置軸范圍
ax_lower.set_ylim(0, break_point)
ax_upper.set_ylim(break_point, upper_ylim)# 隱藏軸之間的邊框
ax_upper.spines['bottom'].set_visible(False)
ax_lower.spines['top'].set_visible(False)
ax_upper.tick_params(labeltop=False)  # 不顯示頂部標簽
ax_lower.xaxis.tick_bottom()  # 只在底部顯示x軸刻度# 添加對角線表示軸斷裂
d = .015  # 對角線的垂直與水平長度比例
kwargs = dict(transform=ax_upper.transAxes, color='k', clip_on=False)
ax_upper.plot((-d, +d), (-d, +d), **kwargs)
ax_upper.plot((1 - d, 1 + d), (-d, +d), **kwargs)kwargs.update(transform=ax_lower.transAxes)  # 切換到下軸
ax_lower.plot((-d, +d), (1 - d, 1 + d), **kwargs)
ax_lower.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)# 標簽和樣式設置
fig.suptitle('Bar Chart with Axis Break', fontsize=16, fontweight='bold')
ax_lower.set_xlabel('Category', fontsize=14, fontweight='bold')
ax_lower.set_ylabel('Value', fontsize=14, fontweight='bold')
for ax in (ax_upper, ax_lower):ax.grid(True, axis='y', linestyle='--', linewidth=0.5)ax.tick_params(axis='both', which='major', labelsize=12)plt.tight_layout(rect=[0, 0, 1, 0.96])# 保存為出版物質量
plt.savefig('axis_break_barplot.png', dpi=300)plt.show()

?

運行這段代碼,你將得到一個上下兩部分的柱狀圖:上半部分展示極端值(如 10000)的真實規模,下半部分放大顯示小數據(3-10)的細節,中間用對角線標記軸斷裂的位置。這種可視化方式讓原本難以呈現的數據關系變得一目了然,接下來我們逐行解析其中的實現邏輯。

核心代碼解析:軸斷裂柱狀圖的 "分而治之" 策略

1. 數據準備:定義你的 "數據軍團"

data = [10000, 3, 7, 9, 10, 6]
labels = ['A', 'B', 'C', 'D', 'E', 'F']
  • data 列表:存儲各分類的數據值,這里第一個值 10000 是明顯的極端值,后面的 3-10 是需要精細展示的小數據。你的數據可以是任何數值列表,比如 [500, 20, 25, 18, 22, 19](假設 500 是異常大值)。
  • labels 列表:對應數據的分類標簽,長度必須與 data 一致。你可以替換為實際場景的標簽,如 [' 一月 ', ' 二月 ', ' 三月 ', ' 四月 ', ' 五月 ', ' 六月 ']。

2. 斷裂參數設置:定制你的 "數據放大鏡"

break_point = 20
upper_ylim = max(data) * 1.1
  • break_point:軸斷裂的位置,即上下軸的分界點。這個值需要根據數據特點設置:既要讓小數據在下軸有足夠的展示空間,又要讓上軸能容納極端值。本例中設為 20,因為小數據最大值是 10,20 能提供一倍的放大空間。
  • upper_ylim:上軸的上限,這里設置為數據最大值的 1.1 倍,留出一些空白區域讓圖形更美觀。如果你的極端值是 500,upper_ylim 會自動計算為 500*1.1=550。

3. 圖形與子軸創建:搭建 "數據展示舞臺"

fig, (ax_upper, ax_lower) = plt.subplots(2, 1, sharex=True,gridspec_kw={'height_ratios': [1, 3]},figsize=(8, 6))
  • figsize=(8,6):設置整個圖形的寬度和高度(英寸),你可以根據需要調整,比如 (10,7) 讓圖形更大。
  • 2,1:創建 2 行 1 列的子圖布局,上下排列。
  • sharex=True:上下軸共享 x 軸,確保分類標簽對齊。
  • height_ratios=[1,3]:關鍵參數!設置上下軸的高度比例,上軸占 1 份,下軸占 3 份。這意味著下軸會有更多空間展示小數據細節,你可以根據數據特點調整比例,比如 [1,4] 獲得更大的下軸。

4. 數據繪制:讓 "數據柱" 各就各位

ax_upper.bar(labels, data)
ax_lower.bar(labels, data)
  • 分別在上軸和下軸繪制相同的柱狀圖,但由于后續的軸范圍設置,上軸會顯示極端值的全貌,下軸會放大顯示小數據。這里的柱狀圖樣式可以進一步定制,比如添加顏色、邊框等:
ax_upper.bar(labels, data, color='skyblue', edgecolor='navy')
ax_lower.bar(labels, data, color='lightgreen', edgecolor='darkgreen')

5. 軸范圍設置:劃定 "數據展示區間"?

ax_lower.set_ylim(0, break_point)
ax_upper.set_ylim(break_point, upper_ylim)
  • 下軸設置為 0 到 break_point(20),這樣小數據(3-10)會占據下軸的大部分空間,細節清晰可見。
  • 上軸設置為 break_point 到 upper_ylim(10000*1.1=11000),極端值 10000 會在上軸完整展示。

6. 邊框處理:打造 "無縫視覺體驗"

ax_upper.spines['bottom'].set_visible(False)
ax_lower.spines['top'].set_visible(False)
ax_upper.tick_params(labeltop=False)
ax_lower.xaxis.tick_bottom()
  • 隱藏上軸的底部邊框和下軸的頂部邊框,讓兩個軸看起來像一個整體。
  • 取消上軸的頂部標簽,確保 x 軸標簽只在底部顯示一次,避免重復。

7. 斷裂線繪制:添加 "數據尺度轉換標記"

d = .015
kwargs = dict(transform=ax_upper.transAxes, color='k', clip_on=False)
ax_upper.plot((-d, +d), (-d, +d), **kwargs)
ax_upper.plot((1 - d, 1 + d), (-d, +d), **kwargs)kwargs.update(transform=ax_lower.transAxes)
ax_lower.plot((-d, +d), (1 - d, 1 + d), **kwargs)
ax_lower.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)
  • 這部分代碼在上下軸的連接處繪制對角線,作為軸斷裂的視覺標記。參數 d 控制對角線的傾斜程度,0.015 是一個經驗值,你可以調整 d 的大小(如 0.02)改變斜線的長度和角度。
  • transform=ax_upper.transAxes表示使用軸的相對坐標(0-1),確保斜線位置始終在軸的角落,不受數據范圍影響。

8. 標簽與樣式:提升 "圖表顏值"

fig.suptitle('Bar Chart with Axis Break', fontsize=16, fontweight='bold')
ax_lower.set_xlabel('Category', fontsize=14, fontweight='bold')
ax_lower.set_ylabel('Value', fontsize=14, fontweight='bold')
for ax in (ax_upper, ax_lower):ax.grid(True, axis='y', linestyle='--', linewidth=0.5)ax.tick_params(axis='both', which='major', labelsize=12)
  • 標題設置fig.suptitle添加整個圖形的主標題,ax_lower.set_xlabel/ylabel添加坐標軸標簽。你可以替換為實際場景的標題,如 "2024 年各季度銷售額對比(含異常值)"。
  • 網格線:添加 y 軸網格線(虛線,寬度 0.5),幫助讀者讀取數據值。
  • 刻度樣式:設置刻度標簽的大小和樣式,確保清晰可讀。

用戶數據替換指南:讓代碼適配你的真實場景

1. 替換核心數據:從示例數據到業務數據

場景一:直接替換為你的數據列表
# 原始數據
data = [10000, 3, 7, 9, 10, 6]
labels = ['A', 'B', 'C', 'D', 'E', 'F']# 替換為你的數據(例如:各產品的銷量,其中產品A銷量異常高)
data = [8500, 120, 150, 135, 140, 125]  # 假設8500是異常大值
labels = ['產品A', '產品B', '產品C', '產品D', '產品E', '產品F']
場景二:從文件讀取數據

如果數據存儲在 CSV 文件中,可以這樣讀取:

import pandas as pd# 讀取CSV文件
df = pd.read_csv('your_data.csv')
data = df['數值列'].tolist()
labels = df['分類列'].tolist()

2. 調整斷裂參數:找到最適合你數據的 "斷裂點"?

# 原始斷裂參數
break_point = 20
upper_ylim = max(data) * 1.1# 根據你的數據調整break_point
# 示例:如果小數據集中在50-100,極端值是2000
break_point = 150  # 給小數據留出50%的擴展空間
upper_ylim = max(data) * 1.05  # 極端值區域留5%的空白

調整技巧

  • 觀察小數據的最大值,break_point 建議設為該值的 1.5-2 倍,確保下軸有足夠的展示空間
  • 上軸的 upper_ylim 可以設為極端值的 1.05-1.2 倍,避免圖形頂部過于緊湊

3. 定制圖形尺寸與比例:適應不同展示場景

# 原始圖形設置
fig, (ax_upper, ax_lower) = plt.subplots(2, 1, sharex=True,gridspec_kw={'height_ratios': [1, 3]},figsize=(8, 6))# 示例1:用于PPT展示,增大圖形尺寸
figsize=(10, 7)
height_ratios=[1, 3.5]  # 下軸比例更大,適合精細展示# 示例2:用于論文排版,調整為更窄的比例
figsize=(6, 5)
height_ratios=[1, 2.5]  # 節省橫向空間

4. 自定義顏色與樣式:讓圖表更符合品牌調性?

# 原始繪圖代碼
ax_upper.bar(labels, data)
ax_lower.bar(labels, data)# 自定義顏色(示例:使用藍色系漸變)
colors = ['#436EEE', '#648FFF', '#85B0FF', '#A6D2FF', '#C7E5FF', '#E8F7FF']
ax_upper.bar(labels, data, color=colors, edgecolor='none')
ax_lower.bar(labels, data, color=colors, edgecolor='none')# 添加柱狀圖邊框
ax_upper.bar(labels, data, color=colors, edgecolor='black', linewidth=0.5)

應用場景:軸斷裂柱狀圖的 "十八般武藝"

1. 財務數據分析:一眼看穿異常收支

在公司財務報表中,某個項目的支出可能達到千萬級別,而其他項目在十萬級別。使用軸斷裂柱狀圖可以:

  • 上軸展示千萬級支出的真實規模
  • 下軸放大展示十萬級支出的細微差異
  • 快速發現預算超支或節省的項目

2. 生物實驗數據:不遺漏任何細節

在生物學實驗中,某個樣本的指標值可能突增(如病毒濃度),而其他樣本在正常范圍:

  • 上軸顯示突變樣本的極端值
  • 下軸清晰比較正常樣本的細微差異
  • 幫助研究人員發現異常樣本的同時,不忽視正常組的規律

3. 市場調研數據:大小數據同臺競技

在用戶調研中,某個地區的響應人數可能遠高于其他地區:

  • 上軸展示熱門地區的高響應量
  • 下軸比較其他地區的響應差異
  • 避免小數據地區在普通圖表中 "隱身"

4. 教育數據分析:極端分數與整體水平兼顧

在考試成績分析中,可能有個別學生獲得滿分,而大部分在 60-80 分之間:

  • 上軸展示滿分學生的突出表現
  • 下軸詳細比較其他學生的分數分布
  • 幫助教師全面評估班級水平,不忽視尖子生也不忽略整體

實戰案例:某電商平臺分析各品類銷售額,其中數碼品類銷售額達 8500 萬元,而服裝、食品等品類在 120-150 萬元之間。使用軸斷裂柱狀圖后,運營人員可以同時看到:

  • 數碼品類的絕對優勢地位
  • 服裝、食品等品類的相對銷售差異
  • 快速定位需要重點關注的品類(如銷售額最低的品類)

細節優化:讓圖表從 "能用" 到 "驚艷"

1. 增強斷裂線的視覺提示

# 原始斷裂線設置
d = .015# 優化方案:使用更醒目的斷裂標記
d = 0.03  # 增大d值,讓斜線更長更明顯
kwargs = dict(transform=ax_upper.transAxes, color='red', linewidth=2, clip_on=False)
# 在上軸添加雙向箭頭斷裂標記(更專業的視覺提示)
from matplotlib.patches import FancyArrowPatch
arrow = FancyArrowPatch((-d, 0), (d, 0), arrowstyle='<->', transform=ax_upper.transAxes, color='red', clip_on=False)
ax_upper.add_patch(arrow)

2. 添加數據標簽:讓數值一目了然?

# 為柱狀圖添加數值標簽
def add_labels(ax):for p in ax.patches:height = p.get_height()if height > 0:  # 只顯示正值標簽ax.text(p.get_x() + p.get_width()/2., height + 0.1,f'{height:.0f}', ha='center', va='bottom')add_labels(ax_upper)
add_labels(ax_lower)

3. 優化網格線與邊框?

# 原始網格線設置
for ax in (ax_upper, ax_lower):ax.grid(True, axis='y', linestyle='--', linewidth=0.5)# 進階優化:
for ax in (ax_upper, ax_lower):# 只顯示主要網格線ax.grid(True, axis='y', which='major', linestyle='--', linewidth=0.7)# 隱藏不必要的邊框ax.spines['left'].set_visible(False)ax.spines['right'].set_visible(False)# 添加輕微的背景色區分上下軸ax.set_facecolor('#f9f9f9')

4. 保存為高質量圖片:滿足出版需求?

# 原始保存設置
plt.savefig('axis_break_barplot.png', dpi=300)# 優化保存參數(用于論文或出版物)
plt.savefig('axis_break_barplot.tiff', dpi=600,          # 更高分辨率bbox_inches='tight', # 裁剪空白邊緣pad_inches=0.1,     # 保留少量邊距facecolor='white')  # 白色背景

常見問題與解決方案

1. 上下軸的柱狀圖對不齊怎么辦?

原因:可能是標簽長度不一致導致 x 軸刻度偏移,或者繪圖時添加了額外元素。
解決方案

# 添加固定x軸范圍(假設標簽是6個)
ax_upper.set_xlim(-0.5, 5.5)
ax_lower.set_xlim(-0.5, 5.5)

2. 斷裂線看起來不自然怎么辦?

原因:斷裂線的比例或樣式不合適。
解決方案

# 嘗試不同的斷裂標記樣式(如波浪線)
from matplotlib.path import Path
from matplotlib.patches import PathPatch# 定義波浪線路徑
verts = [(0, 0), (0.1, 0), (0.15, 0.05), (0.2, 0), (0.3, 0), (0.35, 0.05),(0.4, 0), (0.5, 0), (0.55, -0.05), (0.6, 0), (0.7, 0), (0.75, -0.05),(0.8, 0), (0.9, 0), (1, 0)
]
codes = [Path.MOVETO] + [Path.LINETO] * (len(verts) - 1)
path = Path(verts, codes)# 在上軸添加波浪線斷裂標記
patch = PathPatch(path, transform=ax_upper.transAxes, color='k', clip_on=False)
ax_upper.add_patch(patch)

3. 極端值在上軸顯示不全怎么辦?

原因:upper_ylim 設置過小。
解決方案

# 手動設置upper_ylim(確保極端值有足夠空間)
upper_ylim = max(data) * 1.2  # 增加留白比例到20%
# 或者直接指定固定值
upper_ylim = 12000  # 假設極端值是10000,設為12000

總結:掌握軸斷裂技術,解鎖數據可視化新境界

通過今天的分享,我們深入解析了帶軸斷裂的柱狀圖繪制方法,從數據準備到圖形優化,每一個步驟都旨在解決數據跨度大帶來的可視化難題。這項技術就像為圖表安裝了 "變焦鏡頭",讓我們既能俯瞰數據全貌,又能聚焦細節差異。

現在輪到你動手實踐了!💪 打開 Python 環境,替換成你的數據,調整斷裂點和圖形參數,看看那些曾經讓你頭疼的極端值數據如何變得清晰易懂。記得在遇到問題時回顧本文的 "用戶數據替換指南" 和 "常見問題",相信你一定能繪制出專業級別的軸斷裂柱狀圖。

數據可視化的魅力在于將復雜信息轉化為直觀認知,而軸斷裂技術正是這個過程中的有力武器。下次當你遇到 "貧富懸殊" 的數據時,不要再猶豫 —— 用軸斷裂柱狀圖,讓每一個數據點都綻放光彩!🌟

如果覺得本文對你有幫助,歡迎分享給身邊的數據分析師和科研工作者。關注我,后續將帶來更多數據可視化技巧,讓我們一起在數據的海洋中探索美的可能!🚀

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

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

相關文章

以太網基礎①以太網相關通信接口

1. 今日摸魚任務 需要學習使用ZYNQ的以太網傳輸SCPI指令 需要把PL PS兩側的都用起來&#xff08;加油鴨&#xff01;&#xff09; 吶吶吶 今天就先學一下基礎知識唄 02_【邏輯教程】基于HDL的FPGA邏輯設計與驗證教程V3.5.2.pdf 51 以太網相關通信接口詳解 52 以太網&#xff…

FPGA基礎 -- Verilog 共享任務(task)和函數(function)

Verilog 中共享任務&#xff08;task&#xff09;和函數&#xff08;function&#xff09; 的詳細專業培訓&#xff0c;適合具有一定 RTL 編程經驗的工程師深入掌握。 一、任務&#xff08;task&#xff09;與函數&#xff08;function&#xff09;的基本區別 特性taskfunctio…

學習大模型---需要掌握的數學知識

1. 線性代數&#xff1a;樂高積木的世界 想象你有很多樂高積木塊。線性代數就是研究怎么用這些積木塊搭建東西&#xff0c;以及這些搭建好的東西有什么特性的學問。 向量&#xff1a; 就像一個有方向的箭頭&#xff0c;或者一組排好隊的數字。比如&#xff1a; 一個箭頭&…

明遠智睿RK3506開發板:多核異構架構賦能高可靠性工業與商業應用

在工業4.0與物聯網&#xff08;IoT&#xff09;技術快速發展的背景下&#xff0c;嵌入式系統對性能、功耗、可靠性和實時性的要求日益嚴苛。針對這一趨勢&#xff0c;瑞芯微推出的RK3506開發板憑借其創新的三核A7單核M0多核異構架構、高能低耗設計以及豐富的外設資源&#xff0…

【AI時代速通QT】第二節:Qt SDK 的目錄介紹和第一個Qt Creator項目

目錄 一、認識 Qt SDK 的目錄結構 二、第一個 Qt 程序 2.1 Qt Creator 創建項目 2.2 介紹項目各文件 三、揭秘 Qt 的構建過程 四、運行項目與總結 &#x1f3ac; 攻城獅7號&#xff1a;個人主頁 &#x1f525; 個人專欄:CQT跨平臺界面編程 ?? 君子慎獨! &#x1f308…

CDH部署Hive詳細指南

CDH部署Hive詳細指南 本文將詳細介紹如何使用Cloudera Manager Web界面部署Hive組件,包括安裝、配置、優化和運維管理等內容。 1. 環境準備 1.1 系統要求 1.1.1 硬件要求 服務器配置 CPU:建議8核以上內存:建議32GB以上磁盤:建議使用企業級SAS或SSD網絡:建議萬兆網絡集…

黨建賦能 醫校協同|廣州附醫華南醫院與湖南中醫藥高等專科學校簽約攜手共育英才

為深入貫徹落實黨中央、國務院關于高校畢業生就業創業工作決策部署&#xff0c;教育部印發《職業學校校企合作促進辦法》&#xff0c;對深化醫教協同提供了政策指引。在醫學教育領域&#xff0c;鼓勵醫學院校與醫療機構開展深度合作&#xff0c;根據醫療行業需求調整專業設置與…

【RTSP從零實踐】2、使用RTP協議封裝并傳輸H264

&#x1f601;博客主頁&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客內容&#x1f911;&#xff1a;&#x1f36d;嵌入式開發、Linux、C語言、C、數據結構、音視頻&#x1f36d; &#x1f923;本文內容&#x1f923;&a…

行業熱點丨手機中框設計如何體現增材思維?

編者薦語&#xff1a; 通過增材設計思維在金屬邊框設計晶格結構&#xff0c;既能減輕重量&#xff0c;同時也有助于散熱&#xff0c;針對不同位置設計不同類型的晶格結構還能起到緩沖效果&#xff0c;提高手機抗沖擊能力。 以下文章來源于Inspire增材創新設計&#xff0c;作者…

鴻蒙案例實戰——添加水印

本示例為開發者展示常用的水印添加能力&#xff0c;包括兩種方式給頁面添加水印、保存圖片添加水印、拍照圖片添加水印和pdf文件添加水印。 案例效果截圖 首頁 頁面水印 圖片水印 pdf水印 案例運用到的知識點 核心知識點 頁面添加水印&#xff1a;封裝Canv…

Qt工作總結07 <qBound和std::clamp>

一、qBound簡介 1. 定義 是 Qt 框架中一個非常實用的邊界限制函數&#xff08;也稱為 "clamp" 函數&#xff09;&#xff0c;用于將一個值限制在指定的最小值和最大值之間。頭文件&#xff1a;#include <QtGlobal> 2. 函數原型 template <typename T>…

53-Oracle sqlhc多版本實操含(23 ai)

SQLHC&#xff08;SQL Health Check&#xff09;作為 Oracle 數據庫性能診斷的核心工具&#xff0c;其設計理念和核心功能在 Oracle 各版本中保持高度一致&#xff0c;但在技術實現和周邊生態上存在漸進式優化。定期對關鍵業務 SQL 執行健康檢查&#xff0c;特別是在版本升級或…

math.pow()和pow()的區別

math.pow() 和 pow() 的區別 ? 1. math.pow() 來自 math 模塊參數&#xff1a;兩個數&#xff08;底數&#xff0c;指數&#xff09;結果類型&#xff1a; 始終返回 float 類型 示例&#xff1a; import math print(math.pow(2, 3)) # 輸出&#xff1a;8.0 &#xff08;…

郵科OEM攝像頭POE供電技術的核心優勢

安防監控中&#xff0c;供電方式影響系統穩定性、安裝效率與維護成本。郵科攝像頭采用POE技術&#xff0c;通過網線同時傳輸數據與電力&#xff0c;革新傳統部署模式。本文解析其六大核心優勢&#xff0c;展現其作為現代安防優選方案的價值。 一、布線簡化&#xff0c;效率提升…

微信小程序-數據加密

npm install crypto-js utils/aes.js const CryptoJS require(crypto-js);// 默認的 KEY 與 iv 如果沒有給 const KEY CryptoJS.enc.Utf8.parse(KrQ4KAYOEyAz66RS); // 十六位十六進制數作為密鑰 const IV CryptoJS.enc.Utf8.parse(ep1YCmxXuxKe4eH1); // 十六位十六進制…

【時時三省】(C語言基礎)善于利用指針

山不在高&#xff0c;有仙則名。水不在深&#xff0c;有龍則靈。 ----CSDN 時時三省 指針是C語言中的一個重要概念&#xff0c;也是C語言的一個重要特色。正確而靈活地運用它&#xff0c;可以使程序簡潔、緊湊、高效。每一個學習和使用C語言的人&#xff0c;都應當深入地學習和…

單點登錄進階:基于芋道(yudao)授權碼模式的單點登錄流程、代碼實現與安全設計

最近遇到需要單點登錄的場景&#xff0c;我使用的是芋道框架&#xff0c;正好它手動實現了OAuth2的功能&#xff0c;可以為單點登錄提供一些幫助&#xff0c;結合授權碼的模式&#xff0c;在改動最小的情況下實現了單點登錄。關鍵業務數據已經隱藏&#xff0c;后續將以以主認證…

關于Seata的一個小issue...

文章目錄 引言原因&#x1f913;解決方法&#x1f635;總結?? 引言 某一天&#xff0c;筆者在逛著Github的時候&#xff0c;突然看到seata有個有趣的issue&#xff0c;是一個task。 相關描述&#xff1a; While running the DruidSQLRecognizerFactoryTest.testIsSqlSynta…

FTTR+軟路由網絡拓撲方案

文章目錄 網絡拓撲軟路由配置FTTR光貓路由器TPLink路由器配置WAN設置LAN設置 參考 網絡拓撲 軟路由配置 配置靜態IP地址&#xff1a;192.168.1.100設置網關指向主路由的IP 設置自定義DNS服務器 開啟DHCP 這一步很關鍵&#xff0c;可以讓連上wifi的所有設備自動趴強。 FTTR光貓…

RPC - 服務注冊與發現模塊

為什么要服務注冊&#xff0c;服務注冊是做什么 服務注冊主要是實現分布式的系統&#xff0c;讓系統更加的健壯&#xff0c;一個節點主機將自己所能提供的服務&#xff0c;在注冊中心進行登記 為什么要服務發現&#xff0c;服務發現是要做什么 rpc調用者需要知道哪個節點主機…