shihunyewu

云青青兮欲雨,水澹澹兮生烟

Rotate-array-find-min

"旋转数组中查找最小的元素"

现在的不如意都有个不努力的曾经 153. Find Minimum in Rotated Sorted Array 旋转数组即将递增数组拦腰折断,将前半部分移到后半部分之后。寻找最小元素,也就是寻找折点。 这道题目改变了我对二分查找的认识,以前对二分查找死记硬背,认为返回值一定是 nums[m],每次判断之后不是 l = m + 1 就是 h = m - 1。 该题目中的每次...

regular-expression-matching

" 正则表达式匹配 "

有的问题是值得花时间去深究的 10. Regular Expression Matching 递归版本 从题意中得知,一共有三种情况 ”.” 可以匹配任何字符,直接跳过 普通字符,直接匹配 “*” 必须要和前面的字符一起考虑,因此当遍历到字符 c 的时候,检查后一个字符是否为 *,如果为 *,那么就存在两种策略,一种是匹配 0 次,一种是匹配一次,递归调用匹配函数 ...

big-data

"海量数据算法"

总是会想起之前自己的哑口无言 海量数据处理 基本方法,常见的有 Hash 法, Bit-map 法,Bloom filter 法,数据库优化法,倒序索引法,外排序法,Trie 树,堆,双层桶法,以及 MapReduce 法。 BitMap 算法 BitMap 实际上就是用第 n 个 bit 位是否为 1 表示是否存在数字 n 参考 参考1 参考2 参考3 参考4 例题...

Mysql-Isolation

"Mysql 中的隔离级别"

Mysql 中的隔离级别 Mysql 中的隔离级别 三种问题 脏读 读到事务操作的中间结果 不可重复读 事务中第一次读取到的数据集和第二次读取到的数据集不同 幻读 解决可重复读问题时,第一次读取数据时,会将引用到的行数据锁定,直到整个事务结束。但是无法锁定未指定的行。 举例: A 事务,第一次 查询 2019 年之前的记录,得到一个结果集,然后对这个结果集全部做了修改。 ...

reverse-part-linked-list

"翻转部分链表"

链表就地转置之定点部分转置 92. Reverse Linked List II 边界值值得思考 大神版本 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { va...

Longest Substring

"最长子串问题"

自入题海以来,饱受X*最长的子串问题的困扰 3. Longest Substring Without Repeating Characters 该题目求的是最长非重复子串。直接使用暴力方法计算所有的可能子串,时间复杂度是O(n^2)。 想用空间换时间。首先需要记录当前在统计的子串的起始位置 start ,另外要能够判断子串的终止位置,记录最长子串的长度 ret。 现在可以用一个 H...

Simple-Sorted

"简单排序问题"

情况简单的排序方法 75. Sort Colors 总结一下题意就是说数组中只有出现 0,1,2 三个数字,对这个数组排序,禁止使用 api 排序,禁止统计 0 和 1 出现的次数,后按照出现次数依次重新赋值。要求遍历一遍就完成排序。 第一种方法:使用三个指针 l 指针代表从左到右第一个非 0 的元素的位置 h 指针代表从右到左第一个非 2 的元素的位置 i 表示...

JVM-learn

深入理解 JVM 虚拟机

参考书籍为《深入理解 Java 虚拟机》 第 2 章 Java内存区域与内存分配策略 2.2 运行时的数据区域 方法区 虚拟机栈 本地方法栈 Java 堆 程序计数器 2.2.1 程序计数器 当前线程所执行的字节码的行号指示器。 JVM 的多线程中每个线程都有一个独立的程序计数器,它们互不影响,独立存储。这类内存区域被称为”线程私有”的内存。 2.2.2...

DesignPatterns-Note

"常用设计模式"

设计模式离我们并不遥远,JDK 实现以及日常使用的框架中都有它的身影 单例模式 参考 主要特点 系统中只需要一个实例即可,不需要创建很多的实例。 主要注意问题 懒汉模式 饿汉模式 多线程下的加锁,创建单例的时候需要加锁,防止在没有创建实例时,防止两个线程同时调用获取单例方法,这时候可能会创建两个单例。 具体应用场景 spring spring IoC 容器默认是采...

Java-Collections

"Java 集合类的基本使用和内部实现"

每次看都应该有不同的体会 概览 总体上来看集合应该分为两种 Collection 和 Map Collection 列表 ArrayList,可变长数组 LinkedList,基于双向链表实现 Vector,类似于 ArrayList,源码中使用了 synchronize,线程安全 队列 ...