2.3IP详解及配置
2.3IP详解及配置
一、ip地址组成
IP地址由4部分数字组成,每部分数字对应于8位二进制数字,各部分之间用小数点分开 这是点分 2进制 如果换算为10进制我们称为点分10进制. 每个ip地址由两部分组成网络地址(NetID)和主z机地址(HostID).网络地址表示其属于互联网中的哪 一个网络,而主机地址则表示其属于该网络中的哪一台主机.
二、ip地址的划分
ip地址划分为五类 为 A,B,C,D,E,如下图
A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用
的。因此A类地址的范围其实是从1-126之间。
如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。转换为2进制来说,一个A
类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从0.0.0.1
到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机(2的24次方的-2主机数目)。
以子网掩码来进行区别::255.0.0.0
127.0.0.0到127.255.255.255是保留地址,用做循环测试用的B类地址:范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算
机的号码。转换为2进制来说,一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址
的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网
络能容纳6万多个主机 。(2的16次方-2)
以子网掩码来进行区别:255.255.0.0
169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没
有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。C类地址:范围从192-223,如192.168.1.1,第一,第二,第三段号码为网络号码,剩下的最后一段号码
为本地计算机的号码。转换为2进制来说,一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网
络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个
网络能容纳254个主机。(2的8次方-2)
以子网掩码来进行区别: 255.255.255.0D类地址:范围从224-239,D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向
特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算
机,它标识共享同一协议的一组计算机。
224.0.0.0-239.255.255.255 组播地址E类地址:范围从240-254,以“11110”开始,为将来使用保留。 全零(“0.0.0.0”)地址对应于当前
主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地 址。
240.0.0.0-255.255.255.254 保留地址
三、子网掩码
就是为了区分ip地址的中的网络号和主机号的
例1:
ip地址: 202.197.119.110
若掩码为:255.255.255.0 求网络号和主机号
ip转换为2进制 1100 1010. 1100 0101. 0111 0111. 0110 1110
子网掩码2进制 1111 1111. 1111 1111. 1111 1111. 0000 0000
相与运算 1100 1010. 1100 0101. 0111 0111. 0000 0000 网络号
ip转换为2进制 1100 1010. 1100 0101. 0111 0111. 0110 1110
子网掩码取反 0000 0000. 0000 0000. 0000 0000. 1111 1111
相与运算 0000 0000. 0000 0000. 0000 0000. 0110 1110 主机号
例2:
ip 202.197.118.110 是否与上一个ip在同一网段? 求网络号,相同则同一网段ip转换为2进制 1100 1010. 1100 0101. 0111 0110.0110 1110
求得网络号 1100 1010.1100 0101.0111 0110.0000 0000网络号 不同,所以不再同一网络中
例3:还是上边ip
ip地址: 202.197.119.110
若掩码为:255.255.128.0 求网络号和主机号
ip转换为2进制 1100 1010. 1100 0101. 0111 0111. 0110 1110
子网掩码2进制 1111 1111. 1111 1111. 1000 0000. 0000 0000
相与运算 1100 1010. 1100 0101. 0000 0000. 0000 0000 网络号
主机号 0000 0000. 0000 0000. 0111 0111. 0110 1110 主机号
ip 202.197.118.110 是否与上一个ip再统一网段?
ip转换为2进制 1100 1010. 1100 0101. 0111 0110. 0110 1110
求得网络号 1100 1010.1100 0101.0000 0000. 0000 0000
同上一个ip在同一个网络中
所以判断两个ip是否在同一网络要看子网掩码的设置
四、私有地址
所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址
在A类地址中,10.0.0.0到10.255.255.255是私有地址 在B类地址中,172.16.0.0到172.31.255.255是私有地址。 在C类地址中,192.168.0.0到192.168.255.255是私有地址。
五、可变长子网(vlsm)与超网
子网划分是通过增加掩码中“1”的位数来实现的,而超网划分是通过减少掩码中“1”的位数来实现 的。获得超网地址的方法也是将超网掩码和IP地址进行按位“与”运算。
无类地址
通过前面对子网和超网的介绍,我们看到利用掩码中“1”的位数的增加或减少可以方便地控制网络 的规模。在实际应用中许多单位都只需要很少的IP地址,为了方便IP地址的分配和提高IP地址的利 用率,1996年因特网组织机构发布了无类别域间路由CIDR (Classless Interdomain Routing)。 CIDR去掉了A类地址、B类地址和C类地址的概念,采用了无类地址的概念,不再由地址的前几个 比特来预先定义网络类别。每一个地址仅仅包含网络号部分和主机号部分。
六、实战
1、熟记IP地址分类
2、熟练子网掩码的用法
七、mac地址
查看mac地址
[root@localhost ~]# ifconfig
[root@localhost ~]# ip a
[root@localhost ~]# arping 172.16.70.250
[root@localhost ~]# arping -I enp0s25 10.18.44.208
ARPING 10.18.44.208 from 10.18.44.196 enp0s25
Unicast reply from 10.18.44.208 [00:21:CC:C1:42:4B] 1.113ms
Unicast reply from 10.18.44.208 [00:21:CC:C1:42:4B] 0.975ms
查询mac地址和ip地址的对应关系
arp表
[root@localhost ~]# yum -y install net-tools-*[root@localhost ~]# arp -a
八、Linux网络管理
1、查看ip地址
[root@localhost ~]# ifconfig eth0 //单独查看eth0
[root@localhost ~]# ifconfig //查看所有网卡
[root@localhost ~]# ip a //查看所有网卡
[root@localhost ~]#ip a s eth0 //单独查看eth0
[root@localhost ~]# ip a l eth0
2、配置IP
[root@localhost ~]# ifconfig eth0 192.168.2.250/24 //会覆
盖旧的IP
[root@localhost ~]#ifconfig eth0:0 192.168.2.251/24
子网掩码可以不写
[root@localhost ~]#ip addr add 192.168.2.250/24 dev
eth0
[root@localhost ~]# ip a a 192.168.2.250/24 dev eth0
[root@localhost ~]# ip a d 192.168.2.8/24 dev enp0s25
子网掩码必须写
add 添加IP 简写成a
del 删除IP 简写成d
启动网卡
[root@localhost ~]# ifconfig eth0 up
[root@localhost ~]# ifup eth0
关闭网卡
[root@localhost ~]# ifconfig eth0 down
[root@localhost ~]#ifdown eth0
配置文件
静态IP:
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ipv6 ifdown-Team ifup-eth ifup-post ifup-tunnel
ifcfg-lo ifdown-isdn ifdown-TeamPort ifup-ippp ifup-ppp ifup-wireless
ifdown ifdown-post ifdown-tunnel ifup-ipv6 ifup-routes init.ipv6-global
ifdown-bnep ifdown-ppp ifup ifup-isdn ifup-sit network-functions
ifdown-eth ifdown-routes ifup-aliases ifup-plip ifup-Team network-functions-ipv6
ifdown-ippp ifdown-sit ifup-bnep ifup-plusb ifup-TeamPort[root@localhost ~]# vi ifcfg-ens33
显示行号
:set nu可以删除到只有这五行
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"[root@localhost network-scripts]# vi ifcfg-ens33
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.120.132"
NETMASK="255.255.255.0"
GATEWAY="192.168.120.2"
DNS1="114.114.114.114"
DNS2="8.8.8.8"重启网络服务
[root@localhost network-scripts]# systemctl restart networkDEVICE=eth0
NAME="System eth0" //名称 可以不存在
BOOTPROTO=none //(none或static 静态获取 )(dhcp 动态获取IP)
NM_CONTROLLED=no //关闭NetworkManager
ONBOOT=yes //开机启动
TYPE=Ethernet // 以太网类型
HWADDR=00:0c:29:8e:a5:d3 //MAC地址
IPADDR=172.16.80.252 //IP地址
NETMASK=255.255.0.0 //子网掩码
PREFIX=24 //子网掩码
NETWORK=172.16.0.0 //网络
GATEWAY=172.16.0.1 //网关
DNS1=172.16.0.1 //domain name server域名服务器
DNS2=114.114.114.114 //第2台DNS服务器
动态IP:
[root@localhost network-scripts]# vi ifcfg-ens33
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"DEVICE=eth0
NAME="System eth0" //名称 可以不存在
BOOTPROTO=dhcp //(none或static 静态获取 )(dhcp 动态获取IP)
ONBOOT=yes //开机启动
TYPE=Ethernet // 以太网类型
重启网络服务: 配置文件修改后必须重起网络服务
[root@localhost ~]#systemctl restart network //rhel7
[root@localhost ~]# /etc/init.d/network restart //rhel5/6
[root@localhost ~]# service network restart //rhel5/6
九、网络测试工具
1、ping命令
用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若 远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
用法
ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主
机可以是IP或者域名。
选项
-d:使用Socket的SO_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;
-i<间隔秒数>:指定收发信息的间隔时间;
-I<网络界面>:使用指定的网络界面送出数据包;
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n:只输出数值;
-p<范本样式>:设置填满数据包的范本样式;
-q:不显示指令执行过程,开头和结尾的相关信息除外;
-r:忽略普通的Routing Table,直接将数据包送到远端主机上;
-R:记录路由过程;
-s<数据包大小>:设置数据包的大小;
-t<存活数值>:设置存活数值TTL的大小;
-v:详细显示指令的执行过程。
ping 192.168.1.9 开始;ctrl + c 停止
ping命令通过ICMP(Internet控制消息协议)工作;ping可以用来测试本机与目标主机是否
联通、联通速度如何、稳定性如何。
ping参数详解
参数 详解
-a Audible ping.
-A 自适应ping,根据ping包往返时间确定ping的速度;
-b 允许ping一个广播地址;
-B 不允许ping改变包头的源地址;
-c count ping指定次数后停止ping;
-d 使用Socket的SO_DEBUG功能;
-F flow_label 为ping回显请求分配一个20位的“flow label”,如果未设置,内核会为ping随机分
配;
-f 极限检测,快速连续ping一台主机,ping的速度达到100次每秒;
-i interval 设定间隔几秒发送一个ping包,默认一秒ping一次;
-I interface 指定网卡接口、或指定的本机地址送出数据包;
-l preload 设置在送出要求信息之前,先行发出的数据包;
-L 抑制组播报文回送,只适用于ping的目标为一个组播地址
-n 不要将ip地址转换成主机名;
-p pattern 指定填充ping数据包的十六进制内容,在诊断与数据有关的网络错误时这个选项就非
常有用,如:“-p ff”;
-q 不显示任何传送封包的信息,只显示最后的结果
-Q tos 设置Qos(Quality of Service),它是ICMP数据报相关位;可以是十进制或十六进制数,详
见rfc1349和rfc2474文档;
-R 记录ping的路由过程(IPv4 only);
注意:由于IP头的限制,最多只能记录9个路由,其他会被忽略;
-r 忽略正常的路由表,直接将数据包送到远端主机上,通常是查看本机的网络接口是否有问题;
如果主机不直接连接的网络上,则返回一个错误。
-S sndbuf Set socket sndbuf. If not specified, it is selected to buffer not more than one
packet.
-s packetsize 指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84
字节;
包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500);
-t ttl 设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段
数;
-T timestamp_option 设置IP timestamp选项,可以是下面的任何一个:
'tsonly' (only timestamps)
'tsandaddr' (timestamps and addresses)
'tsprespec host1 [host2 [host3]]' (timestamp prespecified hops).
-M hint 设置MTU(最大传输单元)分片策略。
可设置为:
'do':禁止分片,即使包被丢弃;
'want':当包过大时分片;
'dont':不设置分片标志(DF flag);
-m mark 设置mark;
-v 使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它
所有返回的ICMP数据包;
-U Print full user-to-user latency (the old behaviour).
Normally ping prints network round trip time, which can be different f.e. due to DNS
failures.
-W timeout 以毫秒为单位设置ping的超时时间;
-w deadline deadline;
2、traceroute
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每 次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在 MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需 要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和 设备的名称(如有的话)及其IP地址。
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
[root@localhost ~]# traceroute hostname
如果执行过程中没有traceroute 命令,可通过
yum -y install traceroute 命令安装下(root权限在线安装)
1.命令格式:
[root@localhost ~]# traceroute [参数][主机]
2.命令功能:
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
具体参数格式:
[root@localhost ~]#traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-
m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址]
[数据包大小]
3.命令参数:
-d 使用Socket层级的排错功能。 -f 设置第一个检测数据包的存活数值TTL的大小。 -F 设置勿离断位。 -g 设置来源路由网关,最多可设置8个。 -i 使用指定的网络界面送出数据包。 -I 使用ICMP回应取代UDP资料信息。 -m 设置检测数据包的最大存活数值TTL的大小。 -n 直接使用IP地址而非主机名称。 -p 设置UDP传输协议的通信端口。 -r 忽略普通的Routing Table,直接将数据包送到远端主机上。 -s 设置本地主机送出数据包的IP地址。 -t 设置检测数据包的TOS数值。 -v 详细显示指令的执行过程。 -w 设置等待远端主机回报的时间。 -x 开启或关闭数据包的正确性检验。
4.使用实例
实例1:traceroute 用法简单、最常用的用法
命令:
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 30 hops max, 60 byte packets1 gateway (192.168.120.2) 0.154 ms 0.081 ms 0.082 ms2 * * *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 * * *
说明:
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单
位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的
时间;如果用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。
有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防
火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原
因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-
n 参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是
网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包
所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困
难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
实例2:跳数设置
命令:
[root@localhost ~]#traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 10 hops max, 60 byte packets1 gateway (192.168.120.2) 0.111 ms 0.054 ms 0.087 ms2 * * *3 * * *4 * * *5 * * *6 * * *7 * * *8 * * *9 * * *
10 * * *
实例3:显示IP地址,不查主机名
命令:
[root@localhost ~]#traceroute -n www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 30 hops max, 60 byte packets1 192.168.120.2 0.083 ms 0.029 ms 0.022 ms2 * * *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 * * *
实例4:探测包使用的基本UDP端口设置6888
命令:
[root@localhost ~]#traceroute -p 6888 www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 30 hops max, 60 byte packets1 gateway (192.168.120.2) 0.129 ms 0.056 ms 0.077 ms2 * * *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 * * *
实例5:把探测包的个数设置为值4
命令:
[root@localhost ~]#traceroute -q 4 www.baidu.com
traceroute to www.baidu.com (39.156.66.14), 30 hops max, 60 byte packets1 gateway (192.168.120.2) 0.089 ms 0.075 ms 0.065 ms 0.052 ms2 * * * *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 * * * *
实例6:绕过正常的路由表,直接发送到网络相连的主机
命令:
[root@localhost ~]# traceroute -r www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 30 hops max, 60 byte packets
connect: 网络不可达
报的是网络不可达。
实例7:把对外发探测包的等待响应时间设置为3秒
命令:
[root@localhost ~]#traceroute -w 3 www.baidu.com
traceroute to www.baidu.com (39.156.66.18), 30 hops max, 60 byte packets1 gateway (192.168.120.2) 0.116 ms 0.059 ms 0.114 ms2 * * *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 * * *
Traceroute的工作原理
Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,
traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,
目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个
datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一
个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),
traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一
个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来
发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目
的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如
何得知目的地到达了呢?
Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程
序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个
「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达
了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出
一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
十、实战
1、配置IP地址并实现网络通信
2、测试ping命令常用选项
3、测试tracerote常用选项
相关文章:
2.3IP详解及配置
2.3IP详解及配置 一、ip地址组成 IP地址由4部分数字组成,每部分数字对应于8位二进制数字,各部分之间用小数点分开 这是点分 2进制 如果换算为10进制我们称为点分10进制. 每个ip地址由两部分组成网络地址(NetID)和主z机地址(HostID).网络地址表示其属于…...

Python程序打包指南:手把手教你一步步完成
最近感兴趣想将开发的项目转成Package,研究了一下相关文章,并且自己跑通了,走了一下弯路,这里记录一下如何打包一个简单的Python项目,展示如何添加必要的文件和结构来创建包,如何构建包,以及如何…...

Linux yum 使用时提示 获取 GPG 密钥失败Couldn‘t open file RPM-GPG-KEY-EPEL-7
资料 错误提示: no crontab for root - using an empty one 888 原因剖析: 第一次使用crontab -e 命令时会让我们选择编辑器,很多人会不小心选择默认的nano(不好用),或则提示no crontab for root - usin…...

OpenGL_Learn13(材质)
1. 材质 cube.vs #version 330 core layout (location 0) in vec3 aPos; layout (location 0 ) in vec3 aNormal;out vec3 FragPos; out vec3 Normal;uniform mat4 model; uniform mat4 view; uniform mat4 projection;void main() {FragPosvec3(model*vec4(aPos,1.0));Norma…...

buildadmin+tp8表格操作(1)----表头上方添加按钮和自定义按钮
buildAdmin 的表头上添加一些按钮,并实现功能 添加按钮 <template><!-- buttons 属性定义了 TableHeader 本身支持的顶部按钮,仅需传递按钮名即可 --><!-- 这里的框架自带的 顶部按钮 分别有 刷新 , 添加, 编辑&…...
MySQL 定时计划任务 事件的使用
目录 查看事件是否开启 开启事件 1)通过设置全局参数修改 2)更改配置文件 MySQL如何创建并执行事件? 例 1 MySQL查看事件状态信息 MySQL修改和删除事件 例 1 例 2 删除事件 例 3 在数据库管理中,经常要周期性的执行某…...
C++构造函数 拷贝构造函数 括号法显示法隐式转换法实现类
一.无参构造 & 有参构造 & 拷贝构造函数 拷贝的是自己所属的类,也就是克隆自己。 所以传参要穿自己的类名。 克隆归克隆,但是不能把本身给改了,所以参数前要加const。class Person { public:int age;public:Person(){cout<<&q…...
FreeRTOS中的内存分配策略
FreeRTOS为内存管理提供了几种不同的策略,分别由heap_1.c至heap_5.c实现。以下是每种策略: heap_1.c: 最简单的策略。只允许一次性的内存分配。不允许内存释放。对于只分配内存但不释放的系统特别有用,如仅在启动时分配任务和队列的系统。内存…...

HP惠普光影精灵7笔记本Victus by HP 16.1英寸游戏本16-d0000原装出厂Windows11.21H2预装OEM系统
下载链接:https://pan.baidu.com/s/1LGNeQR1AF1XBJb5kfZca5w?pwdhwk6 提取码:hwk6 可适用的型号: 16-d0111tx,16-d0112tx,16-d0125tx,16-d0127tx,16-d0128tx,16-d0129tx&#…...

组合模式 rust和java的实现
文章目录 组合模式介绍实现javarsut 组合模式 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计…...
大数据基础设施搭建 - MySQL
文章目录 一、检查是否安装过MySQL二、上传安装包三、安装MySQL3.1 安装mysql依赖3.2 安装mysql-client3.3 安装mysql-server 四、启动MySQL五、配置MySQL5.1 修改密码(1)查看密码(2)登陆(3)设置复杂密码&a…...
二叉树递归遍历
能帮到你的话,就给个赞吧 😘 二叉树遍历算法 指遍历一遍二叉树就能得到答案 什么是二叉树遍历 二叉树遍历 前中后序遍历 递归遍历 3种时间节点 递归遍历会依次遍历到每个节点。 而前中后序则是在递归遍历的基础上选择操作发生的时间。 递归遍历 …...

【ArcGIS Pro二次开发】:CC工具箱1.1.1更新_免费_安装即可用
CC工具箱1.1.1更新【2023.11.15】 使用环境要求:ArcGIS Pro 3.0 一、下载链接 工具安装文件及使用文档: https://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5rhttps://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5r 二、使用方法 1、在下…...

Dubbo的优雅下线原理分析
文/朱季谦 Dubbo如何实现优雅下线? 这个问题困扰了我一阵,既然有优雅下线这种说法,那么,是否有非优雅下线的说法呢? 这,还真有。 可以从linux进程关闭说起,其实,我们经常使用到杀…...
leetcode做题笔记2342. 数位和相等数对的最大和
给你一个下标从 0 开始的数组 nums ,数组中的元素都是 正 整数。请你选出两个下标 i 和 j(i ! j),且 nums[i] 的数位和 与 nums[j] 的数位和相等。 请你找出所有满足条件的下标 i 和 j ,找出并返回 nums[i] nums[j]…...
c# YOLOV5目标检测部署
using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Dnn; using Emgu.CV.Structure; using Emgu.CV.Util...

学习笔记6——垃圾回收
学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/190801.html java垃圾回收(stop the world) 专注于堆和方法区的垃圾回收,年轻代,老年代,永久代判断对象是否还存…...

3.1 Windows驱动开发:内核远程堆分配与销毁
在开始学习内核内存读写篇之前,我们先来实现一个简单的内存分配销毁堆的功能,在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间,一般而言内核中提供了ZwAllocateVirtualMemory这个函数用于专门分配虚拟空间,而与之相对应…...

C++: 模板初阶
文章目录 一. 泛型编程二. 函数模板函数模板的原理函数模板的实例化隐式实例化: 让编译器根据实参推演模板参数的实际类型显示实例化: 在函数名后的<>中制定模板参数的世纪类型 模板参数的匹配原则 三. 类模板类模板的定义格式类模板的实例化 一. 泛型编程 如何实现一个…...

人工智能基础_机器学习036_多项式回归升维实战3_使用线性回归模型_对天猫双十一销量数据进行预测_拟合---人工智能工作笔记0076
首先我们拿到双十一从2009年到2018年的数据 可以看到上面是代码,我们自己去写一下 首先导包,和准备数据 from sklearn.linear_model import SGDRegressor import numpy as np import matplotlib.pyplot as plt X=np.arange(2009.2020)#左闭右开,2009到2019 获取从2009到202…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...