基础知识扫盲=2020-5-10

Spring

自动装配原理

--反射,feiled 通过反射注入引用。方法通过反射 invoke调用

 

Required 注解

打在方法上,如果使用前未初始化,会报错bean 未初始化

 

bean是线程安全的吗

不是,大部分bean都是无状态的,也不会有线程安全问题,如果有状态的,需要开发者处理线程安全问题。

 

什么是spring innerBean

一个bean 无论何时,只会被当做一个属性调用。

也就是在bean 内部再申明一个bean

 

Spring bean  作用域

5个,单例 原型、请求、会话、全局会话

 

Dubbo

注册中心集群整个挂掉了,还能通信吗

可以,消费者还能通过本地缓存找到服务提供者。

 

负载均衡策略

随机、轮询、最少活跃度、一致性hash

 

安全机制:

dubbo消费者发起服务通信的时候,需要提供注册中心发放的token、不允许绕开注册中心直连

 

dubbo协议,为什么消费者比服务提供者多

千兆网络下,打满提供者,需要20个消费线程。

 

dubbo协议,为啥不建议大数据传输

千兆网卡下,服务提供者网络传输满载支持的最大tps:14,

 

其他协议:

Rmi:java.rmi协议,阻塞式短链接,jdk序列化。

Hessian协议,底层采用http协议通信,序列化使用hessian二进制协议,内置servlet。dubbo缺省使用neety作为容器。

Thrift:支持跨语言

 

Mybatis

缓存相关:

一级缓存:

同一个会话相同的sql,第二次直接从一级缓存中提取数据

任何的 UPDATE, INSERT, DELETE 语句都会清空缓存。

可以选择scopre=statement。每次sqlmapper执行后,即清空缓存。

 

二级缓存:

应用级别的缓存,默认不开启

 

如何分页

sql分页,limit x,y

分页拦截器。本质还是构造limit,

通过id order by 分页

如何写一个插件

原理:使用jdk代理生成dao层接口的代理类,并在jdbc每个执行步骤前,做AOP切面,回调下面4个切入点

4个扩展点:执行、statementHander/parameterHandler/ResultSetHandler

#$区别,

#通过预编译,把sqlmapper的sql固定下来了,入参会加上''.有效的放置sql注入

$用在传入对象、或者排序的时候使用。直接拼装到sql中了。

 

延迟加载

就是一个有外联表的时候,sqlmapper中定义的返回对象中嵌套其他对象。

只嵌套对象使用的时候才去查db

 

JVM

对象创建、内存分配过程、对象的访问定位

对象创建:三个阶段:类加载、链接、初始化

类加载过程:

通过class全类名获取类的二进制流,使用自定义appClassLoader 加载对象、如果没有,则委派给父类加载器加载,。如果都没有,则appClassLoad进行加载

并将加载好的数据放入方法区

链接阶段:

校验:

二进制流解析,café babe 开头,符合虚拟机安全规范的数据

准备

初始化符号引用、默认值

解析

将常理池中符号引用改为直接引用

初始化:

执行cinit的默认方法,

 

 

内存分配过程:

Eden->servive0 ->servive1

大部分在eden创建

大对象直接进入老年代

长期存活的分配到老年代

空间担保

https://www.cnblogs.com/godoforange/archive/2019/09/21/11565505.html

 

对象的访问定位

jvm虚拟机栈中,栈帧中存放了,局部变量表。(方法返回、接口、操作数栈、对象引用)

通过局部变量表中的对象引用来实现对象的访问定位。

https://www.cnblogs.com/YYfish/p/6722258.html

句柄池访问,句柄池地址稳定。对象变化,句柄不变,对于线程存放的句柄地址不会改变

直接访问(hotspot),少一次定位。性能更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值