Java面向对象编程(37)

简介: Java面向对象编程(37)

在 OSI 分层模型中,把传输的比特流划分为帧,是哪一层的功能()

A. 物理层

B. 网络层

C. 数据链路层

D. 传输层

答案:C

下面关于源端口地址和目标端口地址的描述中,正确的是( )

A. 在TCP/UDP传输段中,源端口地址和目的端口地址是不能相同的

B. 在TCP/UDP传输段中,源端口地址和目的端口地址必须是相同的

C. 在TCP/UDP传输段中,源端口地址和目的端口地址是可以相同的

D. 以上描述均不正确

答案:A

网段地址 154.27.0.0 的网络。若不做子网划分,能支持()台主机

A. 254

B. 1024

C. 65534

D. 16777206

答案:C

SNMP 使用 UDP 161 和 162 端口,则该协议属于 TCP/IP 模型中的()

A. 网络层

B. 数据链路层

C. 应用层

D. 传输层

答案:C

HTTP 协议中,状态码 500 的意思为()

A. 重定向

B. 访问被拒绝

C. 未找到请求的内容

D. 服务器内部有错误

答案:D

主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分包是 70 和 100 ,如果 A 发送的第一个报文段丢失了,但第二个报文段达到了 B , B 在第二个报文段到达后向 A 发送确认,那么这个确认号是多少?

A. 100

B. 101

C. 70

D. 71

答案:C

每个 IP 地址都可以有一个主机名,通过主机名得到该主机对应 ip 地址的过程叫()

A. ip地址解析

B. 域名解析

C. 域名编译

D. ip地址编译

答案:B

以下说法不正确的是()

A. HTTP是一种请求/响应式的协议

B. HTTP请求消息中Accept表示浏览器可接受的MIME类型

C. HTTP请求消息中Accept-Encoding表示浏览器能够进行解码的数据编码方式

D. HTTP请求消息中Css表示初始URL中的主机和端口

答案:D

关于计算机网络,下列描述当中,正确的是()

A. 在同一信道上同一时刻,可进行双向数据传送的通信方式是半双工

B. TCP协议是无连接的;UDP协议是面向连接的

C. 假设一个主机的ip地址为192.168.8.123,而子网掩码为255.255.255.248,那么该主机的网络号是192.168.8.120

D. 计算机网络中的OSI结构分别是:物理层,数据链路层,传输层,会话层,表示层,应用层 答案:C

下列关于 http 状态码描述正确的是()

A. 404读取浏览器缓存,502错误网关

B. 404找不到资源,403服务器错误

C. 500服务器错误,304读取浏览器缓存

D. 304服务器错误,200请求成功

答案:C

数据库连接池

题目描述:Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没 有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。

现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接。

输入描述:输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量。

紧接着n行,每行包含一个请求编号id(A、B、C……、Z)和操作(connect或disconnect)。

输出描述:对应每一组数据,输出连接池最多需要创建多少个连接。

 


public class Main59 {
    //数据库连接池
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.nextInt();
            String id,op;
            int maxCon=0;
            Set<String> s=new HashSet<>();
            for (int i = 0; i < n; i++) {
                id=scanner.next();
                op=scanner.next();
                if (op.equals("connect")){
                    s.add(id);
                }else {
                    s.remove(id);
                }
                maxCon=Math.max(maxCon,s.size());
            }
            System.out.println(maxCon);
        }
    }
}

Mkdir

题目描述:工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以 及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。 现在给你一些需要创建的文件夹目录,请你帮忙生成相应的“mkdir -p”命令。

输入描述:输入包含多组数据。

每组数据第一行为一个正整数n(1≤n≤1024)。

紧接着n行,每行包含一个待创建的目录名,目录名仅由数字和字母组成,长度不超过200个字符。

输出描述:对应每一组数据,输出相应的、按照字典顺序排序的“mkdir -p”命令。

每组数据之后输出一个空行作为分隔。

public class Main60 {
    //Mkdir
    public static void main(String[] args) {
        //循环接收多组测试用列
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            //接收一组测试用列
            int n = scanner.nextInt();
            String[] path = new String[n];
            for (int i = 0; i < n; i++) {
                path[i] = scanner.next();
            }
            //按照字典的方式对所有的目录进行排序
            Arrays.sort(path);
            //过滤目录:相同目录 || 子目录
            //伪删法:标记
            boolean[] flag = new boolean[n];
            for (int i = 0; i < n - 1; ++i) {
                //相同目录
                if (path[i].equals(path[i + 1])) {
                    flag[i] = true;
                } else if (path[i].length() < path[i + 1].length() &&
                        path[i + 1].contains(path[i]) && path[i + 1].charAt(path[i].length()) == '/') {
                    flag[i] = true;
                }
            }
            //拼接要输出的结果
            for (int i = 0; i < n; i++) {
                if (!flag[i]) {
                    System.out.println("mkdir -p " + path[i]);
                }
            }
            System.out.println();
        }
    }
}

方法2:

//mkdir
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            String[] arr = new String[n];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = sc.next();
            }
            Arrays.sort(arr);
            List<String> res = new ArrayList<>();
            for (int i = 1; i < arr.length; i++) {
                if (!arr[i].startsWith(arr[i - 1] + "/")) res.add(arr[i - 1]);
            }
            res.add(arr[n - 1]);
            for (String s : res) {
                System.out.println("mkdir -p " + s);
            }
            System.out.println();
        }
    }
}
相关文章
|
2月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
35 7
|
2月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
41 5
|
2月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
4月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
32 3
|
2月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
15 0
【前端学java】面向对象编程基础-类的使用(4)
|
4月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
138 57
|
2月前
|
Java 程序员 开发者
Java的面向对象编程:从基础到深入
【8月更文挑战第21天】在本文中,我们将探讨Java的面向对象编程(OOP)的核心概念,包括类、对象、继承、多态和封装。我们将通过实例和比喻,以通俗易懂的方式,深入理解这些概念的内涵和意义,以及它们如何影响我们的编程思维和实践。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更深入地理解Java的OOP,并启发你思考如何在你的项目中应用这些概念。
|
3月前
|
Java API 项目管理
Java中的函数式编程与传统面向对象编程对比
Java中的函数式编程与传统面向对象编程对比
|
4月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
46 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
4月前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
46 7
下一篇
无影云桌面