精解Linux RHEL 6.x DNS 服务器

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

         精解Linux  RHEL 6.x  DNS 服务器   

=============================================

DNS的原理

、缓存服务器

DNS的测试工具

、DNS主从服务器

、DNS的转发

、DNS的子域授权

、DNS的acl规则和view视图

、DNS的日志系统的使用

=================================================

DNS的原理

DNS (Domain Name Server) 域名解析服务,他可以完成域名与IP地址的互换,可以通过IP地址解析到域名,也可以通过域名解析到IP地址,IP地址是平面结构,且不容易记住,DNS是层次化的结构,便于记忆。

DNS的层次化

 1)根域:根域位于层次结构的最顶部并用小句点“.”表示全球有十三个根服务器,一个主根服务器,十二个辅助根服务器。

2)顶级域:顶级域是按照组织类别或地理位置来划分的

.gov 政府组织
.com 商业组织
.net 网络中心
.org 非营利性组织
.edu 教育部门
.cn  .uk  .us 国家国别的代码,cn表示中国,uk表示英国,us表示美国

3)二级域:由国际域名组织为互联网中的个人或部门指定和登记的二级域

(如51cto.com,sohu.com)


DNS的查询方式

         迭代查询:本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服   务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地 域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询

         递归查询:主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的份,向其他根域名服务器继续发出查询请求报文会给客户端一个准确的返回结果,无论是成功与否。

步骤1:当客户端在IE输入www.baidu.com,客户端去请求本地域服务器解析,此过程为发  

           起递归查询。

步骤2:本地服务器接到查询请求后,查看区域文件,发现不是自己管制的区域,则发

           送给根域进行解析。此过程为迭代查询。

步骤3:根域服务接收到 请求后,查看区域文件,回复请求的主机,去找.com域服务器。此

           过程是迭代查询。

步骤4:本地域服务器,接收到根域服务器的回复后,去找.com域服务器,请求解析。此过

           程序是迭代查询。

步骤5:.com服务器接收到请求之后,查看自己的区域文件,回复主机去找

           baidu.com域服务,此过程是迭代查询。

步骤6:本地域服务器,接收到.com域服务器的回复后,去找baidu.com域服务器,

            请求解析,此过程是迭代查询。

步骤7:baidu.com域服务器接收到请求后,查看自己的区域文件,发现是自己所管制

           的区域,然后查看区域解析文件,把对应的IP地址发送给请求的服务器,此过

            程是迭代查询。

步骤8:本地服务器接收到baidu.com域服务器的回复,把FQDN对应IP地址传送给客

           户端,此过程为递归查询。


   DNS的解析类型

       FQDN:(Fully Qualified Domain Name)完全合格域名,由主机名+域名组成

               (如www.51cto.com)

       正向解决:FQDN----->IP,把完全合格域名,解析为IP地址

       方向解析:IP-------->FQDN,把IP解析为完全合格域名。


Linux服务器实现DNS服务器的软件有bind、powerdns,此博客主要讲bind

   bind的相关软件包

 bind:提供域名服务的主程序和相关文件

   bind-libs:提供域名服务器所依赖的库文件  

   bind-utils:提供了对DNS服务的测试工具程序

   rpm   -qc  包名     查看包安装生成的文件清单

   rpm   -qi   包名     查看包的摘要信息



、缓存服务器

1)安装软件包

        yum -y install  bind

  2)bind配置文件

     安装完后,会用到四个配置文件,四个配置文件的关系

 3)DNS   bind   named的关系  

           DNS是一个服务,是提供域名解析的服务;

           bind是实现这个服务的软件包;

           named是dns这个服务的守护进程

  4)配置缓存服务器的思路

把客户端发送的请求,转发给能解析到的服务器

在主配置文件里面修改 (/etc/named.conf)

开启服务, service  named  start(/etc/rc.d/init.d/named start)

第一次需要开启服务,之后只需要加载配置文件即可

service named reload (rndc reload)

named-checkconf


DNS的测试工具

[root@jie2 data]# rpm -ql bind-utils

/usr/bin/dig             #dig测试命令工具

/usr/bin/host            #host测试命令工具

/usr/bin/nslookup        #nslookup测试命令工具

/usr/bin/nsupdate

/usr/share/man/man1/dig.1.gz

/usr/share/man/man1/host.1.gz

/usr/share/man/man1/nslookup.1.gz

/usr/share/man/man1/nsupdate.1.gz

命令的使用用法:

    dig [option] 资源记录类型名称    [@server-ip]  

  option:

[ -t type] 指定类型

 [-x addr]  指定IP

资源记录类型名称:

       NS :对应DNS服务器的FQDN

       A 代表"主机名称"与"IP"地址的对应关系, 作用是把名称转换成IP地址

       PTR:代表"IP地址"与"主机名"的对应关系,作用刚好与A记录相反

     [@server-ip]:

                 不写IP,默认是本地服务器的IP

                 用@server-ip,指定服务器的IP

    eg:dig -t A www.51cto.com @172.16.0.1


host [option] 资源记录类型名称   [server-ip]

eg:host -t A www.51cto.com 172.16.0.1


nslookup   FQDN   [server-ip]

   eg: nslookup www.51cto.com 172.16.0.1




、DNS主从服务器

Master的配置


配置完成后,检查语法是否错误,然后加载配置文件即可。

Slave的配置


[root@jie3 ~]# cd /var/named/slaves/

[root@jie3 slaves]# ls

jie.com.zone

[root@jie3 slaves]#

小结:在实际工作中,可以把Master作为正向区域的主,反向作为slave的从。


、DNS的转发


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
###jie.com服务器的主配置文件###########
options {
//   listen-on port 53 { 127.0.0.1; };
//   listen-on-v6 port 53 { ::1; };
     directory    "/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" ;
//   allow-query     { localhost; };
     recursion  yes ;
         forward   only;       // 只允许转发
         forwarders { 172.16.122.4; };   // 转发到ltt.com服务上
//   dnssec- enable  yes ;         // 关于安全的文件都注释掉
//   dnssec-validation  yes ;
//   dnssec-lookaside auto;
     /* Path to ISC DLV key */
     bindkeys- file  "/etc/named.iscdlv.key" ;
//   managed-keys-directory  "/var/named/dynamic" ;
};
logging {
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
};
zone  "."  IN {
     type  hint;
     file  "named.ca" ;
};
include  "/etc/named.rfc1912.zones" ;
//include  "/etc/named.root.key" ;
######区域文件和区域解析文件还是之前的文件内容##############



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
##########ltt.com服务器的主配置文件######################
options {
//   listen-on port 53 { 127.0.0.1; };
//   listen-on-v6 port 53 { ::1; };
     directory    "/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" ;
//   allow-query     { localhost; };
//   recursion  yes ;
      allow-recursion { 172.16.22.2; };    // 只为jie.com服务器进行递归查询
//   dnssec- enable  yes ;
//   dnssec-validation  yes ;
//   dnssec-lookaside auto;
     /* Path to ISC DLV key */
     bindkeys- file  "/etc/named.iscdlv.key" ;
//   managed-keys-directory  "/var/named/dynamic" ;
};
logging {
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
};
zone  "."  IN {
     type  hint;
     file  "named.ca" ;
};
include  "/etc/named.rfc1912.zones" ;
//include  "/etc/named.root.key" ;
##############ltt.com服务器的区域配置文件的部门内容###################
zone  "ltt.com"  IN {
       type  master;
       file  "ltt.com.zone" ;
};
#################ltt.com服务器的区域解析文件的内容###################
cat  /var/named/ltt .com.zone
$TTL 1D
@   IN SOA  dns.ltt.com. admin.ltt.com. (
                     0   ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
     IN NS   dns.ltt.com.
dns     IN A  172.16.122.4
www     IN A  172.16.122.40
www     IN A  172.16.122.140
www     IN A  172.16.122.240
ftp      IN A  172.16.122.200
mail    IN A  172.16.122.250
###注意文件的属组和权限######################3

[root@PC ~]# grep -v "^#"  /etc/resolv.conf  | grep -v "^$"

search com

nameserver 172.16.22.2

[root@PC ~]# host -t A www.ltt.com

www.ltt.com has address 172.16.122.240

www.ltt.com has address 172.16.122.40

www.ltt.com has address 172.16.122.140


小结:实际工作中,你的转发的IP一般设置为运营商的DNS服务器的IP地址,运营商的DNS服务器可以接受你的转发


、DNS的子域授权



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#######父域的主配置文件和区域配置文件还是之前的不需要改动######
#########修改区域解析库文件vim /var/named/jie.com.zone#########
$TTL 6400
@   IN SOA  dns.jie.com.  admin.jie.com. (
                  2013081401 ;serial numbel
                   2h        ;refresh  time
                   5m        ;retry  time
                   7d        ;expire  time
                   1d        ;minimum
)
              IN NS  dns.jie.com.
dns.jie.com. IN A   172.16.22.2
www          IN A   172.16.22.2
www          IN A   172.16.22.20
www          IN A   172.16.22.200
ftp           IN A   172.16.22.220
son          IN A   172.16.122.4    #添加子域的A记录
              IN NS  son.jie.com.    #添加子域的NS记录
dns          IN A   172.16.122.4



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
###子域的主配置文件/etc/named.conf#########
options {
//   listen-on port 53 { 127.0.0.1; };
//   listen-on-v6 port 53 { ::1; };
     directory    "/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" ;
//   allow-query     { localhost; };
         recursion  yes ;
     dnssec- enable  yes ;
     dnssec-validation  yes ;
     dnssec-lookaside auto;
     /* Path to ISC DLV key */
     bindkeys- file  "/etc/named.iscdlv.key" ;
     managed-keys-directory  "/var/named/dynamic" ;
};
logging {
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
};
zone  "."  IN {
     type  hint;
     file  "named.ca" ;
};
include  "/etc/named.rfc1912.zones" ;
include  "/etc/named.root.key" ;
#####子域的区域配置文件/etc/named.rfc1912.com添加一点内容########
zone  "son.jie.com"  IN {
        type  master;
        file  "son.jie.com.zone" ;
};
########子域的区域解析库文件/var/named/son.jie.com.zone添加一点内容####
$TTL 1D
@   IN SOA  dns.son.jie.com. admin.son.jie.com. (
                     0   ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
             IN NS  dns.son.jie.com.
dns         IN A  172.16.122.4
www         IN A  172.16.122.40
www         IN A  172.16.122.140
www         IN A  172.16.122.240
ftp          IN A  172.16.122.200
mail        IN A  172.16.122.250

父域的测试:父域是直接可以解析子域的,子域默认是不能解析父域

[root@jie2 named]# host -t A www.son.jie.com

www.son.jie.com has address 172.16.122.240

www.son.jie.com has address 172.16.122.40

www.son.jie.com has address 172.16.122.140


子域也能解析父域,①可以把子域的DNS指向父域,②在子域上面做转发,父域接收子域的转发请求

、DNS的acl规则和view视图


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
###jie.com服务器的主配置文件######
options {
//   listen-on port 53 { 127.0.0.1; };
//   listen-on-v6 port 53 { ::1; };
     directory    "/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" ;
//   allow-query     { localhost; };
     recursion  yes ;
     dnssec- enable  yes ;
     dnssec-validation  yes ;
     dnssec-lookaside auto;
     /* Path to ISC DLV key */
     bindkeys- file  "/etc/named.iscdlv.key" ;
     managed-keys-directory  "/var/named/dynamic" ;
};
logging {
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
};
include  "/etc/named.rfc1912.zones" ;
include  "/etc/named.root.key" ;
######区域配置文件######################
view LAN {
zone  "."  IN {   #把主配置文件的根域放到了区域配置文件中
     type  hint;
     file  "named.ca" ;
};
zone  "localhost.localdomain"  IN {
     type  master;
     file  "named.localhost" ;
     allow-update { none; };
};
zone  "localhost"  IN {
     type  master;
     file  "named.localhost" ;
     allow-update { none; };
};
zone  "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"  IN {
     type  master;
     file  "named.loopback" ;
     allow-update { none; };
};
zone  "1.0.0.127.in-addr.arpa"  IN {
     type  master;
     file  "named.loopback" ;
     allow-update { none; };
};
zone  "0.in-addr.arpa"  IN {
     type  master;
     file  "named.empty" ;
     allow-update { none; };
};
match-clients { 172.16.22.0 /16 ; };   #当匹配这个网段的IP访问jie.com服务器时,返回172.16.22.128
zone  "jie.com"  IN {
         type  master;
         file  "lan.jie.com" ;
  };
};
view WAN {
  match-clients {  any; };   #其他任何网段访问时返回1.1.1.128
  zone  "jie.com"  IN {
        type  master;
        file  "wan.jie.com" ;
};
};
#######区域解析库文件的内容#################
#############/var/named/lan.jie.com#####################
$TTL 1D
@   IN SOA  dns.jie.com. admin.jie.com. (
                     0   ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
     IN NS   dns.jie.com.
dns     IN A  172.16.22.128
www     IN A  172.16.22.128
ftp      IN A  172.16.22.128
mail    IN A  172.16.22.128
www     IN A  172.16.22.1
#############/var/named/wan.jie.com#####################
$TTL 1D
@   IN SOA  dns.jie.com. admin.jie.com. (
                     0   ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
     IN NS   dns.jie.com.
dns     IN A  1.1.1.128
www     IN A  1.1.1.128
ftp      IN A  1.1.1.128
mail    IN A  1.1.1.128
www     IN A  1.1.1.1


验证:

[root@LanPC ~]# ifconfig | grep -A 1 eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:9C:14:36  

         inet addr:172.16.22.3  Bcast:172.16.255.255  Mask:255.255.0.0

[root@LanPC ~]# host -t A www.jie.com 172.16.22.2

Using domain server:

Name: 172.16.22.2

Address: 172.16.22.2#53

Aliases:


www.jie.com has address 172.16.22.128

www.jie.com has address 172.16.22.1


[root@WanPC ~]# ifconfig | grep -A 1 eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:D1:6F:09  

         inet addr:192.168.0.4  Bcast:192.168.255.255  Mask:255.255.0.0

[root@WanPC ~]# host -t A www.jie.com 172.16.22.2

Using domain server:

Name: 172.16.22.2

Address: 172.16.22.2#53

Aliases:


www.jie.com has address 1.1.1.1

www.jie.com has address 1.1.1.128


、DNS的日志系统的使用


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
####此实验是接着上面的实验内容####################
#######修改主配置文件####################
options {
//   listen-on port 53 { 127.0.0.1; };
//   listen-on-v6 port 53 { ::1; };
     directory    "/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" ;
//   allow-query     { localhost; };
     recursion  yes ;
     dnssec- enable  yes ;
     dnssec-validation  yes ;
     dnssec-lookaside auto;
     /* Path to ISC DLV key */
     bindkeys- file  "/etc/named.iscdlv.key" ;
     managed-keys-directory  "/var/named/dynamic" ;
};
logging {
         channel default_debug {
                   file  "data/named.run" ;
                    severity  dynamic;
               };
            channel querylog {
                 file  "/var/log/bindquery.log"  versions 3 size 10M;
                 severity dynamic;
                  print- time  yes ;
                  print-category  yes ;
                  print-severity   yes ;
         };
           category  queries { querylog; };
};
include  "/etc/named.rfc1912.zones" ;
include  "/etc/named.root.key" ;
##########其它文件不需要修改
touch  /var/log/bindquery .log
chown  named:named  /var/log/bindquery .log



验证:

[root@LanPC ~]# host -t A ftp.jie.com 172.16.22.2

Using domain server:

Name: 172.16.22.2

Address: 172.16.22.2#53

Aliases:


ftp.jie.com has address 172.16.22.128

[root@LanPC ~]# host -t A www.jie.com 172.16.22.2

Using domain server:

Name: 172.16.22.2

Address: 172.16.22.2#53

Aliases:


www.jie.com has address 172.16.22.1

www.jie.com has address 172.16.22.128



[root@jie2 log]# cat /var/log/bindquery.log

08-Aug-2013 06:27:51.720 queries: info: client 172.16.22.3#36432: view LAN: query: ftp.jie.com IN A + (172.16.22.2)

08-Aug-2013 06:27:52.406 queries: info: client 172.16.22.3#34500: view LAN: query: ftp.jie.com IN A + (172.16.22.2)

08-Aug-2013 06:27:52.880 queries: info: client 172.16.22.3#34935: view LAN: query: ftp.jie.com IN A + (172.16.22.2)

08-Aug-2013 06:31:27.921 queries: info: client 172.16.22.3#38660: view LAN: query: ftp.jie.com IN A + (172.16.22.2)

08-Aug-2013 06:31:34.402 queries: info: client 172.16.22.3#52686: view LAN: query: www.jie.com IN A + (172.16.22.2)


可以生成日志


小结:DNS实现CDN会用到view,理清楚配置文件之间的关系。当服务开启不了时多查看日志(/var/log/messages),注意配置文件的语法格式。博客内容有点多,望各位博友能多多指点










本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1272989,如需转载请自行联系原作者
目录
相关文章
|
27天前
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
30 2
W9
|
29天前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
85 1
|
1月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
38 4
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
64 4
|
1月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
1月前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
20天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
1月前
|
安全 Linux API
Linux服务器安全
人们常误认为服务器因存于数据中心且数据持续使用而无需加密。然而,当驱动器需维修或处理时,加密显得尤为重要,以防止数据泄露。Linux虽有dm-crypt和LUKS等内置加密技术,但在集中管理、根卷加密及合规性等方面仍存不足。企业应选择具备强大验证、简单加密擦除及集中管理等功能的解决方案,以弥补这些缺口。
26 0
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
2天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

相关产品

  • 云解析DNS