kmp中,匹配失败时,主串不动。模式串回退:最长前后缀的前缀位置。
bcabbccabbacaa
abbac
比较3次,a匹配成功
一直到匹配abb,比较了5次.
c和a不匹配,比较6次。
abb最长前后缀长度为0,模式串回退到a。
两个c匹配失败,比较8次,最后匹配成功,比较13次。
A用来查找含main的文件名,错误
B可以
C列出test文件名,错误
D可以
行为型模式
这些模式关注对象之间的通信和交互,旨在解决对象之间的责任分配和算法的封装。AD
B是结构型,C是创建型
顺序文件有串结构和顺序结构两种结构
- 正确。顺序文件可以根据记录之间的排列顺序分为串结构和顺序结构。串结构中的记录顺序与关键字无关,通常按存入时间的先后排列;而顺序结构则是文件中的所有记录按关键字(词)排列。
B. 在对记录进行批量操作时,顺序文件的效率是所有逻辑文件中最高的
- 正确。顺序文件通常用于批处理应用中,特别是在需要对所有记录进行批量存取时(如关于机长或工资单的应用),顺序文件的存取效率是所有逻辑文件中最高的。这是因为顺序文件允许连续存取,即物理记录的顺序和逻辑记录的顺序一致,可以高效地读取或写入一大批记录。
C. 只有顺序文件才能存储在磁带上,并能有效地工作
- 正确。顺序文件组织是唯一可以很容易地存储在磁盘和磁带上的文件组织。磁带是一种典型的顺序存取设备,因此存储在磁带上的文件只能是顺序文件。顺序文件在磁带上的存取效率较高,适合于文件数据量甚大、平时记录变化少、只作批量修改的情况。
D. 顺序文件对查找、修改、增加或删除单条记录的操作也很简单
- 错误。顺序文件对查找、修改、增加或删除单条记录的操作并不简单。由于顺序文件的记录是按顺序存储的,如果要查找、修改、增加或删除单条记录,系统可能需要逐个地查找记录,直到找到目标记录为止。这在大文件中会导致较低的效率。特别是当需要插入或删除记录时,可能需要移动大量的记录以保持顺序,这进一步增加了操作的复杂性。
1. NoSQL数据库(如MongoDB)
理由:
- NoSQL数据库非常适合存储非结构化和半结构化数据,如用户评论。
- MongoDB等NoSQL数据库具有高扩展性、高可用性和高性能,能够应对大规模数据的存储和访问需求。
- NoSQL数据库支持灵活的数据模型,便于根据评论数据的特性进行定制和优化。
2. 分布式数据库系统(如HBase)
理由:
- 分布式数据库系统如HBase能够在多台计算机上分散存储数据,提供更高的存储能力和处理能力。
- 它们支持大规模数据的实时读写,适用于需要高并发访问和实时分析的场景。
- HBase等分布式数据库系统通常与Hadoop等大数据处理框架结合使用,形成完整的大数据解决方案。
3. 数据仓库技术(如Apache Hive)
理由:
- 数据仓库技术如Apache Hive适用于大规模数据的批量处理和分析。
- Hive可以将SQL查询转换为MapReduce作业,在Hadoop集群上执行复杂的数据分析任务。
- 数据仓库技术能够整合来自多个数据源的数据,为决策支持提供全面的数据视图。
4. 使用传统关系型数据库存储所有评论数据
考虑因素:
- 虽然传统关系型数据库如MySQL、Oracle等在数据一致性、完整性和事务处理方面表现出色,但它们可能不适合存储和分析大规模的非结构化数据如用户评论。
- 当数据量增长到一定程度时,关系型数据库的性能可能会受到严重影响,导致查询速度变慢和响应时间延长。
BD
ABD,不满足父子节点大小关系。
A. 正确。Java 的异常确实被分为检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。检查型异常在编译时会被检查,如果方法可能抛出检查型异常,但调用者没有捕获或声明抛出这个异常,则编译时会报错。非检查型异常则包括运行时异常(RuntimeException)和错误(Error),这些异常在编译时不会被检查,通常由 JVM 在运行时抛出,如数组越界(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)等。
B. 错误。
Exception
类是 Java 异常体系的根类,它本身不是非检查型异常。它包含了检查型异常和非检查型异常(如运行时异常)。因此,上层代码在处理Exception
或其子类的异常时,是否需要处理(捕获或声明抛出)取决于该异常是否为检查型异常。C. 错误。
RuntimeException
及其子类是非检查型异常。这意味着,如果你的方法可能抛出RuntimeException
或其子类异常,你不需要在方法的签名中声明这个异常,调用者也不需要捕获或声明抛出这个异常。D. 错误。Java 中,不是从
RuntimeException
类派生的异常,有可能是检查型异常(如IOException
、SQLException
等),也有可能是错误(如Error
类及其子类)。只有检查型异常在语法上需要被处理(捕获或声明抛出),错误通常是由 JVM 抛出的,表示更严重的问题,如内存溢出(OutOfMemoryError
)等,这些通常不被应用代码捕获处理。A. 说法错误。内部类(包括非静态内部类)确实可以访问外部类的成员,包括私有成员。这是因为内部类持有外部类的一个隐式引用(对于非静态内部类),这个引用允许内部类访问外部类的所有成员,无论这些成员是私有的、受保护的、包私有的还是公共的。
B. 说法正确。静态内部类是使用static修饰的内部类,它确实与外部类的实例无关。由于它是静态的,因此不需要外部类的实例就可以创建其实例,并且可以直接通过外部类名加
.
来访问静态内部类(以及它的静态成员)。C. 说法正确。局部内部类是定义在外部类的方法中的类,它确实只能在方法内部使用,并且其作用域仅限于包含它的方法或代码块。由于这种内部类没有自己的类名(因为它不是顶级类),因此它不能被方法外的其他类访问。
D. 说法正确。静态内部类可以包含静态成员和非静态成员,这是因为它是一个独立的类(只是被嵌套在外部类内部)。然而,由于静态内部类与外部类的实例无关,因此它只能访问外部类的静态成员(通过外部类名访问)。它不能访问外部类的非静态成员,因为那些成员依赖于外部类的特定实例。