JavaEnvironment
2022-03-20 07:42:43 10 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
抱歉,暂无相关内容
Java8基础面试题
作者其他创作
大纲/内容
动态数组
线程不安全
查询快,增删慢
ArrayLsit
线程安全,但是效率低,只是方法加上synchronized关键字保证同步
Vector
双向链表
查询慢,增删快
LinkedList
List
HashSet
TreeSet
Set
ArrayBlockingQueue
PriorityBlockingQueue
DelayQueue
Queue
Collection
HashMap
HashTable
TreeMap
ConcurrenHashMap
Map
集合
一个线程持续产生对象到队列一端中,另一个线程从队列的另一端取出对象
当队列满或者队列为空时,线程阻塞
抛出异常
返回false或者true
方法会产生阻塞
阻塞一定时间后,返回true或者false
操作队列失败时的四种行为模式
LinkedBlockingQueue
所有插入到 PriorityBlockingQueue 的元素必须实现 java.lang.Comparable 接口
无法插入null
同步队列
SynchronousQueue
BlockingQueue
可以从队列两端插入,取出元素
一般用于一个线程即使生产者又是消费者
BlockingDeque
阻塞队列
线程池
c可见性
原子性
JVM指令重排序
并发问题的根源
防止指令重排序
是基于内存屏障的实现
内存可见
单次读或写的原子性,i++不行(包含读取i的值,加1后写入内存两个操作)
volatile
synchronized
final
怎么解决并发问题
JUC
I/O
注解
反射
1.可以无条件访问外部类的所有成员变量和成员方法,包括private和static
2.当成员内部类拥有和外部类同名的成员变量和方法时,会发生隐藏现象,优先访问成员内部类的变量和方法
3.外部类想要访问成员内部类的属性必须先创建成员内部类的对象,前提是已有一个外部类对象
4.要想在外面实例化成员内部类,得先有外部类对象.
成员内部类
1.访问仅限于该方法内,而且只能访问该方法内有final修饰的变量
2.不能有public,protected,private,static修饰
3.只能在该类中实例化(在该方法内,该类后面可以实例化),只能调用该类中的方法,无法在外部实例化和调用
局部内部类
1.可以有public,protected,private修饰
2.只可以访问外部类的静态成员变量和静态成员方法
2.OuterClass.InnerClassStatic innerStatic = new OuterClass.InnerClassStatic();
静态内部类
1.没有类的名称,必须借助接口或者父类
匿名内部类
内部类
1.可以有构造方法
2.可以有普通成员变量
3.访问类型可以是public和protected
4。一个类可以实现多个接口,但只能继承一个抽象类。
5。抽象类中可以有静态方法
抽象类
类
1.没有构造方法
2.没有成员变量,只可以定义常量
3.访问类型是public
4.一个类可以实现多个接口,但只能继承一个抽象类。
5.Jdk8后可以定义静态方法和默认方法
接口
类与接口
Comparator和comparable
其他
1.支持常用的应用层协议,不用手动实现编码规则
2.决解了传输问题,粘包,半包
3.支持流量整形
4.完善了断连,idle等异常处理
netty做的更多,做得更好
为什么不用JdkNio,而用netty?
默认开启不能关闭
一级缓存
二级缓存
Mybatis缓存
Netty
1.读取配置文件,获取数据库连接信息
该文件配置了操作数据库的Sql语句,需要在mybatis-config.xml中配置
2.加载Sql映射文件
3.根据配置文件生成会话工厂SqlSessionFactory
该对象包含了Sql语句的所有方法
4.会话工厂创建会话SqlSession
5.Excutors接口根据SqlSesion传递的参数动态生成Sql语句,同时也负责查询缓存
6.MappedStatement对象,对映射信息进行封装,用于存储Sql语句的id,参数等信息
参数类型可以是Map,List,基本数据类型和POJO
7.输入,输出参数映射
工作流程
Mybatis
JavaEnvironment
收藏
0 条评论
回复 删除
下一页