牛客习题总结42(7月17日)

在这里插入图片描述

130.63.160.2是B类IP地址
B类IP地址前16位(两个字节)为网络号,后16位是主机号
划分子网就是将主机号中的一部分拿出来当做子网号
这里子网掩码为255.255.255.0也就是把前三个字节当成了网络号
与B类IP默认的前两个字节作为网络号相比,第三个字节就是子网号,就是160
所以这个ip的网络号是130.63 子网号是 160 主机号是2
在这里插入图片描述
ARP是将IP地址转换为硬件地址
在这里插入图片描述
感觉B选项将握手改为挥手会更好一点~~
在这里插入图片描述

tcpdump是简单可靠网络监控的实用工具
top 显示活动进程方面的情况
netstat显示网络有关的信息,比如套接口使用情况、路由、接口、协议(TCP等)等

ifconfig是查看活动的网卡信息
在这里插入图片描述

网络位为25 主机位为7
网络地址ip和子网掩码相与的192.168.48.0
广播地址等于网络地址的主机位的二进制为1= 192.168.48.127
有效的主机IP地址=网络地址+1(全0情况) ---- 广播地址-1
== 192.168.48.1 到 192.168.48.126
在这里插入图片描述

子网掩码是255.255.255.252
前三个字节是255,代表前三个字节是网络地址
最后一字节写成二进制形式为11111100
也就是说最后一字节中的前六位也是网络地址,后两位是主机地址
11111100与172.16.100.5最后一字节5按位与运算,5的二进制表示为101,与运算结果为4
即网络号为172.16.100.4,主机号为1
在这里插入图片描述

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接
NAT不仅能解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。
静态 转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
端口多路复用( Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。
采用NAT时,在虚拟机中,不用做任何配置,只要宿主机器访问网络即可。

在这里插入图片描述
这是一道比较经典的编程题,希望可以铭记思想:

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int max = Integer.MIN_VALUE;
        int sum = 0;
        int n = scanner.nextInt();
        while (scanner.hasNext()) {
            sum += scanner.nextInt();
            if (sum>max) {
                max = sum;
            }
            if (sum<0) {
                sum = 0;
            }
        }
        System.out.println(max);
    }
}

在这里插入图片描述

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
            String s = in.nextLine();
            String[] arr = s.split(";");
            int x = 0;
            int y = 0;
            for(int i = 0;i<arr.length;i++) {
                char cur = arr[i].charAt(0);
                String s1 = arr[i].substring(1);
//正则表达式,表示字符串是否由数字组成
                if(cur == 'A'&&s1.matches("[0-9]+")) {
                    x = x-Integer.valueOf(s1);
                    continue;
                }
                if(cur == 'D'&&s1.matches("[0-9]+")) {
                    x = x+Integer.valueOf(s1);
                    continue;
                }
                if(cur == 'S'&&s1.matches("[0-9]+")) {
                    y = y-Integer.valueOf(s1);
                    continue;
                }
                if(cur == 'W'&&s1.matches("[0-9]+")) {
                    y = y+Integer.valueOf(s1);
                    continue;
                }
            }
            System.out.println(x+","+y);
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhj_loveFang_1105

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值