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:要查询的名称
相关文章:

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,而人或程序一般使…...

springboot中mybatisplus注意事项
使用代码生成工具CodeGenerator 需要修改的内容 dsc.setUsername(“root”); mysql账号dsc.setPassword(“root”); mysql密码strategy.setInclude(“crm_edu”); 表名pc.setModuleName(“eduservice”); //模块名 package com.test.demo;import com.baomidou.mybatisplus.a…...

Android Ant编译环境配置(Win)
1、 载ant包: 2、设置环境变量: 3、检查是否设置成功及版本 4、执行命令: android update project -p . -n “projectname”(例如:android update project --target 1 -p . -n “Couplet”)(只输入红色部分也是可以的…...

条件变量解决同步问题之打印金鱼
说明 本代码为jyy老师上课演示条件变量解决同步问题示例(本人只做记录与分享) 本人未使用老师封装的POSIX线程库, 直接在单文件中调试并注释 问题描述 有三类线程 T1 若干: 死循环打印< T2 若干: 死循环打印> T3 若干: 死循环打印_ 任务: 对线程同步,使得屏幕…...

10分钟了解Golang泛型
泛型是Golang在1.18版本引入的强大工具,能够帮助我们在合适的场合实现简洁、可读、可维护的代码。原文: Go Generics: Everything You Need To Know 导言 可能有人会觉得Go泛型很难,因此想要借鉴其他语言(比如Java、NodeJS)的泛型…...

鸿蒙内核源码分析(Shell解析篇) | 应用窥视内核的窗口
系列篇从内核视角用一句话概括shell的底层实现为:两个任务,三个阶段。其本质是独立进程,因而划到进程管理模块。每次创建shell进程都会再创建两个任务。 客户端任务(ShellEntry): 负责接受来自终端(控制台)敲入的一个个字符&…...

TypeScript在前端项目的渐进式采用策略
渐进式采用 TypeScript 在前端项目中的策略通常包括: 引入TypeScript 如果我们有一个简单的JavaScript模块utils.js,它包含一个函数用于计算两数之和: // utils.js export function add(a, b) {return a b; }首先,我们将文件扩展名改为.t…...

C++容器常用集合(附传送门)
C常用的容器: string容器 C容器——string-CSDN博客 储存字符串的 vector容器 C容器——vector-CSDN博客 向量是动态数组,可以自动扩展以容纳更多元素。 插入和删除元素的时间复杂度取决于操作的位置 tuple容器(元组) C容器…...

基于springboot的校园资料分享平台源码数据库
基于springboot的校园资料分享平台源码数据库 随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求,创…...
卷积神经网络(CNN)
大家好,这里是七七,今天来更新关于CNN相关的内容同了。本文是针对CNN原理的说明,但对于小白不是非常友好,建议先掌握神经网络相应知识再进行阅读哦。 一、卷积与互相关 卷积 卷积运算是对两个函数进行的一种数学运算,…...

Linux入门攻坚——22、通信安全基础知识及openssl、CA证书
Linux系统常用的加解密工具:OpenSSL,gpg(是pgp的实现) 加密算法和协议: 对称加密:加解密使用同一个秘钥; DES:Data Encryption Standard,数据加密标准&…...

无障碍Web开发:遵循WCAG标准构建包容性用户体验
无障碍Web开发旨在确保所有用户,无论其身体条件或能力如何,都能轻松、有效地访问和使用Web内容。遵循Web Content Accessibility Guidelines (WCAG) 标准是实现这一目标的关键。以下是一些基于WCAG标准的无障碍Web开发实践,以构建更具包容性的…...

Isaac Sim 3(学习笔记5.8)
Isaac Sim 利用深度学习获取mask掩码图 参考内容 Kubernetes官网 在 Linux 系统中安装并设置 kubectl | Kubernetes准备开始 kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.30 版本的客户端能与 v1.29、 v1.30 和 v1.31 版本的控制面通信。 用…...

对象定义成final类型还能改变吗
如果一个Java对象被定义为final类型,那么它的引用不能被改变,但是对象本身的状态仍然可以被修改。这意味着你可以改变final对象的属性,但是不能将其引用指向另一个对象。 例如,下面的代码中,虽然person对象被声明为fi…...

Vue Router 路由hash和history模式
文章目录 hash和history模式区别Hash 模式History 模式 在 Vue 中,路由的两种主要模式是 hash 和 history,默认的路由模式是hash模式。。这两种模式决定了 URL 的外观以及浏览器如何处理 URL 的变化。 hash和history模式区别 特性Hash 模式History 模…...

【xrframe】优化ar相机中加载模型效果
方法一:定义渲染width和height //组件生命周期:在视图层布局完成后执行ready() {const info wx.getSystemInfoSync();//在小程序中同步获取系统信息const width info.windowWidth;//获取屏幕的宽度(单位为物理像素)const heigh…...

解决 SyntaxError: Unexpected token ‘.‘ 报错问题
这个报错一般是编译问题,浏览器的版本过低没通过代码 解决办法: 在package.json文件中加上这个 "browserslist": ["> 1%","last 2 versions","not dead","not ie < 6","Android > 4&…...

谷歌插件V3知识点
1.background.js与content.js与popup.js对比: background.js 生命周期:一开始就执行,最早执行且一直执行; 作用:放置全局的、需要一直运行的代码,权限非常高几乎调用所有Chrome api,还可以发起跨域请求; content.js 生…...

webrtc windows 编译,以及peerconnection_client
webrtc windows环境编译,主要参考webrtc官方文档,自备梯子 depot tools 安装 Install depot_tools 因为我用的是windows,这里下载bundle 的安装包,然后直接解压,最后设置到环境变量PATH。 执行gn等命令不报错&…...

geotrust企业通配符证书2990
随着时代的变化,人们获取信息的方式由报纸、书籍变为手机、电脑,因此很多企事业单位用户开始在互联网中创建网站来进行宣传,吸引客户。为了维护网站安全环境,保护客户数据,企事业单位也开始使用SSL数字证书,…...

网络安全科普:保护你的数字生活
# 网络安全科普:保护你的数字生活 ## 引言 在数字化时代,网络安全已成为每个人都必须面对的问题。从个人隐私保护到金融交易安全,网络的安全性直接关系到我们的日常生活。因此,普及网络安全知识,提高公众的网络安全意…...

Java实战:递归查找指定后缀名的文件
在日常的软件开发中,经常需要处理文件操作。假设我们有一个需求:从一个包含大量JSON文件的文件夹中提取出所有的JSON文件以进行进一步处理。本文将介绍如何利用Java编写一个高效的方法来递归查找指定后缀名的文件。 代码实现: import java.i…...

Linux 操作系统网络编程1
目录 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型 1.1.2 网络数据传输过程 2 传输层通信协议 2.1 TCP 2.1.1 TCP的3次握手过程 2.1.2 TCP四次挥手过程 2.2 UDP 3 网络编程的IP地址 4 端口 5 套接字 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型…...

future wait_for()成员、shared_future
future wait_for()成员 wait_for():等待其异步操作操作完成或者超出等待,用于检查异步操作的状态。wait_for()可以接受一个std::chrono::duration类型的参数,它表示等待的最大时间,会返回一个std::future_status枚举值࿰…...

C++ list介绍(迭代器失效)
一、常用接口 reverse逆置 sort排序(默认升序) 仿函数greater<int> merge合并,可以全部合并,也可以一部分合并 unique:去重(先排序,再去重) remove:删除e值&#…...

codeforces 1809C
很巧妙的构造 题目链接 题目大意 要求构造长度为 n n n的数组满足以下条件 任意 i i i, − 1000 < a [ i ] < 1000 -1000<a[i]<1000 −1000<a[i]<1000有 k k k个和为正数的子串其余子串和为负数 思路 我们发现与子数组内元素的和有关&…...

Nginx part3 创建一个https的网站
目录 HTTPS 公钥和密钥 加密解密方式: https搭建步骤 强调一下 1、准备环境 2、配置文件 3、制作证书 4、进行设置 HTTPS 啥是https,根据百度:HTTPS (全称:Hypertext Transfer Protocol Secure)&a…...

事件高级。
一、注册事件(绑定事件) 就是给元素添加事件 注册事件有两种方式:传统方式和方法监听注册方式 1 传统注册方式 方法监听注册事件 2、 addEventListener 事件监听方式 里面的事件类型是字符串,必定加引号,而且不带o…...

Vue从入门到实战Day04
一、组件的三大组成部分(结构/样式/逻辑) 1. scoped样式冲突 默认情况:写在组件中的样式会全局生效 -> 因此很容易造成多个组件之间的样式冲突问题。 1. 全局样式:默认组件中的样式会作用到全局 2. 局部样式:可以…...

Linux学习笔记:信号
信号 在Linux中什么是信号信号的产生方式硬件产生的信号软件产生的信号异常产生的信号 进程对信号的处理信号的保存信号方法更改函数signal信号处理的更改恢复默认信号忽略 信号的管理信号集 sigset_t对信号集的操作 信号的捕捉过程 在Linux中什么是信号 在 Linux 系统中&…...