试题小结2

news2024/12/23 16:06:26

1.内部类和子类的区别

内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。 

子类是从父类中继承的类,子类可以访问父类所有public和protected的属性和方法。

Java语言有四个权限访问修饰符,权限从大到小依次为:

1)public :公共权限,可以被任意类访问,不同包不同类依然可以访问

可修饰:类、成员变量、方法,内部类

2)protected:受保护的权限,可以被同包类访问,如果不是同包类,必须是该类的子类才可以访问

可修饰:成员变量、方法、内部类

3)default:默认的(无),同包权限,只能被同包的类访问

可修饰:类、成员变量、方法,内部类

4)private:私有权限,只能在本类中访问,同包其他类也不能访问

可修饰:成员变量、方法、内部类

访问权限:

以上在本类中都可以访问到:

2.对springboot的看法和了解

Spring Boot是一个用于开发Java应用程序的开源框架,它基于Spring框架并简化了Spring应用程序的配置和部署过程。下面是对Spring Boot的一些看法和了解:

  1. 简化开发:Spring Boot提供了一种约定大于配置的方式,通过自动配置和默认值,可以快速搭建和开发应用程序,减少了繁琐的配置和样板代码的编写。
  2. 内嵌服务器:Spring Boot内置了常见的Web服务器,如Tomcat、Jetty等,这样可以直接打包成可执行的JAR文件并运行,简化了应用程序的部署和运行过程。
  3. 自动配置:Spring Boot根据应用程序的依赖和配置文件,自动配置各种组件和功能,如数据库连接、消息队列、缓存等,减少了手动配置的工作。
  4. 微服务支持:Spring Boot天然支持构建微服务架构,通过Spring Cloud等相关项目,可以方便地实现服务注册与发现、负载均衡、断路器等微服务相关的功能。
  5. 健康监测和管理:Spring Boot提供了健康监测和管理的功能,可以通过HTTP端点查看应用程序的运行状态、性能指标等,方便运维和监控。
  6. 生态系统:Spring Boot是基于Spring框架的扩展,可以充分利用Spring生态系统的各种扩展和插件,如Spring Data、Spring Security等,提供了丰富的功能和解决方案。

总的来说,Spring Boot简化了Spring应用程序的开发和部署过程,提供了一种快速、简便的方式来构建Java应用程序。它的优势在于自动配置、内嵌服务器和微服务支持等方面,使得开发者可以更专注于业务逻辑的实现,而不需要花费过多的精力在配置和部署上。

3.对多级、多量数据的处理和优化

对于多级和多量数据的处理和优化,有几个关键的方面需要考虑:

  1. 数据存储和组织:选择合适的数据存储方式,如数据库管理系统(DBMS),可以根据数据类型和访问模式选择关系型数据库、非关系型数据库或数据湖等。此外,使用适当的索引和分区策略可以提高数据查询和访问的效率。
  2. 数据清洗和预处理:多级、多量数据通常包含大量的噪声、缺失值和异常值。因此,在进行数据分析或机器学习之前,必须对数据进行清洗和预处理。这包括处理缺失值、去除重复数据、平滑异常值等。
  3. 并行计算和分布式处理:针对大规模数据集,可以使用并行计算和分布式处理技术来加速数据处理和分析过程。这可以通过使用分布式计算框架(如Hadoop、Spark)或使用图形处理器(GPU)进行加速来实现。
  4. 数据压缩和存储优化:对于大规模数据,数据压缩可以减少存储空间的占用,并提高数据传输效率。选择合适的压缩算法和存储格式可以在存储和处理过程中实现更高的效率。
  5. 数据分片和分区:对于大规模数据集,将数据分片和分区可以提高查询和处理的效率。这可以根据数据的特征和访问模式进行划分,使得每个分片或分区可以独立处理。
  6. 数据缓存和索引:为了加快数据访问速度,可以使用缓存技术将常用的数据存储在内存中,以减少磁盘访问。此外,使用适当的索引可以加速数据查询和过滤操作。
  7. 数据流和流处理:对于实时数据处理和分析,可以使用流处理技术,如Apache Kafka、Apache Flink等,来处理数据流并进行实时计算和分析。

总之,多级和多量数据的处理和优化涉及到多个方面,包括数据存储、清洗、并行计算、压缩、分片、缓存等。根据具体的场景和需求,选择合适的技术和策略来处理和优化数据。

4.连接池的作用

连接池是一种管理和维护数据库连接的技术,它的作用主要有以下几个方面:

  1. 提高性能:连接池通过预先创建一定数量的数据库连接并保持在连接池中,当应用程序需要访问数据库时,可以直接从连接池中获取连接,避免了频繁地创建和关闭连接的开销,从而提高了数据库访问的性能。
  2. 节省资源:数据库连接是一种昂贵的资源,在创建和关闭连接时会涉及到网络通信、身份验证等操作,连接池可以复用已有的连接,避免了重复创建和关闭连接的资源浪费,节省了系统资源。
  3. 控制连接数:连接池可以根据系统的负载情况和数据库的处理能力来动态地管理连接数,通过设置最小连接数和最大连接数,可以有效地控制并发访问数据库的连接数,避免了连接过多导致数据库性能下降或连接过少导致系统响应变慢的问题。
  4. 连接管理:连接池可以对连接进行有效的管理,包括连接的创建、分配、回收和释放等操作,可以检测并处理连接的异常、超时、闲置等情况,保证连接的可用性和稳定性。
  5. 连接复用:连接池可以将连接复用在多个数据库操作之间,避免了每次操作都需要重新建立连接的开销,提高了数据库操作的效率。

总的来说,连接池的作用是提高数据库访问的性能和效率,节省系统资源,并且能够有效地管理和控制连接的数量和状态,提高系统的稳定性和可用性。

5.分布式缓存的了解,介绍Redis

分布式缓存是指将缓存数据分布在多个节点上,以提高缓存的容量和性能,并且保证数据的一致性和可靠性。分布式缓存可以减轻后端数据库的负载,加快数据访问速度,提高系统的吞吐量。

Redis是一个开源的、基于内存的分布式缓存数据库,它支持多种数据结构(如字符串、哈希表、列表、集合、有序集合等),并提供了丰富的缓存功能和操作命令。下面是Redis的一些特点和功能:

  1. 高性能:Redis将数据存储在内存中,因此具有非常高的读写性能。此外,Redis采用了单线程的事件驱动模型,避免了多线程的锁竞争,进一步提高了性能。
  2. 分布式支持:Redis支持数据的分片和复制,可以将数据分布在多个节点上,提高缓存的容量和可扩展性。同时,Redis还支持主从复制和哨兵模式,实现了高可用和故障转移。
  3. 数据持久化:Redis支持将数据持久化到磁盘上,以保证数据的持久性和可靠性。它提供了RDB(快照)和AOF(追加日志)两种持久化方式,可以根据需求选择适合的方式。
  4. 发布订阅:Redis支持发布订阅模式,可以实现消息的发布和订阅,用于实时通信和消息传递。
  5. 事务支持:Redis提供了简单的事务支持,可以将多个操作封装在一个事务中,保证操作的原子性。
  6. 缓存失效机制:Redis支持设置缓存的过期时间,可以自动删除过期的缓存数据,避免缓存数据过期后仍然被使用。
  7. 原子操作:Redis提供了多种原子操作命令,如对字符串进行自增、自减操作,对集合进行添加和删除操作等,保证操作的原子性。

总的来说,Redis是一个功能强大的分布式缓存数据库,具有高性能、分布式支持、数据持久化、发布订阅等特点,适用于各种场景下的缓存需求。它被广泛应用于互联网、移动应用和大数据等领域,成为了一种常用的缓存解决方案。

6.介绍过滤器(加强注解的学习和记忆)

在Spring Boot中,可以通过两种方式来创建和配置过滤器:

  1. 使用@Bean注解创建过滤器:在Spring Boot的配置类中,可以通过使用@Bean注解来创建过滤器实例,并将其添加到过滤器链中。具体步骤如下:
    • 创建一个过滤器类,实现javax.servlet.Filter接口,并实现doFilter()方法。
    • 在Spring Boot的配置类中,使用@Bean注解创建该过滤器的实例。
    • 在配置类中,使用FilterRegistrationBean将该过滤器实例注册到过滤器链中,并指定过滤器的URL匹配模式和执行顺序。

例如:

@Configuration

public class MyFilterConfig {

@Bean

public FilterRegistrationBean myFilterRegistration() {

FilterRegistrationBean registration = new FilterRegistrationBean<>();

registration.setFilter(new MyFilter());

registration.addUrlPatterns("/*");

registration.setOrder(1);

return registration;

}

}

  1. 使用@WebFilter注解创建过滤器:在Spring Boot中,可以直接在过滤器类上使用@WebFilter注解来定义过滤器,并指定过滤器的URL匹配模式和执行顺序。具体步骤如下:
    • 创建一个过滤器类,实现javax.servlet.Filter接口,并实现doFilter()方法。
    • 在过滤器类上使用@WebFilter注解,并指定过滤器的URL匹配模式和执行顺序。

例如:

@WebFilter(urlPatterns = "/*", filterName = "myFilter", order = 1)

public class MyFilter implements Filter {

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

// 过滤器逻辑处理

chain.doFilter(request, response);

}

}

以上两种方式都可以在Spring Boot中创建和配置过滤器,具体选择哪种方式取决于个人的喜好和项目的需求。

7.JVM的优化手段有哪些

JVM的优化手段有以下几种:

  1. 内存管理优化:
  • 调整堆大小:通过调整-Xms和-Xmx参数来设置初始堆大小和最大堆大小,以满足应用程序的内存需求。
  • 垃圾回收优化:选择合适的垃圾回收器,根据应用程序的特点和需求进行调优。可以通过调整-Xmn、-XX:NewRatio、-XX:SurvivorRatio等参数来优化垃圾回收。
  • 对象分配优化:使用对象池、缓存等技术,减少对象的创建和销毁,降低垃圾回收的压力。
  1. 代码优化:
  • 避免过度同步:减少锁的竞争,使用更细粒度的锁或者无锁的并发控制方式。
  • 减少对象创建:尽量重用对象,减少对象的创建和销毁。
  • 使用高效的数据结构和算法:选择合适的数据结构和算法,提高代码的执行效率。
  • 减少方法调用:减少不必要的方法调用,尽量将代码逻辑内联到调用处。
  1. JIT编译优化:
  • 热点代码识别:JIT编译器会根据代码的执行情况,识别出热点代码,将其编译成本地机器码,提高执行速度。
  • 方法内联:JIT编译器会将频繁调用的方法内联展开,减少方法调用的开销。
  • 逃逸分析:JIT编译器会对代码进行逃逸分析,识别出不会逃逸出方法的对象,进行栈上分配或者标量替换,减少堆的使用。
  1. 并发优化:
  • 使用线程池:合理配置线程池的大小,避免过多的线程竞争和线程创建销毁的开销。
  • 减少锁竞争:使用更细粒度的锁,减少锁的竞争,提高并发性能。
  • 使用非阻塞算法:使用CAS操作、原子类等非阻塞算法,减少线程的阻塞和唤醒开销。

以上是常见的JVM优化手段,根据具体的应用场景和需求,可以选择适合的优化手段进行调优。同时,还可以使用一些性能分析工具,如VisualVM、JProfiler等,对应用程序进行性能分析和调优。

8.如何提升数据查询,其中包括如何判断索引是否有效

要提升数据查询的性能,可以考虑以下几个方面:

  1. 创建合适的索引:索引是提高查询性能的关键。根据查询的条件和经常访问的字段,创建适当的索引。常见的索引类型包括B树索引、哈希索引、全文索引等。可以使用数据库的性能分析工具来分析查询语句的执行计划,判断是否使用了索引,并根据需要进行索引优化。
  2. 避免全表扫描:尽量避免对整个表进行扫描,可以通过添加WHERE条件、使用索引等方式来限制扫描的范围。
  3. 使用合适的查询语句:根据查询的需求选择合适的查询语句,如使用JOIN操作来关联多个表,使用子查询来获取特定条件的数据等。避免使用复杂的查询语句和不必要的计算。
  4. 数据库优化参数设置:根据数据库的特点和硬件配置,调整数据库的参数设置,如内存缓存大小、并发连接数等,以提升查询性能。
  5. 数据库分区和分表:对于大数据量的表,可以考虑进行分区或分表,将数据划分到多个表或多个数据库中,以提高查询效率。

判断索引是否有效可以通过以下几种方式:

  1. 执行计划分析:使用数据库的性能分析工具,执行查询语句并查看执行计划。如果执行计划中使用了索引,并且索引的使用方式符合预期,那么可以认为索引是有效的。
  2. 查询性能对比:对比使用索引和不使用索引的查询语句的执行时间。如果使用索引的查询速度明显快于不使用索引的查询,那么可以认为索引是有效的。
  3. 数据库统计信息分析:通过查看数据库的统计信息,如索引的使用频率、索引的碎片情况等,来判断索引是否有效。如果索引的使用频率较高,碎片较少,那么可以认为索引是有效的。
  4. 实际业务需求分析:根据实际的业务需求,判断索引是否满足查询的要求。如果索引能够提供较好的查询性能,并且满足业务需求,那么可以认为索引是有效的。

需要注意的是,索引的有效性是相对的,不同的查询语句和业务场景可能对索引的需求不同。因此,需要根据具体的情况进行评估和调整。

数据库优化的方法

(11条消息) 优化数据库的八种经典方式_数据库优化_H_36627117的博客-CSDN博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android11 Settings菜单加载

一、加载默认亮度 1、top_level_settings.xml 2、AndroidManifest.xml 3、DisplaySettings ①getPreferenceScreenResId ②buildPreferenceControllers 4、display_settings.xml 5、AutoBrightnessPreferenceController 6、BrightnessLevelPreferenceController ①getCurren…

全网最细,Pytest自动化测试-重复执行用例 pytest-repeat(实战)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 平常在做功能测试…

应对Python爬虫IP被封的策略及建议。

我们在进行数据抓取使用代理ip的时候需要有一些约束规定&#xff0c;才能保证我们持续稳定的抓取数据。 大概整理了一下&#xff0c;需要注意以下几点&#xff0c;仅供参考&#xff1a; 1、使用高质量的代理服务器&#xff1a;选择一些可靠的代理服务器&#xff0c;确保它们的…

从歌手李玟的自杀传闻,看骑行健身对心理健康的深远影响

从歌手李玟的自杀传闻&#xff0c;看骑行健身对心理健康的深远影响 最近&#xff0c;歌手李玟的自杀传闻让大众一片哗然。这个消息无疑成为了各大平台的热点话题。然而&#xff0c;作为骑友&#xff0c;我们今天再次谈谈骑行健身的重要性。 首先&#xff0c;我们要明确一点&…

性能测试如何做?性能测试实战从0-1进阶(内涵面试题+答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试实战 - 部…

checkout

git-checkout - Switch branches or restore working tree files# 用index或者指定commit中的版本,来更新工作区中的文件 # 切换分支 Updates files in the working tree to match the version in the index or the specified tree. If no pathspec was given,git checkout wil…

SonarQube扫描常见Bug、漏洞修复整理(持续更新中)

目录 DMS1、A "NullPointerException" could be thrown; "sra" is nullable here.2、Cast one of the operands of this multiplication operation to a "long"3、Call "remove()" on "requestContainer".4、Use try-with-r…

echarts条形图 动态 设置标签背景和柱状图渐变颜色

<!--Description: 横向渐变柱状图 --> <template><div ref"horizontal" class"w-full h-full"></div> </template><script> import * as echarts from echarts export default {components: {},props: [data],data() …

c++11 标准模板(STL)(std::basic_ostream)(八)

定义于头文件 <ostream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式…

kubernetes 节点排水维护 cordon, drain, uncordon

1.这三个命令是正式release的1.2新加入的命令&#xff0c;三个命令一起介绍&#xff0c;是因为三个命令配合使用可以实现节点的维护。在1.2之前&#xff0c;因为没有相应的命令支持&#xff0c;如果要维护一个节点&#xff0c;只能stop该节点上的kubelet将该节点退出集群&#…

Java-API简析_java.net.InetAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131590559 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

git因网络问题报错

Failed to connect to github.com port 443 after 21051 ms: Couldnt connect to server Recv failure: Connection was reset 你是否最近也有遇到这种情况呢&#xff1f; 公司项目目前保存在github上, 在 git pull 和 git push 的时候总是遇到以上情况 也是困扰了我不少…

ESP32-C2 固件烧录需满足的硬件环境整理

ESP32-C2 默认通过 UART0 &#xff08;即 TXD&#xff08;GPIO20&#xff09;和 RXD&#xff08;GPIO19&#xff09;&#xff09;下载固件。 Windows 下可使用 Flash download tool 工具来下载编译后的 bin 文件&#xff1b; 运行 flash_download_tool.exe 的文件 选择开发…

2023 最新互联网大厂Java面经分享:25 分类、1000 道 Java 面试真题(50w 字解析)

作为 Java 程序员&#xff0c;选择学习什么样的技术&#xff1f;什么技术该不该学&#xff1f;去招聘网站上搜一搜、看看岗位要求就十分清楚了&#xff0c;自己具备的技术和能力&#xff0c;直接影响到你工作选择范围和能不能面试成功。 如果想进大厂&#xff0c;那就需要在 Ja…

数据库-分布式数据库历史变迁之旅

我们正式开始分布式数据库历史变迁之旅。 单机数据库的不可能三角 正如经济政策的不可能三角“不可能同时实现资本流动自由&#xff0c;货币政策的独立性和汇率的稳定”那样&#xff0c;单机数据库也有一个不可能三角&#xff0c;那就是&#xff1a;①持久化 ②事务隔离 ③高性…

17款奔驰S400加装原厂无钥匙进入系统,提升您的便利性

奔驰无钥匙进入功能&#xff0c;只要身上装着车钥匙进入车内&#xff0c;车辆就能感应到钥匙的存在&#xff0c;这时只需按下启动键就可启动车辆了 奔驰无钥匙进入功能主要有两大使用体验&#xff0c;首先就是要注意主驾驶位车门的有效检测距离不小于1.5m&#xff0c;其他门钥匙…

BOM/PCB/Gerber比对功能再升级,华秋DFM新版邀您体验!

在电子产品开发过程中&#xff0c;方案选型、原理图设计、BOM制作、PCB设计再到PCB、PCBA的生产都会经历多次版本迭代。在硬件开发过程中BOM文件的迭代、PCB设计的版本迭代是最为常见的&#xff0c;所以对应的版本管控至关重要&#xff0c;只有清晰地了解不同版本的差异&#x…

武汉理工大学第四届ACM校赛

武汉理工大学第四届ACM校赛传送门 A-ST和TS回文问题 这种题都是有一定简单的规律的 如果每个字符都相等的话,肯定存在 如果字符串T的长度是字符串S的整数倍的话,如果字符串S是回文串或者T的长度是S的长度的奇数倍的话,那么存在 否则不存在 就自己构造字符串来找规律&…

121.实战网页图片优化

如上图所示&#xff0c;这个图标的内部尺寸为14791459&#xff0c;但是我们实际呈现的渲染的效果为570562&#xff1b;所以我们可以调整一下图像的大小&#xff0c;缩小图片的文件大小&#xff1b; 我们可以修改他的尺寸&#xff0c;文件的大小就缩小了。但是在网页上显示一点区…

软件测试之单元测试详解

目录 前言&#xff1a; 1、什么是单元测试&#xff1f; 2、什么是好的单元测试&#xff1f; 3、怎么写单元测试&#xff1f; 4、玩转单元测试 前言&#xff1a; 单元测试是软件测试中的一种测试方法&#xff0c;用于验证代码中最小可测试单元的正确性。它主要关注对程序的…