自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 考研失败如何备战春招?Java技术栈如何储备?AI大模型需要掌握吗?

建议每天保持4-6小时的有效学习时间,合理分配技术复习、算法练习和面试准备的时间比例。

2025-12-26 20:59:40 787

原创 适配器模式 + Nacos动态配置,实现多源 OSS 无感切换

在一个微服务项目里,我们的 OSS 云存储服务常常需要配置诸如阿里云、腾讯云、minio 等多个云存储厂商的业务代码,而且后续无法确保是否会增添新的云存储厂商。此时,倘若我们要修改具体使用的云存储厂商,就会致使 controller 层和 service 层发生变动,这并不符合低耦合的理念。在这种情况下,我们完全可以采用适配器模式来开展项目开发!通过Nacos的动态配置读取来得到当前的此时如果想再加入一个新的OSS对象(得到包等,我们无法进行修改),只需新增一个xxadapter。

2025-12-26 20:55:34 513

原创 当你工作几年就会明白,能做好以下任何一个都可以超过90%程序员:

在某乎看到一个回答深有感触,工作越久你越会发现,其实学习一个技术是最简单的,反倒是技术之外的事很难搞!4.思考和分析,如何优化目前的工作流程,引入工具和方法,提升生产效率。2.写代码,注意边界条件和编码规范,写单测,基本做到无bug提测。3.工作中做好计划和进度跟踪,沟通和汇报,不把问题遗留到变成事故。5.把自己工作中用到的技术用熟,搞清楚原理,优点短处,适用场景。8.持续坚持学习和技术内容输出,每个星期产出2篇原创技术文章。1.把事情想明白,说清楚,跟别人商量好。

2025-12-26 20:53:56 53

原创 955 不加班公司名单汇总

4. 财象云:可以到公司附近打卡,弹性上下班,工作轻松,薪资一般,工作时间8.30-18.15,9.30-19.15,可以先吃饭再下班。以上就是目前收集到能够WLB的深圳/上海/北京/杭州的公司,基本每天工作 8 小时、每周双休,基本不加班。2. 小鹅通:弹性上下班不用打卡,午休两小时,早 930 到晚 630,比较少加班,双休。2. 西门子:每周一天在家办公,新人 15+年假,圣诞假,全薪病假,强调生活比工作更重要。4. 施耐德:每天准时5点下班赶班车,双休,不倡导加班文化,工作时间灵活。

2025-12-26 20:53:04 55

原创 GC 垃圾回收器忙半天,在清理什么?

Java 的 GC 机制看似复杂,有 Serial、Parallel、CMS、G1、ZGC……但万变不离其宗:所有 GC 垃圾回收器,干的都是同一件事,找出活的对象,剩下的就是垃圾,在想办法腾出内存。换句话说:GC 不是在找垃圾,而是在救活人。救完之后,场地怎么拆、怎么平,才是不同回收器的手艺差别。与其死记 G1 的 Region 或 ZGC 的着色指针,不如先搞懂:什么对象会被救?什么对象会被放弃?为什么?这才是调优、排障、避免内存泄漏的真正起点。!!

2025-12-26 20:51:40 894

原创 阿里招聘最青睐的高校排行榜:

即便在如今一般的互联网环境下,和我私信聊天的小伙伴中依然有相当一部分双非、本科学历的同学,最后照样拿到了字节、拼多多等顶级大厂的 offer。前者「学历」没什么好说的,看学校、看专业、看学位,在校招时尤其比较关注这一点,是作为敲门砖的存在,这也是一个客观存在的事实。后四项至少 4 选 1,也就是项目、实习、比赛、论文至少要有一项突出。没错,这些学校的确是阿里校招的主力来源,大厂简历筛选系统也天然地更偏好这些院校。12. 北京航空航天大学。16. 成都电子科技大学。19. 西安电子科技大学。

2025-12-26 20:50:55 122

原创 实战!SpringBoot+MDC实现全链路调用日志跟踪~

1、简介:MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。

2025-12-26 20:50:22 296

原创 CompletableFuture的5个大坑!

有些小伙伴在工作中刚开始接触CompletableFuture时,可能会被它强大的功能所吸引。确实,CompletableFuture为我们提供了非常优雅的异步编程方式,但正如武侠小说中的神兵利器,如果使用不当,反而会伤到自己。通过上面的详细分析,我们可以看到CompletableFuture虽然强大,但也确实存在不少陷阱。理解原理:不要只是机械地使用API,要理解CompletableFuture的工作原理适度使用:不是所有场景都需要异步,同步代码更简单易懂测试覆盖。

2025-12-26 20:49:33 508

原创 Git 回滚已 Push 的代码?一堆人不会。。。

如果我们有几十次甚至上百次的记录,一次次的单击回退不仅费时费力而且还留下了每次的回退记录,我个人觉得。有时候,我们可能会不小心将错误的代码 Push 到远程仓库,或者想要在本地回退到之前的某个版本重新开发。如果你的错误代码不是很多,那么你其实可以通过与你想要恢复到的commit进行对比,然后手动删除错误代码,然后删除不同的代码。需要注意的是对于一些被保护的分支,这个操作是不能进行的。新建分支的操作仅仅增加了一个分支,既能保留原来的版本,又能安全回退到想要回退的版本,同时不会产生太多的回退记录。

2025-12-26 20:48:23 647

原创 同事查日志太慢,我现场教他一套 awk、tail、grep、sed 组合拳

2025-12-26 20:47:10 344

原创 什么是八股文?Java程序员春招如何提前储备?拿高薪offer?

八股文原指中国古代科举考试中一种固定格式的应试文体,在现代互联网行业面试场景中,特指技术面试中常见的标准化问题和考察点。

2025-12-21 21:32:29 426

原创 springboot 分布式验证码登录的通用方案

Kaptcha是一个基于SimpleCaptcha的验证码开源项目我找的这个轮子是基于SimpleCaptcha二次封装的,maven依赖如下--Kaptcha是一个基于SimpleCaptcha的验证码开源项目-->

2025-12-21 21:02:54 525

转载 SpringBoot + Tesseract 异步 OCR:发票识别流水线深度解析

• 系统架构设计• 分布式流水线架构• 核心组件职责• 数据流设计• Spring Boot异步框架实现• 线程池优化配置• 异步服务层设计• 异步流水线编排• Tesseract深度优化• 发票专用训练模型• 训练流程• 训练命令示例• 图像预处理增强• 多引擎融合识别• 结构化数据提取• 多策略提取框架• 正则与规则引擎• 机器学习验证模型• 性能优化策略• 分布式OCR集群• 缓存优化策略• 硬件加速方案• 生产环境部署• Kubernetes部署方案。

2025-12-21 21:02:14 12

原创 请求合并的3种新技巧,眼前一亮!

工作中,我们常见的请求模型都是”请求-应答”式,即一次请求中,服务给请求分配一个独立的线程,一块独立的内存空间,所有的操作都是独立的,包括资源和系统运算。我们也知道,在请求中处理一次系统 I/O 的消耗是非常大的,如果有非常多的请求都进行同一类 I/O 操作,那么是否可以将这些 I/O 操作都合并到一起,进行一次 I/O 操作,是否可以大大降低下游资源服务器的负担呢?

2025-12-21 21:01:23 665

原创 令牌桶VS漏桶:谁才是流量控制的“最优解”?

面试官可能会问的问题:Q: 两种算法的核心区别是什么?A: 令牌桶允许突发,漏桶强制平滑输出Q: 什么场景用令牌桶,什么场景用漏桶?A: 需要处理突发用令牌桶,需要保护下游用漏桶Q: 如何选择桶的容量和速率?A: 根据业务峰值、系统承载能力、用户体验综合考虑Q: 分布式环境下如何实现?A: 可以用Redis实现,或者用一致性哈希分片。

2025-12-21 21:00:45 211

原创 责任链实战的高级用法:多级校验、工作流,这样写代码才足够优雅!

责任链模式,简而言之,就是将多个操作组装成一条链路进行处理。请求在链路上传递,链路上的每一个节点就是一个处理器,每个处理器都可以对请求进行处理,或者传递给链路上的下一个处理器处理。‍‍。

2025-12-21 21:00:05 840

原创 MySQL 千万级表变更字段,要想不锁表,可以这么做!

但问题是——订单表是线上核心表,千万级数据,直接执行DDL语句极有可能锁表,影响线上业务运行,后果严重。简而言之,它不是对原表直接操作,而是旁边新建一个影子表,把旧表数据同步到新表里,然后在“合适时间”切换表名。我开始意识到,搞数据结构改动,本质就是一场战斗,要考虑的不仅仅是“能不能改”,而是“如何优雅不出事地改”。而且,这种方案也需要评估触发器带来的写入延迟,表结构切换的时机控制也很重要。这样一来,以后有新字段就塞进去,不用再修改表结构,非常灵活。我查了下现在是512,考虑到未来需求,打算调到2000。

2025-12-21 20:59:17 893

原创 Gateway 网关坑我! 被这个404 问题折腾了一年?

最近同事找我帮忙排查一个"诡异"的 Bug,说困扰了他们一年多一直没解决。我接手后花了一些时间定位到了问题根源,今天就来跟大家分享一下这个问题的排查过程和解决方案。

2025-12-21 20:58:33 464

原创 别弄混了!SSO单点登录和OAuth2.0还是有区别的

在本例实现SSO的过程中,受保护的资源就是用户的信息(包括,用户的基本信息,以及用户所具有的权限),而我们想要访问这这一资源就需要用户登录并授权,OAuth2服务端负责令牌的发放等操作,这令牌的生成我们采用JWT,也就是说JWT是用来承载用户的Access_Token的。用户浏览器重定向到单点登录系统,系统检查该用户是否登录,这是SSO(这里是CAS)系统的第一个接口,该接口如果用户未登录,则将用户重定向到登录界面,如果已登录,则设置全局session,并重定向到业务系统。

2025-12-21 20:57:41 648

原创 上线别再“一刀切”!Gateway 做流量染色 + 灰度发布,告别线上事故

很多同学听流量染色给请求打身份标签,让链路中所有服务都能认得出它。比如我们做电商 APP 的新功能上线,想让 VIP 用户优先试用新版本,但普通用户继续用旧版本。怎么让订单、支付、库存这些下游服务知道当前请求是 VIP 用户的?这时候就需要染色:请求进入网关时,判断用户身份是 VIP,就在请求头里加一个 X-Traffic-Tag: vip 的标识,这个过程就是流量染色。后续的订单服务拿到请求,看到 X-Traffic-Tag: vip,就走新版本的订单逻辑;支付服务看到这个标签,就用新的支付接口;

2025-12-21 20:56:51 890

原创 8 种异步实现方式,性能炸裂!!

首先我们先看一个常见的用户下单的场景:在同步操作中,我们执行到 发送短信 的时候,我们必须等待这个方法彻底执行完才能执行 赠送积分 这个操作,如果 赠送积分 这个动作执行时间较长,发送短信需要等待,这就是典型的同步场景。关注公众号:码猿技术专栏,回复关键词:1111 获取阿里内部Java性能调优手册实际上,发送短信和赠送积分没有任何的依赖关系,通过异步,我们可以实现赠送积分和发送短信这两个操作能够同时进行,比如:异步这就是所谓的异步,是不是非常简单,下面就说说异步的几种实现方式吧。

2025-12-19 17:11:39 445

原创 字节二面挂!面试官追问 Redis 内存淘汰策略 LRU 和传统 LRU 差异,我答懵了

最近没被用过的,下次也大概率用不上。举个例子:你电脑桌面上放着常用的软件图标(微信、IDE),这些是最近常用的;而几个月没打开过的压缩工具,会被你拖到文件夹里。这就是 LRU 的思路:保留最近使用的,淘汰最近最少使用的。❝假设缓存容量只有 3,依次存入 A、B、C,此时缓存是 [A,B,C];若此时访问 A(A 变成最近使用),缓存顺序变为 [B,C,A]若再存入D(缓存满了),需要淘汰最近最少使用的 B,最终缓存是 [C,A,D]LFU的全称是。

2025-12-19 17:11:03 394

原创 3 个奇淫巧技,分库分表 LIMIT 翻页性能直接拉满!

反向查锚点:执行,拿到最前面 10 条的 ID(1-10),取最大 ID 作为反向锚点(10);查最后 1 页:执行,拿到的就是 ID 10000-9991(最后 10 条);调整顺序:如果需要正序展示,把结果再倒过来即可。

2025-12-19 17:10:18 258

原创 改了 Nacos 一行配置,搞崩线上支付系统!

说了一大堆其实总结起来就两句话:服务注册中心:动态业务服务(支付、订单)用临时实例(默认),静态基础组件(MySQL、Redis)用持久化实例;配置中心:没有临时配置,所有配置默认持久化,动态更新 ≠ 临时存在。读到这就等于学会!!!

2025-12-19 17:09:46 265

原创 别再乱排查了!Kafka 消息积压、重复、丢失,根源基本都是 Rebalance!

Rebalance 是面试的时候常爱问的场景题,它是 Kafka 消费者组的双刃剑,用好能均衡负载,用不好就会引发故障,最后我总结下:触发 Rebalance 主要是消费者或分区变了或超时了;丢数据和重复消费,本质是 offset 提交和 Rebalance 时机没配合好;优化超时参数、手动提交 offset、做好幂等性,是减少影响的关键。!!

2025-12-19 17:03:16 403

原创 SpringCloud Gateway 30 个内置过滤器,少写 80% 重复代码

这期东西还是很多的,其实 80% 的路由增强场景(如路径重写、限流、跨域)都能通过内置过滤器实现,无需手写代码,所有不要动不动就想着加过滤器。还有在使用过滤器的时候要注意,多个过滤器的配置顺序,顺序不对容易出奇奇怪怪的问题哦。!!

2025-12-19 17:02:26 607

原创 我有 6 种统计线上接口耗时的方案,6种!

经过以上6种方法的详细剖析,相信你对统计接口耗时有了更深入的理解。方法对比表方法优点缺点适用场景简单、无需依赖精度低、代码侵入本地测试、简单调试精度高代码侵入、需转换单位高性能测量、算法优化Spring AOP无侵入、解耦仅Spring Bean、有代理开销业务方法监控、Spring项目拦截器Web优化、获取HTTP上下文仅Web请求、包括视图时间Web API监控过滤器底层、全链路包括所有过滤器时间全请求生命周期统计生产级、分布式支持配置复杂、需基础设施。

2025-12-19 16:59:08 824

原创 SpringBoot 几种优化手段,直接缩减70% 启动时间

物流系统:JVM参数优化后启动时间从9s → 5.4s(降低40%)CRM系统:数据库相关启动时间从4.2s → 1.3s(降低69%)社交应用:类加载时间从2.3s → 1.1s(降低52%)电商应用:启动时间从8.2s → 5.1s(降低38%)微服务网关:启动时间从12s → 7.3s(降低39%)API网关:启动时间从6s → 0.05s(降低99%)支付服务:冷启动时间从8s → 2.3s(降低71%)启动时间从6.5s → 4.2s(降低35%)启动时间从7.8s → 4.6s(降低41%)

2025-12-19 16:58:12 225

原创 SpringBoot 的这些默认配置不改,100%会踩坑!

彼时 SpringBoot 初兴,万象更新,号称“开箱即用”“约定优于配置”,一时间风靡四方。开发者趋之若鹜,纷纷称快,仿佛自此架构之重可卸、配置之繁可省,一行main()即可气定神闲、纵横沙场。然则时光久远,方知此言非虚,却也未尽其真。所谓默认,不过是你未曾开口,框架自作主张。表面无碍,实则步步杀机,线上事故十有八九,皆因“未曾配置”的“默认”。回首往昔,实堪自嘲。曾自诩熟稔底层、精通原理,然于这些藏于阴影处的默认设定,竟茫然不觉。

2025-12-19 16:48:01 766

原创 Java面试场景题:百万人同时点赞怎么办?回答千万别跑偏

场景题:百万人同时点赞怎么办?回答千万别跑偏

2025-12-19 16:41:28 580

原创 2026年经济触底回升,程序员春天要来了,备战春招Java面试题分享!

根据国际货币基金组织(IMF)最新预测,2026年全球经济将结束长达4年的下行周期,进入新一轮增长阶段。随着5G、人工智能、物联网等技术的成熟应用,科技行业将迎来爆发式增长,程序员岗位需求预计增加35%以上。

2025-12-17 19:58:27 1462

原创 魔改 xxl-job,彻底告别手动配置任务!

xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题。我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置和具体的,这一过程如果项目中的定时任务数量不多还好说,如果任务多了的话还是挺费工夫的。假设项目中有上百个这样的定时任务,那么每个任务都需要走一遍绑定jobHander后端接口,填写cron表达式这个流程…我就想问问,填多了谁能不迷糊?于是出于功能优化(

2025-12-17 19:43:15 807

原创 GC 垃圾回收器忙半天,在清理什么?

Java 的 GC 机制看似复杂,有 Serial、Parallel、CMS、G1、ZGC……但万变不离其宗:所有 GC 垃圾回收器,干的都是同一件事,找出活的对象,剩下的就是垃圾,在想办法腾出内存。换句话说:GC 不是在找垃圾,而是在救活人。救完之后,场地怎么拆、怎么平,才是不同回收器的手艺差别。与其死记 G1 的 Region 或 ZGC 的着色指针,不如先搞懂:什么对象会被救?什么对象会被放弃?为什么?这才是调优、排障、避免内存泄漏的真正起点。!!

2025-12-17 19:42:01 993

原创 实战!SpringBoot+MDC实现全链路调用日志跟踪~

1、简介:MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。

2025-12-17 19:39:02 670

原创 高效实现!分布式链路追踪:TraceIdFilter + MDC + Skywalking

发起服务间调用时,需要将 MDC 中的 traceId 传递到被调用服务。对象,在原生 Runnable 对象执行前,将父线程的 MDC 设置到子线程中,在原生 Runnable 对象执行结束后,清除子线程 MDC 中的内容。在子线程执行任务前,将父线程的 MDC 内容设置到子线程的 MDC 中;会解析用户配置的 pattern 表达式,得到 pattern 中需要动态解析的占位符,比如。包中,MDC 是 slf4j 的规范,对 MDC 的所有操作都会落到。,在 logback pattern 中使用。

2025-12-17 19:37:46 792

原创 面试官:说说你们分库分表后,主键是怎么生成的?

在分布式系统的架构设计中,分库分表是一个无法回避的话题。当数据量达到一定规模,单库单表已经无法承载业务压力时,我们就需要考虑将数据分散到多个数据库和多个表中。然而,这种分散带来了一个新的挑战:如何在分库分表的场景下生成全局唯一且有序的主键。这个问题看似简单,实际上却涉及数据库底层原理、分布式系统设计、并发控制等多个技术领域。这篇文章就深入探讨分库分表场景下的主键生成策略,从最基础的UUID方案,到经典的雪花算法,再到更具创新性的主键内嵌分库分表键方案,为你提供一套完整的解决方案。

2025-12-17 19:33:35 917

原创 JDK25都出来了,但为什么很多公司还在坚持用JDK8?

经过上面的分析,我们可以看到,公司停留在JDK8不是没有道理的。风险控制:生产环境稳定压倒一切,JDK8的稳定性经过时间检验成本考量:升级的直接和间接成本往往超出预期兼容性保障:现有代码和第三方依赖的兼容性至关重要团队效率:熟悉的工具链和技术栈能保证开发效率商业策略:LTS版本提供长期支持,符合企业规划但是,这并不意味着我们应该永远停留在JDK8。新项目:可以考虑JDK17或21这些LTS版本老项目:如果没有明确需求,不要为了升级而升级渐进迁移:大型系统可以分模块逐步迁移充分测试。

2025-12-17 19:31:32 664

原创 一个有意思的bug

根据C标准,栈上分配的对象(局部数组)的大小必须在编译期已知。但示例中`char buffer[size];`明显不符合标准,后面查了相关资料,**这种写法属于VLA(边长数组),这是 C99 的特性,不属于 C**。这段代码一直运行的很好,直至某一天,传入了一个合理的值(超过默认栈大小),之后程序开始崩溃,出现 segmentation fault。却能编译这段代码,这是因为GCC 与 Clang 默认启用了 C99 扩展。可以采用以下方式来避免此种错误:我们可以使用。今天来分享一个很久之前的bug。

2025-12-17 19:30:14 370

原创 工作中最常用的6种缓存

通过这篇文章,我们系统地探讨了工作中最常用的六种缓存技术。本地缓存:适合进程内、变化不频繁的只读数据Redis:功能丰富的分布式缓存,适合大多数共享缓存场景Memcached:简单高效的分布式缓存,适合纯Key-Value场景CDN缓存:加速静态资源,提升全球访问速度浏览器缓存:最前端的优化,减少不必要的网络请求数据库缓存:最后一道防线,优化数据库访问性能缓存使用的核心原则可以总结为以下几点分级缓存:合理利用多级缓存架构合适粒度:根据业务特点选择缓存粒度及时更新:设计合理的缓存更新策略监控告警。

2025-12-17 19:29:12 561

原创 2025 年 12 月编程语言排行榜|R 语言杀回前十,C# 或能拿下年度编程语言~

TIOBE 2025 年 12 月份的编程语言排行榜已经公布,官方的标题是:R 语言杀回前十(Programming language R is back in the top 10)。R 语言是专为统计分析和数据可视化设计的专业工具体系,为统计学家和数据科学家提供直接有效的工具,现在学术界和研究密集型行业依旧稳定依赖它。本月 R 语言重新进入 TIOBE 指数前十,反映企业对数据统计深度分析、可视化呈现的需求持续增强。

2025-12-17 19:26:06 716

空空如也

空空如也

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

TA关注的人

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