macOS安裝配置Unbound DNS完整指南

在這里插入圖片描述

文章目錄

  • macOS安裝配置Unbound DNS完整指南
    • 🎯 為什么選擇Unbound?
    • 📋 系統要求
    • 🚀 安裝步驟
      • 1. 使用Homebrew安裝
      • 2. 查看安裝信息
    • ?? 基礎配置
      • 1. 備份默認配置
      • 2. 創建基礎配置文件
      • 3. 基礎配置內容
      • 配置53端口版本(高級用戶)
      • 4. 下載根提示文件
    • 🚨 端口沖突解決
      • 診斷端口占用問題
      • 解決方案選擇
      • 修復文件權限和路徑
    • 🔧 高級配置
      • 1. 啟用DNS-over-TLS (DoT)
      • 2. 配置廣告屏蔽
      • 3. 創建本地域名解析
    • 🏃 啟動和管理
      • 1. 測試配置
      • 2. 創建啟動腳本
      • 3. 使用Homebrew服務管理
      • 4. 手動服務管理
    • 🔍 系統DNS配置
      • 1. 臨時設置DNS
      • 2. 通過系統偏好設置
      • 3. 恢復默認DNS
    • 🧪 測試和驗證
      • 1. 基礎DNS測試
      • 2. 性能測試
      • 3. 緩存測試
      • 4. DNSSEC驗證測試
    • 📊 監控和維護
      • 1. 查看統計信息
      • 2. 日志管理
      • 3. 性能監控腳本
    • 🛠? 故障排除
      • 常見問題
      • 配置驗證清單
    • 📝 最佳實踐
      • 安全建議
      • 性能優化
      • 維護計劃
    • 🎉 總結

macOS安裝配置Unbound DNS完整指南

Unbound是一個高性能、安全的遞歸DNS解析器,支持DNS-over-TLS、DNS-over-HTTPS等現代DNS協議。本指南專門針對macOS系統,使用Homebrew進行安裝和配置。

💡 重要說明:本指南基于Apple Silicon Mac (M1/M2) 的默認路徑 /opt/homebrew。如果你使用Intel Mac,相關路徑為 /usr/local,文檔中會特別標注。

🎯 為什么選擇Unbound?

  • 隱私保護:本地DNS解析,減少對外部DNS的依賴
  • 性能優化:內置緩存機制,提升DNS查詢速度
  • 安全增強:支持DNSSEC驗證,防止DNS劫持
  • 廣告屏蔽:可配置域名黑名單,屏蔽廣告和惡意網站
  • 現代協議:支持DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH)

📋 系統要求

  • macOS 10.14+
  • 管理員權限
  • 穩定的網絡連接

🚀 安裝步驟

1. 使用Homebrew安裝

# 安裝Homebrew(如果尚未安裝)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 更新Homebrew
brew update# 安裝Unbound
brew install unbound# 驗證安裝
unbound -V

2. 查看安裝信息

# 查看Unbound版本和編譯選項
unbound -h# 查看安裝路徑
which unbound
brew --prefix unbound# 查看配置文件位置(默認路徑)
ls -la /opt/homebrew/etc/unbound/# 確認你的Homebrew安裝路徑
brew --prefix
# Apple Silicon Mac: /opt/homebrew
# Intel Mac: /usr/local

?? 基礎配置

1. 備份默認配置

# 創建配置備份(Apple Silicon Mac默認路徑)
sudo cp /opt/homebrew/etc/unbound/unbound.conf /opt/homebrew/etc/unbound/unbound.conf.backup# 查看默認配置
cat /opt/homebrew/etc/unbound/unbound.conf# 如果是Intel Mac,路徑為:
# sudo cp /usr/local/etc/unbound/unbound.conf /usr/local/etc/unbound/unbound.conf.backup

2. 創建基礎配置文件

# 編輯主配置文件(Apple Silicon Mac)
sudo vim /opt/homebrew/etc/unbound/unbound.conf# Intel Mac用戶使用:
# sudo vim /usr/local/etc/unbound/unbound.conf

3. 基礎配置內容

重要: macOS上需要特殊配置,因為沒有’unbound’用戶,且端口53通常被系統占用

# Unbound配置文件 - macOS版本(使用5353端口避免沖突)
server:# 監聽接口和端口interface: 127.0.0.1interface: ::1port: 5353  # 使用5353端口避免與系統mDNSResponder沖突# macOS特殊配置 - 不切換用戶username: ""# 訪問控制access-control: 127.0.0.0/8 allowaccess-control: ::1/128 allowaccess-control: 192.168.0.0/16 allowaccess-control: 10.0.0.0/8 allowaccess-control: 172.16.0.0/12 allow# 基礎設置do-ip4: yesdo-ip6: yesdo-udp: yesdo-tcp: yes# 緩存設置cache-min-ttl: 3600cache-max-ttl: 86400# 性能優化num-threads: 4msg-cache-slabs: 8rrset-cache-slabs: 8infra-cache-slabs: 8key-cache-slabs: 8# 內存設置rrset-cache-size: 256mmsg-cache-size: 128m# 隱私和安全hide-identity: yeshide-version: yesharden-glue: yesharden-dnssec-stripped: yesharden-referral-path: yes# 預取設置prefetch: yesprefetch-key: yes# 日志設置verbosity: 1logfile: "/opt/homebrew/var/log/unbound.log"log-queries: nolog-replies: no# 根提示文件(Apple Silicon路徑)root-hints: "/opt/homebrew/etc/unbound/root.hints"# 遠程控制(可選)
remote-control:control-enable: yescontrol-interface: 127.0.0.1control-port: 8953

配置53端口版本(高級用戶)

如果你需要使用標準53端口,需要先處理端口沖突:

# 僅當你已處理端口沖突時使用
server:interface: 127.0.0.1interface: ::1port: 53  # 標準DNS端口username: ""# ... 其他配置保持不變

4. 下載根提示文件

# 檢查你的Homebrew安裝路徑
brew --prefix# 對于Apple Silicon Mac(M1/M2),路徑通常是 /opt/homebrew
# 對于Intel Mac,路徑通常是 /usr/local# Apple Silicon Mac用戶:
sudo curl -o /opt/homebrew/etc/unbound/root.hints https://www.internic.net/domain/named.cache# Intel Mac用戶:
# sudo curl -o /usr/local/etc/unbound/root.hints https://www.internic.net/domain/named.cache# 驗證下載
ls -la /opt/homebrew/etc/unbound/root.hints

🚨 端口沖突解決

診斷端口占用問題

# 查看53端口被哪個進程占用
sudo lsof -i :53# 查看所有DNS相關進程
ps aux | grep -E "(mDNSResponder|unbound|dnsmasq)"# 檢查系統DNS服務狀態
sudo launchctl list | grep dns

解決方案選擇

方案1:使用5353端口(推薦)

  • 修改配置文件端口為5353
  • 通過dnsmasq轉發實現標準DNS功能
  • 不影響系統服務,最安全

方案2:停止系統mDNSResponder(高級)

# ?? 警告:可能影響系統網絡功能
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist# 恢復系統服務
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

方案3:使用brew services(自動處理)

# Homebrew會自動處理端口沖突
sudo brew services start unbound

修復文件權限和路徑

# 創建必要的目錄(Apple Silicon Mac)
sudo mkdir -p /opt/homebrew/var/log
sudo mkdir -p /opt/homebrew/etc/unbound/conf.d# 設置適當的權限
sudo chown -R $(whoami):admin /opt/homebrew/etc/unbound/
sudo chmod 755 /opt/homebrew/etc/unbound/
sudo chmod 644 /opt/homebrew/etc/unbound/unbound.conf# 創建日志文件
sudo touch /opt/homebrew/var/log/unbound.log
sudo chmod 644 /opt/homebrew/var/log/unbound.log# Intel Mac用戶使用以下路徑:
# sudo mkdir -p /usr/local/var/log
# sudo mkdir -p /usr/local/etc/unbound/conf.d
# sudo chown -R $(whoami):admin /usr/local/etc/unbound/
# sudo chmod 755 /usr/local/etc/unbound/
# sudo chmod 644 /usr/local/etc/unbound/unbound.conf
# sudo touch /usr/local/var/log/unbound.log
# sudo chmod 644 /usr/local/var/log/unbound.log

🔧 高級配置

1. 啟用DNS-over-TLS (DoT)

# 編輯配置文件,添加上游服務器配置
sudo vim /usr/local/etc/unbound/unbound.conf

在配置文件中添加:

# DNS-over-TLS配置
forward-zone:name: "."# Cloudflare DoTforward-tls-upstream: yesforward-addr: 1.1.1.1@853#cloudflare-dns.comforward-addr: 1.0.0.1@853#cloudflare-dns.com# Quad9 DoT (備用)forward-addr: 9.9.9.9@853#dns.quad9.netforward-addr: 149.112.112.112@853#dns.quad9.net

2. 配置廣告屏蔽

# 創建廣告屏蔽配置目錄(Apple Silicon Mac)
sudo mkdir -p /opt/homebrew/etc/unbound/conf.d# Intel Mac用戶使用:
# sudo mkdir -p /usr/local/etc/unbound/conf.d# 下載廣告屏蔽列表
sudo curl -o /opt/homebrew/etc/unbound/conf.d/adblock.conf https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts# 轉換格式為Unbound配置
sudo sed -i '' 's/0.0.0.0 /local-zone: "/g; s/$/" redirect/g' /opt/homebrew/etc/unbound/conf.d/adblock.conf

在主配置文件中包含廣告屏蔽配置:

# 在server塊中添加(Apple Silicon Mac路徑)
include: "/opt/homebrew/etc/unbound/conf.d/*.conf"# Intel Mac用戶使用:
# include: "/usr/local/etc/unbound/conf.d/*.conf"

3. 創建本地域名解析

# 創建本地域名配置(Apple Silicon Mac)
sudo vim /opt/homebrew/etc/unbound/conf.d/local-zone.conf# Intel Mac用戶使用:
# sudo vim /usr/local/etc/unbound/conf.d/local-zone.conf

添加本地域名配置:

# 本地域名解析
local-zone: "home.local." static
local-data: "router.home.local. IN A 192.168.1.1"
local-data: "nas.home.local. IN A 192.168.1.100"
local-data: "printer.home.local. IN A 192.168.1.200"# PTR記錄(反向解析)
local-zone: "1.168.192.in-addr.arpa." static
local-data-ptr: "192.168.1.1 router.home.local"
local-data-ptr: "192.168.1.100 nas.home.local"
local-data-ptr: "192.168.1.200 printer.home.local"

🏃 啟動和管理

1. 測試配置

# 檢查配置文件語法(Apple Silicon Mac)
sudo unbound-checkconf /opt/homebrew/etc/unbound/unbound.conf# Intel Mac用戶使用:
# sudo unbound-checkconf /usr/local/etc/unbound/unbound.conf# 測試Unbound啟動(Apple Silicon Mac)
sudo unbound -d -c /opt/homebrew/etc/unbound/unbound.conf# Intel Mac用戶使用:
# sudo unbound -d -c /usr/local/etc/unbound/unbound.conf

2. 創建啟動腳本

# 創建日志目錄(Apple Silicon Mac)
sudo mkdir -p /opt/homebrew/var/log# 設置日志文件權限
sudo touch /opt/homebrew/var/log/unbound.log
sudo chmod 644 /opt/homebrew/var/log/unbound.log# Intel Mac用戶使用:
# sudo mkdir -p /usr/local/var/log
# sudo touch /usr/local/var/log/unbound.log
# sudo chmod 644 /usr/local/var/log/unbound.log

3. 使用Homebrew服務管理

# 啟動Unbound服務
sudo brew services start unbound# 查看服務狀態
brew services list | grep unbound# 重啟服務
sudo brew services restart unbound# 停止服務
sudo brew services stop unbound

4. 手動服務管理

# 手動啟動(前臺運行,用于調試)
sudo unbound -d# 手動啟動(后臺運行)
sudo unbound# 查看進程
ps aux | grep unbound# 停止服務
sudo pkill unbound

🔍 系統DNS配置

1. 臨時設置DNS

# 查看當前DNS設置
scutil --dns# 臨時設置DNS為本地Unbound
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
sudo networksetup -setdnsservers "Ethernet" 127.0.0.1# 清除DNS緩存
sudo dscacheutil -flushcache

2. 通過系統偏好設置

如果使用5353端口,你需要通過DNS轉發工具或者設置自定義DNS配置。

如果使用53端口

  1. 打開 系統偏好設置網絡
  2. 選擇當前網絡接口(Wi-Fi或以太網)
  3. 點擊 高級DNS
  4. 添加DNS服務器:127.0.0.1
  5. 點擊 應用

推薦方案:使用dnsmasq作為轉發器

# 安裝dnsmasq
brew install dnsmasq# 配置dnsmasq轉發到Unbound
echo "server=127.0.0.1#5353" | sudo tee /opt/homebrew/etc/dnsmasq.conf# 啟動dnsmasq
sudo brew services start dnsmasq# 設置系統DNS為dnsmasq
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1

3. 恢復默認DNS

# 恢復自動獲取DNS
sudo networksetup -setdnsservers "Wi-Fi" "Empty"
sudo networksetup -setdnsservers "Ethernet" "Empty"

🧪 測試和驗證

1. 基礎DNS測試

# 測試DNS解析(5353端口)
nslookup google.com 127.0.0.1 5353
dig @127.0.0.1 -p 5353 google.com# 如果使用53端口
# nslookup google.com 127.0.0.1
# dig @127.0.0.1 google.com# 測試反向解析
dig @127.0.0.1 -p 5353 -x 8.8.8.8

2. 性能測試

# 安裝測試工具
brew install bind# 性能測試(5353端口)
dig @127.0.0.1 -p 5353 google.com | grep "Query time"
dig @8.8.8.8 google.com | grep "Query time"# 批量測試
for i in {1..10}; dodig @127.0.0.1 -p 5353 google.com | grep "Query time"
done

3. 緩存測試

# 第一次查詢(無緩存)
time dig @127.0.0.1 -p 5353 example.com# 第二次查詢(有緩存)
time dig @127.0.0.1 -p 5353 example.com

4. DNSSEC驗證測試

# 測試DNSSEC驗證
dig @127.0.0.1 -p 5353 dnssec-failed.org
dig @127.0.0.1 -p 5353 +dnssec google.com

📊 監控和維護

1. 查看統計信息

# 安裝統計工具
brew install unbound# 查看Unbound統計信息
unbound-control stats# 查看緩存信息
unbound-control dump_cache# 清除緩存
unbound-control flush_zone .

2. 日志管理

# 查看實時日志(Apple Silicon Mac)
tail -f /opt/homebrew/var/log/unbound.log# 查看錯誤日志
grep "error" /opt/homebrew/var/log/unbound.log# Intel Mac用戶使用:
# tail -f /usr/local/var/log/unbound.log
# grep "error" /usr/local/var/log/unbound.log# 日志輪轉配置
sudo vim /etc/newsyslog.conf

添加日志輪轉配置:

# Apple Silicon Mac
/opt/homebrew/var/log/unbound.log    644  5     1000  *     Z# Intel Mac用戶使用:
# /usr/local/var/log/unbound.log    644  5     1000  *     Z

3. 性能監控腳本

# 創建監控腳本
cat << 'EOF' > ~/unbound-monitor.sh
#!/bin/bash
echo "=== Unbound Status Monitor ==="
echo "Service Status:"
ps aux | grep unbound | grep -v grepecho -e "\nMemory Usage:"
ps -o pid,ppid,pcpu,pmem,comm -p $(pgrep unbound)echo -e "\nCache Statistics:"
unbound-control stats | grep -E "(total|cache)"echo -e "\nRecent Queries (last 10):"
tail -10 /opt/homebrew/var/log/unbound.log | grep query# Intel Mac用戶使用:
# tail -10 /usr/local/var/log/unbound.log | grep query
EOFchmod +x ~/unbound-monitor.sh

🛠? 故障排除

常見問題

1. 服務啟動失敗

# 檢查配置文件
sudo unbound-checkconf# 檢查端口占用
sudo lsof -i:53# 查看詳細錯誤信息
sudo unbound -d -v

2. DNS解析失敗

# 檢查Unbound是否運行
ps aux | grep unbound# 測試配置
dig @127.0.0.1 google.com# 檢查網絡連接
ping 1.1.1.1

3. 權限問題

# 檢查文件權限(Apple Silicon Mac)
ls -la /opt/homebrew/etc/unbound/
sudo chown -R $(whoami):admin /opt/homebrew/etc/unbound/# Intel Mac用戶使用:
# ls -la /usr/local/etc/unbound/
# sudo chown -R $(whoami):admin /usr/local/etc/unbound/

4. 性能問題

# 增加緩存大小
# 在配置文件中調整:
# rrset-cache-size: 512m
# msg-cache-size: 256m# 增加線程數
# num-threads: 8

配置驗證清單

  • 配置文件語法正確
  • 根提示文件存在且最新
  • 日志目錄和文件權限正確
  • 防火墻允許DNS流量
  • 系統DNS指向127.0.0.1
  • 服務正常啟動并運行

📝 最佳實踐

安全建議

  1. 定期更新:保持Unbound和根提示文件最新
  2. 訪問控制:限制DNS查詢來源
  3. 日志監控:定期檢查異常查詢
  4. 備份配置:定期備份配置文件

性能優化

  1. 合理設置緩存大小:根據內存情況調整
  2. 啟用預取:提前獲取即將過期的記錄
  3. 使用多線程:充分利用多核CPU
  4. 選擇合適的上游服務器:延遲低、可靠的DNS服務器

維護計劃

# 創建維護腳本
cat << 'EOF' > ~/unbound-maintenance.sh
#!/bin/bash
echo "=== Unbound Maintenance ==="# 更新根提示文件
echo "Updating root hints..."
sudo curl -s -o /opt/homebrew/etc/unbound/root.hints https://www.internic.net/domain/named.cache# Intel Mac用戶使用:
# sudo curl -s -o /usr/local/etc/unbound/root.hints https://www.internic.net/domain/named.cache# 重載配置
echo "Reloading configuration..."
sudo brew services restart unbound# 清理日志(保留最近7天)
echo "Cleaning old logs..."
find /opt/homebrew/var/log/ -name "unbound.log.*" -mtime +7 -delete# Intel Mac用戶使用:
# find /usr/local/var/log/ -name "unbound.log.*" -mtime +7 -deleteecho "Maintenance completed!"
EOFchmod +x ~/unbound-maintenance.sh# 設置定期維護(每周日凌晨2點)
echo "0 2 * * 0 ~/unbound-maintenance.sh" | crontab -

🎉 總結

通過以上配置,你已經成功在macOS上部署了一個功能完整的Unbound DNS服務器。這個配置提供了:

  • 高性能的本地DNS解析
  • 隱私保護和安全增強
  • 廣告屏蔽功能
  • 現代DNS協議支持
  • 完善的監控和維護

建議定期查看日志和性能統計,根據實際使用情況調整配置參數。

相關資源:

  • Unbound官方文檔
  • DNS-over-TLS配置指南
  • DNSSEC驗證工具

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

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

相關文章

學習模板元編程(2)std::true_type/false_type

目錄 實現原理 應用場景 條件編譯 通過特化和繼承&#xff0c;實現std::is_xxx系列 思路 舉例 例子1&#xff0c;is_bool 例子2&#xff0c;is_ptr 實現原理 std::true_type/false_type是模板intergral_constant的兩種實現&#xff1a; using true_type integral_co…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models論文閱讀筆記

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 摘要 本文探索了思維鏈&#xff08;chain of thought&#xff09;&#xff0c;即一系列中間推理過程&#xff0c;可以有效地增強大語言模型的復雜推理能力。 在三個大型語言模型上的實驗表明&#xff0…

華為核心交換機S7700的內存OID

華為S7700系列交換機 SNMP內存相關OID說明 以下列出了華為S7700核心交換機在SNMP v2c下可用的內存相關OID,包括CPU內存利用率、物理內存總量、已用內存和空閑內存,并給出每個OID的功能描述、數據類型、單位、使用說明等信息。 1. CPU內存利用率(處理器內存占用百分比) OID名…

中州養老Day02:服務管理護理計劃模塊

本日任務:服務管理的后端開發 1.學習:護理項目 (1)評估開發工期的思路和注意事項 全面熟悉項目,了解項目重點,設置開發優先級 比如,在下面圖片的接口文檔中版本有1.0,2.0,3.0也就是功能的初代,二代,三代,所以我們在大致瀏覽所有功能后,要優先關注初代功能的實現 開發計劃 …

JavaScript:Ajax(異步通信技術)

一、Ajax 核心概念Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一種異步通信技術&#xff0c;核心特點&#xff1a;無刷新更新&#xff1a;無需重新加載整個頁面異步處理&#xff1a;后臺發送/接收數據不阻塞用戶數據格式&#xff1a;支持 XML/JSON/HTML/純…

leetcode 118. 楊輝三角 簡單

給定一個非負整數 numRows&#xff0c;生成「楊輝三角」的前 numRows 行。在「楊輝三角」中&#xff0c;每個數是它左上方和右上方的數的和。示例 1:輸入: numRows 5 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:輸入: numRows 1 輸出: [[1]]提示:1 < numRows…

jmeter--While控制器--循環直到接口響應符合條件

場景描述業務場景&#xff1a;單據計算接口情況&#xff1a;單據計算&#xff0c;調用接口1發起計算&#xff0c;接口2查詢計算執行結果jmeter腳本&#xff1a;把接口1和接口2&#xff08;接口2循環調用&#xff0c;直到返回執行完成狀態&#xff09;添加到一個事務&#xff0c…

組播 | 不同 VLAN 間數據轉發實現邏輯 / 實驗

注&#xff1a;本文為 “不同 vlan 間組播數據轉發” 相關合輯。 圖片清晰度受引文原圖所限。 略作重排&#xff0c;如有內容異常&#xff0c;請看原文。 組播 VLAN&#xff1a;解決路由器為不同 VLAN 用戶復制多份流量問題 aiaiai010101 于 2018-11-16 22:42:06 發布 一、組…

滲透測試常用指令

互聯網設備的開放信息查詢網站&#xff1a; https://fofa.info/ https://www.zoomeye.org/ https://quake.360.net/quake/#/index https://x.threatbook.com/v5/mapping https://hunter.qianxin.com/ 目錄 一、網絡探測與掃描 traceroute whatweb ping fping nc n…

51單片機串行通信的設計原理有哪些?

51單片機是指由美國INTEL公司生產的一系列單片機的總稱&#xff0c;這一系列單片機包括了許多品種&#xff0c;如8031&#xff0c;8051&#xff0c;8751&#xff0c;8032&#xff0c;8052&#xff0c;8752等&#xff0c;其中8051是最早最典型的產品&#xff0c;該系列其它單片機…

設計模式十四:適配器模式(Adapter Pattern)

適配器模式&#xff08;Adapter Pattern&#xff09;是一種結構型設計模式&#xff0c;用于將一個類的接口轉換成客戶端期望的另一個接口&#xff0c;使原本不兼容的類可以一起工作。適配器模式的類型類適配器&#xff08;通過多重繼承實現&#xff09;對象適配器&#xff08;通…

力扣經典算法篇-38-組合(回溯算法)

1、題干 給定兩個整數 n 和 k&#xff0c;返回范圍 [1, n] 中所有可能的 k 個數的組合。 你可以按 任何順序 返回答案。 示例 1&#xff1a; 輸入&#xff1a;n 4, k 2 輸出&#xff1a; [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2&#xff1a; 輸入&#xff1a;…

多人命題系統

目 錄 摘 要 Abstract 1 系統概述 1.1 概述 1.2課題意義 1.3 主要內容 2 系統開發環境 2. 1 JAVA簡介 2. .2 B/S架構 2.3 SSM三大框架 2.4訪問數據庫實現方法 2.5 系統對MySQL數據庫的兩種連接方式 3 需求分析 3.1技術可行性&#xff1a;技術背景…

UDP_千兆光通信(四)Tri Mode Ethernet MAC ip核

Tri Mode Ethernet MAC ip核使用與例程分析 一、 Tri Mode Ethernet MAC ip核功能 二、 Tri Mode Ethernet MAC ip核配置 數據傳輸速率 主要設置接口 幀濾波功能選擇,以及流控選擇 三、 Tri Mode Ethernet MAC ip核使用 3.1 ip核接口 3.2 ip核接口說明 3.2.1 tx_ifg_delay 3.2…

Linux網絡:多路轉接 epoll

Linux網絡&#xff1a;多路轉接 epoll一、epoll三個接口函數1、epoll_create2、epoll_ctl3、epoll_wait二、epoll的工作原理三、epoll的echo_server1、EpollServer類2、構造函數3、事件循環4、事件派發5、事件處理6、測試四、LT和ET模式1、LT2、ET五、項目代碼一、epoll三個接口…

uniapp 微信小程序 列表點擊分享 不同的信息

<button open-type"share" plain class"item share" click.stop"shareFn(item)"><text>分享</text> </button>import {onShareAppMessage} from dcloudio/uni-applet shareObj ref({})// 將點擊后的分享設置信息 關鍵…

C# 匿名方法詳解

C# 匿名方法詳解 引言 在C#編程語言中,匿名方法是使用Lambda表達式創建的沒有名稱的方法。它們在LINQ查詢、事件處理和其他場合中非常有用。本文將詳細介紹C#匿名方法的基本概念、語法、使用場景以及優勢。 匿名方法的概念 匿名方法是一種無需顯式定義名稱的方法。在C#中,…

SD卡簡介與驅動開發

基本概念 存儲卡有很多種類&#xff0c;CF卡、記憶棒、SD卡、XD卡、MMC卡、MS卡、TF卡、MicroSD卡等。平時最常見的有SD卡和MicroSD卡兩種&#xff0c; SD卡和MicroSD只是兩張卡的大小不同&#xff0c;規格版本是完全相同的&#xff0c;均由SD卡協會推出。 SD卡有不少規范&…

大數據平臺數倉數湖hive之拉鏈表高效實現

對于緩慢變化的維度表&#xff0c;如客戶表&#xff0c;員工表&#xff0c;為了不丟失歷史數據&#xff0c;又不至于太浪費存儲空間&#xff0c;我們采用拉鏈表實現。 實現過程如下&#xff1a; 1、采集初始數據&#xff1a; 1.1 從mysql導出數據到hdfs /data/dolphinschedu…

【VSCode】常用插件推薦(持續更新~)

以下的這些插件都有使用過&#xff0c;可取對自己編碼有用的選擇安裝。&#x1f9e0; 智能補全 / 提示類插件 1. Auto Import在編碼時選擇有對應導入包的選項&#xff0c;自動為 JS/TS 文件中的使用項補全并添加 import 聲明&#xff0c;極大提高開發效率。2. Iconify IntelliS…