对JAVA的基础的学习

前言

	其实很多东西不是为了面试去死记硬背。其实是很有用的,比如为什么要知道aop的是下原理,
为什么要知道mybatis的原理,因为你可能项目里就会出现aop或者事务失效的情况,如果你了解
就会知道为什么会失效。或许你没有遇到过失效的情况,那可能是因为你写的业务很简单;但是
如果自己了解的话,就会在稍微复杂一点的代码里避免掉这些问题的发生。
	事务的特性、隔离级别、传播行为,这些在实际业务场景中,可以清楚的去设置。
	什么时候用arraylist什么时候用linkedlist,什么时候要使用线程安全的集合,
什么时候可以使用非线程安全的集合。
	mq、redis;什么业务场景下使用mq,为什么要使用redis;那么在使用mq的时候如果消息
没有被消费呢,如果消息重复了呢,如果要保证顺序呢;可以提前做出准备和预防。redis的
各种数据结构、数据同步;穿透问题,雪崩问题,对吧,redis怎么高可用;redis订阅、
redis分布式锁;甚至于说,为什么使用redis为什么不是用memcache。redis数据分析monitor;

动态代理

spring aop使用jdk动态代理和cglib动态代理,实现切面;如果有接口实现,使用jdk动态代理。
使用工厂实现依赖注入/控制反转

java.lang.reflect.InvocationHandler

JDK动态代理只能对实现了接口的类生成代理
  CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法(继承)
Spring在选择用JDK还是CGLiB的依据:
(1)当Bean实现接口时,Spring就会用JDK的动态代理
(2)当Bean没有实现接口时,Spring使用CGlib是实现
(3)可以强制使用CGlib(在spring配置中加入<aop:aspectj-autoproxy proxy-target-class=“true”/>)

集合

1、arraylist、hashmap不是线程安全的,因为设计到不是原子性的操作,计算和扩容。
2、concurrentHashMap是线程安全的,因为使用了分段锁。
线程安全的要素:原子性、可见性、顺序性。

Redis

	如何实现sso单点登录,token存在哪,前端存在哪(cookie?),sso实现原理?
	要点:
	1. 首先是使用mvc拦截器,拦截校验,取出请求参数中的token,根据维护的(token, 用户map)信息获取用户信息,如果成功,校验通过;
	2. 同时,还要根据userId,去找redis维护的(userId,token)信息,如果这里存的token和当前校验的token不一致,说明在其他地方重新登录了,也不通过。
	3.所以要点就是redis维护了(token, userInfoMap) 和(userId, token)的双向校验信息。

反射

java的反射机制

知道哪几种锁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值