自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (9)
  • 收藏
  • 关注

原创 Java后端高并发核心瓶颈突破(JVM+并发+分布式底层实战)

Java内存模型(JMM)的核心是“内存可见性、原子性、有序性”,而GC的核心是“高效回收无用对象,减少STW(Stop The World)时间”,两者的矛盾的在于:高并发场景下,对象创建/销毁频繁,GC压力剧增,若GC参数不合理,会导致STW时间过长(甚至秒级),直接影响系统可用性。本文所讲的JVM调优、锁优化、分布式一致性方案,都是经过生产环境验证的实战干货,核心不是“记住配置”,而是“理解底层逻辑”——只有理解了底层原理,才能根据不同的业务场景,灵活调整优化方案,真正突破高并发瓶颈。

2026-04-14 18:45:00 854 1

原创 每日一道面试题 14:== 和 equals 的区别是什么?(面试必问基础题)

摘要:Java中==和equals的区别在于:==比较基本类型的值或引用类型的地址;equals默认比较地址,但可重写为内容比较(如String、Integer)。String重写equals比较内容而非地址,包装类超出常量池范围时==返回false。重写equals通常需同时重写hashCode以保证集合类正常工作。使用建议:基本类型用==,对象内容比较用重写后的equals,判断是否为同一对象用==。核心结论:==比值或地址,equals可定制为内容比较。

2026-04-08 10:20:13 173

原创 每日一道面试题 13:Java 中的强引用、软引用、弱引用、虚引用分别是什么?有什么用?

Java提供了四种引用级别(强引用、软引用、弱引用、虚引用),让开发者能与GC协作管理内存。强引用不会被GC回收;软引用在内存不足时回收,适合缓存;弱引用GC必收,用于ThreadLocal等场景;虚引用仅用于对象回收通知。引用级别从强到弱,回收灵活性递增。合理使用不同引用可优化内存、避免OOM,如软引用缓存、弱引用防内存泄漏、虚引用管理堆外内存。

2026-04-07 14:57:14 413

原创 每日一道面试题 12:服务熔断与降级的区别?谈谈你在项目中的实战经验

本文介绍了微服务架构中的服务熔断与降级机制。服务熔断是在被调用服务出现故障时被动触发的保护机制,通过切断故障服务防止雪崩效应;服务降级则是主动关闭非核心功能以应对流量高峰。两者在触发原因、执行对象、恢复机制等方面存在本质区别,但在实际项目中往往配合使用。文章通过电商大促案例展示了如何对非核心服务主动降级,对核心服务设置熔断保护,并补充介绍了超时重试、限流等其他容错手段。这两种机制共同构成了微服务高可用的重要保障。

2026-04-03 11:35:23 438

原创 了解数据库前必须要搞懂的事情:MySQL 事务四大特性 ACID 是怎么实现的?

本文详细解析了MySQL事务的ACID特性及其底层实现机制:原子性通过undolog记录修改前状态实现回滚;持久性依赖redolog确保提交数据不丢失;隔离性采用锁和MVCC技术处理并发冲突;一致性则是前三者与数据库约束共同作用的结果。文章还区分了redolog(崩溃恢复)和binlog(主从同步)的不同作用,并简要说明了两阶段提交的必要性。通过转账案例的通俗讲解,帮助读者理解事务如何保障数据安全与一致性。

2026-04-03 11:08:08 408

原创 每日一道面试题 11:谈谈你对 ThreadLocal 原理、使用场景及内存泄漏问题的理解

ThreadLocal是Java中的线程本地变量,用于实现线程间数据隔离。每个线程内部维护一个ThreadLocalMap,以ThreadLocal实例为key存储数据,保证线程安全。主要应用场景包括用户上下文传递、非线程安全工具类复用等。核心风险是内存泄漏,尤其在线程池场景下,必须遵循"set后必remove"原则。关键点包括:弱引用设计降低泄漏风险、父子线程传值需用InheritableThreadLocal、线程池推荐使用TransmittableThreadLocal。使用时要特

2026-04-02 11:50:06 407

原创 每日一道面试题 10:synchronized 与 ReentrantLock 的核心区别及生产环境如何选型?

摘要:synchronized和ReentrantLock是Java中两种同步机制,主要区别包括:1)实现层面(JVM vs JDK);2)锁获取方式(自动 vs 手动);3)公平锁支持;4)高级特性(ReentrantLock支持条件队列等)。synchronized适合简单场景,代码简洁;ReentrantLock适用于需要公平锁、限时等待等复杂场景。JDK1.6后synchronized性能提升,与ReentrantLock接近。使用时需注意ReentrantLock必须在finally中释放锁,避免

2026-04-01 16:44:46 536

原创 每日一道面试题 09:SpringBoot 拦截器(Interceptor)与过滤器(Filter)的区别

摘要:过滤器和拦截器都是用于请求/响应处理的组件,但存在本质区别。过滤器基于Servlet容器,拦截所有请求,可处理跨域、编码等问题;拦截器基于SpringMVC框架,只拦截Controller请求,可直接使用Spring Bean,适合权限校验、日志记录等场景。主要差异体现在底层依赖、执行时机、作用范围、可操作对象等方面。实际开发中,应根据具体需求选择:全局性处理(如跨域)用过滤器,与业务相关的处理(如权限)优先用拦截器。面试时需结合场景说明选择依据。

2026-03-31 10:45:47 488

原创 每日一道面试题 08:SpringBoot 自动配置原理

SpringBoot自动配置原理核心是通过@EnableAutoConfiguration注解触发,由AutoConfigurationImportSelector加载META-INF下的配置类,结合@ConditionalOnClass等条件注解实现按需加载。自动配置遵循"约定优于配置"原则,当类路径存在相关依赖时自动生效,同时支持通过exclude排除配置。手动配置优先级高于自动配置,确保开发灵活性。该机制通过减少XML配置大幅简化了Spring应用开发。

2026-03-30 14:39:45 492

原创 ClickHouse 数据建模实战:从宽表设计到维度建模,新手也能搞定

本文详细介绍了ClickHouse数据建模的核心原则和标准流程。首先强调ClickHouse与MySQL等行式数据库的建模差异,提出三大原则:宽表优先避免JOIN、维度在前指标在后的字段排序、贴合查询场景设计。然后给出4步标准建模流程:梳理业务需求、选择星型宽表模型、合理设置分区键和主键、匹配业务场景选择表引擎。文章还列举了5个常见建模误区,并提供了通过查询耗时和执行计划验证建模效果的方法。最后指出ClickHouse建模的关键在于顺应其列式存储特性,贴合实际查询需求进行设计。

2026-03-28 12:00:00 475

原创 每日一道面试题 07:为什么不建议使用 Executors 创建线程池?生产环境如何正确定义 ThreadPoolExecutor?

Executors快捷工具存在严重资源风险,生产环境必须手动创建线程池。FixedThreadPool和SingleThreadPool使用无界队列可能导致OOM,CachedThreadPool会无限创建线程引发线程爆炸。正确做法是使用ThreadPoolExecutor,设置核心线程数、最大线程数、有界队列和拒绝策略。核心参数需根据业务类型(CPU/IO密集型)合理设置,队列大小需平衡响应速度和任务拒绝频率。拒绝策略推荐CallerRunsPolicy,高可用系统可自定义策略。生产环境应统一手动创建线程

2026-03-27 09:43:38 328

原创 SpringBoot 线上慢接口排查实战:从 JVM 到数据库的全链路分析

本文系统介绍了SpringBoot线上慢接口的全链路排查方法,涵盖JVM、代码逻辑和数据库三大环节。通过监控工具定位慢接口后,依次排查内存泄漏、GC问题、线程阻塞等JVM问题;分析代码冗余、缓存失效和第三方调用超时;最后检查慢查询、索引失效和锁等待等数据库瓶颈。文章提供了Arthas、SkyWalking等12种工具的使用指南,并结合真实案例演示优化过程,帮助开发者快速解决性能问题。排查需遵循"定位-分析-优化"的步骤,避免盲目操作影响线上服务。

2026-03-25 14:53:30 836

原创 每日一道面试题 06|Spring Bean 的生命周期(高频必问)

Spring Bean的生命周期包括:实例化→属性注入→Aware接口回调→初始化前后处理(BeanPostProcessor)→执行初始化方法(@PostConstruct/afterPropertiesSet/init-method)→正常使用→容器关闭时执行销毁方法(@PreDestroy/destroy/destroy-method)。关键扩展点包括:Aware接口感知容器资源、BeanPostProcessor实现初始化前后处理、三种初始化/销毁方法。AOP代理在初始化后的后置处理阶段完成。该机制

2026-03-25 09:26:48 267

原创 大模型 + SQL 自动优化:用 LLM 根治慢查询、自动生成索引、自动分表

摘要:本文探讨了2026年大模型(LLM)在SQL优化领域的应用。通过实战案例展示如何利用LLM实现慢查询自动优化、索引自动生成和分表策略推荐,覆盖MySQL、ClickHouse等主流数据库。大模型通过分析海量SQL案例和数据库原理,能快速识别低效SQL,给出优化方案,将查询性能提升数千倍。文章还介绍了集成LLM的SQL优化工具,并强调需验证优化结果、结合业务调整方案。这种技术革新让开发者从繁琐的SQL优化工作中解放,将精力聚焦于更有价值的系统设计。

2026-03-24 11:54:21 1020

原创 每日一道面试题 05:MySQL 索引失效常见场景及优化思路

MySQL索引失效常见场景包括:对索引字段使用函数/运算、前置%模糊查询、违反最左前缀原则、使用!=/NOT IN等非等值查询、OR连接非索引列、隐式类型转换等。优化建议:保持索引列"干净"、遵循最左匹配原则、使用右匹配模糊查询、避免非等值操作、确保类型一致,并通过EXPLAIN验证索引使用情况。这些措施能有效提升查询效率。

2026-03-24 09:25:12 183

原创 每日一道面试题 04:Redis 分布式锁的实现方式及避坑点

Redis分布式锁通过SETNX命令实现并发控制,主要有三种实现方式:基础版使用SET命令加过期时间;优化版通过UUID+Lua脚本确保锁的唯一性和原子性释放;高级版借助Redisson实现自动续期等功能。常见问题包括死锁、误删锁和集群锁丢失,解决方案是设置合理过期时间、使用唯一标识+Lua脚本,以及采用RedLock算法或Redisson处理集群场景。面试回答需涵盖原理、实现层级和避坑方案,展示全面理解。

2026-03-23 09:16:12 297

原创 每日一道面试题 03:说一下 Spring 事务失效的常见场景

Transactional 基于 AOP 代理,Spring 仅对 public 方法生成代理逻辑,非 public 方法会直接跳过事务切面,导致事务失效。新线程内的数据库操作不在原事务线程绑定的 Connection 中,Spring 事务基于 ThreadLocal 管理连接,跨线程即脱离事务。同一个类内,无事务方法调用本类带 @Transactional 的方法,由于走的是原始对象而非代理对象,切面不生效,事务不生效。开发中事务经常不生效、不回滚,Spring 事务有哪些典型失效场景?

2026-03-21 09:45:00 58

原创 每日一道面试题 01:Redis 缓存击穿怎么解决?

摘要:本文介绍了一种使用互斥锁解决缓存击穿问题的简单方案。当热点Key突然过期时,大量请求会直接访问数据库。解决方案核心是:通过Redis互斥锁确保只有一个请求查询数据库,其他请求等待或重试。该方案代码简单(仅需5分钟接入)、无需额外中间件、生产环境稳定可靠。关键注意事项包括:锁必须设置过期时间避免死锁,缓存过期时间应添加随机值防止集中失效,热点Key可设置永久缓存。这个轻量级方案能有效防止数据库被击穿,既适合面试场景,也适用于生产环境。

2026-03-20 14:15:15 127

原创 每日一道面试题 02:MySQL 最左前缀,一篇讲明白,面试实战都能用

本文简明扼要地讲解了MySQL索引中最左前缀法则的核心要点。要点包括:1)联合索引必须从最左字段开始匹配且不能间断才能命中;2)建索引原则:高频字段放前、等值查询优先、不超过3个字段;3)通过建表实例展示命中与不命中索引的SQL示例;4)提醒避免无用索引、低基数字段前置等常见错误。全文用简洁语言将这一面试常考、实战必备的索引知识讲透,帮助读者快速掌握最左前缀法则的正确应用方法。

2026-03-19 10:26:38 273

原创 ClickHouse生产踩了坑?来看看怎么避坑

本文总结了ClickHouse在生产环境中常见的8大问题及解决方案:1)内存爆满问题,需优化查询语句和调整内存参数;2)磁盘空间不足,需定期清理数据和配置TTL;3)副本不同步,需检查配置一致性和网络连通性;4)数据倾斜,需优化分片键选择;5)数据重复/丢失,需配置去重引擎和备份机制;6)“Too many parts”错误,需优化批量写入策略;7)权限不足,需创建专用用户;8)端口冲突,需检查并终止占用进程。文章针对每个问题提供了具体操作方案,帮助用户快速定位和解决问题。

2026-03-18 17:18:27 663

原创 ClickHouse查询优化怎么搞?从分钟级到秒级,新手也能搞定

ClickHouse查询优化核心在于减少数据扫描和计算负担。主要优化方向包括:1.索引优化,合理设置主键和二级索引;2.分区优化,按查询高频字段分区并确保查询指定分区;3.查询语句优化,避免select*、减少DISTINCT和JOIN;4.集群参数调优,调整内存和并行查询配置。常见误区包括盲目建索引、不指定分区、大表JOIN等。通过执行计划和查询耗时对比可验证优化效果。遵循这些原则,可将查询性能从分钟级提升至秒级。

2026-03-17 17:17:42 953

原创 ClickHouse数据写入应该怎么做?来看看这篇文章,秒懂

本文介绍了ClickHouse数据写入的最佳实践和常见问题解决方案。首先强调ClickHouse的写入特性:适合批量有序写入,不适合单行写入和频繁更新。推荐两种主要写入方式:批量写入(SQL直接插入或文件导入)和实时写入(HTTP接口或Kafka集成)。针对常见问题提出了解决方案:使用ReplacingMergeTree引擎去重、优化写入参数提升性能、异步处理更新删除操作。最后给出生产环境最佳实践建议,包括写入方式选择、去重方案、参数优化和监控验证。遵循"批量写、少更新、按序写"原则,可

2026-03-16 15:48:50 579

原创 ClickHouse副本应该怎么用?搞定高可用,再也不怕节点挂了

本文介绍了ClickHouse副本机制及其在生产环境中的重要性。副本通过数据备份解决高可用问题,与分片机制(解决查询性能问题)形成互补。文章详细区分了两者概念,指出分片是数据拆分,副本是数据备份。核心内容包括:1)副本的三大作用(数据不丢失、负载均衡、故障自动切换);2)3节点3分片1副本的互备配置实操;3)常见问题解决方案(数据不同步、同步慢、自动切换失败等)。最后强调生产环境中分片+副本的组合配置是保障ClickHouse集群稳定高效运行的关键。

2026-03-13 17:55:42 571

原创 ClickHouse分片应该怎么搞?看完这篇文章肯定有帮助。

ClickHouse分片是提升TB/PB级数据查询性能的关键。文章指出,合理分片需遵循三大原则:1)根据高频查询字段选择分片键,避免低基数字段;2)分片数量应与集群节点数匹配,推荐2-3倍关系;3)需配合本地表和分布式表使用,采用cityHash64函数避免数据倾斜。文中详细演示了3节点集群的配置步骤,并列出5个常见错误:分片键选择不当、数据倾斜、分片数与节点不匹配、缺少副本、混淆分片与分区。最后建议通过查询耗时和节点负载验证分片效果,强调分片配置应简单实用,以业务查询需求为导向。

2026-03-12 16:09:01 462

原创 ClickHouse引擎应该怎么选?看看这个逻辑适不适合你。

本文系统介绍了ClickHouse数据库引擎选型的关键要点。首先将引擎分为MergeTree系列、日志系列、内存系列和特殊引擎四大类,重点解析了MergeTree系列中五种核心引擎的特性与适用场景:基础MergeTree适用于通用OLAP分析,ReplacingMergeTree处理重复数据,SummingMergeTree提升聚合性能,AggregatingMergeTree适合时序数据,VersionedCollapsingMergeTree支持版本管理。文章提出三步选型原则:明确核心需求、优先通用引擎

2026-03-11 18:08:07 500

原创 什么是ClickHouse?一篇文章让你看懂。

摘要:ClickHouse是一款专为OLAP场景设计的高性能列式数据库,擅长处理海量数据分析。其核心优势包括纯列式存储、高效压缩、向量计算引擎和分布式架构,能将TB级数据查询从分钟级压缩到秒级。相比MySQL、Snowflake等数据库,ClickHouse在分析性能、存储成本和查询速度上优势显著,适用于实时日志分析、用户行为统计等场景,但不适合OLTP事务处理。新手可通过Docker快速部署,优先使用MergeTree引擎,并合理分区优化性能。ClickHouse已成为大数据分析领域的利器,能显著提升分析

2026-03-10 17:24:11 938

新闻发布系统 java web 源代码 加数据库

新闻发布系统 java web 源代码 加数据库

2013-04-20

ATM机java源代码基于控制台

模拟ATM机,java源代码,存款,取款,转账,购买基金,详细查询等基本功能

2013-03-26

积分管理系统java源代码(很简单,请看评论酌情下载)

查看积分,查看消费记录,添加消费记录等功能,基于java控制台

2013-03-26

java控制台的简易学生管理系统源代码

实现了,显示所有学员,添加学员,删除学员,修改学员等功能

2013-03-26

进销存java

进销存java

2013-01-14

ZXing2.3.0 java生成二维码源代码

ZXing2.3.0 java 生成 二维码 源代码,解压导入MyEclipse

2014-01-02

java控制台的ATMj机

java控制台ATM机 取款 转账 存款 购买基金 查询

2013-04-20

java进销存源码

java进销存源码

2013-01-14

ZXing java生成二维码

ZXing java 生成 二维码,ZXing-core-2.3.0.jar

2014-01-02

空空如也

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

TA关注的人

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