索引的失效情况

sql层面:使用模糊查询、函数、计算、隐式转换、负向查询

系统层面:条件查询大于30%数据量,可能会优化为全表扫描

redis的应用常见

缓存:存ak、存业务数据

限流:滑动窗口(zset)、令牌桶(string)

消息队列(已优化)、分布式锁(Redisson)

redis的内存淘汰和过期策略

过期策略:对于设置了过期时间的key进行的过期淘汰策略

  1. 惰性删除:key每次被访问都要先查看剩余时间,过期才删除
  2. 定时删除:按照频率依次检测剩余key的过期时间,淘汰过期key

内存淘汰:当内存不足时针对剩余key采取的策略

1. 不淘汰任何key,拒绝本次插入
2. 局部淘汰(针对设置了过期时间的key):
 	1. lru:淘汰使用次数最少的key
 	2. ttl:淘汰剩余过期时间最短的key
 	3. random:随机淘汰
3. 全局淘汰(针对所有key):
 	1. lru:淘汰使用次数最少的key
 	2. random:随机淘汰

jvm了解哪些参数,怎么设置?

分为标准参数、非标准参数、稳定参数。

一、内存配置

  1. 堆内存核心参数(-X 开头)
参数 含义 推荐设置 说明
-Xms 堆初始内存(Min Heap) 等于 -Xmx 避免 JVM 运行中动态扩容堆,减少性能波动。
-Xmx 堆最大内存(Max Heap) 服务器:物理内存的 1/4 ~ 1/2示例:-Xmx4g 比如 16G 内存服务器,设 -Xmx8g;太小会频繁 GC,太大导致 Full GC 耗时久。
-Xmn 新生代内存(Eden + S0 + S1) 堆内存的 1/3 ~ 1/2示例:-Xmn2g 新生代越大,Minor GC 频率越低;太小则 Minor GC 频繁。(G1 收集器不推荐设 -Xmn,由 G1 自动调节)
-XX:NewRatio 新生代 / 老年代比例 比如 -XX:NewRatio=2(老年代:新生代 = 2:1) 替代 -Xmn 的写法,二选一即可。
-XX:SurvivorRatio Eden/Survivor 区比例 -XX:SurvivorRatio=8(默认) Eden:S0:S1 = 8:1:1; Survivor 区太小会导致对象提前进入老年代。
  1. 非堆内存参数(-XX 开头)
参数 含义 推荐设置 说明
-XX:MetaspaceSize 元空间初始内存 -XX:MetaspaceSize=256m 替代 JDK 7 之前的 -XX:PermSize(永久代),存储类信息、常量池。
-XX:MaxMetaspaceSize 元空间最大内存 -XX:MaxMetaspaceSize=512m 避免元空间溢出(OutOfMemoryError: Metaspace),默认无上限(会占满物理内存)。
-XX:MaxDirectMemorySize 直接内存上限 -XX:MaxDirectMemorySize=1g NIO 用的直接内存,超出会触发 Full GC;默认等于 -Xmx

二、GC垃圾回收器配置

  1. 选择 GC 收集器(-XX 开头)
GC 类型 参数 适用场景 调优点
G1(默认,JDK 9+) -XX:+UseG1GC 中大型堆(4G 以上)、追求低停顿 优先保证最大停顿时间,适合微服务、电商核心系统。
Parallel(JDK 8 默认) -XX:+UseParallelGC 后台任务、批处理(追求高吞吐量) 吞吐量优先,停顿时间可能较长。
CMS(已废弃) -XX:+UseConcMarkSweepGC 低延迟场景(JDK 8 仍可用) 并发回收,停顿短,但内存碎片多。
ZGC(JDK 11+) -XX:+UseZGC 超大堆(16G+)、超低延迟 停顿毫秒级,适合金融、实时计算。
  1. GC 调优关键参数(以 G1 为例)
参数 含义 推荐设置
-XX:MaxGCPauseMillis G1 目标最大停顿时间 -XX:MaxGCPauseMillis=200(200ms) 不是绝对保证,G1 会尽量满足;设太小会导致 GC 频繁。
-XX:InitiatingHeapOccupancyPercent(IHOP) G1 触发混合回收的堆占用阈值 -XX:IHOP=45(默认 45%) 堆占用达到 45% 时,G1 开始混合回收老年代;太高会导致 Full GC。
-XX:+PrintGCDetails 打印 GC 详细日志 调试必开 结合 -Xloggc 输出到文件。
-Xloggc:/logs/gc-%t.log GC 日志输出路径(% t 带时间戳) 生产环境必开 方便排查 GC 问题,示例:-Xloggc:/logs/app-gc-20260308.log
-XX:+HeapDumpOnOutOfMemoryError OOM 时自动导出堆快照 生产环境必开 排查内存泄漏的核心手段。
-XX:HeapDumpPath=/dump/heap-dump.hprof 堆快照存储路径 配合上一个参数使用 示例:-XX:HeapDumpPath=/dump/app-oom.hprof

linux命令

  1. 文件操作:ls列出文件、cd切换、mkdir创建、rm删除、cp复制
  2. 查看操作:cat查看文件内容、tail -f查看实时日志、less分页查看
  3. 查找操作:find找文件、grep找内容行
  4. 进程:ps -ef | grep java查看java进程、top查看cpu/内存、kill杀死进程、netstat查端口占用
  5. 压缩解压:tar(tape archive)打包解包、zip压缩解压
  6. 网络:ping连通性测试、ipconfig看ip、curl访问接口