![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 复习专栏
贝小贝貝
总是在前进的道路上迷失,这一次,想要到达终点。
展开
-
Java复习之 ReentrantLock 原理(CAS+AQS)
转载于三太子敖丙!!!ReentrantLock原理(CAS+AQS)CAS+AQS队列来实现(1):先通过CAS尝试获取锁, 如果此时已经有线程占据了锁,那就加入AQS队列并且被挂起;(2):当锁被释放之后, 排在队首的线程会被唤醒CAS再次尝试获取锁,(3):如果是非公平锁, 同时还有另一个线程进来尝试获取可能会让这个线程抢到锁;(4):如果是公平锁, 会排到队尾,由队首的线程获取到锁。AQS 原理Node内部类构成的一个双向链表结构的同步队列,通过控制(volatile转载 2020-05-13 11:54:39 · 1501 阅读 · 0 评论 -
Java复习之JDK1.8新特性
转载于三太子敖丙!!!Lambda表达式java也开始承认了函数式编程, 就是说函数既可以作为参数,也可以作为返回值, 大大的简化了代码的开发default关键字打破接口里面是只能有抽象方法,不能有任何方法的实现,接口里面也可以有方法的实现了新时间日期APILocalDate | LocalTime | LocalDateTime之前使用的java.util.Date月份从0开始,我们一般会+1使用,很不方便,java.time.LocalDate月份和星期都改成了enum java转载 2020-05-14 09:57:52 · 280 阅读 · 0 评论 -
Java复习之集合:collection 和 map
转载于三太子敖丙!!!集合java的集合框架有哪几种:两种:collection和map,其中collection分为set和List。List你使用过哪些ArrayList和linkedList使用的最多,也最具代表性。你知道vector和ArrayList和linkedList的区别嘛ArrayList实现是一个数组,可变数组,默认初始化长度为10,也可以我们设置容量,但是没有设置的时候是默认的空数组,只有在第一步add的时候会进行扩容至10(重新创建了数组),后续扩容按照3转载 2020-05-14 09:57:38 · 186 阅读 · 0 评论 -
Java复习之网络相关内容
转载于三太子敖丙!!!TCP和UDP的比较TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为 对数据准确性要求高,速度可以相对较慢的,可以选用TCPTCP三次握手TCP四次挥手(1):客户端发送终止命令FIN(2):服务端收到后回复ACK,处于close_wait状态(3):服务器将关闭前需要发送信息发送给客户端后处于last_ack状态(4):客户端收到FIN后发送转载 2020-05-14 09:58:02 · 130 阅读 · 0 评论 -
Java复习之Redis解读
转载于三太子敖丙!!!redis单线程为什么执行速度这么快?(1):纯内存操作,避免大量访问数据库,减少直接读取磁盘数据,redis将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度快(2):单线程操作,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗(3):采用了非阻塞I/O多路复用机制Redis数据结构底层实现String:(1)转载 2020-05-14 09:57:08 · 219 阅读 · 0 评论 -
Java复习之DUBBO
转载于三太子敖丙!!!dubbo流程(1):生产者(Provider)启动,向注册中心(Register)注册(2):消费者(Consumer)订阅,而后注册中心通知消费者(3):消费者从生产者进行消费(4):监控中心(Monitor)统计生产者和消费者Dubbo推荐使用什么序列化框架,还有哪些?推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化Dubbo默认使用的是什么通信框架,还有哪些?默认使用 Netty 框架,也是推荐的选择,另外内转载 2020-05-14 09:56:35 · 126 阅读 · 0 评论 -
Java复习之JVM
转载于三太子敖丙!!!jre、jdk、jvm的关系:jdk是最小的开发环境,由jre++java工具组成。jre是java运行的最小环境,由jvm+核心类库组成。jvm是虚拟机,是java字节码运行的容器,如果只有jvm是无法运行java的,因为缺少了核心类库。JVM内存模型(1):堆<对象,静态变量,共享(2):方法区<存放类信息,常量池,共享>(java8移除了永久代(PermGen),替换为元空间(Metaspace))(3):虚拟机栈<线程执行转载 2020-05-13 13:22:23 · 204 阅读 · 0 评论 -
Java: MySQL 复习
转载于三太子敖丙!!!数据库三范式一:确保每列的原子性二:非主键列不存在对主键的部分依赖 (要求每个表只描述一件事情)三:满足第二范式,并且表中的列不存在对非主键列的传递依赖数据库主从复制原理(1):主库db的更新事件(update、insert、delete)被写到binlog(2):主库创建一个binlog dump thread线程,把binlog的内容发送到从库(3):从库创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log.(4):从库转载 2020-05-13 13:20:50 · 145 阅读 · 0 评论 -
java复习之锁: synchronized
转载于三太子敖丙!!!synchronized实现原理contentionList(请求锁线程队列) entryList(有资格的候选者队列) waitSet(wait方法后阻塞队列) onDeck(竞争候选者) ower(竞争到锁线程) !ower(执行成功释放锁后状态);Synchronized 是非公平锁。Synchronized 在线程进入 ContentionList 时,等待的线程会先尝试自旋获取锁,如果获取不到就进入 ContentionList,这明显对于已经进入队列的线程是不公转载 2020-05-13 11:53:08 · 247 阅读 · 0 评论 -
JAVA基础
转载于三太子敖丙!!!AVL树与红黑树(R-B树)的区别与联系 AVL是严格的平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多; 红黑树是用非严格的平衡来换取增删节点时候旋转次数的降低开销; 所以简单说,查询多选择AVL树,查询更新次数差不多选红黑树 AVL树顺序插入和删除时有20%左右的性能优势,红黑树随机操作15%左右优势,现实应用当然一般都是随机情况,所以红黑树得到了更广泛的应用 索引为B+树 Hashmap为红黑树 为啥redis转载 2020-05-13 11:51:27 · 141 阅读 · 0 评论 -
Zookeeper+eureka+springcloud
转载于三太子敖丙!!!SpringBoot启动流程 new springApplication对象,利用spi机制加载applicationContextInitializer, applicationLister接口实例(META-INF/spring.factories); 调run方法准备Environment,加载应用上下文(applicationContext),发布事件 很多通过lister实现 创建spring容器, refreshContext() ,实现sta转载 2020-05-13 11:49:38 · 414 阅读 · 0 评论 -
SpringMVC
springMVC流程:(1):用户请求发送给DispatcherServlet,DispatcherServlet调用HandlerMapping处理器映射器;(2):HandlerMapping根据xml或注解找到对应的处理器,生成处理器对象返回给DispatcherServlet;(3):DispatcherServlet会调用相应的HandlerAdapter;(4):HandlerAdapter经过适配调用具体的处理器去处理请求,生成ModelAndView返回给Dispatche转载 2020-05-13 11:17:35 · 264 阅读 · 0 评论 -
Spring 面试 复习
Spring框架的七大模块Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。Spring Context:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能。Spring DAO:提供了JDBC的抽象层,还提供了声明性事务管理方法。Spring ORM:提供了JPA、JDO、Hibernate、MyBatis 等ORM映射层.Spring AOP:集成了所有AOP功能Spring Web:提供了基础的 Web转载 2020-05-13 11:07:04 · 175 阅读 · 0 评论 -
Mybatis 原理+缓存
Mybatis原理 sqlsessionFactoryBuilder生成sqlsessionFactory(单例) 工厂模式生成sqlsession执行sql以及控制事务 Mybatis通过动态代理使Mapper(sql映射器)接口能运行起来即为接口生成代理对象将sql查询到结果映射成pojo sqlSessionFactory构建过程 解析并读取配置中的xml创建Configuration对象 (单例) 使用Configruation类去创建sqlSessio转载 2020-05-13 11:45:57 · 115 阅读 · 0 评论