![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java面试
Dismay十二
这个作者很懒,什么都没留下…
展开
-
Mysql锁的算法Record Gap Next-Key
前言阅读姜承尧《Mysql技术内幕》265页行锁的三种算法笔记总结。1.行锁的三种算法1.Record Lock:单个行记录上的锁,锁住这个索引,(数据在聚集索引的叶子上)也就是这行记录。2.Gap Lock:间隙锁,锁定一个范围,但不包含记录本身。3.Next key Lock:Gap Lock + Record Lock2.核心知识点Innodb对于行的查询都采用Next Key Lock当查询的索引是唯一索引或主键索引时,自动降级为Record Lock当查询的所以为辅助索引时,对前原创 2020-09-02 10:19:09 · 193 阅读 · 0 评论 -
Spring AOP
文章目录1.JDK动态代理1.1使用1.2局限性2.CGLIB生成代理3.小结4.AspectJAOP(Aspect-OrientedProgramming,面向切面编程),采用横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视,事物管理,安全检测,缓存)Spring AOP使用纯java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。1.JDK动态代理1.1使用可参考链接:http://c.biancheng.net/view/4269.html1.原创 2020-07-06 10:35:32 · 167 阅读 · 0 评论 -
Spring容器中Bean的生命周期,实际代码角度(非源码)
初始代码情况:配置文件:类文件:第一步:bean对象实例化。即执行Man中的Man方法进行初始化。第二步:封装属性。配置文件:第三步:如果Bean实现BeanNameAware则执行setBeanName()方法重写里面的setBeanName并执行。第四步,第五步与第三步相同,实现接口,执行方法。第六步:如果存在类实现BeanPostProcessor,即该Bean关联了BeanPostProcessor。注意:1.不是man Bean实现了BeanPostProcess.原创 2020-07-04 17:34:48 · 144 阅读 · 0 评论 -
反射机制
前言需要了解反射机制的前提,首先得了解编译期和运行期两个概念。编译期:由.java到.class的过程。运行期:执行了.class1.概念反射的概念:在运行期,对于任意一个类都能获取到他的所有属性和方法,并且任意一个对象都能调用其任意一个方法。2.作用运行时判断对象所属的类。运行时构造一个类的对象。运行时判断一个类所具有的成员变量和方法。运行时调用任意一个对象的方法。3.使用场景对于开发框架通用性的补充说明:java中的对象有两种类型:1.编译时类型和运行时类型。编译时类型指原创 2020-06-19 09:45:05 · 417 阅读 · 0 评论 -
java中的传值方式
https://blog.csdn.net/bjweimengshu/article/details/79799485文章链接直跳先看完这篇文章。个人理解:只是java中的传递方式,不像c和c++直接把原地址给形参。java是对该地址先进行了一次复制,然后把复制品给了形参。其实按本质来说效果都是一样的。拿原文中的钥匙的那个例子来说,java就是把钥匙复制一次给了别人,别人照常能进入家里,改值什么的。c你把原钥匙给别人,别人也能进家里。不用纠结到底是值传递,还是地址传递,这个都是因为JVM造成的。只原创 2020-06-17 15:07:54 · 161 阅读 · 0 评论 -
设计模式-------观察者模式
文章目录1. 目的2. 动机3. 优缺点4. 应用场景5. 原理6.实现7.实例8. 总结转载观察者模式主要用于处理对象间的一对多的关系,是一种对象行为模式。该模式的实际应用场景比较容易确认,当一个对象状态发生变化时,所有该对象的关注者均能收到状态变化通知,以进行相应的处理。本文希望通过简单的介绍和分析,能让读者对观察者模式有一个简单直观的认识和感知,以便在实际开发中根据需要灵活运用。1. 目的建立对象间一对多的关联关系,并能使一个对象的变化被所有关联对象感知。2. 动机建立一套低耦合的消息触转载 2020-06-14 10:47:56 · 300 阅读 · 0 评论 -
设计模式-------适配器模式
文章目录1.目的2.动机3.优缺点4.分类5.主要用途及场景6.原理7.实现7.1 类适配器7.2 对象适配器7.3 类适配器实例——排序7.4对象适配器实例——排序转载适配器主要用于接口的转换或者将接口不兼容的类对象组合在一起形成对外统一接口,是一种结构性模式,其本质是是一个中间件,适用于类及其对象。本文希望通过简单的介绍和分析,能让读者对适配器模式有一个简单直观的认识和感知。1.目的对现有的类的接口进行转换以符合新的需求。2.动机通过转换或者组合,间接复用已有功能模块完成需求。3.优缺点转载 2020-06-14 10:23:34 · 161 阅读 · 0 评论 -
红黑树
红黑树的基本特性1.根节点是黑色的。2.每个叶子节点(null)都是黑色的。3.两个红色节点不想领。4.从一个节点出发,到他所有的子孙节点路径上的黑色节点数一致。红黑树的插入新插入点都是红色。插入情况可分为三种。(二叉查找树插入,跟平衡二叉树一样只是一种平衡策略,不让树严重倾斜,变成单链表的情况。)1.若为根节点,此节点直接涂黑。2.如果插入节点的父节点为黑色,不做任何操作。3.若父节点为红色,再根据上图,叔节点颜色作出操作。附加:变色操作红红:插入节点的,父,叔改为黑色,祖父改红原创 2020-06-08 15:03:31 · 103 阅读 · 0 评论 -
冷备份与热备份
文章目录1.冷备份1.1冷备份(off, 慢, 时间点上恢复)1.2 冷备份的优点:1.3 冷备份的缺点:2.热备份2.1 热备份 (on, 快)2.2 热备份的优点:2.3热备份的缺点:1.冷备份1.1冷备份(off, 慢, 时间点上恢复)冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最安全的方法。1.2 冷备份的优点:1.是非常快速的备份方法(只需拷贝文件)2.容易归档(简原创 2020-06-07 15:59:16 · 230 阅读 · 0 评论 -
事物四大隔离级别以及并发事物带来的问题
1.并发事物带来的问题1.更新丢失当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题--最后的更新覆盖了由其他事务所做的更新。例如,两个程序员修改同一java文件。每程序员独立地更改其副本,然后保存更改后的副本,这样就覆盖了原始文档。最后保存其更改副本的编辑人员覆盖前一个程序员所做的更改。如果在一个程序员完成并提交事务之前,另一个程序员不能访问同一文件,则可避免此问题。2. 脏读一个事务正在对一条记录做修改,在这个事务完成并提交前原创 2020-06-07 15:49:59 · 439 阅读 · 0 评论 -
索引失效规则
全值匹配我最爱,最左前缀要遵守。(索引建立最好是所有过滤条件都组合建立复合索引,使用索引时,要连续)带头大哥不能死,中间兄弟不能断。(这句就是最左前缀法则的核心,后面均是导致索引失效的原因)索引列上少计算,范围之后全失效。(建了索引的列,就不要使用计算,包括类型转换。不能使用大于小于一旦使用,后方的索引列将无法使用)LIKE百分写最右,覆盖索引不写星。(当要用到模糊查询时,百分号写右边能用到索引。若是一定要将百分号写左边,那么尽量使用覆盖索引,就是不要写select *,而是写出select 具体的列原创 2020-06-07 13:17:01 · 306 阅读 · 0 评论 -
mysql存储引擎对比
外键影响效率,因为每插入一条,就要扫描一次外表,一般正常开发中是没有的。前四项能有个大概就行。对比项MyISAMInnoDB主外键不支持支持事务不支持支持行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只锁某一行,不对其它行有影响。适合高并发的操作缓存只缓存索引,不缓存真实数据。(就算命中还是要去查)不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响表空间小大关注点性能事务、原创 2020-06-07 13:17:24 · 120 阅读 · 0 评论 -
JVM---垃圾收集器
垃圾收集器1.1 Serial 收集器1.2 ParNew 收集器1.3 Parallel Scavenge 收集器1.4.Serial Old 收集器1.5 Parallel Old 收集器1.6 CMS 收集器1.7 G1 收集器如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。虽然我们对各个收集器进行比较,但并非要挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合自己的垃圾收集器。试想一下:如原创 2020-06-07 13:18:11 · 78 阅读 · 0 评论 -
AQS
AQS核心:CAS自旋(死循环)队列(存放失败的)ReentranLock实现互斥锁原创 2020-06-07 13:17:36 · 81 阅读 · 0 评论 -
JUC辅助类
详情链接https://www.taodudu.cc/news/show-60458.html文章目录前言1.CountDownLatch2.CyclicBarrier3. Semaphore(信号灯)前言JUC中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时Lock锁的频繁操作。这三种辅助类为:CountDownLatchCyclicBarrierSemaphore1.CountDownLatch下图是Jdk1.8中解释的CountDownLatch类功能,简单而原创 2020-06-07 13:18:34 · 286 阅读 · 0 评论 -
volatile
文章目录1.CPU缓存结构2.JMM内存模型3.JMM中原子操作2.3为什么两个线程执行加1000加不到20001.CPU缓存结构JMM模型与CPU缓存架构类似。2.JMM内存模型JMM模型是一个抽象的概念3.JMM中原子操作2.3为什么两个线程执行加1000加不到2000若两个线程read到counter=0,然后load进工作内存,执行引擎use,执行+1操作,加完assign会工作内存(不是原值修改,会新开个空间),这时因为缓存一致性协议,阻止两个及以上处理器修改主内存。原创 2020-06-07 13:18:23 · 78 阅读 · 0 评论 -
线程池
文章目录前言1.为什么有线程池2.核心2.1 三大方法2.1.1 基本使用2.2 7大参数2.3 调度逻辑,(7大参数之间的关系)2.4 拒绝策略前言线程池的核心为,三大方法,三大方法的底层为ThreadPoolExecutor,该方法有七个参数,这七个参数中的最后一个参数handler,为拒绝策略,有四种值。与callable等类的关系图1.为什么有线程池不会反复创建销毁线程,造成资源的浪费。方便管理,不会造成OOM异常。降低GC的压力。(不会无休止的创建大量的线程)就是一个池子装了线原创 2020-06-07 13:17:53 · 70 阅读 · 0 评论 -
HashMap
HashMap第一部分:基础入门1.数组的优劣2.链表的优劣3.4.散列表5.哈希第二部分:HashMap原理讲解1.HashMap的继承体系结构2.Node数据结构分析3.底层存储结构4.put数据原理分析5.Hash碰撞6.什么是链化7.jdk8为什么引入红黑树8.扩容原理第三部分:手撕源码1.HashMap核心属性分析1.为什么数组大小为2的倍数?2.负载因子为什么是0.75.3.什么时候树化2.构造方法分析2.1 4个构造方法:2.1.1第一个:2.1.2第二个2.1.3第三个2.1.4第四个3.H原创 2020-06-07 13:16:25 · 625 阅读 · 0 评论