JavaSE面试题(九)

文章讲述了Java反射的使用场合、作用、优缺点,以及其主要实现类。反射提高了程序的灵活性,但可能导致性能下降和维护困难。设计模式是优秀的代码设计经验总结,用于提高代码重用性、扩展性和灵活性。并行和并发的概念被区分,并讨论了它们在提高应用程序性能中的作用。最后,文章提到了处理高并发场景的一些策略,包括扩容、缓存、队列、服务化、限流和数据库切库等。
摘要由CSDN通过智能技术生成

反射的使用场合和作用以及优缺点

反射的场合:

编译时未知对象或类属于那些类,程序只能靠运行时信息来发现该对象或类的真实信息

反射的作用:

通过反射可以使程序代码访问到装载JVM中类的内部信息

获取已装载类的属性信息,获取已装载类的方法,获取已装载类的构造方法信息

反射的优点:

提高了Java程序的灵活性和扩展性,降低了耦合性。

反射的缺点:

反射基本上是一种解释操作,用于字段和方法比直接的代码慢

反射主要领用在对灵活性和扩展性要求高的系统框架上,普通程序不建议使用。而且使用反射会模糊程序内部的逻辑,反射绕过了源代码,维护时难度更大。反射代码比直接代码更复杂。

反射技术主要的实现类和作用

JDK中实现反射机制的类位于java.lang.reflect中

Class类:代表一个类

Field类:代表类的成员变量(属性)

Method类:代表类的成员方法

Constructor类:代表类的构造方法

Array类:提供了动态创建数组,以及访问数组元素的静态方法

Class类的作用

Class是Java反射机制的起源和入口,用于获取与类相关的各种信息,提供了获取类信息的相关方法,Class类继承自Object类。

什么是设计模式

设计模式是一套被反复使用的、多数人知晓、经过分类编目的优秀代码设计经验的总结。特定环境下特定问题的处理方法。

重用设计和代码  重用设计比重用代码更有意义,自动带来代码重用

提高扩展性  大量使用面向接口编程,预留扩展插槽,新的功能或特性很容易加入到系统中来

提高灵活性  通过组合提高灵活性,可允许代码修改平稳发生,对一处修改不会波及到其他模块

提高开发效率   正确使用设计模式,可以节省大量的时间

面向对象设计原则有哪些------

面向对象设计原则是面向对象设计的基石,面向对象设计质量的依据和保障,设计模式是面向对象设计原则的经典应用

  1. 单一职责原则SRP:一个类只描述一个对象,或者一个方法只干一个活。
  2. 开闭原则OCP   对源文件代码来说, 对扩展开放   对修改关闭
  3. 里氏替代原则LSP
  4. 依赖注入原则DIP   解耦
  5. 接口分离原则ISP   面向接口
  6. 迪米特原则LOD  
  7. 组合/聚合复用原则CARP 继承 代码重用!

开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。其他设计原则都可以看作是开闭原则的实现手段或方法

并行和并发,作用

并行性是指两个或多个事件在同一时刻发生。

并发性是指连个或多个事件在同一时间间隔内发生。

通过并发和并行能够使得应用程序可以充分利用多核以及GPU的计算能力,从而提高应用程序的性能,比如在以下几个方面中:

  1. 使用异步I/O操作可以提高应用程序的响应性。大多数的GUI应用程序都是用单个线程来控制所有UI界面的更新。UI线程不应该被占用过长时间,不然UI界面就会失去对用户的响应。
  2. 跨多线程的并行工作可以更好的利用系统的资源。具有多CPUGPU的现代计算机,通过并行可以指数级的提高CPU计算受限的应用程序的性能。
  3. 同时执行多个I/O操作(如同时从多个网站上获取信息)可以提高总体的吞吐量(throughput),等待I/O相应的操作可以用来发起新的操作,或者是处理操作返回的结果。

区别:

并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。

并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。

并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。

当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态。这种方式我们称之为并发(Concurrent)。

当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

高并发解决思路和手段

高并发基本概念
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

高并发解决思路与手段
扩容:水平扩容、垂直扩容

缓存:RedisMemcacheGuavaCache

队列:KafkaRabitMQRocketMQ

应用拆分:服务化Dubbo与微服务Spring Cloud

限流:Guava RateLimiter使用、常用限流算法、自己实现分布式限流等

服务降级与服务熔断:服务降级的多重选择、Hystrix

数据库切库,分库分表:切库、分表、多数据源

高可用的一些手段:任务调度分布式elastic-job、主备curator的实现、监控报警机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值