06 2021 档案
摘要:接口和抽象类存在的意义和应用场景的区别 特性 抽象类 可以有实例字段 可以有方法实现 子类非抽象时需要实现所有抽象方法 不可以被实例化 单继承 >is-a 接口 不可以有实例字段 方法不可以有实现(java8以后可以有静态方法和私有方法,java9以后可以有默认方法) 实现接口需要实现所有方法 “多
阅读全文
摘要:封装、继承、抽象、多态分别可以解决那些问题? 面向对象的四大特性,对于他们的定义很熟悉,但是他们解决了哪些问题? 封装 封装 信息隐藏,数据保护 外部仅能通过类提供的方式,访问内部的信息或者数据,对于java来说,是属性字段私有化,访问函数公有,甚至部分属性字段没有的一种结构形式。 解决的问题 可控
阅读全文
摘要:Spring bean创建之循环依赖与三级缓存 循环依赖 多个对象之间互相引用形成环 如果使用普通new方法创建,对象之间会循环创建导致OOM 三级缓存 一级缓存:singletonObjects 二级缓存:earlySingletonObjects 三级缓存:singletonFactories
阅读全文
摘要:线程池中的阻塞队列?阻塞队列的四组API 四组API: | 方式 | 抛出异常 | 返回值 | 阻塞 等待 | 超时等待 | | | | | | | | 添加 | add | offer | put | offer(E e, long timeout, TimeUnit unit) | | 移除 |
阅读全文
摘要:线程池的状态及其处理的技巧 线程的状态 线程池有5种状态: Running,:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理 SHUTDOWN,:线程池处在SHUTDOWN状态时,不接收新任务,但能处理已添加的任务 STOP,:线程池处在STOP状态时,不接收新任务,不处
阅读全文
摘要:创建线程的拒绝策略 对于ThreadPoolExecutor的构造参数,有一个RejectedExecutionHandler参数,用于配置线程池的拒绝策略。 在当前线程阻塞队列已满,工作线程达到最大时,新的线程请求到来就会调用该接口对过量的任务进行处理。 ThreadPoolExecutor默认有
阅读全文
摘要:二分法边界思考(续) 本题思路是使相同长度下序列增长要尽可能慢 package leetCode.动态规划; /** * @author km * @date 2021年06月11日 **/ public class LongestIncreasingSubsequence { public sta
阅读全文
摘要:MySQL的两阶段提交 解决的问题:保证了事务在多个日志间的原子性 在MySQL中存在着两个日志系统:server层的binlog和执行引擎层的redolog,如何保证两个日志的原子性,即要么都提交要么都终止? 在此MySQL使用了两阶段提交: 这里我借用了丁奇大佬的示意图。 两阶段提交保证了原子性
阅读全文
摘要:关于二分法边界的一点思考 边界误用 对于二分搜索区间有两种形式,一种是左闭右开,一种是左闭右闭,区别在于初始右边界的赋值,如果是:right = arr.length 显然是左闭右开,而right=arr.length-1则为左闭右闭,两种区间选择不同导致后续缩小搜索区间也有不同的形式。 需要注意的
阅读全文
摘要:自增索引的优点 主键ID生成方案 数据库自增 随机数 >twitter雪花算法 UUID >UUID生成器 写入数据速度比较 继续插入30万数据: 总体时间占用排名:自增ID > 雪花算法随机ID > UUID 自增ID规则 主键值是顺序的,存储引擎将记录存放到其他记录之后 达到页面最大填充因子的时
阅读全文

浙公网安备 33010602011771号