总结
Rookie2Master
CSDN is like shit and is no longer used
展开
-
排序总结--快排&归并&堆排
1.煞笔快排假设我们对数组{7, 1, 3, 5, 13, 9, 3, 6, 11}进行快速排序。首先在这个序列中找一个数作为基准数,为了方便可以取第一个数。遍历数组,将小于基准数的放置于基准数左边,大于基准数的放置于基准数右边。此时得到类似于这种排序的数组{3, 1, 3, 5, 6, 7, 9, 13, 11}。在初始状态下7是第一个位置,现在需要把7挪到中间的某个位置k,也即k位置是两边数的分界点。那如何做到把小于和大于基准数7的值分别放置于两边呢,我们采用双指针法,从数组的两端分别进行比原创 2020-12-22 16:34:11 · 312 阅读 · 0 评论 -
redo log &bin log & undo log联系及区别
一、redo log重做日志作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。二、bin log归档日志(二进制日志)作用:用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。用于数据库的基于时间点的还原。内容:逻辑格式的日志,可以简单认转载 2020-12-15 16:08:37 · 238 阅读 · 0 评论 -
Redis持久化RDB和AOF
Redis持久化Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。1.RDB持久化RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发1)触发机制手动触发分别对应save和bgsave命令·save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用·bgsave命令:Redis进程执行fork操转载 2020-12-14 22:23:12 · 103 阅读 · 0 评论 -
AQS详解- 以ReentrantLock+Condition 为例
AQS详解(ReentrantLock+Condition)本文转载自 微信公众号: 鄙人薛某 的原创文章,其中加了一些个人的理解。前言如果想深入研究Java并发的话,那么AQS一定是绕不开的一块知识点,Java并发包很多的同步工具类底层都是基于AQS来实现的,比如我们工作中经常用的Lock工具ReentrantLock、栅栏CountDownLatch、信号量Semaphore等,而且关于AQS的知识点也是面试中经常考察的内容,所以,无论是为了更好的使用还是为了应付面试,深入学习AQS都很有必要。转载 2020-12-12 19:55:03 · 476 阅读 · 0 评论 -
理解数据库的常见范式
1.第一范式(1NF)属性(列)不可再分,确保每列保持原子性。只要能放进数据库,一般都满足第一范式。2.第二范式(2NF)2NF在1NF的基础之上,消除了非主属性对于码(候选码)的部分函数依赖。需要注意的是,这里的码是组合码,比如(学号,课程);分数完全依赖于这个码,但是姓名只依赖于学号,也就是码的一部分,所以不满足2NF!3. 第三范式(3NF)3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。如下转载 2020-12-10 10:11:05 · 136 阅读 · 0 评论 -
设计模式总结
设计模式常见面试题汇总1.说一下设计模式?你都知道哪些?答:设计模式总共有 23 种,总体来说可以分为三大类:创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )。创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式 关注于对象的创建,同时隐藏创建逻辑 结构型模式: 适配器模式、过滤器模式、装饰模式、享元模式、代理模式、外观模式、组合模式、桥接模式 关注类和对象转载 2020-12-09 14:18:00 · 156 阅读 · 1 评论 -
证明-快慢指针找链表环
快慢指针证明(1)先证明两个指针可以相遇1、如果链表没有环,那么快指针比慢指针先到达尾部**(null)**。2、如果链表有环的话,因为快指针走的比慢指针快,所以在环中相遇的过程可以看作是快指针从环后边追赶慢指针的过程。用递归法证明,快慢指针一定会相遇:(1)快指针与慢指针之间差一步。此时继续往后走,慢指针前进一步,快指针前进两步,两者相遇。(2)快指针与慢指针之间差两步。此时继续往后走,慢指针前进一步,快指针前进两步,两者之间相差一步,转化为第一种情况。(3)快指针与慢指针之间差N步。此时继原创 2020-11-28 11:45:29 · 330 阅读 · 0 评论 -
二叉树非递归遍历访问总结
传送门把原本的递归形式转换成迭代的形式,但是整体的思想还是不变的,其实就是把递归的过程 翻译 成while + if 。LeetCode94.二叉树的中序遍历(非递归)递归过程:找到最左子树遇到p的左节点NULL的递归返回上一层,访问节点p递归p的右节点方法1. public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans = new ArrayList<&原创 2020-11-15 16:46:04 · 249 阅读 · 0 评论 -
LeetCode回文问题总结,回文子串,回文子序列等
1. LeetCode 5. 最长回文子串(求长度)传送门题目: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。输入: “babad”输出: “bab” 注意: “aba” 也是一个有效答案。假设字符串s的长度为length,建立一个length*length的矩阵dp。令 dp[i][j] 表示 S[i] 至 S[j] 所表示的子串是否是回文子串。当 i == j,dp[i][j] 是回文子串(单字符都是回文子串);当 j -原创 2020-11-05 09:41:01 · 833 阅读 · 0 评论