(1)下列关于URL的描述错误的是(A)
A.http表名使用TCP协议
B.又名统一资源定位符,方便确定一个资源,并表示他在哪里
C.URL中隐藏了端口号,默认是80端口
D.访问URL可使用大写字母
(2)不属于交换机攻击的是(A)
A.目录遍历攻击
B.MAC防洪攻击
C.VLAN攻击
D.DHCP攻击
交换机攻击主要有以下5种类型:VALN跳跃攻击,生成树攻击,MAC表洪水攻击,ARP攻击,VTP攻击
DHCP攻击:DHCP欺骗攻击就是伪造真正的DHCP服务器为客户端主机分配一个错误的IP地址
DHCP攻击针对的目标是网络中的DHCP服务器,原理是耗尽DHCP服务器的所有IP地址资源,使其无法正确提供地址分配服务。然后在网络中再假设假冒的DHCP服务器为客户端分配IP地址,从而实现中间人攻击
DHCP攻击原理:DHCP没有认证机制,并不知道接收的报文是否是同一个主机发的,所以攻击者可以使用以下两种方式进行攻击
- 攻击者发送大量的DHCP Discover报文,堵塞DHCP服务器的处理速度,以至于瘫痪DHCP服务器
- 制造大量的伪造MAC地址来请求地址,导致DHCP服务器中的IP地址耗尽
目录遍历攻击是HTTP所存在的一个安全漏洞,它使得攻击者能够访问受限的目录,并在Web服务器的根目录以外执行命令。不属于交换机攻击
(3)IP地址块为211.168.15.192/26,211.168.15.160/27,211.168.15.128/27三个地址块经聚合后可用地址数为(A)
A.126
B.62
C.128
D.68
(4)以下不是合法的HTTP请求方法的是(B)
A.GET
B.SET
C.HEAD
D.PUT

思路:动态规划
dp[i][j]的含义是:从起点走到i,j位置且不踩到蘑菇的概率
代码:
public static void main(String[] args){Scanner scanner=new Scanner(System.in);while(scanner.hasNextInt()){int n=scanner.nextInt();int m=scanner.nextInt();int k=scanner.nextInt();int[][] map=new int[n+1][m+1];while(k>0){int x=scanner.nextInt();int y=scanner.nextInt();map[x][y]=1;k--;}double[][] dp=new double[n+1][m+1];dp[1][1]=1.0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(map[i][j]!=1 && !(i==1&& j==1)){dp[i][j] = dp[i-1][j]*(j==m? 1.0:0.5) + dp[i][j-1]*
(i==n? 1.0:0.5);}}}System.out.printf("%.2f\n", dp[n][m]);}}

思路:深度优先遍历
具体步骤:
step1:处理输入,在输入的过程中找到并记录起始位置x,y
step2:进行深度优先遍历,没到达一个位置,检查该位置是否为红瓷砖,如果是直接返回,如果不是count++,并将该位置修改为红瓷砖,防止重复计数
step3:分别深度遍历黑瓷砖的四个方向,进入递归之前检查下标的合法性
代码:
import java.util.*;
public class Main{private static int count=0;private static int[][] dirs={{-1,0},{1,0},{0,1},{0,-1}};public static void main(String[] args){Scanner scanner=new Scanner(System.in);while(scanner.hasNext()){int m=scanner.nextInt();int n=scanner.nextInt();if(m * n==0){continue;}int x=0;int y=0;char[][] map=new char[m][n];for(int i=0;iString s=scanner.next();for(int j=0;jmap[i][j]=s.charAt(j);if(map[i][j]=='@'){x=i;y=j;}}}count=0;dfs(map,x,y,m,n);System.out.println(count);}}private static void dfs(char[][] map,int x,int y,int row,int col){if('#' == map[x][y])return;// 说明(x, y)位置为黑砖, 将该砖遍历之后,修改其标记++count;map[x][y] = '#';for(int i = 0; i < 4; ++i){int nx = x + dirs[i][0];int ny = y + dirs[i][1];if(nx >= 0 && nx < row && ny >= 0 && ny < col){dfs(map, nx, ny, row, col);}}}
}