第九期八股文巴拉巴拉说(混合篇)

a7aee48598d97025ba156668104c9dd8.png

点击上方“蓝字”关注我们

9109d8353c05d40042a3c836e3e9f5c4.png

 1   Q:什么是反射?

5ffffa26f732765d921bd413dc2db9ad.png

f0e72a82ea7c8636ecfacd9980c99759.png

反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

ed4f6ca9e31d4c2f30fd4241a805ed5f.png

ae2a9efd751354fdac116ecac3cac523.png

05ed7e133ecbf95ccbb83103e17d137c.png

 2   Q:反射机制获取Class对象的方式?

cd10ec4dbd65657bf8fd6d2ddbbfcc95.png

d8745410556c6b76085e85370ef006d0.png

1、Class.forName(“类的路径”);

2、类名.class;

3、对象名.getClass();

4、基本类型的包装类可以调用包装类的Type属性来获得该包装类的Class对象。

a650f4311b42cddf4b7b1ea8094eef4f.png

2cf907f9be62204e3ae5284fa5b8b9e6.png

c0751ab7fad422cddd558e267108defe.png

 3   Q:Mybatis中#{}和${}的区别是什么?

b2ba8a290d61436e81cc3a6ab027e647.png

128e921069797341fd20e82a1e8a14fd.png

#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效得防止SQL注入,提高系统安全性。

cabe4112d39a745bea1092781483631f.png

56c3a51cbc2b185a28c25342440b34fa.png

9880cfa0f8b42a36e362fbdd89f98ccc.png

 4   Q:Spring 框架有哪些自动装配模式?

1b55c81e91917bc9f05b590109547dd0.png

d4527202c7e7c231e3861ef112cb4a75.png

1、no :这是 Spring 框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在 bean 定义中用标签明确的设置依赖关系 。

2、byName :该选项可以根据 bean 名称设置依赖关系 。当向一个 bean 中自动装配一个属性时,容器将根据 bean 的名称自动在在配置文件中查询一个匹配的 bean。如果找到的话,就装配这个属性,如果没找到的话就报错 。

3、byType :该选项可以根据 bean 类型设置依赖关系 。当向一个 bean 中自动装配一个属性时,容器将根据 bean 的类型自动在在配置文件中查询一个匹配的 bean。如果找到的话,就装配这个属性,如果没找到的话就报错 。

4、constructor :构造器的自动装配和 byType 模式类似,但是仅仅适用于与有构造器相同参数的 bean,如果在容器中没有找到与构造器参数类型一致的 bean ,那么将会抛出异常 。

5、autodetect :该模式自动探测使用构造器自动装配或者 byType 自动装配 。首先,首先会尝试找合适的带参数的构造器,如果找到的话就是用构造器自动装配,如果在 bean 内部没有找到相应的构造器或者是无参构造器,容器就会自动选择 byTpe 的自动装配方式 。

f542f8c44ebd16b82a48168cd7894eae.png

f65ee4cebafb2164327770d5a6eccdbb.png

e0d2a9c9d8cd2e66564a837157a34d35.png

 5   Q:什么是正向代理和反向代理?

a390b0b578407592d3fc3b07278e5edf.png

05680eae6bf51a38e63c18bc259145fe.png

正向代理就是一个人发送一个请求直接就到达了目标的服务器。反向代理就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。

409cfc9b7756b0561c0f98e78510485a.png

d0eb5ccd71b21b9594820979a0c6e235.png

b7b9def7dab01c4d72339b5ec1b58a14.png

 6   Q:Nginx的优缺点?

7f943cd0bae344599ac1d1f65e2b5ffb.png

88cdc2b8746b08d1145caa85feb58f08.png

1、优点:占内存小,可实现高并发连接,处理响应快,可实现http服务器、虚拟主机、方向代理、负载均衡,Nginx配置简单,可以不暴露正式的服务器IP地址。

2、缺点:动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力。

e2a46ed296183215cf6087219e8fc142.png

fa0f1506127c4f04009168c53132da73.png

ff546656597b0e7798f124b280c7521a.png

 7   Q:关于public、private、protected、default关键字?

ad4c0493d799b50337bab6662eb60d8b.png

4f802cb9688d13cdba0a5d4e70023a20.png

public和private应该比较熟悉,但是对于protect和不写(default)比较陌生。类的成员不写访问修饰时默认为 default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

858442d7487b6b7fe3e7b418352a41c8.png

f98c95f7bd9ff504c111d4acf05152f4.png

696c63b8555828e480acc4feea20244b.png

8   Q:对于接口限流有什么解决方案?

6040bb98801d6140f361447a00762086.png

cbf4051c6248da480fc7d40352958eb7.png

1、限制 总并发数。(⽐如 数据库连接池、线程池)

2、限制 瞬时并发数(如 nginx 的 limit_conn 模块,⽤来限制 瞬时并发连接数)

3、限制 时间窗⼝内的平均速率(如 Guava 的 RateLimiter、nginx 的 limit_req 模块,限制每秒的平均速率)

4、限制 远程接⼝ 调⽤速率。

5、限制 MQ 的消费速率。

6、可以根据 ⽹络连接数、⽹络流量、CPU 或 内存负载 等来限流。

0242813d318da186cbad21726f1c27fc.png

2964606d42c878a82ced32e1debf267f.png

f0a156d5e14b96844e9be6422424789d.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值