- 博客(6)
- 收藏
- 关注
原创 力扣hot100
对于该数组, 他缺失的第一个正整数的范围为[1, N + 1], 所以我们可以先将所有的非正整数都赋值为N + 1来使该数组全为正整数。最后遍历数组查找仍然为正数的值, 第一个出现的正数的索引值 + 1就是我们要找的数, 若是没有正数则说明1到N的数都存在, 答案就是N + 1。本题除了目标元素只出现一次外, 其余元素均出现了两次, 可以使用异或操作来消除相同的元素, 最后剩下的就是答案。除了暴力解法还可以使用哈希表记录已经遍历过的元素, 用O(1)的时间复杂度来进行查找以遍历过的元素。
2025-09-19 10:48:16
537
原创 SQL中的EXPLAIN关键字会显示哪些信息
分析 SQL 语句是优化查询性能的关键手段。不同数据库(如 MySQL、PostgreSQL、SQLite 等)的输出格式略有差异,但核心信息相似。
2025-08-09 09:53:31
593
原创 MySQL索引/联合索引失效的几种情况
WHERE a = 1 GROUP BY|ORDER BY c -- 字段a可以使用索引, 字段c不行。WHERE a = 1 GROUP BY|ORDER BY b -- 字段a, b都能使用索引。WHERE a = 1 AND b = 2 AND c = 3 -- 正常使用索引。WHERE a = 1 AND b = 2 -- 正常使用索引。-- 缺少 a 条件。
2025-08-07 15:34:29
620
原创 数据库相关八股文
局促索引, 它的特点就是数据与索引存放在一起, b+树索引结构的叶子节点存放了整行数据, 而且在一张表中, 聚簇索引有且只有一个, 默认主键索引就是聚簇索引。RDB是Redis的快照持久化方式, 通过周期性的快照将数据保存到磁盘, 占用更少的磁盘空间和CPU资源, 适用于数据的备份和恢复, 但可能存在数据丢失的风险。所谓回表查询, 指的就是, 在执行一条SQL语句的时候, 会根据二级索引去检索出对应的主键值, 然后再根据主键值到聚簇索引中查询出对应的数据, 这个过程就叫回表查询。
2025-08-06 10:29:30
277
原创 多线程相关八股文
因为在java内存模型中,有工作内存和主内存,每个线程都有自己的工作内存,里边存储变量的副本,当对一个普通变量进行写操作时,不会立即同步到主内存,因此其他线程不能立即看到最新的值,这就是内存可见性问题。通过volatile关键字修饰的变量可以解决这个问题,JVM底层是通过内存屏障来实现,当对一个变量进行读取时,插入读屏障,表示先从主内存读取,当对一个变量进行写入后,插入写屏障,表示立即同步到主内存,这样就解决了可见性问题,保证了数据一致性。适用于读大于写的场景,相比于直接加锁,它的性能更高。
2025-08-06 10:28:26
1640
原创 javaSE相关八股文
首先String本身被设计为不可变保存字符串的数组被final修饰且私有, 并且String类没有暴露修改这个字符串的方法String被final修饰导致其不能被继承, 进而避免了子类破坏String不可变HashMap的长度选择为2的N次方是为了提高散列算法的效率和分布均匀性, 通过使用2的幂次方作为长度, 可以确保哈希码的高位和低位可以均匀参与到散列计算中, 减少哈希冲突的发生, 并提高散列算法的效率和性能。
2025-08-06 10:25:49
315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅