54 归档分页
370 留言互动
4 核心专题

最近更新

Java 2022-08-17

Redis 知识总结

Redis 支持丰富数据结构(string、hash、list、set、zset),原生集群、单线程+IO 多路复用实现高效。采用定期+惰性过期、maxmemory‑policy 多种淘汰策略。主从复制实现读写分离,Sentinel 负责监控、故障转移。持久化提供 RDB 快照和 AOF 日志,各有优缺点,常组合使用。Cluster 模式通过 16384 slot、一致性哈希和 gossip 协议实现水平扩展和高可用,支持多 master 多 slave。

Redis 阅读全文
Java 2022-08-16

消息队列基本原理和选型对比

消息队列解决解耦、异步、削峰填谷,常用点对点和发布/订阅模式。选型关注顺序、伸缩、留存、容错、可靠性、时序、吞吐、路由等。Kafka 吞吐高、持久可靠但全局有序和延时受限;RabbitMQ 路由灵活、支持定时消息,性能一般且学习成本高;Pulsar 计算存储分离,支持无缝扩容、跨地域复制和延时消息,架构较复杂;RocketMQ 提供顺序队列、P2P 与 Pub/Sub,可靠性高、协议丰富,社区活跃度一般。依据业务流量、可靠性和扩展需求选择合适实现。

算法 2022-08-13

BM51 数组中出现次数超过一半的数字

文章介绍了“数组中出现次数超过一半的数字”这一题目:给定长度不超过 50000、元素值在 1~10000 的数组,必存在出现次数超过数组一半的元素,要求在 O(n) 时间、O(1) 额外空间内找出该元素。文中提供的实现采用哈希表统计每个数字的出现次数,在遍历过程中一旦发现某数计数超过数组长度的一半即返回。示例包括 `[1,2,3,2,2,2,5,4,2]` → 2、`[3,3,3,3,2,2,2]` → 3、`[1]` → 1。

NowCoder 阅读全文
Java 2022-08-12

从 SVN 到 Git 开发实用命令总结

本文对比了分布式的 Git 与集中式的 SVN,指出 Git 支持离线操作、分支廉价、功能丰富,而 SVN 简单易上手。阐述了 Git 的工作区、暂存区、仓库三大概念及常用工作流,重点介绍了在 SVN 环境下使用 Git‑SVN 的关键命令(clone、fetch、rebase、dcommit 等)以及从 SVN 迁移到 Git 的基本步骤。随后系统整理了 Git 的初始化、配置、增删文件、分支管理、提交、拉取、撤销和查询等日常操作命令,并提供了进一步学习的参考资料,帮助开发者快速掌握 Git 基础并在团队中推广使用。

Java 2022-08-01

Explain详解与索引最佳实践

Explain是MySQL用于模拟优化器执行SQL、查看执行计划的工具,支持普通、EXPLAIN EXTENDED(提供优化后语句与filtered)和EXPLAIN PARTITIONS(显示访问分区)等变种。Explain输出的列包括id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra等,分别说明查询层次、查询类型、访问的表、访问方式(system、const、eq_ref、ref、range、index、ALL)、可用索引、实际使用的索引、索引字节长度、匹配列或常量、估计行数以及额外信息(Using index、Using where、Using temporary、Using filesort 等)。索引最佳实践包括:使用全值匹配、遵循最左前缀原则、避免在索引列上做函数或类型转换、将日期函数转为范围查询以利用索引、创建覆盖索引以消除回表、尽量避免全表扫描、临时表和文件排序。通过EXPLAIN检查并优化查询,可显著提升MySQL性能。

面试 MySQL 阅读全文
Java 2022-08-01

面试篇【三】

本文系统梳理了面试常见的 Java 与中间件知识点。包括 GC 可达性分析及 GCRoot 定义、对象不可达是否必回收;字符编码演进(ASCII、ISO‑8859‑1、GBK、UTF‑8/16)及 UTF‑8 中文占字节数;静态代理与动态代理的实现与使用场景;异常体系(Error、Checked、Unchecked)和解析/分派机制;equals、hashCode 在 HashMap 中的作用;多态实现条件;对象序列化示例;反射获取类、构造器、方法并调用;注解的定义、元注解及运行时获取;泛型擦除原理;String 不可变性及常量池;Redis 五大数据结构及适用场景;缓存穿透、击穿、雪崩的防御措施;Kafka、RabbitMQ、RocketMQ 在性能、可靠性、可用性上的区别。

面试 阅读全文