Linux——DNS的配置和使用

news2024/5/19 20:30:18

一、DNS

域名服务器,实现IP和域名的转换

DNS 协议运行在 UDP 协议之上,使用端口号 53

2.结构

DNS 的命名空间的结构如下:
1. 根域名( Root Domain ): 根域名位于 DNS 命名空间的顶部,它表示空字符串( "" ),通常以
一个点号( . )表示。根域名下面直接连接着顶级域名( TLD )。
2. 顶级域名( Top-Level Domain TLD ): 顶级域名是根域名的直接子节点,例如
".com" ".net" ".org" ".gov" ".edu" 等。顶级域名用于表示域名的类型或所属组织类型。
3. 二级域名( Second-Level Domain SLD ): 二级域名是位于顶级域名之下的域名部分,例如
".example" 。二级域名通常用于表示特定的组织、公司或网站。
4. 子域名( Subdomain ): 子域名是位于二级域名之下的域名部分,例如 " www.example.com "
中的 "www" 就是一个子域名。子域名通常用于区分不同的服务、部门或功能。
example是权威域名,权威域名是递归访问

二、DNS报文结构

有任何网络通信协议一样, DNS 请求报文和应答报文均需要满足一定的格式,才能被通信双方所理解。这就是 DNS 协议负责的范畴,它位于传输层之上,属于 应用层 协议。
DNS 报文分为 请求 应答 两种,结构是类似的,大致分为五部分:
头部( header ),描述报文类型,以及其下 4 个小节的情况;
问题节( question ),保存查询问题;
答案节( answer ),保存问题答案,也就是查询结果;
授权信息节( authority ),保存授权信息;
附加信息节( additional ),保存附加信息;

问题记录

一个问题记录由 3 个字段组成:
  • 待查询域名 Name ),这个字段长度不固定,由具体域名决定;
  • 查询类型 :
        ( Type ),域名除了关联 IP 地址,还可以关联其他信息,常见类型包括(下节详细介                       绍):

            1 表示 A 记录,即 IP 地址;

              28 表示 AAAA 记录,即 IPv6 地址;

                etc

  • Class )通常为 1 ,表示互联网地址;
域名字段,它的长度是不固定的。域名按 . 切分成若干部分,再依次保存。每个部分由一个前导计数字节开头,记录当前部分的字符数。
 常用DNS解析的类型

资源记录

服务端处理查询请求后,需要向客户端发送应答报文; 域名查询结果 作为 资源记录 ,保存在答案以及其后两节中。
答案节、授权信息节和附加信息节均由一条或多条资源记录组成,记录数目保存在头部中的对应字段,不再赘述。
答应报文

解析类型

当我们查询一个域名时,首先查找本地域名\rightarrow本地的缓存\rightarrow根域名服务器
\rightarrow顶级域名服务器\rightarrow权威域名服务器

DNS记录类型

实际上,域名和与之关联的信息,就构成了一条 DNS 记录 DNS record )。 DNS 记录可以理解成一个 键值对:
  • 键:域名;
  • 值:与域名关联的值
除了 IP 地址, DNS 记录值还可以是 IPv6 地址、别名、文本等等。据此, DNS 记录可分为若干不同类型,包括:
  • A ,主机 IP 地址;
  • AAAA ,主机 IPv6 地址;
  • ALIAS ,自动解析的别名( alias );
  • CNAME ,别名的权威名称( canonical name );
  • MX ,邮件交换服务器( Mail eXchange );
  • NS ,域名服务器( name server );
  • TXT ,描述文本;

A记录

[root@netbox ~]# dig test.fasionchan.com
; <<>> DiG 9.16.1-Ubuntu <<>> test.fasionchan.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49579
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.fasionchan.com. IN A
;; ANSWER SECTION:
test.fasionchan.com. 752 IN A 10.0.0.1
;; Query time: 71 msec
;; SERVER: 192.168.65.1#53(192.168.65.1)
;; WHEN: Mon Apr 26 17:22:16 CST 2021
;; MSG SIZE rcvd: 53

CNAME记录

CNAME 记录,表示别名的 权威名称 canonical name )。
域名可以取别名,以 webserver.fasionchan.com 为例,它可以取一个别名,比如:
network.fasionchan.com 。如此一来称前者是后者的 权威名称 CNAME 记录则保存权威名称。

MX记录

MX 记录,表示 邮件交换 mail exchange )服务,即邮件服务器。其中, MX Mail eXchange 的缩写。
电子邮件可以是说是互联网中发展最早,应用最为广泛的应用。我们发送邮件时,客户端需要根据自己的邮箱账号找到邮件服务器的地址,并通过 SMTP 协议和它进行通信。
每个邮件厂商都有一个自己的域名,查询该域名的 MX 记录,即可找到邮件服务器的地址。以 QQ 邮箱为例,它的域名是 qq.com

NS记录

NS 记录,保存着负责该域解析的权威 DNS 服务器,记录值为 DNS 服务器的域名。
以我的域名 fasionchan.com 为例,它在腾讯云 dnspod 上解析。我注册域名后,需要配置 NS
录,指向 dnspod 服务器。这个 NS 记录,最终会被同步到 .com 顶级域名服务器。

TXT记录

TXT 记录用来保存一些文本信息,这些信息可以用作配置,但不太常见。
很多地方使用 TXT 记录来验证域名所有权:先让域名所有人配置一条特殊的 TXT 记录,然后查询该记 录看结果是否匹配。

三、DNS安全和防护

劫持原理

由于家用路由器质量参差不齐,存在不少潜在安全漏洞。一旦家里的路由器被黑客攻破,黑客可以在DNS 代理上做手脚,将域名指到钓鱼站点进行欺诈。
如上图,路由器被黑客攻破,它的 DNS 代理服务被黑客控制。黑客在 DNS 代理上做手脚,将某个网站的域名,指向自己精心布置的钓鱼站点。这样的话,依靠 DNS 代理查询域名的终端,将被强制劫持到 钓鱼站点。
这就是所谓的 DNS 劫持 DNS Hijacking ): DNS 服务器受到攻击导致域名指向被黑客篡改。一旦域名被劫持到钓鱼网站,结果可能是灾难性的。

防御措施

证书认证
启用 HTTPS 协议
公共 DNS 服务
很多 互联网大厂都提供了公共 DNS 服务,这些服务器由背后的公司背书,值得信任。这个表格列举了
一些常见的公共 DNS 服务:

四、实验,DNS服务部署

 安装并启动服务

[root@dnsserver ~]# yum -y install unbound
[root@dnsserver ~]# rpm -qa | grep unbound
python3-unbound-1.7.3-14.el8.x86_64
unbound-libs-1.7.3-14.el8.x86_64
unbound-1.7.3-14.el8.x86_64
[root@dnsserver ~]# systemctl enable --now unbound
Created symlink /etc/systemd/system/multi-user.target.wants/unbound.service
→ /usr/lib/systemd/system/unbound.service.
[root@dnsserver ~]# systemctl status unbound
[root@dnsserver ~]# ss -anput | grep 53
# 注意防火墙以及SELinux
[root@dnsserver ~]# firewall-cmd --add-service=dns --permanent
[root@dnsserver ~]# firewall-cmd --reload
此时,修改 /etc/resolv.conf nameserver 的值为 127.0.0.1 则可以使用 127.0.01 来进行域名解析,下面是一个简单的验证
[root@dnsserver ~]# dig www.baidu.com
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45619
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1126 IN CNAME www.a.shifen.com.
www.a.shifen.com. 226 IN A 110.242.68.3
www.a.shifen.com. 226 IN A 110.242.68.4
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)   #注意这里是修改后的服务器IP
;; WHEN: Tue Apr 23 09:23:30 PDT 2024
;; MSG SIZE rcvd: 101

配置缓存

现在尝试让 dnsserver 以外的主机,可以使用 dnsserver 上面的的 unbound 进行域名解析。
修改配置文件:
[root@dnsserver ~]# vim /etc/unbound/unbound.conf
修改内容如下:
默认情况下,unbound 服务只监听 127.0.0.1 ,修改为 0.0.0.0 之后,会监听服务器上面所有 IPv4 地址的53 号端口,以实现与其他主机之间使用 53 号端口通信。
这里规定了监听端口
仅对于内网地址提供服务,其实就是访问控制ACL 规则,只有使用 allow 结尾的地址段中的主机可以与目前的服务器交互,并使用它提供的 DNS 缓存服务。这里实例的写法是所有的 IPv4 地址,建议还是使用自 己试验环境的网段。

dnssec - lame - check 是一个用于检查 DNS 服务器是否缺乏 DNSSEC 权威性的工具或命令。在 DNSSEC中,权威性是指一个 DNS 服务器是否有权提供特定域名的验证结果。如果一个 DNS 服务器在 DNSSEC 上缺乏权威性,那么它无法提供对于该域名的 DNSSEC 记录的验证。

 

这里的配置,将使用一个知名的公共DNS服务器来进行域名解析,此时,在进行DNS解析时,会先转发 给指定8.8.8.8,进行一次递归,由8.8.8.8进行必要的迭代查询。

因为上面配置了使用8.8.8.8 进行迭代,所以就不再需要指定根服务器的了。

 重启验证

[root@dnsserver ~]# systemctl restart unbound.service
[root@dnsclient ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.110.131
[root@dnsclient ~]# dig www.baidu.com
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30307
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 708 IN CNAME www.a.shifen.com.
www.a.shifen.com. 0 IN A 110.242.68.3
www.a.shifen.com. 0 IN A 110.242.68.4
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 09:51:11 PDT 2024
;; MSG SIZE rcvd: 101

实验二:自定义域名解析

 [root@dnsserver ~]# vim /etc/unbound/unbound.conf

[root@dnsserver ~]# unbound-checkconf #检查配置文件语法,未指定路径就是默认配置文件
unbound-checkconf: no errors in /etc/unbound/unbound.conf
[root@dnsserver ~]# systemctl restart unbound

测试

[root@dnsclient ~]# dig -t a dnsserver.test.com
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -t a dnsserver.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4877
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dnsserver.test.com. IN A
;; ANSWER SECTION: ##这一行
dnsserver.test.com. 3600 IN A 192.168.110.131
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:03:23 PDT 2024
;; MSG SIZE rcvd: 63
[root@dnsclient ~]# dig -t a dnsclient.test.com
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -t a dnsclient.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57939
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dnsclient.test.com. IN A
;; ANSWER SECTION: ##这一行
dnsclient.test.com. 3600 IN A 192.168.110.133
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:03:26 PDT 2024
;; MSG SIZE rcvd: 63
[root@dnsclient ~]# dig -t ns test.com
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -t ns test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57087
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.com. IN NS
;; ANSWER SECTION: ##这一行
test.com. 3600 IN NS 192.168.110.131.
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:03:43 PDT 2024
;; MSG SIZE rcvd: 66
[root@dnsclient ~]# dig -t mx test.com
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -t mx test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53725
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.com. IN MX
;; ANSWER SECTION: ##这一行
test.com. 3600 IN MX 10 dnsclient.test.com.
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:03:55 PDT 2024
;; MSG SIZE rcvd: 63
[root@dnsclient ~]# dig -x 192.168.110.131
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -x 192.168.110.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5464
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;131.110.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION: ##这一行
131.110.168.192.in-addr.arpa. 3600 IN PTR dnsserver.test.com.
;; Query time: 2 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:04:11 PDT 2024
;; MSG SIZE rcvd: 89
[root@dnsclient ~]# dig -x 192.168.110.133
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -x 192.168.110.133
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52023
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;133.110.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION: ##这一行
133.110.168.192.in-addr.arpa. 3600 IN PTR dnsclient.test.com.
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:04:14 PDT 2024
;; MSG SIZE rcvd: 89

维护命令简介

unbound-control dump-cache # 导出unbound缓存服务
unbound-control dump_cache > unbound.cache # 导出的数据保存到指定文件
unbound-control flush dnsserver.test.com # 刷新dnserver.test.com的缓存
unbound-control flush_zone test.com # 刷新test.com 域的缓存
unbound-control load_cache < unbound.cache # 从指定文件导入缓存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1626908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[leetcode] 58. 最后一个单词的长度

文章目录 题目描述解题方法倒序遍历java代码复杂度分析 题目描述 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a…

OpenHarmony实战开发—进程间通讯

版本&#xff1a;v3.2 Beta5 进程模型 OpenHarmony的进程模型如下图所示&#xff1a; 应用中&#xff08;同一包名&#xff09;的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility运行在同一个独立进程中&#xff0c;即图中绿色部分的“Main Process”。…

leaftjs+turfjs+idw纯前端实现等值面绘图+九段线

最近有个绘制等值面图的需求。我们一般的实现路径是&#xff1a; 1.后台绘图&#xff0c;用surfer绘制好&#xff0c;给前端调用叠加到地图。 2.后台用python绘图&#xff0c;绘制好给前端调用&#xff0c;叠加到地图。 3.后台进行插值计算、地图裁剪、最终生成geojson文件或…

电商技术揭秘三十四:智能风控业务架构浅析

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘二十八&#xff1a;安全与合规性保障 电商技术揭秘二十九&#xff1a;电商法律合规浅析 电商技术揭秘三十&#xff1a;知识产权保…

vue 3 —— 笔记(模板语法,响应式变量)

模板语法&#xff1a; Vue 使用一种基于 html 的模板语法&#xff0c;使我们能声明式将其组件实例绑定到呈现的 dom 上 文本插值 基础数据绑定形式 双大括号 会替换相应组件实例 msg 属性的值 原始html 双大括号会将数据解释为纯文本 不是html 想插入html 使用 v-html 指令 &…

短距离无线通信-Zigbee

阅读引言&#xff1a; 最近在复习之前做过的项目&#xff0c; 所以向将zigbee这个协议分享出来&#xff0c; 一方面可以给需要的人看到&#xff0c; 一方面也方便自己整理zigbee的知识。 目录 一、什么是 ZigBee? 二、Zigbee 通信频段和信道 三、Zigbee协议和Zigbee协议栈 …

ATFX汇市:日本央行并未连续加息,日元剧烈贬值

ATFX汇市&#xff1a;今日11:22&#xff0c;日本央行公布4月利率决议结果&#xff0c;宣布维持0~0.1%的基准利率不变。日元应声贬值&#xff0c;三十分钟内&#xff0c;USDJPY从155.42猛涨至155.89&#xff0c;涨幅47基点。今日14:30&#xff0c;日本央行行长植田和男召开货币政…

类与对象(四)

目录 1.构造函数 1.1初始化列表 1.2 隐式类型转换 2.静态成员 2.1 静态成员变量 2.2静态成员函数 3.友元 3.1 友元函数 3.2 友元类 4.内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 1.构造函数 1.1初始化列表 我们在将构造函数的时候讲过构造函数是对一个对象整体的…

HarmonyOS ArkUI实战开发-NAPI方法扩展

在前 3 小结笔者简单介绍了 NAPI 工程并对生成的源码进行了简单介绍&#xff0c;本节笔者在前 3 小节的基础上对 NAPI 工程做个扩展&#xff0c;再额外添加一个计算 MD5 的方法 md5()。 声明md5方法 在 index.d.ts 文件中声明一个 md5() 方法&#xff0c;该方法接收一个 stri…

自己搭建的大疆无人机RTMP流媒体服务延迟太大

流程&#xff1a;无人机摄像头->图传->遥控器->流媒体服务器->取流播放&#xff0c;延迟有10秒来的&#xff0c;大家有没有什么好的方案。

思考(1)

思考&#xff1a; 1. windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff0c;密文存在哪个文件下&#xff0c;该文件是否可以打开&#xff0c;并且查看到密文 Windows登录的明文密码&#xff1a;是通过LSA&#xff08;Local Security Authority&#xff09;进行存储…

用过最佳的wordpress模板

西瓜红&#xff0c;作为一种充满活力和激情的颜色&#xff0c;总是能给人留下深刻的印象。当这种鲜艳的色彩与经典的设计元素相结合时&#xff0c;就能打造出一款既时尚又实用的WordPress企业模板。今天&#xff0c;我们向您隆重推荐这款西瓜红经典配色WordPress企业模板。 这…

HTML批量文件上传方案——图像预览方式

作者:私语茶馆 1.HTML多文件上传的关键方案 多文件上传包括:文件有效性校验,文件预览、存储和进度展示多个方面,本章节介绍的是文件预览的实现方案。 2.文件上传前预览 2.1.效果 选择文件前: 选择文件后: 2.2.CSS文件代码 StorageCenter.css代码 html {font-family:…

计算机组成原理实验(一)--可控加减法电路设计实验

一、一位全加器的设计 视频学习链接&#xff1a;3-2-4 定点数的加法和减法运算 — 一位全加器的硬件逻辑实现_哔哩哔哩_bilibili 仿真电路图&#xff1a; 总结&#xff1a;奇数个1时Si输出为1&#xff0c;偶数个1输出为0&#xff1b;1的个数大于等于2时&#xff0c;Ci输出1 实…

NEMU模拟器源码编译与使用

NEMU模拟器源码编译与使用 1 NEMU介绍2 NEMU编译3 NEMU使用3.1 下载MySBIBenOS3.2 使用riscv64-benos_defconfig编译NEMU3.3 编译MySBIBenOS3.4 运行MySBIBenOS 4 解决NEMU编译报错4.1 找不到readline/readline.h4.2 找不到path_manager.h 1 NEMU介绍 NEMU&#xff08;NJU Emu…

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(三)KV缓存

探索和构建 LLaMA 3 架构&#xff1a;深入探讨组件、编码和推理技术&#xff08;三&#xff09; KV缓存 在推理的每一步中&#xff0c;只对模型输出的最后一个标记感兴趣&#xff0c;因为已经有了之前的标记。然而&#xff0c;模型需要访问所有先前的标记来决定输出哪个标记&…

Redis入门到实战教程(基础篇)笔记

教学来源&#xff1a; Redis课程介绍导学_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cr4y1671t?p1一、Redis 入门 1.认识NoSQL 2.Redis在虚拟机中的安装和开机自启 Redis在虚拟机中安装和配置开机自启-CSDN博客https://blog.csdn.net/qq_69183322/article/deta…

力扣37题:回溯算法之解数独

编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 数独部分空…

每日一题(力扣45):跳跃游戏2--贪心

由于题目已经告诉了我们一定可以跳到&#xff0c;所以我们只需去考虑前进最快的方法。即 判断当前下一步能跳的各个位置中&#xff0c;哪个能带你去去向最远的地方&#xff08;why&#xff1f; 因为其他位置所能提供的最大范围都没最远那个大&#xff0c;所以最远的那个已经可以…

【元启发式算法】学生心理学优化算法 SPBO算法【Matlab代码#88】

文章目录 【获取资源请见文章第4节&#xff1a;资源获取】1. 学生心理学优化算法&#xff08;SPBO&#xff09;1.1 最好的学生1.2 次好的学生1.3 一般的学生1.4 随机提高成绩的学生 2. 部分代码展示3. 仿真结果展示4. 资源获取说明 【获取资源请见文章第4节&#xff1a;资源获取…