CentOS 7上部署BIND9 DNS服务器指南
场景假设:
我们要为内部网络 192.168.1.0/24
搭建一个权威 DNS 服务器。
- 域名:
mylab.local
- DNS 服务器 IP:
192.168.1.10
- 我们将配置正向解析 (hostname -> IP) 和反向解析 (IP -> hostname)。
一、安装 BIND9
- 更新系统并安装 BIND 及工具:
sudo yum update -y sudo yum install -y bind bind-utils
bind
: BIND9 服务器软件包。bind-utils
: 包含dig
,nslookup
,named-checkconf
,named-checkzone
等实用工具。
二、配置 BIND9 (named.conf
)
BIND 的主配置文件是 /etc/named.conf
。CentOS 上的 named.conf
通常会包含其他配置文件,如 named.rfc1912.zones
,我们将在这里定义我们的区域。
-
编辑主配置文件
/etc/named.conf
:sudo vi /etc/named.conf
修改
options
部分:options {listen-on port 53 { 127.0.0.1; 192.168.1.10; }; // 监听本地和服务器的内网IPlisten-on-v6 port 53 { ::1; }; // 如果不需要IPv6,可以设为 nonedirectory "/var/named"; // 区域文件和其他数据的工作目录dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";recursing-file "/var/named/data/named.recursing";secroots-file "/var/named/data/named.secroots";allow-query { localhost; 192.168.1.0/24; }; // 允许哪些IP查询 (这里是本地和内网)/** 如果你正在构建一个权威的DNS服务器,你不希望它也为其他人执行递归查询。* 如果你有一个内部网络,并且希望你的DNS服务器也为你的内部客户端解析外部名称,* 那么你需要设置 allow-recursion 并可能配置 forwarders。* 对于纯权威服务器,recursion应为no。*/recursion no; // 作为权威服务器,通常不提供递归查询给外部dnssec-enable yes;dnssec-validation yes;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";pid-file "/run/named/named.pid";session-keyfile "/run/named/session.key";/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */include "/etc/crypto-policies/back-ends/bind.config"; };logging {channel default_debug {file "data/named.run";severity dynamic;}; };// 默认会包含这个文件,我们将在其中定义我们的区域 include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
关键修改点:
listen-on port 53 { 127.0.0.1; 192.168.1.10; };
: 让 BIND 监听服务器的内网 IP 地址192.168.1.10
上的 DNS 请求。allow-query { localhost; 192.168.1.0/24; };
: 允许来自本地和192.168.1.0/24
网段的查询。recursion no;
: 非常重要! 作为权威服务器,我们不希望它为公共网络提供递归查询服务,这会使其成为 DDoS 放大攻击的目标。如果你的服务器也需要为内部客户端提供递归,那么这里可以设为yes
,并且allow-recursion
需要精确配置。
-
定义区域 (编辑
/etc/named.rfc1912.zones
):
这个文件默认包含了一些模板,我们可以在文件末尾添加我们的区域定义。sudo vi /etc/named.rfc1912.zones
在文件末尾添加以下内容:
// 正向解析区域 mylab.local zone "mylab.local" IN {type master; // 主服务器file "forward.mylab.local"; // 区域数据文件名 (相对于 /var/named/)allow-update { none; }; // 禁止动态更新 (除非你需要)allow-transfer { none; }; // 禁止区域传送 (除非你有从服务器) };// 反向解析区域 1.168.192.in-addr.arpa (对应 192.168.1.0/24) zone "1.168.192.in-addr.arpa" IN {type master;file "reverse.mylab.local";allow-update { none; };allow-transfer { none; }; };
forward.mylab.local
和reverse.mylab.local
是我们将要创建的区域数据文件的名称。
三、创建区域文件
区域文件存放在 /var/named/
目录下。
-
创建正向区域文件
/var/named/forward.mylab.local
:sudo vi /var/named/forward.mylab.local
添加以下内容:
$TTL 86400 ; 1 day @ IN SOA ns1.mylab.local. admin.mylab.local. (2023072001 ; Serial (YYYYMMDDNN format, 每次修改必须增加)3600 ; Refresh (1 hour)1800 ; Retry (30 minutes)604800 ; Expire (1 week)86400 ; Minimum TTL (1 day) ); Name Servers @ IN NS ns1.mylab.local.; A Records for Name Servers ns1 IN A 192.168.1.10; Other A Records server1 IN A 192.168.1.100 client1 IN A 192.168.1.101 www IN CNAME server1.mylab.local.
注意:
ns1.mylab.local.
和admin.mylab.local.
末尾的.
非常重要,表示这是一个完全限定域名 (FQDN)。admin.mylab.local.
中的第一个.
代表@
符号,所以实际邮箱是admin@mylab.local
。- 序列号 (Serial) 每次修改区域文件时必须增加,否则从服务器(如果有的话)不会同步更新。
-
创建反向区域文件
/var/named/reverse.mylab.local
:sudo vi /var/named/reverse.mylab.local
添加以下内容:
$TTL 86400 @ IN SOA ns1.mylab.local. admin.mylab.local. (2023072001 ; Serial3600 ; Refresh1800 ; Retry604800 ; Expire86400 ; Minimum TTL ); Name Server @ IN NS ns1.mylab.local.; PTR Records (IP的最后一位) 10 IN PTR ns1.mylab.local. ; 192.168.1.10 100 IN PTR server1.mylab.local. ; 192.168.1.100 101 IN PTR client1.mylab.local. ; 192.168.1.101
-
设置区域文件权限:
BIND 进程 (通常以named
用户运行) 需要能够读取这些文件。sudo chown root:named /var/named/forward.mylab.local sudo chown root:named /var/named/reverse.mylab.local sudo chmod 640 /var/named/forward.mylab.local sudo chmod 640 /var/named/reverse.mylab.local
四、检查配置和启动服务
-
检查主配置文件语法:
sudo named-checkconf /etc/named.conf
如果没有任何输出,表示语法正确。
-
检查区域文件语法:
sudo named-checkzone mylab.local /var/named/forward.mylab.local sudo named-checkzone 1.168.192.in-addr.arpa /var/named/reverse.mylab.local
输出应类似:
zone mylab.local/IN: loaded serial 2023072001
OK
-
启动并设置 BIND 开机自启:
sudo systemctl start named sudo systemctl enable named sudo systemctl status named
确保服务状态是
active (running)
。 -
配置防火墙:
允许 DNS 查询 (UDP 和 TCP 端口 53)。sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload
如果你没有使用
firewalld
,而是iptables
,命令会是:sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT sudo service iptables save # 或等效命令保存规则
五、测试 DNS 解析
-
在 DNS 服务器本机测试:
dig @localhost server1.mylab.local dig @localhost www.mylab.local dig @localhost -x 192.168.1.100
你应该能看到正确的 A 记录、CNAME 记录和 PTR 记录。
-
在内部网络中的其他客户端测试:
- 修改客户端的 DNS 服务器设置为
192.168.1.10
。- 在 Linux 客户端,可以修改
/etc/resolv.conf
(临时) 或网络管理器的配置。 - 在 Windows 客户端,修改网络适配器的 DNS 设置。
- 在 Linux 客户端,可以修改
- 然后使用
nslookup
或dig
测试:nslookup server1.mylab.local nslookup 192.168.1.100
- 修改客户端的 DNS 服务器设置为
六、经典案例:权威主服务器 + 缓存递归
上面的案例是一个纯粹的权威服务器。一个更常见的内部网络案例是,DNS 服务器既作为内部域名的权威服务器,也为内部客户端提供对外部域名的递归查询服务。
修改配置:
/etc/named.conf
中的options
:options {listen-on port 53 { 127.0.0.1; 192.168.1.10; };// ... 其他选项 ...allow-query { localhost; 192.168.1.0/24; };recursion yes; // 启用递归allow-recursion { localhost; 192.168.1.0/24; }; // 允许内网递归// 可选:配置转发器,如果不想让BIND直接查询根服务器// forwarders {// 8.8.8.8; // Google DNS// 1.1.1.1; // Cloudflare DNS// };// forward only; // 如果设置了forwarders,是只转发还是先转发再自己递归// ... 其他选项 ... };
- 区域定义 (
/etc/named.rfc1912.zones
) 和区域文件保持不变。 - 重启
named
服务。
现在,你的 BIND 服务器不仅能解析 mylab.local
,还能为 192.168.1.0/24
网段的客户端解析如 www.google.com
这样的外部域名。
七、常见问题及解决方法
-
问题:
named
服务启动失败。- 原因: 配置文件语法错误、区域文件错误、权限问题、端口被占用。
- 解决:
sudo named-checkconf /etc/named.conf
检查主配置。sudo named-checkzone <zone_name> <zone_file_path>
检查区域文件。- 查看日志:
sudo journalctl -u named -f
或/var/log/messages
(取决于系统日志配置)。 - 检查文件权限:
named
用户(通常是named
)需要读取配置文件和区域文件,以及写入/var/named/data
和/run/named/
目录。 sudo netstat -tulnp | grep :53
检查端口 53 是否被其他程序占用。
-
问题:客户端无法解析域名,或解析到错误 IP。
- 原因: 防火墙阻止、
allow-query
配置错误、客户端 DNS 设置错误、区域文件记录错误、缓存问题。 - 解决:
- 检查服务器防火墙是否允许 UDP/TCP 53 端口。
- 确认
named.conf
中的listen-on
和allow-query
设置正确。 - 确认客户端的 DNS 服务器指向了正确的 BIND 服务器 IP。
- 仔细检查区域文件中的记录,特别是 IP 地址和主机名。
- 清除客户端 DNS 缓存 (Windows:
ipconfig /flushdns
, Linux: 可能需要重启nscd
或systemd-resolved
)。 - 在服务器上使用
dig @localhost <domain>
测试。
- 原因: 防火墙阻止、
-
问题:修改区域文件后,解析结果没有更新。
- 原因: 未增加 SOA 记录中的序列号、未重载 BIND 配置/区域。
- 解决:
- 每次修改区域文件后,务必增加 SOA 记录中的序列号!
- 重载 BIND:
sudo rndc reload
或sudo systemctl reload named
。 - 如果只想重载特定区域:
sudo rndc reload mylab.local
。
-
问题:
rndc: connect failed: 127.0.0.1#953: connection refused
- 原因:
rndc
控制通道未正确配置或named
未监听控制端口。 - 解决:
- 确保
/etc/named.conf
中有controls
块,并且引用了正确的rndc.key
文件。通常 CentOS 默认配置是好的。include "/etc/rndc.key"; // 或 /etc/named.conf 中直接定义 keycontrols {inet 127.0.0.1 port 953allow { 127.0.0.1; } keys { "rndc-key"; }; // "rndc-key" 是在 rndc.key 中定义的名称 };
- 确保
/etc/rndc.key
文件存在且权限正确 (通常named
用户可读)。 - 如果
rndc.key
不存在或有问题,可以尝试重新生成:sudo rndc-confgen -a -c /etc/rndc.key
(注意备份旧文件)。
- 确保
- 原因:
-
问题:SELinux 阻止 BIND 操作。
- 原因: SELinux 策略可能阻止
named
写入某些文件(如区域文件,如果配置了动态更新或主文件在非标准位置)或绑定到某些端口。 - 解决:
- 查看审计日志:
sudo ausearch -m avc -ts recent
。 - 如果
named
需要写主区域文件(不常见,除非是动态更新或特殊配置):
sudo setsebool -P named_write_master_zones on
- 如果区域文件或日志文件上下文不正确,可以使用
restorecon
:
sudo restorecon -Rv /var/named/
sudo restorecon -Rv /etc/named.conf
- 或者,临时将 SELinux 设置为 permissive 模式进行调试:
sudo setenforce 0
(不推荐在生产环境长期使用)。
- 查看审计日志:
- 原因: SELinux 策略可能阻止
-
问题:区域传送 (Zone Transfer) 失败。
- 原因: 主服务器
allow-transfer
未配置或配置错误;从服务器masters
配置错误;防火墙阻止;主服务器未正确加载区域。 - 解决:
- 在主服务器的
zone
定义中,allow-transfer { <slave_ip>; };
。 - 在从服务器的
zone
定义中,masters { <master_ip>; };
。 - 确保主从服务器之间 TCP 端口 53 可达。
- 检查主服务器日志,确认区域已成功加载且序列号正确。
- 在主服务器的
- 原因: 主服务器
八、改进和进阶
-
从服务器 (Slave/Secondary DNS):
- 为提高可用性和冗余,应至少配置一个从 DNS 服务器。
- 从服务器从主服务器复制区域数据。
- 主服务器配置
allow-transfer { <slave_ip>; };
和also-notify { <slave_ip>; };
。 - 从服务器配置
type slave;
和masters { <master_ip>; };
。
-
DNSSEC (Domain Name System Security Extensions):
- 通过数字签名来验证 DNS 数据的真实性和完整性,防止 DNS 欺骗和缓存投毒。
- 配置 DNSSEC 相对复杂,涉及密钥生成、区域签名、信任锚配置等。
-
视图 (Views):
- 实现 Split DNS (或 Split Horizon DNS),根据客户端的源 IP 地址提供不同的 DNS 应答。
- 例如,内部客户端解析
server.mylab.local
得到私有 IP,外部客户端解析得到公共 IP。
-
更精细的日志记录:
- 在
named.conf
的logging
部分配置不同的通道 (channel) 和类别 (category),将不同类型的日志(如查询日志、安全日志、区域加载日志)输出到不同文件或 syslog,并设置不同级别。 - 注意: 查询日志 (
category queries
) 会产生大量数据,通常仅用于调试。
- 在
-
安全加固:
- 隐藏版本号: 在
options
中添加version "not available";
。 - 响应速率限制 (RRL - Response Rate Limiting): 帮助缓解某些类型的 DNS 放大攻击。需要在
options
中配置rate-limit { ... };
。 - 定期更新 BIND: 及时修补已知的安全漏洞。
- 最小权限原则: 确保
named
进程以非 root 用户运行。
- 隐藏版本号: 在
-
监控:
- 使用监控工具 (如 Nagios, Zabbix, Prometheus) 监控 BIND 服务的可用性、响应时间、区域序列号等。
- BIND 自身也提供统计信息,可以通过
rndc stats
查看,或配置statistics-channel
。
-
使用
rndc
管理:- 熟悉
rndc
命令,如rndc reload
,rndc reconfig
,rndc flush
,rndc status
,rndc querylog on/off
等,避免不必要的服务重启。
- 熟悉
这个实战案例和相关信息应该能帮助你成功部署和管理 CentOS 7 上的 BIND9 服务器。记住,DNS 是一个关键的基础服务,仔细规划和测试非常重要。
相关文章:
CentOS 7上部署BIND9 DNS服务器指南
场景假设: 我们要为内部网络 192.168.1.0/24 搭建一个权威 DNS 服务器。 域名:mylab.localDNS 服务器 IP:192.168.1.10我们将配置正向解析 (hostname -> IP) 和反向解析 (IP -> hostname)。 一、安装 BIND9 更新系统并安装 BIND 及工…...
面试突击:消息中间件之RabbitMQ
一:你们项目中哪里用到了RabbitMQ ? 难易程度:☆☆☆ 出现频率:☆☆☆☆ 我们项目中很多地方都使用了RabbitMQ , RabbitMQ 是我们项目中服务通信的主要方式之一 , 我们项目中服务通信主要有两种方式实现 : 通过Feign实现服务调用通过MQ实现服…...
基于 ESP32 与 AWS 全托管服务的 IoT 架构:MQTT + WebSocket 实现设备-云-APP 高效互联
目录 一、总体架构图 二、设备端(ESP32)低功耗设计(适配 AWS IoT) 1.MQTT 设置(ESP32 连接 AWS IoT Core) 2.低功耗策略总结(ESP32) 三、云端架构(基于 AWS Serverless + IoT Core) 1.AWS IoT Core 接入 2.云端 → APP:WebSocket 推送方案 流程: 3.数据存…...
将 /dev/vdb1 的空间全部合并到 /dev/mapper/centos-root(即扩展 CentOS 的根分区)
要将 /dev/vdb1 的 1TB 空间合并到 /dev/mapper/centos-root(即扩展 CentOS 的根分区),可以采用 LVM(逻辑卷管理) 的方式。以下是详细步骤: 步骤 1:检查当前磁盘和 LVM 情况 1.1 确认 /dev/vdb…...
CentOS Stream安装MinIO教程
1. 下载 MinIO 二进制文件 # 进入 MinIO 安装目录 sudo cd /usr/local/bin/# 下载 MinIO 二进制文件(替换为最新版本链接) wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod x minio2. 创建专用用户和存储目录 # 创建 minio 用户…...
游戏引擎学习第299天:改进排序键 第二部分
回顾并为当天内容做准备 我们会现场编写完整的游戏代码。回顾上周发现自己对游戏中正确的排序规则并没有清晰的理解。主要原因是我们更擅长三维游戏开发,缺乏二维游戏和二维游戏技术的经验,对于二维精灵排序、模拟三维效果的最佳方案等没有太多技巧和经…...
设计模式----软考中级软件设计师(自用学习笔记)
目录 1、设计模式的要素 2、设计模式的分类 3、简单工厂模式 4、工厂方法 5、抽象工厂 6、生成器 7、原型 8、单例模式 9、适配器 10、桥接 11、组合模式 12、装饰 13、外观 14、享元 15、代理 16、责任链 17、命令 18、解释器 19、迭代器 20、中介者 21、…...
uniapp如何设置uni.request可变请求ip地址
文章目录 简介方法一:直接在请求URL中嵌入变量方法二:使用全局变量方法三:使用环境变量方法四:服务端配置方法五:使用配置文件(如config.js):总结 简介 在uni-app中,uni.request 用…...
Centos上搭建 OpenResty
一、OpenResty简介 OpenResty 是基于 Nginx 的扩展平台,完全兼容 Nginx 的核心功能(如 HTTP 服务和反向代理),同时通过内嵌 LuaJIT 支持,允许开发者用 Lua 脚本灵活扩展业务逻辑。它简化了动态逻辑的实现。 二、安装…...
Kotlin与物联网(IoT):Android Things开发探索
在物联网(IoT)领域,Kotlin 凭借其简洁性、安全性和与 Java 生态的无缝兼容性,逐渐成为 Android Things 开发的有力工具。尽管 Google 已于 2022 年宣布停止对 Android Things 的官方支持,但其技术思想仍值得探索&#…...
WIFI信号状态信息 CSI 深度学习篇之CNN(Python)
本博客是一篇非新手导向的CNN处理CSI图像帧的教程,基于tensorflow框架构建CNN模型进行训练,训练对象依然是前述博客中所提到的CSI图像帧(500 x 90 x 1)。代码里用到了深度可分离卷积,这种结构在减少计算量和参数数量方…...
深度学习实战 04:卷积神经网络之 VGG16 复现三(训练)
在后续的系列文章中,我们将逐步深入探讨 VGG16 相关的核心内容,具体涵盖以下几个方面: 卷积原理篇:详细剖析 VGG 的 “堆叠小卷积核” 设计理念,深入解读为何 332 卷积操作等效于 55 卷积,以及 333 卷积操作…...
欧拉系统离线部署docker
https://www.cnblogs.com/hsh96/p/18150538 Docker 离线安装指南 本文介绍了如何在 Linux 系统上进行 Docker 的离线安装。首先,确保欧拉系统安装的是server版本,否则没有tar工具。 您需要下载 Docker 的离线安装包。您可以从以下链接获取所需的安装包&a…...
Java 中 final 与 static 的区别
Java 中 final 与 static 的区别 在 Java 中,final 和 static 是两个不同的关键字,它们的核心作用和不可变性特性有本质区别: 一、final 的核心作用 1. 变量(不可变引用) 不可重新赋值:final 修饰的变量…...
多模态实时交互边界的高效语音语言模型 VITA-Audio 介绍
介绍 VITA-Audio是由Zuwei Long等研究者提出的端到端大型语音语言模型,其核心目标是通过跨模态令牌生成技术,解决传统语音交互系统中首音频令牌生成延迟高的问题。该模型的创新点主要体现在: 低延迟:VITA-Audio 是首个能够在初次…...
LLM | 论文精读 | NAACL 2025 | Clarify When Necessary:教语言模型何时该“问一句”再答!
🔍 解读 NAACL 2025 重磅论文《Clarify When Necessary》:教语言模型何时该“问一句”再答! 🧩 一、现实问题:大模型“看不懂装懂”有多危险? 我们每天用的 ChatGPT、Claude 等大型语言模型(LL…...
MySQL 8.0 OCP 英文题库解析(七)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题51~60 试题51:…...
深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧
深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧 一、分包核心价值与基本原理 1.1 为什么需要分包 首屏加载优化:减少主包体积,提升TTI(Time to Interactive)缓存利用率提升&am…...
MySQL——基本查询内置函数
目录 CRUD Create Retrieve where order by limit Update Delete 去重操作 聚合函数 聚合统计 内置函数 日期函数 字符函数 数学函数 其它函数 实战OJ 批量插入数据 找出所有员工当前薪水salary情况 查找最晚入职员工的所有信息 查找入职员工时间升序排…...
实现图片自动压缩算法,canvas压缩图片方法
背景: 在使用某些支持webgl的图形库(eg:PIXI.js,fabric.js)场景中,如果加载的纹理超过webgl可处理的最大纹理限制,会导致渲染的纹理缺失,甚至无法显示。 方案 实现图片自动压缩算…...
零基础设计模式——创建型模式 - 单例模式
第二部分:创建型模式 - 单例模式 (Singleton Pattern) 欢迎来到创建型模式的第一站——单例模式!这是最简单也最常用的设计模式之一。 核心思想:关注对象的创建过程,将对象的创建与使用分离,降低系统的耦合度。 单例…...
数据挖掘:从数据堆里“淘金”,你的数据价值被挖掘了吗?
数据挖掘:从数据堆里“淘金”,你的数据价值被挖掘了吗? 在这个数据爆炸的时代,我们每天都在产生海量信息:社交媒体上的点赞、网购时的浏览记录,甚至是健身手环记录下的步数。这些数据本身可能看似杂乱无章…...
k8s1.27版本集群部署minio分布式
需求: 1.创建4个pv,一个pv一个minio-pod。使用sts动态分配pvc(根据存储类找到pv)。----持久化 2.暴露minio的9001端口。(nodeport)----管理界面 镜像:minio/minio:RELEASE.2023-03-20T20-16-18Z--->换国内源 说明…...
雷军:芯片,手机,平板,SUV一起发
大家好,我是小悟。 5月19日,雷军在微博上宣布,5月22日晚7点将举办小米战略新品发布会。 这场被官方称为“人车家全生态”战略升级的重要活动,一口气带来了小米手机SoC芯片“玄戒O1”、旗舰手机小米15S Pro、小米平板7 Ultra&…...
使用Dockerfile构建含私有Maven仓库依赖包的Java容器
背景 需要用JDBC方式访问ArgoDB星环提供了ArgoDB jar包应用将以Container的方式运行我希望打包成镜像之后,镜像启动就能测试连接是否成功连接URL串需要能够传递进去 失败的方案一:本地文件导入POM pom.xml 配置本地路径 <dependency><groupI…...
AI指令模板综述(Prompt Review)
文章目录 DeepSeek DeepSeek 参考:DeepSeek学术指令大全 找到有价值的研究方向 "作为我的学术研究助手,你需要基于以下要求为我生成5个具有学术价值的创新选题: 请聚焦于[具体研究领域,如’社交媒体用户行为’或’深度学习…...
软件架构之-论分布式架构设计及其实现
论分布式架构设计及其实现 摘要正文 摘要 2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查项目开发,该项目旨在为长三角地区渔船建造设计院、渔船审图机构提供一个便捷化的服务平台。在次项目中,我作为项目成员参与了整个…...
零售EDI:Belk Stores EDI需求分析
Belk Stores 成立于 1888 年,是美国历史最悠久的家族百货连锁品牌之一,总部位于北卡罗来纳州夏洛特市。作为美国东南部领先的零售企业,Belk 在16个州拥有近300家门店,主要经营服装、鞋履、美妆、家居用品等多个品类,服…...
LangChain4j入门(六)整合提示词(Prompt)
前言 提示词(Prompt)是用户输入给AI模型的一段文字或指令,用于引导模型生成特定类型的内容。通过提示词,用户可以告诉AI“做什么”、 “如何做”以及“输出格式”,从而在满足需求的同时最大程度减少无关信息的生成。有…...
【HarmonyOS 5】金融应用开发鸿蒙组件实践
【HarmonyOS 5】金融应用开发鸿蒙组件实践 一、鸿蒙生态观察 2024 年 1 月 18 日: 发布 原生鸿蒙操作系统星河版,面向开发者开放申请,余承东宣布鸿蒙生态设备数达 8 亿台;建设银行、邮储银行等完成鸿蒙原生应用 Beta 版本开发。 …...
cv2.VideoWriter_fourcc(*‘mp4v‘)生成的视频无法在浏览器展
看这个博主的博客,跟我碰到的问题的一致,都是使用AVC1写视频时报编码器不存在的异常,手动编译opencv-python或者使用conda install -c conda-forge opencv安装依赖即可。 博主博客:Python OpenCV生成视频无法浏览器播放问题说明及…...
MD编辑器推荐【Obsidian】含下载安装和实用教程
为什么推荐 Obsidian ? 免费 (Typora 开始收费了)Typora 实现的功能,它都有!代码块可一键复制 文件目录支持文件夹 大纲支持折叠、搜索 特色功能 – 白板 特色功能 – 关系图谱 下载 https://pan.baidu.com/s/1I1fSly…...
新书速览|GraphPad Prism图表可视化与统计数据分析:视频教学版
《GraphPad Prism图表可视化与统计数据分析:视频教学版 》 本书内容 《GraphPad Prism图表可视化与统计数据分析:视频教学版 》以GraphPad Prism 10为平台,讲述统计分析软件GraphPad Prism的具体应用方法。在介绍《GraphPad Prism图表可视化与统计数据分析:视频教学…...
波峰波谷策略
这是一个基于数据分布的峰度(kurtosis)和偏度(skewness)的交易策略。 当数据呈现趋势性,并且潜在趋势为正时,我们做多。 当数据呈现趋势性,并且潜在趋势为负时,我们做空。 当趋势发生反转后,我们平仓。 那么,我们如何确定趋势和趋势的强度呢?让我们先来复习一下峰…...
【综述】视频目标分割VOS
目录 1、Associating Objects with Transformers for Video Object Segmentation1)背景知识2)研究方法3)实验结果4)结论 2、Rethinking Space-Time Networks with Improved Memory Coverage for Efficient Video Object Segmentat…...
基于线性回归的数据预测
1. 自主选择一个公开回归任务数据集(如房价预测、医疗数据、空气质量预测等,可Kaggle)。 2. 数据预处理:完成标准化(Normalization)、特征选择或缺失值处理等步骤。 3. 使用线性回归模型进行建模。采用80…...
第5天-python饼图绘制
一、基础饼图绘制(Matplotlib) 1. 环境准备 python 复制 下载 pip install matplotlib numpy 2. 基础饼图代码 python 复制 下载 import matplotlib.pyplot as plt# 数据准备 labels = [1, 2, 3, 4] sizes = [30, 25, 15, 30] # 各部分占比(总和建议100) colors…...
c++学习方向选择说明
文章目录 前言一、什么样的人适合用c找编程相关工作二、c可以投递什么岗位三、应届生c怎么学才可以找到好工作那这样的话,校招生搞c应该怎么学才能凸显自己的优势呢?那有人就问了,那我应该学啥啊? 四、零基础学习c路线 前言 做了…...
采集需要登录网站的教程
有些网站需要用户登录才能显示相关信息,如果要采集这类网站,有以下几个方法: 1. 写发布模块来抓包获取post的数据; 2. 有些采集器内置浏览器获取这些信息,但是经常获取的不准确,可靠性太低; 3. …...
在hadoop中实现序列化与反序列化
在 Hadoop 分布式计算环境中,序列化与反序列化是数据处理的核心机制之一。由于 Hadoop 需要在集群节点间高效传输数据并进行分布式计算,其序列化框架不仅要支持对象的序列化与反序列化,还要满足高效、紧凑、可扩展等特殊需求。本文将深入探讨…...
数据结构*排序
排序的一些相关概念 稳定性 假设在待排序序列中,存在两个元素A和B,A和B的值相同。在排序后,A和B的相对位置没有变化,就说这排序是稳定的。反之不稳定。 内部排序与外部排序 内部排序:数据完全存储在内存中…...
新浪《经济新闻》丨珈和科技联合蒲江政府打造“数字茶园+智能工厂+文旅综合体“创新模式
5月14日,新浪网《经济新闻》频道专题报道珈和科技在第十四届四川国际茶业博览会上的精彩亮相,并深度聚焦我司以数字技术赋能川茶产业高质量发展创新技术路径,及在成都市“茶业建圈强链”主题推介会上,珈和科技与蒲江县人民政府就智…...
【Linux】第二十三章 控制启动过程
1. 请简要说明 RHEL9的启动过程。 (1)计算机通电。系统固件 (UEFI 或 BIOS) 开机自检 (POST),并初始化部分硬件,然后,固件会寻找启动设备(如硬盘、USB、网络等),并将控制权交给引导…...
深信服golang面经
for range 中赋值的变量,这个变量指向的是真实的地址吗,还是临时变量 不是真实地址,是临时变量 package mainimport "fmt"func main() {slice : []int{4, 2, 3}for _, v : range slice {fmt.Println(v, &v) // 这里的 v 是临…...
基于 Netty + SpringBoot + Vue 的高并发实时聊天系统设计与实现
一、系统架构设计 1.1 整体架构图 ------------------ WebSocket (wss) ------------------ Netty TCP ------------------ | Vue前端 | <-------------------------> | SpringBoot网关 | <------------------> | Netty服务集…...
根据当前日期计算并选取上一个月和上一个季度的日期范围,用于日期控件的快捷选取功能
代码如下: <el-date-picker v-model"value" type"monthrange" align"right" unlink-panels range-separator"至"start-placeholder"开始月份" end-placeholder"结束月份" :picker-options"pic…...
Spring Boot 使用 jasypt配置明文密码加密
引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.4</version> </dependency>添加配置 jasypt:encryptor:password: pssw0rd&Hubt2ec…...
ubuntu下docker安装mongodb-支持单副本集
1.mogodb支持事务的前提 1) MongoDB 版本:确保 MongoDB 版本大于或等于 4.0,因为事务支持是在 4.0 版本中引入的。 2) 副本集配置:MongoDB 必须以副本集(Replica Set)模式运行,即使是单节点副本集&#x…...
科技赋能,开启现代健康养生新潮流
在科技与生活深度融合的当下,健康养生也迎来了全新的打开方式。无需传统医学的介入,借助现代科学与智能设备,我们能以更高效、精准的方式守护健康。 饮食管理步入精准化时代。利用手机上的营养计算 APP,录入每日饮食࿰…...
《安徽日报》聚焦珈和科技AI创新:智慧虫情测报护航夏粮提质丰产
5月7日,《安徽日报》焦点新闻版块以《高科技助力田管,确保夏粮丰收——为4300多万亩小麦守好防线》为题,深度报道了农业科技在夏粮生产中的关键作用。其中,珈和科技自主研发的AI虫情测报一体机作为绿色防控、农业智慧化的标杆被重…...