面试原理
文章平均质量分 51
包含各部分原理
学海无涯o
将学习变成一种习惯.
展开
-
CountDownLatch、CyclicBarrier 复习
1.CountDownLatchCountDownLatch概念CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。CountDownLatch的用法CountDownLatch典型用法:1、某一线程在开始运行前等待n个线程执行完毕原创 2021-12-12 15:52:37 · 106 阅读 · 0 评论 -
Java 引用的复制,深复制和浅复制之间的区别
引用复制两个引用指向同一个对象Person p = new Person(23, "zhang");Person p1 = p; System.out.println(p ==p1); //truep的修改会导致p1修改(不管是基本类型还是应用类型),反之一样无论深复制还是浅复制都会新创建一个对象,而引用不会创建对象浅拷贝:拷贝对象和原始对象的引用类型引用同一个对象public class ShallowCloneExample implements Clonea.原创 2021-02-26 10:19:54 · 260 阅读 · 0 评论 -
SpringBoot使用Redis做缓存,@Cacheable、@CachePut、@CacheEvict等注解的使用
缓存注解的使用@Cacheable从缓存中查询指定的key,如果有,从缓存中取,不再执行方法.如果没有,则执行方法,并且将方法的返回值和指定的key关联起来,放入到缓存中。参数: value缓存名、 key缓存键值、 condition满足缓存条件、unless否决缓存条件参数 解释 example value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 例如: @Cacheable(value=”mycache”) @Cacheable转载 2021-02-22 12:54:03 · 1382 阅读 · 0 评论 -
Redis如何持久化
持久化 Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上RDB 持久化将某个时间点的所有数据都存放到硬盘上。可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。如果系统发生故障,将会丢失最后一次创建快照之后的数据。如果数据量很大,保存快照的时间会很长。 AOF 持久化...原创 2021-01-14 11:38:45 · 52 阅读 · 0 评论 -
单例模式
面试复习一下,害怕面试让手写模式,而忘记怎么写了1.饿汉式class SingIeton(){ private SingIeton(){} private final static SingIeton instance=new SingIeton(); public static SingIeton getInstance(){ retu...原创 2019-09-16 15:45:22 · 112 阅读 · 0 评论 -
drop table,delete table;,truncate table三种删除表的区别
1.速度上,drop>truncate>delete2.truncate和delete不删除表的结构,drop删除删除表的结构和被依赖的约束,触发器,索引 ; 存储过程/函数将被保留,但是变为invalid状态3.delete 会写日志,有备份可以回滚,truncate 不会写日志,不能回滚,因此慎用4.delete删除表中数据不释放空间,truncate和drop...原创 2019-11-15 11:01:41 · 3805 阅读 · 0 评论 -
MySQL的存储引擎InnoDB采用索引类型为B+树,而不是AVL,B树,红黑树?
B+树 优点: 1.B+树的磁盘读写代价低,更少的查询次数 2.B+树查询效率更加稳定 3.B+树有利于对数据库的扫描二叉树,平衡二叉树,红黑树等都是只有左右两个结点,IO次数更多B+树是B树的升级版,只是把非叶子节点冗余一下,这么做的好处是为了提高范围查找的效率,解决数据库遍历效率低下问题B+树:...原创 2019-11-16 18:11:30 · 681 阅读 · 0 评论 -
密集索引与稀疏索引区别
区别密集索引文件中的每个搜索码值都对应一个索引值 稀疏索引文件只为索引码的某些值建立索引项密集索引:叶子节点保存的不只是键值,还保存了位于同一行记录里的其他列的信息,由于密集索引决定了表的物理排列顺序,一个表只有一个物理排列顺序,所以一个表只能创建一个密集索引 稀疏索引:叶子节点仅保存了键位信息以及该行数据的地址,有的稀疏索引只保存了键位信息机器主键mysam存储引擎,不管是主键...原创 2019-11-16 19:54:40 · 568 阅读 · 0 评论 -
如何从海量Key里查询出某一固定前缀?
1.直接查询一次性返回所有数据,如果数据比较多的话,会卡顿原创 2019-11-17 17:18:43 · 127 阅读 · 0 评论 -
Redis实现分布式锁
分布式锁实现 在分布式场景下,无法使用单机环境下的锁来对多个节点上的进程进行同步。可以使用 Redis 自带的 SETNX 命令实现分布式锁,除此之外,还可以使用官方提供的 RedLock 分布式锁实现。...原创 2019-11-17 17:45:53 · 153 阅读 · 0 评论 -
Redis同步机制
原创 2019-11-17 17:48:24 · 152 阅读 · 0 评论 -
java并发 ----如何中断线程
如果一个线程的 run() 方法执行一个无限循环,并且没有执行 sleep() 等会抛出 InterruptedException 的操作,那么调用线程的 interrupt() 方法就无法使线程提前结束。但是调用 interrupt() 方法会设置线程的中断标记,此时调用 interrupted() 方法会返回 true。因此可以在循环体中使用 interrupted() 方法来判...原创 2019-11-24 18:18:08 · 94 阅读 · 0 评论 -
mvc和三层架构到底有什么区别
mvc:m就是model层,v就是view ,c就是controller ,如果不用框架,只用servlet,那么controller就是我们自己写的servlet代码,然后view就是jsp代码,model通常就是一个javaBean, 在service和dao层来回携带数据;相当于model 包括service和dao层。三层指的是controller 层,service层 dao三层三层:mvc:...原创 2020-09-30 11:28:28 · 351 阅读 · 0 评论 -
SpringMVC框架基于组件执行流程
SpringMVC的执行过程1.浏览器url发送请求,在web.xml中被 DispatherServlet 前端控制器捕获,该 Servlet 并不处理请求,而 是把请求转发出去。转发的路径是根据请求 URL,匹配@RequestMapping 中的内容2.匹配到了后,执行对应方法。该方法有一个返回值3.根据方法的返回值,借助 InternalResourceViewResolver视图解析器 找到对应的结果视图4.渲染结果视图,响应浏览器SpringMVC基于组件执行流程列原创 2020-10-01 16:11:50 · 117 阅读 · 0 评论 -
MySql
-- ddl 数据定义语言 建库,建表 1.create database if not exists 数据库名; 2.create database 数据库名 character set 字符集; -- 创建数据库并指定字符集3.show create database db3; -- 查看某个数据库的定义信息4.alter database 数据库名 default ...原创 2020-04-10 22:24:22 · 216 阅读 · 0 评论 -
happens-before的八大原则
原创 2019-11-25 12:44:11 · 1038 阅读 · 0 评论 -
重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁
重量级锁如果你学过多线程,那么你肯定知道锁这个东西,至于为什么需要锁,我就不给你普及了,就当做你是已经懂的了。我们知道,我们要进入一个同步、线程安全的方法时,是需要先获得这个方法的锁的,退出这个方法时,则会释放锁。如果获取不到这个锁的话,意味着有别的线程在执行这个方法,这时我们就会马上进入阻塞的状态,等待那个持有锁的线程释放锁,然后再把我们从阻塞的状态唤醒,我们再去获取这个方法的锁。这...转载 2019-11-25 09:59:22 · 164 阅读 · 0 评论 -
synchronized的对象锁和类锁
原创 2019-11-23 11:58:01 · 95 阅读 · 0 评论 -
如何实现处理线程的返回值
原创 2019-11-22 19:00:33 · 123 阅读 · 0 评论 -
notify与notifyAll的区别
原创 2019-11-22 18:58:51 · 131 阅读 · 0 评论 -
http1.0与http1.1和http2.0的区别
http1.0: 非持久连接,每一次请求响应都会建立新的连接 http1.1 : 持久连接,一次连接中处理多个http请求http2.0: 1.用二进制格式代替文本格式,实现方便且健壮 ---------》二进制分帧 2.http1.1的首部带有大量信息,而且每次都有重复发送,而http2.0 维护字段表...原创 2019-11-10 10:51:33 · 113 阅读 · 0 评论 -
HTTP状态码-----详细
你认为的状态码: 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求; 2xx:请求成功; 3xx:重定向; 4xx:客户端错误; 5xx:服务器错误;详细状态码:1xx: 100:客户端继续发送请求的剩余部分,如果请求完成,忽略这个响应2xx: 200: OK 204:返回的响应报文没有实体内容,一般在只需要从客户端往服...原创 2019-11-10 10:20:30 · 117 阅读 · 0 评论 -
post和get的区别
1.get在浏览器回退时是无害的,而post会再次请求2.get产生的url地址可以被收藏,而post不会3.get请求会被浏览器主动缓存,而post不会,除非手动设置4.get请求只能进行url编码,而post支持多种编码方式5.get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留6.get 请求在url中传送的参数有长度限制,而post没有7.对参数...原创 2019-11-08 11:18:47 · 106 阅读 · 0 评论