随笔分类 - 面试/算法
摘要:master公式是啥 \(T(N) = a * T(\frac{N}{b}) + O(N^{d})\) master公式有什么用处 用于描述递归行为的时间复杂度 递归求数组最大值, 当规定递归每次将当前处理的数组分成三份做三次递归求出三个最大值,然后返回三个值中最大的数时, 可以用master公式描
阅读全文
摘要:(a + b) / 2 在此式中,若a、b是大数则存在溢出的可能, 因此应该把加法改写为减法就可以规避溢出。 a + (b - a) / 2 然后还可以从位运算角度进行优化 a + (b - a) >> 2
阅读全文
摘要:https://www.cnblogs.com/zhengyun_ustc/p/slowquery1.html
阅读全文
摘要:docker和传统虚拟机的区别? 传统虚拟机是由内核kernel、库lib以及各个应用程序App三层结构构成,虚拟出了完整硬件和整个操作系统,然后再这个OS中运行虚拟机,因此开销较大。 而docker则对传统虚拟机进行了压缩和简化, 容器技术(container)使得不同应用和此应用所必需的库文件被
阅读全文
摘要:虽然是道简单题,我也没有想到最优方法。 题目 给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制: 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其
阅读全文
摘要:Mark-Sweep(标记清除) 顾名思义,对垃圾进行标记然后删除。但是由于删除垃圾的原位置无法再添加新数据,会产生碎片化的问题。 Mark-Compact(标记压缩) 顾名思义,是MS算法的优化,在标记并删除垃圾的同时对有用数据重新规划占用的内存空间,使其聚集在内存最前面,规整地利用好空间,进行了
阅读全文
摘要:HandlerMapping:寻找对应request的handler。 HandlerAdapter:运用了设计模式中的适配器模式,统一调用不同的Handler。 HanderExceptionResolver ViewResolver:将String和Locale解析为View。 RequestT
阅读全文
摘要:分为以下几个步骤: 查看执行计划中的type列:若性能为ALL或者RANGE以下,则需要优化查询; 查看执行计划中的key列:一般为默认优化器所选择的索引,因此照着key列添加索引一般是没问题的。
阅读全文
摘要:共享锁 又称读锁,简称S锁。当一个事务添加共享锁时,其他事务都可以去读,但无法上写锁进行数据的修改。 排他锁 又称写锁,简称X锁。当一个事务添加排他锁时,其他事务都不可以去读或者写。
阅读全文
摘要:聚簇索引:数据和索引存储在一起。 非聚簇索引:数据和索引分别进行存储。
阅读全文
摘要:READ UNCOMMITED 读取未提交内容 READ COMMITED 读取已提交内容 REPEATABLE READ 可重复读 SERIALIZABLE 可串行化
阅读全文
摘要:懒得手打了直接去看Java设计模式:23种设计模式全面解析(超级详细) (biancheng.net) 但是有几个点要注意: 面向对象设计原则虽然被分成了7条,但本质上可以分为5组: 开闭原则:需求改变时,无需推倒重来,直接进行扩展;对扩展开放,对修改关闭 里氏替换+合成复用:尽量使用组合聚合代替继
阅读全文
摘要:B+树特征 1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。 2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 3.所有的中间节点元素都同时存在于子节点,在子
阅读全文
摘要:一个B树首先是一个多叉平衡树。 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女。 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m 相比普通的二叉平衡树,特点是更加“矮胖”,提高了搜索效
阅读全文
摘要:啥是索引? 把数据比作字典的话,索引就是字典的目录。 索引的底层实现一般使用B+tree和hash(默认只是Btree)。 啥事B+树? B树是有一种中序排序树。 B+树是B树的优化。 每个右节点存储了大于等于父节点的数据。 每个左节点存储了小于等于父节点的数据。 特点是所有叶子节点分别存储了所有数
阅读全文
摘要:题目 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己
阅读全文
摘要:原子性 即一个或多个操作要么不执行,要么就全部执行完毕,不会被其他因素打断。类似于数据库的事务。 因此可以通过锁、synchronized来确保。volatile是无法保证复合操作的原子性。 可见性 当多个线程共享一个变量时,若其中一个线程改变变量的值,其他线程立即就能够看到,即为可见性。 Java
阅读全文
摘要:问:有何区别? 标答:第一种方法会产生大量中间值(脏数据),原子性完全被破坏,可能导致引用不正确。 第二种方法虽然也会产生中间值,但是只有0一个初始值(脏数据),因此虽然不具有原子性,但是第二种方法仍然比第一种好得多。
阅读全文
摘要:目前认识到的机制: C++中构造函数和析构函数只会在编译阶段运行一次,无论你定义了多少不同的构造函数,在一般情况下只会让编译器选择其中一个进行执行,且不会调用构造函数内部其他的构造函数。
阅读全文

浙公网安备 33010602011771号