Redis 的数据过期策略 Redis 采用 「惰性删除 + 定期删除」 两种策略相结合的方式,在 CPU 性能开销 与 内存占用 之间取得平衡。 --- 一、惰性删除(Lazy Expiration) 当客户端访问或修改某个键时,Redis 会在操作前调用 函数检查该键是否已过期: - 若已过期: Redis 会立即删除该键,然后向客户端返回 。 删除方式由配置项 决定: - 若开启( ),则采
缓存穿透 缓存穿透指的是:一个缓存和数据库中都不存在的数据,由于数据库无法写入缓存,导致频繁请求直接打到数据库,从而造成数据库压力过大甚至被“打穿”。 常见的解决方法包括:缓存空值 或 布隆过滤器。 布隆过滤器由一个全 0 的位图数组和 n 个哈希函数组成。当一个数据在请求缓存前,会先经过布隆过滤器。过滤器会通过 n 个哈希函数计算出 n 个哈希值,再分别对数组长度取模,并将对应的数组下标置为 1
P1439 【模板】最长公共子序列(洛谷题面) 题目 题目描述: 给出 的两个排列 和 ,求它们的最长公共子序列。 输入格式: 第一行是一个数 。 接下来两行,每行为 个数,为自然数 的一个排列。 输出格式: 一个数,即最长公共子序列的长度。 数据范围与说明: - 对于 的数据, ; - 对于 的数据, 。 输入输出样例 #1 输入: 输出: 题意 给定 的两个排列 、,求它们的最长公共子序列(L
P2543 题目 题目描述: 输入格式: 输入文件中包含两个字符串X和Y。当中两字符串非0即1。序列长度均小于9999。 输出格式: X和Y的最长公共子序列长度。 数据范围与说明: 输入输出样例 #1 输入: 输出: 输入输出样例 #2 输入: 输出: 代码
蓝桥杯 2023 岛屿个数 题目描述 给定 组测试数据,每组数据是一张 的二值地图,字符 表示陆地,字符 表示海洋,地图之外视为海水。两个相邻的 (上、下、左、右四个方向)属于同一个岛屿。若某个岛屿完全被另一个岛屿包围,则称其为子岛屿;统计时只需统计最外层岛屿的数量,子岛屿不计入答案。 输入格式 第一行一个整数 。 接下来每组数据: - 第一行两个整数 ; - 接下来 行,每行一个长度为 的字符串
Synchronized 与 ReentrantLock 的区别 :隐式锁,JVM 自动加锁 / 释放锁 :显式锁,需要手动 / ReentrantLock 本质上是基于 AQS 实现的。 synchronized是非公平锁 然后ReentrantLock 有公平锁有非公平锁 ReentrantLock 支持中断 还有超时获取锁 | | synchronized | ReentrantLock |
P1030(洛谷题面) 题目 题目描述: 给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 )。 输入格式: 共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。 输出格式: 共一行一个字符串,表示一棵二叉树的先序。 数据范围与说明: 【题目来源】 NOIP 2001 普及组第三题 输入输出样例 #1 输入: 输出: 题意 简述:
P8195 题目 题目描述: 传智专修学院给了小智一个仅包含小写字母的字符串 $s$,他想知道,里面出现了多少次子串 呢。 我们称一个字符串 $t$ 是 $s$ 的子串,当且仅当将 $s$ 的开头若干个(可以为 0 个)连续字符和结尾若干个(可以为 0 个)连续字符删去后,剩下的字符串和 $t$ 相同。例如,我们称 是 的子串,但 不是 的子串。 输入格式: 输入只有一行一个字符串,表示字符串 $
P8196(洛谷题面) 题目 题目描述: 给定一个长度为 $n$ 的数列 $a$,对于一个有序整数三元组 $(i, j, k)$,若其满足 $1 \leq i \leq j \leq k \leq n$ 并且 $ai +aj = ak$,则我们称这个三元组是「传智的」。 现在请你计算,有多少有序整数三元组是传智的。 输入格式: 本题单测试点内有多组测试数据。 输入的第一行是一个整数 $T$,表示数
P8637(洛谷题面) 题目 题目描述: 有 $N$ 个瓶子,编号 $1 \sim N$,放在架子上。 比如有 $5$ 个瓶子: $$2,1,3,5,4$$ 要求每次拿起 $2$ 个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: $$1,2,3,4,5$$ 对于这么简单的情况,显然,至少需要交换 $2$ 次就可以复位。 如果瓶子更多呢?你可以通过编程来解决。 输入格式: 第一行:一个正整