在这里插入图片描述

文章目录

  • 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…