sql窗口函数
窗口函数相关注意事项汇总
Author: Carissa ⛽️
Date: Mar.3 2024 😈
1 基础用法1rank() over (partiton by col order by col)
2 注意事项
不能用在 where 子句中
Java(5)Lambda
理解 Lambda 表达式1 Lambda 基本信息Lambda 表达式,也可称为闭包,是JDK8 的新特性,可以取代大部分匿名内部类。
Lambda 允许把代码块(匿名方法)作为参数传递到匿名方法或普通方法中,便于后续执行。
其语法格式如下:
12(params) -> expression;(params) -> {expression;};
(params) 即 Lambda 表达式的参数列表,如果只有一个参数,可以省略括号;如果没有参数,则需要空括号(如下),-> 是 Lambda 运算符,-> 后是要执行的代码
1234()-> System.out.println("hello world");List<String> arrs = Arrays.asList("aaa", "bbb");arrs.forEach(a -> System.out.println(a));
比如说,经常在算法中使用的 Arrays.sort() 自定义实现Comp ...
Java(4)泛型
泛型 Generics
Author: Corissa
Date: Dec.31 2023 🎆
1ArrayList<E> extends AbstractList<E>
编译器可以对泛型参数进行检测,通过泛型参数可以指定传入对象的类型
1 分类泛型类,泛型接口,泛型方法
1.1 泛型类在实例化泛型时,必须指定具体类型
12345678910111213// 泛型类public class Generic<T>{ private T key; public Generic(T key) { this.key = key; } public T getKey(){ return key; }}// 实例化Generic<Character> generic = new Generic<Character>();
1.2 泛型接口泛型接口在子类实现时,可以选择实现或者不实现
1234567891011 ...
JVM(1) 内存
JVM 内存区域划分
Author: Corissa
Date: Dec 30 2023
1 运行时数据区域
JVM 在执行 Java 程序时会将管理的内存划分成多个不同的数据区域,其区域划分在 JDK1.7和1.8 有所不同(图源 JavaGuide):
可以看到在 JDK 1.8 中,运行时常量池被放置到了本地内存中。
这几个区域里,线程私有的有:虚拟机栈、本地方法栈和程序计数器;线程共有的有堆,方法区和直接内存区。
1.1 程序计数器
唯一一个不会出现 OutOfMemoryError 的区域
程序计数器可以看作是程序行号指示器,字节码解释器工作时依靠改变程序计数器来读取下一条需要执行的指令,实现代码流程的控制。
程序计数器是线程私有的,因为在线程切换后,程序需要回到正确的位置执行,为了避免线程之间的相互影响,每个线程有独立的程序计数器,独立存储。
1.2 Java 虚拟机栈
注意对比 StackOverFlowError & OutOfMemoryError
除了一些 Native 方法是通过本地方法栈实现的,其他所有方法都是通过栈来实现的。
Jav ...
Java对比项(3) 基本数据类型&包装类
基本数据类型 & 包装类
Author: Corissa 👵
Date: Dec.29 2023
重点需要掌握🏁:
理解 自动装箱/拆箱
包装类的缓存机制
为什么需要基本数据类型
1 基本数据类型和包装类的基本回顾
基本数据类型 8 种
byte (1 byte), char (2 byte), short (2 byte), int (4 byte), long (8 byte), float (4 byte), double (8 byte), boolean
对于 boolean,官方文档未明确定义,依赖于 JVM 厂商的具体实现。逻辑上理解是占用 1 位,但是实际中会考虑计算机高效存储因素。
8 种基本数据类型都有对应的包装类
Byte, Character, Short, Integer, Long, Float, Double, Boolean
基本数据类型 vs 包装类型
用途
包装类型可以用于泛型,而基本类型不可以
基本数据类型的使用场景比较局限,容器存储时也不能存储基本数据类型。
存储方式
基本数据类型的局部变量存储在 Jav ...
Java对比项(2) String&StringBuilder&StringBuffer
String & StringBuilder & StringBuffer
最熟悉的一集
Author: Corissa
Date: Dec.29 2023
重点需要掌握🏁:
理解 字符串 的设计,分类和实现
String 相关类的演进
JVM 对象缓存机制及相关优化
通过 String 学习基本的线程安全设计与实现
1 通用分析
String:
是 Java 中非常重要的类,提供了 构造和管理字符的基本逻辑。
String 是 Immutable 类,其类和属性都被声明为 final。
保存字符串的数组被 final 修饰且为private,并且String 类没有提供/暴露修改这个字符串的方法。
String 类被 final 修饰导致其不能被继承,进而避免了子类破坏 String 不可变。
由于其不可变性,在对 String 对象实例做拼接、裁剪等操作时都会产生新的 String 对象。当需要大量对字符串进行修改操作时,往往会影响到应用性能。
StringBuffer:
是字符串的可变类,且是线程安全的 (通过 synch ...
Java对比项(1) Exception&Error
Exception & Error 运行时异常 & 一般异常
长得一样怎么实际上天差地别 🦹♀️
Author: Corissa
Date: Dec.28 2023
重点需要掌握🏁:
理解 Throwable, Exception, Error 的设计和分类
掌握常见的子类,知道如何自定义异常
掌握实操中的元素和语法 (try-catch-finally, try-with-resource, multiple catch, throw, throws, AutoCloseable, Closeable )
1 对比分析Error & Exception 相同点
二者都继承了 Throwable 类,只有这个类型的实例才能被抛出 (throw) 或者捕获 (catch)。
他们是异常处理机制的基本组成类型。
源码中对 Throwable 类的描述如下:
The Throwable class is the superclass of all errors and exceptions in the Java language. Only obje ...
leetcode212 word-search-ii
Leetcode 212. 单词搜索II
Author: Carissa ⛽️
Date: Dec.28 2023 😈
Link: 212. 单词搜索 II - 力扣(LeetCode)
1 题目给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。
单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。
提示:
m == board.length
n == board[i].length
1 <= m, n <= 12
board[i][j] 是一个小写英文字母
1 <= words.length <= 3 * 10^4
1 <= words[i].length <= 10
words[i] 由小写英文字母组成
words 中的所有字符串互不相同
示例 1:
输入: board = [[“o”,”a”,”a”,”n”],[“e”,”t”,”a”, ...


