自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(893)
  • 收藏
  • 关注

原创 Java面试如何突击?核心知识点有哪些?该如何准备拿下offer?

先讲结论,再讲细节,最后延伸拓展。准备「反问环节」:可问团队技术栈、项目迭代节奏、新人培养机制等(体现对岗位的兴趣)。:比较并交换,是一种无锁算法。核心操作是:读取内存值 V,预期值 A,新值 B。若 V == A,则将 V 更新为 B;否则重试(自旋)。问题ABA 问题:值从 A→B→A,CAS 会误以为没变化。自旋开销:长时间自旋会消耗 CPU。只能保证一个变量的原子性:无法保证多个变量的原子操作。解决方案ABA 问题:加版本号(如,记录值和版本号)。

2026-03-26 21:51:15 363

原创 Java面试突击版!快速拿下offer的神技!面试题分享!

Java面试突击版!快速拿下offer的神技!面试题分享!

2026-03-26 21:43:12 284

原创 春招 Java 面试失利!一周突击拿下高薪 offer 全方案 + 高频面试题重磅分享!

把 80% 的时间投入到面试 80% 会问到的核心内容上,拒绝盲目刷题,每一步都直击面试得分点。

2026-03-22 21:06:40 914

原创 48 张图 | 实战详解微服务性能监控、Jmeter压测、JVM调优

启动方式和 jconsole 一样,也是通过 cmd 命令行启动。还是选择 passjava-question 微服务,然后选择第一个菜单栏:概述。可以看到 JVM 的版本,启动参数等信息。启动jvisualvm本文通过压测工具 Jmeter 讲解压测如何实施,然后用性能监控工具 jconsole 和 jvisualvm 来监控 Java 应用程序的性能,以及如何用工具来优化开源项目 passjava 的性能,并且非常详细地介绍了每一步以及执行结果,通过对比的方式,更加清晰地知道如何做性能优化。

2026-03-22 20:48:39 155

原创 我也没想到,Java开发 API接口可以不用写 Controller了

今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便分享一点工作中使用它的心得。

2026-03-22 20:47:35 128

原创 Redis 为什么会突然变慢?逃不出这 12个 “翻车” 场景

好了,以上就是我总结的在使用 Redis 过程中,常见的可能导致延迟、甚至阻塞的问题场景,以及如何快速定位和分析这些问题,并且针对性地提供了解决方案。这里我也汇总成了思维导图,方便你在排查 Redis 性能问题时,快速地去分析和定位。这里再简单总结一下,Redis 的性能问题,既涉及到了业务开发人员的使用方面,也涉及到了 DBA 的运维方面。

2026-03-22 20:42:58 129

原创 发现了 ConcurrentHashMap 源码中的两个BUG

对于每一个扩容线程,for循环的变量i代表要复制的桶的在桶数组中的下标,这个值的上限和下限通过游标和步长stride计算得来,当i// i >= n || i + n >= nextn现在看来取不到int sc;if (finishing) { // 【A】完成整个扩容过程return;// 【B】判断是否是最后一个扩容线程,如果是,则需要重新扫描一遍桶数组,做二次确认。

2026-03-22 20:41:49 297

原创 避繁就简,分享 50个让你代码更优雅的小技巧

反例:」...「正例:」...❝因为如果定义为static,即类静态常量,在每个实例对象中,它只有一份副本。如果是成员变量,每个实例对象中,都各有一份副本。显然,如果这个变量不会变的话,定义为静态常量更好一些。❞。

2026-03-22 20:40:39 314

原创 大厂千万级数据量 Redis 缓存该如何设计?学费了

缓存设计时,有很多技巧,优化手段也是千变万化,但是我们要抓住核心要素。那就是,让访问尽量命中缓存,同时保持数据的一致性。

2026-03-22 20:39:50 297

原创 我试了试用 SQL查 Linux日志,好用到飞起

q写这么多代码直接用awk不香吗?额~ 介绍这个工具的初衷并不是说要替换现有哪种工具,而是多提供一种更为便捷的查日志方法。我也有在用awk确实很强大没得说,但这里边涉及到一个学习成本的问题,琳琅满目的命令、匹配规则想玩转还是要下点功夫的。而对于新手程序员稍微有点数据库经验,写SQL问题都不大,上手q则会容易的多。

2026-03-22 20:38:39 364

原创 阿里面试这样问:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)

对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现、配置管理,非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用层面,那面试可能要吃大亏。比如我们今天要讨论的话题,Nacos在做配置中心的时候,配置数据的交互模式是服务端推过来还是客户端主动拉的?这里我先抛出答案:客户端主动拉的!接下来咱们扒一扒Nacos的源码,来看看它具体是如何实现的?

2026-03-22 20:38:01 369

原创 5000字 吃透 | 高并发下如何保证接口的幂等性?

如果这篇文章对您有所帮助,或者有所启发的话,帮忙扫描下发二维码关注一下,您的支持是我坚持写作最大的动力。

2026-03-22 20:34:49 356

原创 SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!

一个标准的返回格式至少包含3部分:status 状态值:由后端统一定义各种返回结果的状态码message 描述:本次接口调用的结果描述data 数据:本次返回的数据。"message":"操作成功",当然也可以按需加入其他扩展值,比如我们就在返回对象中添加了接口调用时间timestamp: 接口调用时间@Data/** 结果状态 ,具体状态码参见ResultData.java*//**操作成功**/RC100(100,"操作成功"),/**操作失败**/

2026-03-16 21:50:58 144

原创 给你一个亿的keys,Redis如何统计?

Set集合的交差并的计算复杂度很高,如果数据量很大的情况下,可能会造成Redis的阻塞。那么如何规避阻塞呢?建议如下:在Redis集群中选一个从库专门负责聚合统计,这样就不会阻塞主库和其他的从库了将数据交给客户端,由客户端进行聚合统计。Set和Sorted Set支持交集、并集的聚合运算,但是Sorted Set不支差集运算。Bitmap也能对多个Bitmap做与、异或、或的聚合运算。List和SortedSet。

2026-03-16 21:50:19 153

原创 大厂怎么解决MySQL死锁问题?差点被坑到享年

死锁是并发系统中常见的问题,同样也会出现在数据库MySQL的并发读写请求场景中。当两个及以上的事务,双方都在等待对方释放已经持有的锁或因为加锁顺序不一致造成循环等待锁资源,就会出现“死锁”。常见的报错信息为 。举例来说 A 事务持有 X1 锁 ,申请 X2 锁,B事务持有 X2 锁,申请 X1 锁。A 和 B 事务持有锁并且申请对方持有的锁进入循环等待,就造成了死锁。如上图,是右侧的四辆汽车资源请求产生了回路现象,即死循环,导致了死锁。从死锁的定义来看,MySQL 出现死锁的几个要素为:两个或者两个以上事务

2026-03-16 21:49:37 142

原创 Springboot 配置文件、隐私数据脱敏的最佳实践(原理+源码)

这几天公司在排查内部数据账号泄漏,原因是发现某些实习生小可爱居然连带着账号、密码将源码私传到GitHub上,导致核心数据外漏,孩子还是没挨过社会毒打,这种事的后果可大可小。说起这个我是比较有感触的,之前的经历,到现在想起来心里还难受,我也是把数据库账号明文密码误提交到GitHub,然后被哪个大宝贝给我测试库删了,后边我长记性了把配置文件内容都加密了,数据安全问题真的不容小觑,不管工作汇还是生活,敏感数据一定要做脱敏处理。如果对脱敏概念不熟悉,可以看一下我之前写过的一篇。

2026-03-16 21:49:02 285

原创 一口气说出 Redis 16 个使用场景,好家伙!

Redis 用的好,加薪少不了,面试被问redis是个大概率事件,与其等着面试官问你在哪场景用过,不如给他雷霆一击,有理有据一口气说出16 个常见使用场景,干翻他!1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。

2026-03-16 21:48:27 305

原创 高并发下玩秒杀,你必须知道的9个细节

高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对技术要求不低。下面给大家总结一下设计秒杀系统需要注意的9个细节。

2026-03-16 21:47:54 293

原创 JVM太难了!快来学习!

jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区;程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址;虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError;

2026-03-16 21:47:11 344

原创 9 张图总结一下 MySQL 架构

目前大部分的后端开发人员对MySQL的理解可能停留在一个黑盒子阶段。对MySQL基本使用没什么问题,比如建库、建表、建索引,执行各种增删改查。所有很多后端开发人员眼中的MySQL如下图所示导致在实际工作中碰到MySQL中死锁异常、SQL性能太差、异常报错等问题时,直接百度搜索。然后跟着博客捣鼓就解决了,可能自己都没搞明白里面的原理。为了解决这种的问题,阿星的会带着大家去探索MySQL底层原理的方方面面。这样大家碰到MySQL的一些异常或者问题时,能够直戳本质,快速地定位解决。

2026-03-16 21:46:16 357

原创 55 张图吃透 Nacos,微服务的灵魂摆渡者强大在哪

Nacos的服务注册发现很简单,比Eureka简单多了,无需自己构建个注册中心。Nacos实现配置管理和动态配置刷新很简单,总结如下步骤:添加对应依赖使用原生注解@Value()导入配置使用原生注解刷新配置根据自己业务场景做好多环境配置隔离(Namespace)、不同业务配置隔离(Group)切记:命名空间和分组的配置一定要放在或者配置文件中Nacos集群搭建非常简单,唯一的配置就是中设置三个Nacos服务,这也正是Nacos的设计理念,让开发者能够尽快上手,专注业务的开发。

2026-03-16 21:45:20 363

原创 15天突击Java面试!最真实的面试场景+Java精品面试题分享!

拒绝无差别刷题,把时间花在 80% 面试会问到的 20% 核心知识点上。表格。

2026-03-15 21:36:07 168

原创 啪!啪!@Transactional 注解的12种失效场景,这坑我踩个遍

在使用@Transactional注解声明事务时,有时我们想自定义回滚的异常,spring也是支持的。可以通过设置参数,来完成这个功能。@Slf4j@Service如果在执行上面这段代码,保存和更新数据时,程序报错了,抛了SqlException、DuplicateKeyException等异常。而BusinessException是我们自定义的异常,报错的异常不属于BusinessException,所以事务也不会回滚。

2026-03-15 21:22:26 149

原创 OpenFeign 夺命连环 9问,又挂这上了

前面介绍了Spring Cloud 中的灵魂摆渡者Nacos,和它的前辈们相比不仅仅功能强大,而且部署非常简单。OpenFeign,同样是一款超越先辈(RibbonFeign)的狠角色。传参的方式有很多,比如文件传参.....陈某这里只是列举了四种常见得传参方式。上述步骤仅仅演示一种替换方案,剩下的一种不再演示了,原理相同。本篇文章主要面对初学者,深入的源码以及熔断降级放在后面详细介绍,文中若有表述不清,错误的地方欢迎指正!

2026-03-15 21:21:46 157

原创 狗东面试,起手就问 MVCC 原理

事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100 元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要事务,将A的钱回滚回去,就是这么简单。为什么要有事务呢?就是为了保证数据的最终一致性。MVCC,即Multi-Version Concurrency Control (多版本并发控制)。

2026-03-15 21:20:54 140

原创 缓存和数据库一致性问题,看这篇就够了

好了,总结一下这篇文章的重点。1、想要提高应用的性能,可以引入「缓存」来解决2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库 + 更新缓存」、「更新数据库 + 删除缓存」3、更新数据库 + 更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,且存在「缓存资源浪费」和「机器性能浪费」的情况发生。

2026-03-15 21:20:11 343

原创 面试官问:订单30分钟未支付,自动取消,该怎么实现?

今天给大家继续上一盘硬菜,并且是支付中非常重要的一个技术解决方案,有这块业务的同学注意自己试一把了哈!在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下 3 点区别:定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期。

2026-03-15 21:19:35 321

原创 Java 后端实现 token自动续期,这方案有点优雅!

在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个token。前端(如vue)在接收到 token后会将token存储到LocalStorage中。后续每次请求都会将此token放在请求头中传递到后端服务,后端服务会有一个过滤器对token进行拦截校验,校验token的合法性以及token是否过期,如果token过期则会让前端跳转到登录页面重新登录。因为token中一般会包含用户的基础信息,为了保证token的安全性,一般会将token的过期时间设置的比较短。

2026-03-15 21:18:52 151

原创 11 张图总结下,微服务增量拉取

上一篇我们讲解了客户端首次获取注册表时,需要从注册中心全量拉取注册表到本地存着。那后续如果有客户端注册、下线的话,注册表肯定就发生变化了,这个时候客户端就得更新本地注册表了,怎么更新呢?下面我会带着大家一起来看下客户端第二次(这里代表全量获取后的下一次)获取注册表的方式。题外话:之前写过一篇 Redis 主从同步的架构原理,里面也涉及到首次同步和第二次同步,其实原理也类似,但是 Redis 的主从同步原理要复杂些。

2026-03-15 21:18:22 363

原创 线程池里的代码明明报错了,为什么控制台一行异常日志都不打?

线程池吞异常是一个非常不易发现的坑,一般都只有在线上才容易看到,细节决定绩效,记住就行了!!!

2026-03-15 21:14:03 220

原创 十万个why:Nacos 服务注册为什么默认是临时实例?

为什么默认是临时实例?因为在现在的微服务架构里,活着比记住更重要。是流动的资源,用临时实例(AP 模式)。挂了就清理,保持服务列表的有效性,别让客户端调用到死节点。是固定的资源,用持久实例(CP 模式)。挂了保留记录,方便运维排查。大家在 K8s 环境下用 Nacos,建议就保持默认配置,不要手动去开持久化模式,否则你的控制台里可能会留下一堆清理不掉的无效数据。!!

2026-03-15 21:13:29 359

原创 Java面试突击指南+面试题库+模拟面试!

Spring AOP 通过动态代理实现,有两种方式:JDK 动态代理(针对实现接口的类,通过反射生成代理类)和 CGLIB 动态代理(针对没有实现接口的类,通过继承生成子类作为代理)。:您好,我有 3 年 Java 开发经验,一直从事电商系统开发,参与过订单中心、秒杀系统的设计与实现,熟悉 Spring 全家桶、JVM 调优、Redis 缓存和分布式架构,希望能在贵司继续深耕 Java 技术。:根据我的经验和市场行情,期望薪资在 35K-40K 之间,当然也可以结合贵司的薪资体系来谈。

2026-03-12 21:59:28 368

原创 腾讯二面:Redis 事务支持 ACID 么?

鬼吹灯之《云南虫谷》中的摸金校尉有句话叫「合则生,分则死」,为了寻找雮尘珠他们三人分工明确、齐心协力共进退方可成功。事务(Transaction)是并发控制单位,一个操作序列组合而成,这些操作要么都执行,要么都不执行。「是一个不可分割的工作单位」。事务在执行时,会提供专门的属性保证:原子性(Atomicity):一个事务的多个操作必须完成,或者都不完成(ps:MySQL 的原子性靠什么实现呢?欢迎留言区评论);

2026-03-12 14:21:38 138

原创 灰度发布、蓝绿发布、滚动发布,有什么区别?这下明白了

在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。目前有很多部署发布的技术, 这儿将常见的做一个总结。上面所说难免有些抽象, 举一个情景例子, 加入你是微博项目负责人员, 现在新版本较原来的老版本有很大的改变, 这设计到服务架构、前端UI等等, 经过测试功能没有障碍, 那么这时候如何让用户切换到新的版本呢?显而易见, 第一次发布的应用是没有所谓的这个问题的, 这种如何发布的思考只会出现在后面的版本迭代中。

2026-03-12 14:18:12 89

原创 我有 10 种方法搞定定时任务,10种!

不知道你有没有遇到过这种场景:有时需要临时统计线上的数据,然后导出到excel表格中。这种需求有时较为复杂,光靠写sql语句是无法满足需求的,这就需要写java代码了。然后将该程序打成一个jar包,在线上环境执行,最后将生成的excel文件下载到本地。为了减小对线上环境的影响,我们一般会选择在凌晨1-2点,趁用户量少的时候,执行统计程序。(其实凌晨4点左右,用户才是最少的)由于时间太晚了,我们完全没必要守在那里等执行结果,一个定时任务就能可以搞定。那么,这种情况用哪种定时任务更合适呢?linux。

2026-03-12 14:12:29 166

原创 Redis 分布式锁的正确实现原理演化历程与 Redisson 实战总结

红锁是不是这个?泡面吃多了你,Redlock红锁是为了解决主从架构中当出现主从切换导致多个客户端持有同一个锁而提出的一种算法。大家可以看官方文档(https://redis.io/topics/distlock),以下来自官方文档的翻译。想用使用 Redlock,官方建议在不同机器上部署 5 个 Redis 主节点,节点都是完全独立,也不使用主从复制,使用多个节点是为容错。一个客户端要获取锁有 5 个步骤客户端获取当前时间T1(毫秒级别);使用相同的key和value顺序尝试从N个Redis。

2026-03-12 14:11:23 138

原创 25 张图吃透「偏向锁」,这个 JVM又爱又恨的崽

偏向锁可能就这样的走完了它的一生,有些同学可能直接发问,都被 deprecated 了,JDK都 17 了,还讲这么多干什么?java 任它发,我用 Java8,这是很多主流的状态,至少你用的版本没有被 deprecated面试还是会被经常问到万一哪天有更好的设计方案,“偏向锁”又以新的形式回来了呢,了解变化才能更好理解背后设计奥卡姆剃刀原理,我们现实中的优化也一样,如果没有必要不要增加实体,如果增加的内容带来很大的成本,不如大胆的废除掉,接受一点落差。

2026-03-12 14:10:47 187

原创 实战干货!Spring Cloud Gateway 整合 OAuth2.0 实现分布式统一认证授权!

今天这篇文章介绍一下Spring Cloud Gateway整合OAuth2.0实现认证授权,涉及到的知识点有点多,有不清楚的可以看下陈某的往期文章。文章目录如下:微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下:网关只负责转发请求,认证鉴权交给每个微服务控制统一在网关层面认证鉴权,微服务只负责业务你们公司目前用的哪种方案?先来说说第一种方案,有着很大的弊端,如下:代码耦合严重,每个微服务都要维护一套认证鉴权无法做到统一认证鉴权,开发难度太大第二种方案明显是比较简单的一种,优点如下:

2026-03-12 14:09:47 293

原创 不会一致性hash算法,劝你简历别写搞过负载均衡

简单的阐述了下一致性hash,如果有不对的地方大家可以留言指正,任何技术都不会十全十美,一致性Hash算法也是有一些潜在隐患的,如果Hash环上的节点数量非常庞大或者更新频繁时,检索性能会比较低下,而且整个分布式缓存需要一个路由服务来做负载均衡,一旦路由服务挂了,整个缓存也就不可用了,还要考虑做高可用。不过话说回来,只要是能解决问题的都是好技术,有点副作用还是可以忍受的。

2026-03-12 14:06:07 182

原创 什么是 MySQL 的“回表”?

小伙伴们在面试的时候,有一个特别常见的问题,那就是数据库的回表。什么是回表?为什么需要回表?今天小富就来和大家聊一聊这个话题。

2026-03-12 13:59:08 187

空空如也

空空如也

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

TA关注的人

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