1.IP子网掩码

  IP地址分为网络号和主机号,不同的子网就是把相同网络号的主机放在一起,在子网内部又是通过主机号区分每一台主机

  • IP地址的主机标识
    笔试总结(一)
  • IP地址的网络标识
    笔试总结(一)
      子网内每台主机的IP地址不同,通过DHCP技术自动给子网内新增主机分配IP地址,在过去划分IP地址的方式有五种
    笔试总结(一)

A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255

  后来由于其使用的局限性,又引入了CIDR,即引入一个额外的子网掩码(subnet mask)来区分网络号和主机号,子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾,将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号,而主机号从全0到全1就是子网的地址范围,另外还需要考虑排除掉一些特殊IP,所以一个子网内的主机数为:2^n - 2(去掉全0和全1)
笔试总结(一)

2.路由汇聚

  路由汇聚是把一组路由汇聚为一个单个的路由广播。路由汇聚的最终结果和最明显的好处是缩小网络上的路由表的尺寸,其汇聚后的路由地址的计算方法为:

  1. 将各子网地址的网段以二进制表示
  2. 从第1位开始进行比较,将从第一个不相同的比特位到末尾位填充为0。由此得到的地址为汇总后的网段的网络地址,其网络位为连续的相同的比特位的位数
172.18.129.0/24        129的二进制代码是10000001

172.18.130.0/24        130的二进制代码是10000010

172.18.132.0/24        132的二进制代码是10000100

172.18.133.0/24        133的二进制代码是10000101

这四个数的前五位相同都是10000,所以加上前面的172.18这两部分相同的位数,网络号就是8+8+5=21。而10000 000的十进制数是128,所以,路由汇聚的Ip地址就是172.18.128.0
聚合后的IP就是172.18.128.0/21

3.交换机攻击

  交换机攻击主要有以下5种类型:1.VLAN跳跃攻击;2.生成树攻击;3.MAC表洪水攻击;4.ARP攻击;5.VTP攻击
  DHCP攻击:利用了交换机端口安全功能,MAC动态地址锁和端口静态绑定MAC,来限定交换机某个端口上可以访问网络的MAC地址,从而进行控制,属于交换机攻击
  目录遍历攻击是HTTP所存在的一个安全漏洞,它使得攻击者能够访问受限的目录,并在Web服务器的根目录以外执行命令。不是交换机攻击

4.Linux下文件查找

  Linux下查找的命令主要有find和grep,两者的区别就是:find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等;grep命令grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找

  • find命令基本格式:find path expression
//1.按照文件名查找

(1)find / -name httpd.conf  //在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find / etc - name httpd.conf  //在 / etc目录下文件httpd.conf
(3)find / etc - name '*srm*'  //使用通配符*(0或者任意多个)。表示在 / etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . - name 'srm*'   //表示当前目录下查找文件名开头是字符串‘srm’的文件

//2.按照文件特征查找

(1)find / -amin - 10   // 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime - 2   // 查找在系统中最后48小时访问的文件
(3)find / -empty   // 查找在系统中为空的文件或者文件夹
(4)find / -group cat   // 查找在系统中属于 group为cat的文件
(5)find / -mmin - 5   // 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime - 1   //查找在系统中最后24小时里修改过的文件
(7)find / -user fred   //查找在系统中属于fred这个用户的文件
(8)find / -size + 10000c  //查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size - 1000k   //查找出小于1000KB的文件

//3.使用混合查找方式查找文件 参数有: !, - and (-a), - or (-o)。

(1)find / tmp - size + 10000c - and -mtime + 2   //在 / tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred - or -user george   //在 / 目录下查找用户是fred或者george的文件文件
(3)find / tmp !- user panda  //在 / tmp目录中查找所有不属于panda用户的文件
  • grep命令基本格式:grep expression
//1.主要参数

[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。

//pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$ : 匹配正则表达式的结束行。
	\<:从匹配正则表达 式的行开始。
	\>:到匹配正则表达式的行结束。
	[]:单个字符,如[A]即A符合要求 。
	[-]:范围,如[A - Z],即A、B、C一直到Z都符合要求 。
	.:所有的单个字符。
	* :有字符,长度可以为0//实例 

	(1)grep 'test' d*              //显示所有以d开头的文件中包含 test的行
	(2)grep 'test'aa bb cc         //显示在aa,bb,cc文件中包含test的行
	(3)grep '[a - z]\{5\}’ aa     //显示所有包含每行字符串至少有5个连续小写字符的字符串的行
	(4)grep magic / usr / src      //显示 / usr / src目录下的文件(不含子目录)包含magic的行
	(5)grep - r magic / usr / src  //显示 / usr / src目录下的文件(包含子目录)包含magic的行
	(6)grep - w pattern files		 //只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

5.LRU算法

  最近在笔试大厂的时候遇见好几个关于LRU算法的选择题,就了解了下LRU算法。LRU: 最近最少使用算法,最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数
  关于使用LRU算法计算缺页中断次数以及缺页中断率我了解了一些博客,给出链接

6.散列表的平均查找长度

  散列表的平均查找长度包括查找成功时的平均查找长度和查找失败时的平均查找长度,具体计算如下

  1. 采用链地址法解决哈希冲突
设散列表的长度为10,散列函数H(n)=n mod 7,初始关键字序列为 (33248172110),用链地址法作为解决冲突的方法,平均查找长度是:1.5

根据散列函数得到哈希表

地址 key
0 21
1 8
2
3 24 --> 17–>10
4
5 33
6
7
8
9
  • 查找成功时,查找21, 8, 33,24各需一次,查找17需要两次,查找10需要三次,所以ASL = (1 + 1 + 1 + 1 + 2+ 3)/ 6 = 1.5
  • 查找失败就是从查找位置开始直到一个位置为空需要比较的次数,因为散列函数中有mod 7,所以查找地址为0 ~ 6,那么地址0, 1, 5处次数为1,2, 4处为0,地址3处为3,则ASL = (1 + 1 + 1 + 3) / 7 = 0.85
  1. 采用线性探测法解决哈希冲突
将关键字序列(78301118914)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组,散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7

根据散列函数得到哈希表

地址 key
0 7
1 14
2
3 8
4
5 11
6 30
7 18
8 9
9
  • 查找成功时,查找7,则需要查找1次;查找8,则需要查找1次;查找30,则需要查找1次;查找11,则需要查找1次;查找18,则需要查找3次:第一次查找地址5,第二次查找地址6,第三次查找地址7,查找成功; 查找9,则需要查找3次:第一次查找地址6,第二次查找地址7,第三次查找地址8,查找成功; 查找地址14,则需要查找2次:第一次查找地址0,第二次查找地址1,查找成功, 所以,ASL=(1+2+1+1+1+3+3)/ 7=12/ 7
  • 查找失败时,因为散列函数中有 mod7 ,对应的地址为0~6,即0~6查找失败的查找次数,例如查找key为0的关键字,根据散列函数可以计算Hash(key)=Hash(0)=0。此时在地址为0的地方取出那个数字,发现key=7,不等于0。这就说明在装填的时候会发生冲突。根据冲突处理方法,会继续检测地址为1的值,发现key=14,依然不等。这个时候到了地址为3,发现为空,依然没有找到。所以停止查找,本次查找不成功
    • 地址0,到第一个关键字为空的地址2的距离为3,因此查找不成功的次数为3.
    • 地址1, 到第一个关键为空的地址2的距离为2,因此查找不成功的次数为2.
    • 地址2, 到第一个关键为空的地址2的距离为1,因此查找不成功的次数为1.
    • 地址3,到第一个关键为空的地址4的距离为2,因此查找不成功的次数为2.
    • 地址4,到第一个关键为空的地址4的距离为1,因此查找不成功的次数为1.
    • 地址5,到第一个关键为空的地址2(注意不是地址9,因为初始只可能在0~6之间,因此循环回去)的距离为5,因此查找不成功的次数为5.
    • 地址6,到第一个关键为空的地址2(注意不是地址9,因为初始只可能在0~6之间,因此循环回去)的距离为4,因此查找不成功的次数为4
    • 所以查找不成功ASL=(3+2+1+2+1+5+4)/7=18/ 7

相关文章:

  • 2021-10-25
  • 2021-06-20
  • 2022-01-01
  • 2021-10-30
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-04
  • 2021-06-19
  • 2021-04-20
  • 2021-06-14
  • 2021-07-18
  • 2022-12-23
  • 2021-07-22
相关资源
相似解决方案