自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(211)
  • 资源 (6)
  • 问答 (2)
  • 收藏
  • 关注

原创 Kafka 如何实现顺序消费?

Kafka仅保证分区内消息有序,不支持全局有序。实现顺序的关键是:生产端通过相同Key确保消息进入同一分区(配合幂等生产者防重试乱序),消费端保证分区独占且按Key路由至内存队列,由单线程串行处理。吞吐提升可按Key拆分队列并行处理,避免并行导致乱序。核心口诀:同Key同分区,同分区同线程。

2026-11-08 22:08:38 31

原创 分库分表,可能真的要退出历史舞台了!

TiDB是PingCAP推出的开源分布式NewSQL数据库,支持水平弹性扩展、ACID事务、标准SQL与MySQL协议,兼具OLTP与OLAP能力,实现HTAP一体化。其存储计算分离架构支持云原生部署,兼容MySQL生态,可无缝替换传统数据库或分库分表方案,适用于高并发、海量数据及强一致性要求的场景。

2026-11-08 16:30:00 68

原创 为什么王者荣耀不使用微服务架构?

游戏服务器因强实时性、高并发状态管理及低延迟要求,难以适配微服务架构。核心玩法依赖内存中持续存在的状态(如对战沙盒),而微服务的无状态设计与分布式通信开销会显著增加延迟,影响性能。长连接、消息有序性、主动推送等需求也超出传统微服务框架能力。虽大厅等模块可适度微服务化,但游戏逻辑服务器更倾向单进程、长连接、Netty等高性能方案。微服务在游戏领域并非银弹,其适用性受限于业务本质,而非技术趋势。

2026-11-08 09:30:00 378

原创 为什么数据库连接池不采用 IO 多路复用?

数据库连接池未采用IO多路复用,主要因JDBC设计基于BIO,难以适配非阻塞模型。虽IO多路复用可提升并发效率,但其要求整个程序采用统一异步架构,与Java传统同步编程范式冲突。连接池独立、简单,兼容性好,且生态成熟。而真正实现多路复用需全栈支持(如Vert.x、Node.js等响应式环境),在普通Java应用中难以推广。因此,连接池仍是主流选择,性能与复杂度权衡下更具实用性。

2026-11-07 22:07:46 192

原创 抖音服务器带宽有多大,才能供上亿人同时刷?

字节跳动自建数据中心服务器超40万台,主要分布于河北怀来等地,海外TikTok亦部署大量服务器。其大型数据中心出口带宽预计达10TB以上,采用双链路、多节点及CDN加速技术,实现亿级用户并发流畅刷视频。相比2009年上海全城1.14TB带宽,企业级带宽已实现跨越式发展,支撑抖音等产品高效分发内容。

2026-11-07 07:30:00 188

原创 40亿个QQ号,限制1G内存,如何去重?

40亿个QQ号去重,1G内存受限下可采用位图(BitMap)技术,仅需约476M空间。通过将每个数字映射为一个bit位,实现高效去重。位图适合存储布尔状态,广泛用于去重、排序及布隆过滤器。布隆过滤器基于多哈希函数,可快速判断元素“可能存在于”集合中,但存在误判率,且不支持删除。适用于网页爬虫、缓存系统、黑名单过滤等场景。Java中可通过Guava、Apache Commons或Redis实现。

2026-11-06 21:58:15 172

原创 如果要存ip地址,用什么数据类型比较好?

另外还可以使用 4 个字段分别存储 IPv4 中的各部分,但是通常这不管是存储空间和查询效率应该都不是很高(可能有的场景适合使用这种方式存储)。MySQL 在保存变长的字符串时,还需要额外的一个字节来保存此字符串的长度。通常,在保存 IPv4 地址时,一个 IPv4 最小需要 7 个字符,最大需要 15 个字符,所以,使用。对于转换来说,MySQL 提供了相应的函数来把字符串格式的 IP 转换成整数。同样可获得相同的好处,同时 MySQL 也提供了相应的转换函数,即。对于 IPv6 来说,使用。

2026-11-05 08:00:00 161

原创 我司为什么要用 Google 的Java规范?

本文分享了Google Guava在Java开发中的实用价值,对比JDK局限,展示其优雅的API:通过Joiner/Splitter简化字符串处理,CharMatcher实现字符匹配,Multiset、Multimap、BiMap、Table等扩展集合功能,Immutable集合保障线程安全与不可变性,Functions与Predicate实现函数式编程,Optional与Preconditions提升空值处理安全性,Cache提供高效本地缓存,以及异步回调的简化。Guava让代码更简洁、高效、易维护,助力

2026-11-04 07:00:00 330

原创 Kafka 怎么保证消费只消费一次的?

一句话:Kafka 本身只保证“至少一次”,“只消费一次”要自己动手。常规业务用“手动提交 offset + 业务幂等”这对组合拳;下游是数据库可以把 offset 和业务绑进同一个本地事务;纯 Kafka 内部流转则直接上幂等生产者 + 事务。把“业务处理与 offset 提交非原子”这个根因讲透,再给对应的幂等方案,这道题就稳了。

2026-11-03 17:08:30 190

原创 面试官:线上 MySQL 的自增 id 用尽怎么办?

MySQL自增ID达到上限后,表自增主键将不再递增,导致插入时主键冲突;InnoDB的row_id(6字节)循环使用,可能引发数据覆盖;trx_id(8字节)若达上限,重启不重置,可能导致脏读。尽管理论上限极难触及,但长期运行实例仍需警惕。合理选择字段类型、及时监控,是保障数据可靠性的关键。

2026-11-03 07:00:00 577

原创 全网显示 IP 归属地,准确率 99.9%,这个开源的 API 离线库强大到离谱!

经常浏览小视频或各类帖子的朋友们可能已经注意到,目前许多网络平台都会显示作者和评论区用户的 IP 归属地。那么,这个功能是如何实现的呢?平台显示 IP 归属地效果这是一个准确率非常高的离线库,如果项目里有 IP 定位需求的,可以试下该库。

2026-10-18 17:00:00 341

原创 Java 导出 Excel 利器:JXLS

相信大家能经常性的遇到项目上各类 excel 的导出,简单的 excel 格式,用简单的 poi,easyExcel 等工具都能导出。但是针对复杂的 excel,有固定的样式、合并单元格、动态列等各类要求,导致 excel 导出需要花很大一部分精力去写代码。jxls 在很大程度上解决了以上问题。这里简单介绍下 jxls,JXLS 是国外一个简单的、轻量级的 excel 导出库,链接:JXLS 官网,这里有详细的文档说明教程(英文版),为了方便大家使用,我举例几个常见的 excel 模板配置,方便大家使用。

2026-10-17 22:31:36 211

原创 一位老程序员的忠告:别想着靠技术生存一辈子

笔者目前是自己单干,但此前有多年在从事软件开发工作,回头想想自己,特别想对那些初学JAVA/DOT、NET技术的朋友说点心里话,希望我们的体会多少能给你们一些启发。

2026-07-22 23:08:04 177

原创 开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!

模型可以全程在本地跑,数据不出我们自己的机器。我写文章这天仓库还有新提交,不是那种火一把就没人管的项目。Reddit 的 r/LocalLLaMA 板块里,它的跑分帖有 16 万浏览,Hacker News 上拿了 190 多个赞,LangChain 官方账号也推过它。

2026-07-22 22:56:40 195

原创 Netty 性能好的原因是什么?

一句话:Netty 快是IO 模型 + 内存管理 + 零拷贝 + 无锁并发的组合拳。面试时把这几块捋顺,配合主从 Reactor 模型图和内存池层次讲出来,基本能稳住。别只说 "因为 Netty 用了 NIO",太肤浅了,任何一个 Java NIO 框架都用 NIO,凭什么 Netty 独大?就是因为它在 NIO 之上做了大量工程优化。

2026-07-21 18:30:00 284

原创 MinIO 社区版被故意阉割,Web管理功能全面移除,来试试国产的RustFS?

随着 MinIO 社区版自 2024 年 2 月起全面移除 Web 管理界面,标志着其加速向商业化闭源演进,对广大习惯图形化管理的用户来说无疑是一种"背刺"。尽管 MinIO 声称 CLI(如 mc)功能更专业,但对中小企业、个人开发者甚至初学者而言,图形界面不可或缺。同时,RustFS 作为国产、开源、Rust 编写的分布式对象存储项目,凭借以下优势,已具备成为 MinIO 替代品的潜力:对比项MinIO(社区版)RustFS开源协议AGPL v3(限制较多)

2026-07-20 21:52:51 222

原创 搞定复杂 AI 集成!Spring AI + MCP 模式最佳实践揭秘

以个人角度来说,我认为 MCP 更像是连接传统后端系统与 AI 模型世界的一座桥梁,MCP Server 的开发其实很适合当下的后端开发,对于当前的后端开发而言,是一个具有前景的新方向,我相信随着 AI 技术的发展,MCP 有望成为未来 AI 应用后端开发的重要基础之一。我们与模型的每一次交互,都会携带一定的上下文,例如我们之前提过的问题、提问的方式、当前任务的进展等,当大模型有了充足的上下文时,它就能更好地回答我们的问题。目前,大模型本身是无法调用程序的,因此需要一个中介程序来完成调用的工作。

2026-07-19 19:00:00 238

原创 ThreadLocal 不香了?ScopedValue才是王道?

基本概念应用案例基本概念基本用法源码分析小结ThreadLocal是一种实现将变量在各线程之间隔离的方案,也叫线程局部变量表。在Java中每个线程都拥有一个ThreadLocal下的ThreadLocalMap类型的变量,它用来存储定义在线程中的ThreadLocal对象,ThreadLocalMap的键是一个弱引用,指向对应的ThreadLocal对象。但值得每一位Java开发者注意的是ThreadLocal变量如果不及时remove()会造成严重的内存泄露问题。

2026-07-18 22:38:26 162

原创 Java与lua互相调用简单教程

当一个 Lua function 传递给 Java 时,这个 function 对应的值会被存在引用表中,并获得一个唯一的引用 ID (整数)。在某些业务场景下,我们可能会遇到 lua 中要调用 java 代码情况,当然这个用 JNI 肯定是可以做到的,但是有更加方便的办法:LuaJavaBridge(LuaJava)和 LuaJ。luaj 调用 Java 方法时,可能会出现各种错误,因此 luaj 提供了一种机制让 Lua 调用代码可以确定 Java 方法是否成功调用。整理出来就是如下几点。

2026-07-17 22:56:54 210

原创 代码越“整洁”,性能越“拉胯”?

那么,如果我们违反第一条规则,会怎么样?如果我们不使用多态性,使用一个 switch 语句呢?

2026-07-17 22:53:18 248

原创 SpringBoot+Redis BitMap 实现签到与统计功能

采用BitMap实现签到功能实现签到接口,将当前用户当天签到信息保存到Redis中我们可以把 年和月 作为BitMap的key,然后保存到一个BitMap中,每次签到就到对应的位上把数字从0 变为1,只要是1,就代表是这一天签到了,反之咋没有签到。实现签到接口,将当前用户当天签到信息保存至Redis中图片提示:因为BitMap 底层是基于String数据结构,因此其操作都封装在字符串操作中了。图片。

2026-06-22 04:30:00 184

原创 多账号统一登录(实现方案)

本文系统梳理了App账号体系设计的三种主流方案:1. 自建登录体系(手机号+验证码/密码)2. 第三方账号登录集成3. 运营商一键登录方案。重点解析了账号体系表结构设计,提出将用户基础信息与授权信息分离的方案,实现多平台账号绑定与统一管理。同时对比了各类登录方式的优缺点,特别强调一键登录在用户体验方面的显著优势。文章指出账号体系设计需兼顾扩展性和安全性,最终方案选择应结合业务需求,没有绝对优劣之分。

2026-06-21 19:00:00 202

原创 为什么 ThreadLocal 有自动清除机制还存在内存泄漏?

ThreadLocal通过线程隔离机制保证线程安全,但存在内存泄漏风险:当ThreadLocal对象被回收后,Entry的key(弱引用)会失效,但value仍被强引用,需调用remove()或借助set()触发清理。Entry若采用强引用会导致ThreadLocal无法被回收。子线程默认无法访问父线程的ThreadLocal值,需使用InheritableThreadLocal在初始化时拷贝父线程数据,后续修改互不影响。建议将ThreadLocal声明为private static变量,并显式调用remo

2026-06-20 18:20:14 189

原创 Dubbo 的 SPI 和 JDK 的 SPI 有什么区别?

按需加载避免资源浪费、IOC + AOP让扩展点具备完整的依赖注入和装饰器能力、**@Adaptive自适应扩展**让运行时动态选择实现变得优雅。把这几条说清楚,面试官就知道你不是只停留在 "用过 Dubbo" 的层面,而是真的理解它的设计精髓。

2026-06-06 18:39:36 203

原创 Spring Event 别瞎用!被它坑的绩效都没了!

1.为什么说:业务系统一定要先实现优雅关闭服务,才能使用 Spring Event?2.为什么服务启动阶段,Spring Event 事件丢失了?3.强一致性场景不适合 订阅发布模式4.最终一致性的业务特性适合——发布订阅模式5.使用SpringEvent 要有额外的可靠性保证!6.Spring 订阅者务必保证幂等为什么有消息队列 MQ ,还需要 Spring Event今天我们重点聊聊使用 Spring Event 最为关键的几个问题。这是我司线上生产环境实际踩坑后,总结的极为宝贵的经验!

2026-05-09 05:30:00 649

原创 你们公司项目的 QPS 是怎么统计出来的?这 5 种常见方法我踩过一半的坑!

一、先明确:不同业务场景,QPS 统计的 “粒度” 不一样二、5 种 QPS 统计方法:从网关到应用,从实时到离线方法 1:网关层统计(全局视角,适合分布式项目)方法 2:应用层埋点(细粒度,适合单服务接口统计)方法 3:监控工具统计(实时可视化,适合运维监控)方法 4:日志分析统计(离线,适合容量评估)方法 5:数据库层辅助统计(间接,适合排查 DB 瓶颈)三、八年经验总结:QPS 统计的选型指南和避坑清单1.选型指南(按场景选方法)2.避坑清单(我踩过的坑,你别再踩)最后:QPS 统计的本质是 “为决策

2026-05-08 07:30:00 332

原创 @Autowired 和 @Resource 注解有啥区别?你这项目怎么还混着用呢?

这两个注解的核心区别就是匹配策略的优先级不同。@Autowired先类型后名称,@Resource先名称后类型。面试时把这个区别讲清楚,再提一下构造器注入的优势和 Spring 6.x 的新趋势,这道题稳拿。

2026-05-07 21:27:12 392

原创 全网最全的 Jenkins + Maven + Git 自动化部署指南!

至此,我们完成了一个简单的 Jenkins CICD,大家思考一下还有什么需要改进的地方?#1。

2026-05-06 22:15:29 378

原创 OpenFeign 首次调用卡 3 秒?八年老开发扒透 5 个坑,实战优化到 100ms!

折腾了这么多,其实 OpenFeign 首次调用慢的本质是。

2026-05-04 21:56:01 242

原创 SpringBoot + Disruptor 实现特快高并发处理,支撑每秒 600 万订单无压力!

Disruptor是LMAX开发的高性能内存队列框架,其核心设计解决了传统队列的延迟问题,单线程可处理每秒600万订单。它采用环形缓冲区(RingBuffer)存储事件,通过Sequencer实现高效并发控制,Sequence避免伪共享问题。Disruptor包含生产者、消费者(EventHandler)、事件处理循环(EventProcessor)等组件,支持自定义等待策略(WaitStrategy)。示例展示了Java实现过程:定义消息模型、事件工厂、消费者逻辑,使用RingBuffer进行内存队列管理

2026-04-27 21:28:32 334

原创 强烈建议大家使用 Linux 做开发?

Linux 能用吗?Linux 有图形界面支持日常开发社交沟通没问题Linux 能替代 Windows 吗?Linux 下运行 Android 应用Linux 有什么优势吗?Linux 是优雅的Linux 是高效的Linux 是自由的Linux 也可以是美的。

2026-04-14 22:23:45 364

原创 SpringBoot 4 最被低估的新特性:Spring Data AOT

从功能列表上看,它可能只是 Spring Boot 4 中的一项改动。但从工程角度看,它意味着:更快的启动更低的运行时成本更早的错误发现更稳定的生产行为更符合云原生和现代 Java 应用的演进方向如果你正在:规划升级 Spring Boot 4追求更快的启动速度想把错误尽量拦在上线之前强烈建议你试一试 Spring Data AOT。

2026-04-10 22:21:22 279

原创 面试官:ZSet 的底层实现是什么?

Redis ZSet(有序集合)底层采用两种数据结构实现:当元素数量≤128且每个元素≤64字节时使用listpack(Redis7.0前为ziplist),否则使用跳表+字典的组合结构。跳表实现O(logN)的范围查询,字典实现O(1)按成员查分数。Redis选择跳表而非红黑树,主要因为跳表在范围查询、实现复杂度、排名计算等方面更具优势。Redis7.0将ziplist替换为listpack,解决了级联更新问题。ZSet通过跳表和字典的配合,高效支持了所有有序集合操作。

2026-04-07 22:33:51 408

原创 流程引擎的架构设计

流程引擎是一种底层支撑平台,用于实现流程处理的自动化。它将业务活动抽象为流程节点,通过配置化的方式实现流程流转和数据处理,避免了硬编码开发。流程引擎的核心组件包括流程设计器(支持BPMN、UML等标准)、表单设计器和组织架构管理。其典型应用场景包括OA审批流(Workflow)、端到端业务流程管理(BPM)以及跨系统流程编排。商业流程引擎产品通常提供完整的解决方案,涵盖流程建模、执行、监控和优化等功能。在架构设计上,流程引擎需要处理流程定义解析、节点执行逻辑、数据持久化和事务管理等关键技术点。该领域存在流程

2026-04-05 21:52:28 361

原创 Redis 只会用缓存?16种妙用让同事直呼牛X

Redis的16种典型应用场景包括:1)热点数据缓存;2)分布式Session共享;3)分布式锁实现;4)全局ID生成;5)阅读量/点赞数等计数器;6)API访问限流;7)位统计实现用户留存分析;8)购物车功能;9)用户消息时间线;10)消息队列;11)抽奖活动;12)点赞签到系统;13)商品标签管理;14)多条件商品筛选;15)社交关系推荐;16)新闻热度排行榜。Redis通过String、Hash、List、Set、ZSet等数据结构,为高并发场景提供了高性能解决方案,涵盖缓存、计数、社交、电商等各类业

2026-04-04 22:45:24 406

原创 面试官:MySQL 唯一索引和主键索引的区别?

摘要:主键索引和唯一索引的核心区别在于存储结构和NULL值处理。主键索引是聚簇索引,每表只能有一个,叶子节点存储完整数据且不允许NULL;唯一索引是二级索引,可以有多个,允许NULL但需回表查询。性能上主键查询更高效,推荐使用自增主键,业务唯一约束使用唯一索引。

2026-04-03 22:46:18 382

原创 重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR

JetBrains推出的AIR是一款革命性的AI原生IDE,将AI深度整合到开发工具底层架构中。其核心特点包括:AI作为默认工作流而非附加功能,强调确定性与开发者主导权。AIR通过智能代理实现人机协作,主要流程分为定义任务、执行管理和审查变更三个阶段。开发者可通过聊天交互明确任务需求,并行处理多任务,并通过可视化差异工具审查AI修改内容。AIR还支持MCP服务器集成扩展功能,目前仅支持macOS平台。这款工具重新定义了AI辅助编程的边界,让开发者能在保持控制权的同时提升效率。

2026-04-01 22:25:12 460

原创 用 SpringBoot + Tess4j 优雅实现图像文字识别,真香!

Tess4j是一个基于Tesseract OCR引擎的Java封装库,用于实现光学字符识别功能。本文介绍了如何在SpringBoot项目中集成Tess4j,包括下载中英文字体库、配置项目依赖和测试识别功能。测试结果显示,Tess4j能有效识别中文、英文及中英混合文本,但识别速度较慢。使用时需注意字体库文件命名规范(后缀必须为.traineddata)和路径配置。该技术可广泛应用于文档数字化、数据提取等场景。

2026-03-31 23:04:06 439

原创 OpenClaw到底能干嘛?30个落地案例,看完直接用

这些案例覆盖了哪些方向?1.社交媒体模块2.创意与构建模块3.基础设施与 DevOps 模块4.生产力模块5.研究与学习模块6.金融与交易模块怎么看具体怎么玩?OpenClaw 火了之后,不少人都跟风装上了。但说实话,大多数人装完就让它在那儿"吃灰"——不是不想用,是真不知道能拿来干嘛。OpenClaw 示意图其实 OpenClaw 本身能力不弱,靠自然语言就能调度电脑操作、调用工具,从处理邮件到写代码都能干。问题不是它不行,是我们没找到适合自己的用法。。

2026-03-28 22:14:37 295

原创 面试官:什么是 fail-fast?什么是 fail-safe?

Fail-Fast 像严格的哨兵,发现问题立刻警报;Fail-Safe 像宽容的导游,允许变化但保证你的旅程继续。理解其本质是理解 Java 集合框架并发行为的关键。

2026-03-09 21:18:48 388

java经典必考面试题(顺序一).docx

1、请你自我介绍一下你自己,   回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”。企业喜欢有礼貌的求职者。   2、你觉得你个性上最大的优点是什么?   回答提示:沉着冷静、条理清楚、立场坚定、顽强向上。   乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在北大青鸟经过一到两年的培训及项目实战,加上实习工作,使我适合这份工作。我相信我能成功。   3、说说你最大的缺点?   回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。

2020-07-29

Java就业指导(改简历,面试要准备的资料)

适合应届生刚毕业,要换工作的,大家对于怎么改简历、去哪里找工作、面试要准备什么都非常焦虑。我也因此研发了一套课程,从怎么写简历开始,落实到找工作的的每个细节,基本是我这么多年工作的结晶了,反馈不错。希望对自己的知识和劳动的付出有个价值肯定。

2021-03-09

学生信息管理系统.zip

springboot+vue+elementui+jwt学生信息管理系统,实现简易学生信息的增删改查功能。代码逻辑清晰,易于理解

2020-12-18

StuInfoManagement.zip

学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。

2020-07-31

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除