Linux入门攻坚——23、DNS和BIND基础入门1

DNS——Domain Name Service,协议(C/S,53/udp,53/tcp)
BIND——Berkeley Internet Name Domain,ISC(www.isc.org)

互联网络上主机之间的通信依靠的是IP,而人或程序一般使用机器名称,名称转换为地址的过程,解析,计算机名称(域名称)转换为IP地址,域名解析。

本地名称解析配置文件:hosts
    Linux系统:/etc/hosts
    Windows系统:%WINDOWS%/system32/drivers/etc/hosts
    如:1.1.1.1 www.mysitename.com
            2.2.2.2  www.isc.org

当本地主机访问www.mysitename.com时,查询这个名称解析配置文件,找到对应的IP,访问之。当网络上的主机很少时,每台机器维护一个本地的配置文件还比较容易,但随着网络扩展,主机越来越多,这种方式就无法适应。

在网上一台服务器上维护一个hosts,所有主机要访问某个名称时,就到这台机器上查找hosts文件,但是当超过一定规模时,对这个hosts文件的维护和访问查找也变得困难和缓慢。

于是开始划片而治,形成DNS树状结构,namespace,名称空间。
Top Level Domain:tld,顶级域
    com,edu,mil,gov,net,org,int,。。。

顶级域分三类:组织域、国家域(.cn、.jp、...)、反向域。

域是一个范围,域中有很多主机,主机的多少是域大小的根本因素。

一般域名是指的一个范围,而常说的访问某个域名,如www.abc.com,说的是主机的域名,即主机名加上域名,域名最右边是点号,代表根,必须要有的,平时使用没有是因为软件帮我们自动添加。

理论上,客户机访问一个主机域名主机的过程:

上面图示是一个理论上的过程,但是如果这样,客户机会很麻烦,实际中,客户机不会频繁的去访问各个域管理机,而是会直接问询设置中的域服务器,我们的主机IP地址设置中都会设置主DNS服务器地址,备DNS服务器地址等,客户机是访问这个DNS服务器的,由他来完成上面的过程。

DNS查询类型:
    递归查询:发出一次查询,就能得到最终结果的查询,如客户机向其DNS服务器发出的查询。
    迭代查询:客户机的DNS服务器查找到最终IP的过程,是迭代查询,可能需要多次查询。

这里,客户机的DNS服务器只是一个代理,并不是真正的DNS服务器,只是负责帮助迭代查找域名对应IP的,而一个域的域服务器,才是这个域的负责者,负责维护记录本域的所有信息。

名称服务器:域内负责解析本域内的名称的主机;域只是一个概念,落到实处,就是域的名称服务器。
    根服务器:13组服务器,这13组服务器中记录了顶级域的名称服务器与域名的对应信息。

解析类型:
    Name --> IP
    IP --> Name
    注意:正反向解析是两个不同的名称空间,是两颗不同的解析树;
DNS服务器的类型:
    主DNS服务器
    辅助(从或备)DNS服务器
    缓存DNS服务器
    转发器

主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理员维护;
从DNS服务器:从主DNS服务器或其他的从DNS服务器那里“复制”(区域传递)一份解析库;
    序列号:解析库的版本号,前提:主服务器解析库内容发生变化,其序列号递增;从服务器通过序列号判断是否需要同步解析库;
    刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;
    重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;应小于刷新间隔,否则没有意义了。
    过期时长:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务; 
    “通知”机制:主服务器内容修改后,主动通知从服务器。   
区域传递:
    全量传递:传递整个解析库;
    增量传递:传递解析库变化的那部分内容;
DNS:
    Domain:
        正向:FQDN --> IP
        反向:IP --> FQDN
        各需要一个解析库来分别负责本地域名的正向和反向解析
        正向区域:
        反向区域:
FQDN:Full Qualified Domain Name,完全合格域名,或完全限定域名,正式域名
    www.mydomain.com.
一次完整的查询请求经过的流程:
    Client --> hosts文件 --> Local Cache DNS --> DNS Server(recursion) --> Server Cache --> iteration(迭代) 
    解析答案:
        肯定答案:
        否定答案:请求的条目不存在等原因导致无法返回结果;

        权威答案:
        非权威答案:

区域解析库:由众多RR组成
资源记录:Resource Record,RR
    有记录类型的概念,记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX

   SOA:Start Of Authority,起始授权记录:一个区域解析库有且仅能有一个SOA记录,而且必须为解析库的第一条记录;
    A:internet Address,作用,FQDN --> IP
    AAAA:FQDN --> IPv6
    PTR:PoinTeR,IP --> FQDN
    NS:Name Server,专用于标明当前区域的DNS服务器
    CNAME:Canonical Name,别名记录
    MX:Mail eXchanger,邮件交换器,一个域接收邮件的主机

资源记录定义的格式:
    语法:name [TTL]  IN   rr_type   value  
    注意:1)TTL可从全局继承;2)@可用于引用当前区域的名字;3)同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应;4)同一个值也可能有多个不同的定义名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机;

    SOA
        name:当前区域的名字,如:"mydomain.com.";
        value:由多部分组成
        1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
        2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,如:admin.mydomain.com;
        3)(主从服务协调属性的定义以及否定答案的统一的TTL)

    例如:mydomain.com.  86400 IN SOA  ns.mydomain.com.  admin.mydomain.com.    (
        2024051001;序列号
        2H  ;刷新时间
        10M  ;重试时间
        1W  ;过期时间
        1D  ;否定答案的TTL值
         )

    NS
        name:当前区域的名字
        value:当前区域的某DNS服务器的名字,如ns.mydomain.com.;
            注意:一个区域可以有多个NS记录;

        如:
        mydomain.com.   IN   NS    ns1.mydomain.com.
        mydomain.com.   IN   NS    ns2.mydomain.com.
        注意:
            1)相邻的两个资源记录的name相同时,后续的可省略;
            2)对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

    MX
        name:当前区域的名字
        value:当前区域的某邮件服务器(smtp服务器)的主机名;
            一个区域内,MX记录可有多个,但每个记录的value之前应该有一个数字(0~99),表示此服务器的优先级,数字越小优先级越高;

        如:mydomain.com.   IN    MX    10   mx1.mydomain.com.
                                           IN    MX    20   mx2.mydomain.com.

        注意:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

    A
        name:某主机的FQDN,如www.mydomain.com.
        value:主机名对应主机的IP地址

        如:
            www.mydomain.com.   IN    A  1.1.1.1
            www.mydomain.com.   IN    A  1.1.1.2

            mx1.mydomian.com.   IN    A   1.1.1.3
            mx2.mydomian.com.   IN    A   1.1.1.3

        注意:为避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
            *.mydomain.com.    IN  A  1.1.1.4
            mydomain.com.      IN  A  1.1.1.4

    AAAA
        name:FQDN
        value:IPv6

    PTR
        name:IP,有特定格式,把IP地址反过来写,如:1.2.3.4,要写成:4.3.2.1;而且有特定后缀:in-addr.arpa,所以完整写法为:4.3.2.1.in-addr.arpa.
        value:FQDN

        如:
            4.3.2.1.in-addr.arpa.       IN    PTR    www.mydomain.com.
            简写成:4   IN  PTR   www.mydomain.com.
        注意:网络地址及后缀可省略;主机地址依然需要反着写;

    CNAME
        name:别名的FQDN
        value:正式名字的FQDN

        如:  web.mydomain.com.    IN    CNAME    www.mydomain.com.

DNS and BIND:

子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库中进行授权
    类似根域授权tld:
     com.   IN    NS    ns1.com.
     com.   IN    NS    ns2.com.
     ns1.com.   IN    A      2.2.2.1
     ns2.com.   IN    A      2.2.2.2

    mydomain.com. 在.com.的名称服务器上,解析库中添加资源记录:
    mydomain.com.     IN    NS      ns1.mydomain.com.
    mydomain.com.     IN    NS      ns2.mydomain.com.
    mydomain.com.     IN    NS      ns3.mydomain.com.
    ns1.mydomain.com.   IN   A     3.3.3.1
    ns2.mydomain.com.   IN   A     3.3.3.2
    ns3.mydomain.com.   IN   A     3.3.3.3

    glue record:粘合记录

域名注册:
    代理商:万网,新网;godaddy

    注册完成以后,想自己用专用服务来解析怎么做?
        管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址设为自己的;

BIND的安装配置

dns服务,程序包名bind,程序名named
程序包:
    bind、bind-libs、bind-utils
    bind-chroot:以/var/named/chroot/为根

bind:
    服务脚本:/etc/rc.d/init.d/named
    主配置文件:/etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key
    解析库文件:/var/named/ZONE_NAME.ZONE
      注意:
        1)一台物理服务器可以同时为多个区域提供解析
        2)必须要有根区域文件:/var/named/named.ca
        3)应该有两个(如果包括IPv6,应该更多)实现localhost和本地回环地址的解析库;
    rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程,提供辅助性的管理功能,使用953/tcp端口。

安装:yum install bind -y

安装完毕,查看安装的文件:rpm -ql bind

安装后的文件及目录:

  /var/named/named.ca:是全球的13个根节点服务器;

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC 
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    April 11, 2017
;       related version of root zone:   2017041101
;
; formerly NS.INTERNIC.NET
;
.                        3600000      NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30
;
; FORMERLY NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
B.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:84::b
;
; FORMERLY C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
C.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2::c
;
; FORMERLY TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13
D.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2d::d
;
; FORMERLY NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
E.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:a8::e
;
; FORMERLY NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
;
; FORMERLY NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
G.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:12::d0d
;
; FORMERLY AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     198.97.190.53
H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::53
;
; FORMERLY NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
I.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fe::53
;
; OPERATED BY VERISIGN, INC.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:c27::2:30
;
; OPERATED BY RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
;
; OPERATED BY ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:9f::42
;
; OPERATED BY WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35
; End of file

  /var/named/named.localhost:本地localhost的解析库

$TTL 1D
@	IN SOA	@ rname.invalid. (0	; serial1D	; refresh1H	; retry1W	; expire3H )	; minimumNS	@A	127.0.0.1AAAA	::1

/var/named/named.loopback::本地回环地址的解析库

$TTL 1D
@	IN SOA	@ rname.invalid. (0	; serial1D	; refresh1H	; retry1W	; expire3H )	; minimumNS	@A	127.0.0.1AAAA	::1PTR	localhost.

/etc/named.conf:主配置文件
  全局配置:options{}
  日志子系统配置:logging{}
  区域定义:本机能够为哪些zone进行解析,就定义哪些zone:
    zone “ZONE_NAME” IN  {}
  包含的文件:include “”

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//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;/* 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.zones:其他区域的定义

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; };
};

在解析库中@代表区域名,就是这里的如localhost.localdomain、localhost

启动:service named start
查看:通过结果,看到服务只是监听在127.0.0.1,不会对外服务。
任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听在一个能与外部主机通信的IP地址上;

修改方法:将/etc/named.conf中options的第一行删除或在地址中增加本机的IP地址,如下:
listen-on port 53 { 192.168.138.139; 127.0.0.1; };
缓存名称服务器的配置:监听外部地址即可,如上配置后,就成为了缓存名称服务器。

dnssec:负责dns安全,一般建议关闭
  关闭dnssec
主配置文件中还需要将allow-query { localhost; } 改为{ any; },recursion yes表示允许递归查找。

至此,一个缓存名称服务器就完成了。

主DNS名称服务器
    (1)在主配置文件/etc/named.rfc1912.zones中定义区域
    zone "ZONE_NAME" IN {
        type master | slave | hint | forward;   
        // master:主区域  slave:从区域;hint:根域;forward:转发
        file "ZONE_NAME.zone";
        };

zone "mytest.com" IN {type master;file "mytest.com.zone";
};

    (2)定义区域解析库文件
        出现的内容:
          宏定义:$TTL、$ORIGIN
          资源记录:RR
    示例:/var/named/mytest.com.zone

$TTL 86400
$ORIGIN mytest.com.
@       IN      SOA     ns1.mytest.com.  admin.mytest.com. (20240510011H5M7D1D )IN      NS      ns1IN      NS      ns2IN      MX 10   mx1IN      MX 20   mx2
ns1     IN      A       192.168.138.101
ns2     IN      A       192.168.138.102 
mx1     IN      A       192.168.138.103 
mx2     IN      A       192.168.138.104 
www     IN      A       192.168.138.101
ftp     IN      CNAME   www

检查主配置文件是否存在语法错误:named-checkconf,将检测/etc/named.conf及其包含的文件如/etc/named.rfc1912.zones
检查解析库文件语法:named-checkzone “zone_name” zone_name.file
如:named-checkzone "mytest.com" /var/named/mytest.com.zone

    (3)文件权限

名称解析相关的文件属主是root,属组是named,要将自己创建的文件权限修改:

至此,主DNS服务器配置完毕,可以解析相关域的名称了。
使用dig命令测试,我们创建的mytest.com区域中有www主机,就解析这个主机:
dig -t A www.mytest.com @192.168.138.139

修改mytest.com.zone文件,添加几个www.mytest.com的A记录,即同一个域名多个IP,然后重新加载:service named reload,也可以使用rndc reload
不使用restart,是因为restart会导致很多缓存等信息全部丢失,而reload只是重新加载解析库文件,其他信息还在。然后再次测试解析:

如果在dig命令中不加@server,则会使用/etc/resolv.conf配置文件中的dns服务器进行解析:

测试命令dig:
  dig [-t type]  name  [@SERVER]   [query options]
  dig用于测试dns系统,因此,不会查询hosts文件进行解析;
  查询选项:
    +[no]trace:是否跟踪解析过程
    +[no]recurse:是否进行递归解析
对于测试的结果,要注意的是flags标记值:

host命令:
  host [-t type] name [SERVER]

nslookup命令:
  nslookup [-option] [name | -] [server]
  交互式模式:nslookup>
      server IP:指明使用哪个DNS Server进行查询;
      set q=RR_TYPE:指明查询的资源记录类型;
​​​​​​​      NAME:要查询的名称
    

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

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

相关文章

通义灵码企业版正式发布,满足企业私域知识检索、数据合规、统一管理等需求

5 月 9 日阿里云 AI 峰会&#xff0c;阿里云智能集团首席技术官周靖人宣布&#xff0c;通义灵码企业版正式发布&#xff0c;满足企业用户的定制化需求&#xff0c;帮助企业提升研发效率。 通义灵码是国内用户规模第一的智能编码助手&#xff0c;基于 SOTA 水准的通义千问代码模…

在MyBatis中,如何将数据库中的字符串类型映射为枚举类型?

在MyBatis中&#xff0c;如何将数据库中的字符串类型映射为枚举类型&#xff1f; 网上看了很多教程。说了很多&#xff0c;但是都没说到重点&#xff01; 很简单&#xff0c;xml文件中&#xff0c; 使用resultType&#xff0c;而不是使用resultMap就可以了。 resultType"…

用HAL库改写江科大的stm32入门例子8-1 DMA数据转运

实验1-实验目的&#xff1a;通过DMA把buffer的数据搬运到buffer2当中。 //declare a buffer to store the data uint32_t buffer[3] {1,2,3};//declare a buffer to store the data uint32_t buffer2[3] {0,0,0}; DMA&#xff1a;是个搬运数据的小助手。 相关设置&#xff1…

Baidu Comate:释放编码潜能,革新软件开发

Baidu Comate Baidu Comate&#xff0c;智能代码助手&#xff0c;凭借着文心大模型的强大支撑&#xff0c;结合了百度多年的编程实战数据和丰富的开源资源&#xff0c;形成了一款崭新的编码辅助利器。它不仅具备着高智能、多场景、价值创造的特质&#xff0c;更可广泛应用于各…

实物仿真平台设计方案:927-8路GMSL视频注入回灌的自动驾驶半实物仿真平台

8路GMSL视频注入回灌的自动驾驶半实物仿真平台 一、平台介绍 产品基于8路GMSL视频注入回灌的自动驾驶半实物仿真平台旨在提高实验室及研究生院师生在基础软件层开发、计算机视觉和深度学习方面的专业知识学习和实践能力&#xff0c;为师生提供一个稳定软件开发和多精度框…

hive日常使用时忘记部分补充(不定时)

1、date_formate、unix_timestamp、from_unixtime用法&#xff1a; 2、lag&#xff08;&#xff09;、lead()用法&#xff1a; lag&#xff08;)窗口函数返回分区中当前行之前行&#xff08;可以指定第几行&#xff09;的值。 如果没有行&#xff0c;则返回null。 lead()窗口…

pytest + yaml 框架 - 录制接口转 yaml 用例实现

pytest yaml 框架基本不用写 python 代码&#xff0c;只需写yaml 文件用例就能实现接口自动化。 现在引入接口录制功能&#xff0c;连 yaml 文件也不用写了&#xff0c;点点点就能生成 yaml 用例文件了。 录制功能在v1.3.4版本上实现 pip instal pytest-yaml-yoyo 环境准备 …

如何使用 ArcGIS Pro 制作地震动画

在做某些汇报的时候&#xff0c;除了图文&#xff0c;如果有动画肯定会成为加分项&#xff0c;这里为大家介绍一下如何使用 ArcGIS Pro 制作地震动画&#xff0c;希望能对你有所帮助。 添加时间 在图层属性内&#xff0c;选择时间选项卡&#xff0c;图层时间选择每个要素具有…

镓未来助力联想笔记本GaN适配器标配化,赋能高效用户体验

镓未来赋能笔记本电脑GaN适配器标配化 据悉&#xff0c;Lenovo 2024年推出搭配的多款新型笔记本原装适配器电源ADL100UDGC3A&#xff0c;采用了镓未来集成型Cascode技术氮化镓功率器件G1N65R150PB。新款方案相较上一代工艺&#xff0c;体积减小23%&#xff0c;重量降低18%&…

秋招算法刷题10(栈和队列)

0509 232.用栈实现队列 class MyQueue {Deque<Integer> inStack;Deque<Integer> outStack;public MyQueue() {inStack new ArrayDeque<Integer>();outStack new ArrayDeque<Integer>();}public void push(int x) {inStack.push(x);}public int pop…

13.跳跃游戏

文章目录 题目简介题目解答解法一&#xff1a;贪心算法&#xff0b;动态规划代码&#xff1a;复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 跳跃游戏面试题 相关的讲解&#xff01;&#x1f600; 题目简介 题目解答 思路&#xff1a;这…

前端小程序调用 getLocation 实现地图位置功能,通过 纬度:latitude 经度: longitude 获取当前位置

1、首先登录一下 腾讯的位置服务 有账号就登录没账号就注册&#xff0c; 点击右上角的控制台点击左侧的应用管理 ---> 我的应用 ---->> 创建应用 1、创建应用 2、列表就会显示我们刚刚创建好的 key 3、点击添加 key 4、按照要求填写信息 我们用的是小程序 所以选择…

二叉树介绍

引入 定义 区别 定义不同 形态不同 基本形态

windows和 Linux 下通过 QProcess 打开ssh 和vnc

文章目录 SSHSSH验证启动SSH一、口令登录二、公钥登录通过Qprocess 启动ssh VNC Viewer简介通过QProcess启动vncViewer SSH Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的**安全网络协议**。它是专为远程登录会话(**甚至可以…

uniapp下拉选择组件

uniapp下拉选择组件 背景实现思路代码实现配置项使用尾巴 背景 最近遇到一个这样的需求&#xff0c;在输入框中输入关键字&#xff0c;通过接口查询到结果之后&#xff0c;以下拉框列表形式展现供用户选择。查询了下uni-app官网和项目中使用的uv-ui库&#xff0c;没找到符合条…

前端开发工程师——ajax

express框架 终端输入 npm init --yes npm i express 请求报文/响应报文 // 1.引入express const express require(express);// 2.创建应用对象 const app express();// 3.创建路由规则 // request:是对请求报文的封装 // response&#xff1a;是对响应报文的封装 app.get(…

【御控物联】Java JSON结构转换、JSON协议转换、JSON属性互换(15):对象To数组——转换映射方式

文章目录 一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

Vue3自定义封装音频播放组件(带拖拽进度条)

Vue3自定义封装音频播放组件&#xff08;带拖拽进度条&#xff09; 描述 该款自定义组件可作为音频、视频播放的进度条&#xff0c;用于控制音频、视频的播放进度、暂停开始、拖拽进度条拓展性极高。 实现效果 具体效果可以根据自定义内容进行位置调整 项目需求 有播放暂停…

python实现pip一键切换国内镜像源脚本分享

本文主要分享一个自己写的pip一键切换国内镜像源python脚本 import subprocess# pip 国内镜像源加速 source_urls [{"name": "默认镜像源", "url": ""},{"name": "清华大学镜像源(推荐使用)", "url": …

【MATLAB源码-第206期】基于matlab的差分进化算法(DE)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 差分进化算法&#xff08;Differential Evolution, DE&#xff09;是一种有效的实数编码的进化算法&#xff0c;主要用于解决实值函数的全局优化问题。本文将详细介绍差分进化算法的背景、原理、操作步骤、参数选择以及实际应…