自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 三面阿里,四面京东,終拿offer!Java面经分享!

本人某985计算机专业硕士,在校期间主要研究方向是大数据和分布式系统,有3个开源项目贡献经历,2段BAT级别实习经历。从去年9月开始准备秋招,最终通过阿里三面技术面+HR面,京东四面(含2轮技术交叉面),最终同时拿到阿里P6和京东T7的offer。

2025-11-24 20:05:17 1225

原创 面试官:MySQL 空值字段应该保存 NULL 还是默认值?

使用 MySQL 数据库时,对于一个可以为空的字段,如果没有值,应该保存 NULL 还是给一个默认值呢?多数时候我们不太注意,有时候不赋值,直接保存 NULL,有时候赋值一个业务指定的默认值。今天来聊一聊这个话题。

2025-11-24 19:47:31 439

原创 别再搞混了!交换机、路由器上的 G 口、F 口、E 口、S 口,到底差在哪?

在日常运维或机房部署时,很多人看到交换机或路由器的端口标识——,脑子里可能会冒出问号:这些口到底代表什么?为什么有的写“G1/0/1”,有的写“F0/0/1”,还有的设备干脆只标个“SFP”?别小看这些字母,它们可不是随意取的。每个字母都暗示了端口的。今天,我们就从工程师的角度,把这个问题彻底讲透。这串名称其实包含了关键信息:••而厂商为了简写,通常会在设备面板上或命令行中使用缩写:•→ Ethernet•••→ Serial(或 SFP,取决于上下文)所以这些字母,本质上是。

2025-11-24 19:46:54 307

原创 本周 13 个 YYDS 的 GitHub 项目,哪个你用过?

使用 SSHJ 库实现安全的 SSH 连接,Apache POI处理 Excel 文件,JFreeChart 生成图表,JTS 处理空间数据等。containerd 以守护进程形式运行,负责管理容器的整个生命周期,包括镜像的拉取和存储、容器的创建与监控、以及低层次的存储和网络附件管理。而设计的开源工具,有 8000 的星星。与传统的虚拟机不同,Lima 在设计上更加轻量级,专注于为开发人员提供接近原生体验的 Linux 环境。例如,可以设置当某个关键警报触发时,自动抑制相关的低级警报,避免不必要的干扰。

2025-11-24 19:45:24 250

原创 解决公共大屏幕蓝屏死机的尴尬:未来Windows将在死机后15秒内自动关闭屏幕

目前在许多公共场合有着大屏幕播放广告或者各种提示信息,例如在机场就有大屏幕播放航班的起降信息,这些大屏幕有些使用的是 Windows 系统,但如果系统崩溃就会出现硕大的蓝屏死机界面 (现在已经改成黑屏死机界面)。当维护人员抵达现场进行维护时重新激活屏幕可以看到必要的错误信息,例如是不是哪个驱动程序引起的故障,或者是普通故障重启系统之类的,这个功能仅限于数字广告牌类设备 (也就是公共大屏幕等),其他设备不会启用这个功能。

2025-11-24 19:42:45 213

原创 面试官问:为什么快排要随机化?

可以这样说:“快排的核心是分治,通过 pivot 将数组划分成左右两部分再递归。如果 pivot 选择不当,比如数据接近有序,会退化成 O(n²)。为避免退化,我们会采用随机化 pivot,让每次划分更均匀,使时间复杂度稳定在 O(n log n)。然后你需要我现场手写的话,我可以写标准版 + 随机化版本。这叫在理解的基础上会写 + 会解释 + 会设计。

2025-11-24 19:41:42 70

原创 不就写提示词?提示词工程 为啥是工程?

通过上述过程我们可以发现,虽然最终产物可能就是一段平平无奇的提示词,但整个过程是个完整的工程化流程。这也是为什么很多公司在招提示词工程师。在提示词工程师的JD中,普遍要求「深度理解提示词工程原理,能够使用提示工程工具进行系统化调优和设计」。

2025-11-24 19:41:06 546

原创 缓存穿透、缓存击穿、缓存雪崩,傻傻分不清楚?

对于从事后端开发的同学来说,缓存已经变成的项目中必不可少的技术之一。没错,缓存能给我们系统显著的提升性能。但如果你使用不好,或者缺乏相关经验,它也会带来很多意想不到的问题。今天我们一起聊聊如果在项目中引入了缓存,可能会给我们带来的下面这三大问题。看看你中招了没?但如果出现以下这两种特殊情况,比如:用户请求的id在缓存中不存在。恶意用户伪造不存在的id发起请求。这样的用户请求导致的结果是:每次从缓存中都查不到数据,而需要查询数据库,同时数据库中也没有查到该数据,也没法放入缓存。

2025-11-24 19:40:19 568

原创 图文详解:插上网线后,你的 IP 地址是怎么 “入职” 的?

更关键的是,静态 IP 是 “终身绑定” 的 — 只要设备不修改配置,就会一直使用这个 IP,也正因此,静态 IP 适合打印机、监控摄像头这类需要长期稳定联网的固定设备。:局域网内使用的 IP 地址,比如常见的 192.168 开头的地址,它就像 “楼层内部工牌”,只能在局域网这个 “楼层” 工作,没法直接对接整个互联网 “写字楼”;:比如 114.114.114.114,相当于自带 “翻译工具”,能把 “百度”“微信” 这类 “公司简称”,也就是网址,翻译成具体的 “IP 门牌号”;

2025-11-24 19:39:44 623

原创 写错变量名,Java 性能居然快了 37%?

首先,字符串长几个字符,hashCode 计算也就多几个循环,在现代 CPU 面前就是纳秒级的事。结果第二天看监控,API 延迟从 127ms 降到了 80ms,足足提升了 37%。再退十万步,就算没有缓存,少几个字母,少乘几次 31 ,就能省出几十毫秒?先纠正一下,这哥们说的其实是字段名,不是变量名。就这简单的算法,他是怎么得出“长且相似就冲突更多”的结论的?兄弟们,我学了十几年 Java,今天算是开了眼了。原来系统慢,不是数据库、不是 GC、不是锁竞争。网络、数据库、锁、GC、I/O、线程调度……

2025-11-24 19:38:58 221

原创 点评爱奇艺巨作——负载均衡:高并发网关设计原理与实践!

这本由爱奇艺技术团队编著的著作系统性地阐述了高并发场景下的网关设计与负载均衡技术,内容涵盖从基础理论到生产实践的完整知识体系。全书分为三大部分:书中详细介绍了爱奇艺自主研发的"基于QPS和延迟的动态权重算法",该算法能够实时感知后端节点负载状况,在高峰期自动调整流量分配策略。例如在春节联欢晚会直播期间,系统成功应对了瞬间500万+的并发请求。著作深入讲解了"机房级->集群级->实例级"的三级容灾方案,通过智能DNS、就近路由、服务降级等多重保障机制,确保99.99%的可用性。书中以2019年某机房光纤被挖断

2025-11-23 16:24:15 254

原创 深度解析实战阿里Sentinel微服务高并发流量治理!

因为包含的内容比较多,小编只是做了简单的截图介绍,每个章节都有更加细化的内容;

2025-11-23 16:15:17 210

原创 如何从程序员到架构师?需要具备哪些技能?

从改造现有系统痛点起步(如数据库分表方案),逐步承担更复杂的决策责任,同时建立技术影响力。从程序员成长为架构师需要系统性地提升技术深度、广度和软技能。如何从程序员到架构师?

2025-11-23 16:05:40 290

原创 替代ELK:ClickHouse+Kafka+FlieBeat才是最绝的

saas 服务未来会面临数据安全、合规等问题。公司的业务需要沉淀一套私有化部署能力,帮助业务提升行业竞争力。为了完善平台系统能力、我们需要沉淀一套数据体系帮助运营分析活动效果、提升运营能力。然而在实际的开发过程中,如果直接部署一套大数据体系,对于使用者来说将是一笔比较大的服务器开销。为此我们选用折中方案完善数据分析能力。

2025-11-23 15:53:59 525

原创 SpringBoot 数据权限新姿势,注解+动态SQL真香!

easy-data-scop 是一个通过动态注入SQL实现的数据权限项目。支持MyBatis、MyBatis-plus、MyBatis-flex。使用简单,无需设置各种复杂配置,仅仅通过注解便可实现效果功能。会根据find()方法返回的列表来构建SQL图片可以编写在对应需要数据权限拦截的方法上/*** 通过传递给DataScopeFindRule.find方法来获取指定的数据权限实体* @return*//*** 构建模板* TODO 注意:当key为多个时此值生效。

2025-11-23 15:53:15 375

原创 超越 AOP:搜集业务操作日志的 3 个新探索

基于以上的窗口机制,我们就可以对数据先进行范围的框定,通过窗口的滑动机制和补偿机制对窗口中的数据进行关联处理。通过以上的业务背景及实现落地过程,我感受到其实在日常业务需求对接和实现过程中,会伴随着各种各样的问题出现,会有很多因素让你对某技术方案进行舍弃,但是舍弃了A可能单来了B C D等一连串的问题,我们在做系统架构时,其实也是一个慢慢演进的过程,对技术实现的思路和方案要拥抱变化,摒弃自己的一些“技术极致”追求,做好兜底方案,完美的方案可能是少数,努力适配自己的技术架构和方案才是我们长期要做的。

2025-11-23 15:52:29 815

原创 百万数据检索真不用上ES!这套「低配高能」方案,网友直呼真香!

以后小伙伴们,业务中有类似的需求的时候,可以试试这种方案哈,别一个小小的系统还搞这些中间件哈,百分之99的开发碰不上,真的,我men只是配角!这种方式又会遇到问题,因为mysql不知道中文呀,它只知道有空格的英文,中文分词默认的方式不行,需要一种。实在不行,docker+ 主 从+从+从+从+从+从+从+从+从+从+从+从+从 .... 就能解决。话外~~~,其实写到这的时候就不想写了,现在gpt这么发达,还写博客,我都不知道自己在干嘛。通过相对比较精确的分词,可以很快的完成我们的目标,搜索 “

2025-11-23 15:51:32 68

原创 Spring Security + OAuth0 搭建高效认证与资源服务架构

OAuth 2.0(开放授权 2.0)是一个开放标准,用于授权第三方应用程序访问用户在资源所有者(用户)的帐户上存储的受保护资源,而无需共享用户凭据。OAuth 2.0 主要用于在互联网上安全地委托授权,广泛应用于身份验证和授权场景。

2025-11-23 15:50:45 316

原创 MyBatis标准日志输出有重大缺陷?手把手教你定制高性能日志方案!

我们在使用MyBatis或衍生产品时,通常会打开其默认日志输出功能,通过SQL日志来排查问题。MyBatis会为每个Mapper中的每个方法创建一个Log对象,所以前缀一般只需取到项目的根目录即可,但如果还引入根包名不同的子模块,还得一并添加。函数又会对其加锁调用,这就导致所有线程的SQL日志都是在排队输出。输出日志,众所周知,其输出时会阻塞当前线程,导致SQL查询不得不等待日志输出完后才能返回结果。这不仅可以解决日志输出的性能问题,也可以通过Log库配置统一SQL日志的格式和输出位置。

2025-11-23 15:49:48 314

原创 大公司为什么禁止 SpringBoot 项目使用 Tomcat?

同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?Tomcat是完全免费的,深受开发者的喜爱。在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

2025-11-23 15:49:10 511

原创 阿里巴巴2025年Java架构师岗面试题(正式版)

因为包含的内容比较多,上面只做了简单的章节截图介绍,每个章节都有更加细化的内容。

2025-11-19 20:49:24 545

原创 SpringBoot 接口防抖(防重复提交)的一些实现方案

在Web系统中,表单提交是一个非常常见的功能,如果不加控制,容易因为用户的误操作或网络延迟导致同一请求被发送多次,进而生成重复的数据记录。key分隔符是用来将多个参数合并在一起的,比如userName是张三,userPhone是123456,那么完整的key就是"张三&123456",最后再加上redis锁前缀,就组成了一个唯一key。从测试的结果上看,防抖是做到了,但是随着缓存消失、锁失效,还是可以发起同样的请求,所以要真正做到接口幂等性,还需要业务代码的判断、设置数据库表的UK索引等操作。

2025-11-19 20:24:28 817

原创 SpringBoot+WebSocket实时监控异常

最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。前端略微复杂,需要在一张位置分布图上进行鼠标描点定位各个设备和根据不同屏幕大小渲染,本文不做介绍,只是简单地用页面样式进行效果呈现。预期效果,未接收到请求前----->id为3的提交了异常,id为3的王五变成了红色。我们可以看到,id为3的王五状态已经变成异常的了,实时通讯成功。2、因为是模拟数据,所以全部显示正常,没有异常提交时的页面呈现。控制台输出,连接成功。

2025-11-19 20:23:49 376

原创 踩坑了,BigDecimal 使用不当,造成P0事故!

BigDecimal 创建出来的是对象,我们不能用传统的加减乘除对其进行运算,必须使用他的方法,在我们数据库存储里,如果我们使用的是 double 或者 float 类型,需要进行来回的转换后进行计算,非常不方便。float 和 double 类型,主要是为了科学计算和工程计算而设计的,之所以执行二进制浮点运算,是为了在广泛的数值范围上提供较为精确的快速近和计算。通过测试发现,当使用 double 或者 float 这些浮点数据类型时,会丢失精度,String、int 则不会,这是为什么呢?

2025-11-19 20:23:02 266

原创 号称取代 Elasticsearch,太猛了!

Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百个错误,几乎完全重写了代码并保持开源。这一切使 Manticore Search 成为一个现代,快速,轻量级和功能齐全的数据库,具有出色的全文搜索功能。对于更大的数据集,Manticore通过Manticore Columnar Library提供列存储支持,可以处理无法适合内存的数据集。Manticore是基于SQL的,使用SQL作为其本机语法,并与MySQL协议兼容,使您可以使用首选的MySQL客户端。

2025-11-19 20:22:23 226

原创 细数一些 JDK8 踩过的坑,说多了都是泪

遇到最大的坑:直接将 stream 修改成 parallelStream , 天真地以为做了性能优化。其他场景不再赘述,一定要知道 parallelStream 是并行的,多线程的问题它都有。stream 不同于数据库的排序操作,为 null 时数据库会默认排序,但这个API不会。下面案例:value 值由函数值返回,模拟返回 null, 运行结果 NPE。业务查询结果,先按第一个字段排序,相同再按照第二个字段排序......案例:模拟从 DB 检索出来的数据,按照业务要求进行多字段排序。

2025-11-19 20:21:51 819

原创 太方便了!SpringBoot 只需一个注解,就能搞定任意对象下载!

下载功能应该是比较常见的功能了,虽然一个项目里面可能出现的不多,但是基本上每个项目都会有,而且有些下载功能其实还是比较繁杂的,倒不是难,而是麻烦。因此,为了简化这一过程,有一个工具库,使得下载功能的实现变得更加简单快捷。❝传送门:https://github.com/Linyuzai/concept/wiki/Concept-Download❞如果我说现在只需要一个注解就能帮你下载任意的对象,是不是觉得非常的方便感觉差别不大?那就听听我遇到的一个下载需求。

2025-11-19 20:21:19 631

原创 SpringBoot + Nacos + k8s 优雅停机

ribbon 默认缓存刷新时间30s;停机的服务监听nacos反注册事件,判断是自己反注册了,表示准备关机,那么就可以停止对mq消息的监听,停止定时任务,这样就比在优雅停机时,进行mq 和 定时任务的停止更完美。上面的方案中,提到nacos反注册时,其他服务监听反注册事件,进行ribbon缓存刷新,那么,反注册的服务(停机服务)自身,是否可以也监听该事件呢?上面的步骤,其实还缺了不少基础的内容,比如,停止请求外,还要停止接收定时任务、停止接收mq消息,等待他们的完成,这2项都是我们微服务中必不可缺的能力。

2025-11-19 20:20:39 689

原创 用雪花 id 和 uuid 做 MySQL 主键,被领导怼了

在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。本篇博客的目录mysql程序实例 使用uuid和自增id的索引结构对比 总结。

2025-11-19 20:20:07 847

原创 SSO 单点登录和 OAuth2.0 有何区别?

此方法的缺点是它依赖于浏览器和会话状态,对于分布式或者微服务系统而言,可能需要在服务端做会话共享,但是服务端会话共享效率比较低,这不是一个好的方案。首先,SSO 主要关注用户在多个应用程序和服务之间的无缝切换和保持登录状态的问题。这种方法通过将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。在单点登录的上下文中,OAuth 可以用作一个中介,用户在一个“授权服务器”上登录,并获得一个访问令牌,该令牌可以用于访问其他“资源服务器”上的资源。

2025-11-19 20:16:34 503

原创 大数据+大模型+大并发精选面试题库:百万八股面试宝典!

大厂面试通常注重候选人对技术栈的深度理解和实际应用能力。掌握以上核心知识点,并通过实际项目或开源贡献积累经验,能显著提升面试通过率。建议结合具体场景和示例进行深入学习,避免死记硬背。需要拿来学习的小伙伴,直接查看下方名片!

2025-11-18 14:41:49 1540

原创 谁说 MySQL 单表行数不要超过 2000W?

1. Mysql 的表数据是以页的形式存放的,页在磁盘中不一定是连续的。2. 页的空间是 16K, 并不是所有的空间都是用来存放数据的,会有一些固定的信息,如,页头,页尾,页码,校验码等等。3. 在 B+ 树中,叶子节点和非叶子节点的数据结构是一样的,区别在于,叶子节点存放的是实际的行数据,而非叶子节点存放的是主键和页号。4. 索引结构不会影响单表最大行数,2kw 也只是推荐值,超过了这个值可能会导致 B + 树层级更高,影响查询性能。

2025-11-18 13:44:16 336

原创 Spring Cloud 复刻抖音推荐架构!!

我们的推荐系统通过多个服务的协作成功实现了预期功能,但是按照现在的实现,如果其中一个服务挂了,整个推荐系统就不可用了,显然这是我们不期望发生的,所以我们就需要考虑做服务降级,确保即使某个服务出问题,不影响整个系统的使用。这里说明下,我们本次的实例都采用模拟数据的思路,主要是让大家了解下设计思路,所以就不建立相关的库表了。

2025-11-18 13:43:38 348

原创 性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!

springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql+ThreadPoolTaskExecutor等。通过以上测试案列,同样是导入2000003 条数据,多线程耗时1.67分钟,单线程耗时5.75分钟。根据id分组,查看是否有id重复的数据,通过sql语句检查,没有发现重复入库的问题。多线程 测试 2000003 耗时如下:耗时1.67分钟。单线程测试2000003 耗时如下:耗时5.75分钟。

2025-11-18 13:42:56 360

原创 5年Java竟然不清楚 int(1) 和 int(10) 的区别!

zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。我们知道在mysql中 int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?可以看到成功了,说明int后面的数字,不影响int本身支持的大小,int(1)、int(2)...int(10)没什么区别。

2025-11-18 13:42:06 412

原创 用雪花 id 和 uuid 做 MySQL 主键,被领导怼了

在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。本篇博客的目录mysql程序实例 使用uuid和自增id的索引结构对比 总结。

2025-11-18 13:41:34 359

原创 SpringBoot + Nacos + k8s 优雅停机

ribbon 默认缓存刷新时间30s;停机的服务监听nacos反注册事件,判断是自己反注册了,表示准备关机,那么就可以停止对mq消息的监听,停止定时任务,这样就比在优雅停机时,进行mq 和 定时任务的停止更完美。上面的方案中,提到nacos反注册时,其他服务监听反注册事件,进行ribbon缓存刷新,那么,反注册的服务(停机服务)自身,是否可以也监听该事件呢?上面的步骤,其实还缺了不少基础的内容,比如,停止请求外,还要停止接收定时任务、停止接收mq消息,等待他们的完成,这2项都是我们微服务中必不可缺的能力。

2025-11-18 13:40:57 246

原创 SSO 单点登录和 OAuth2.0 有何区别?

此方法的缺点是它依赖于浏览器和会话状态,对于分布式或者微服务系统而言,可能需要在服务端做会话共享,但是服务端会话共享效率比较低,这不是一个好的方案。首先,SSO 主要关注用户在多个应用程序和服务之间的无缝切换和保持登录状态的问题。这种方法通过将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。在单点登录的上下文中,OAuth 可以用作一个中介,用户在一个“授权服务器”上登录,并获得一个访问令牌,该令牌可以用于访问其他“资源服务器”上的资源。

2025-11-18 13:37:12 266

原创 大公司为什么禁止 SpringBoot 项目使用 Tomcat?

同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?Tomcat是完全免费的,深受开发者的喜爱。在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

2025-11-18 13:35:50 264

原创 MyBatis标准日志输出有重大缺陷?手把手教你定制高性能日志方案!

我们在使用MyBatis或衍生产品时,通常会打开其默认日志输出功能,通过SQL日志来排查问题。MyBatis会为每个Mapper中的每个方法创建一个Log对象,所以前缀一般只需取到项目的根目录即可,但如果还引入根包名不同的子模块,还得一并添加。函数又会对其加锁调用,这就导致所有线程的SQL日志都是在排队输出。输出日志,众所周知,其输出时会阻塞当前线程,导致SQL查询不得不等待日志输出完后才能返回结果。这不仅可以解决日志输出的性能问题,也可以通过Log库配置统一SQL日志的格式和输出位置。

2025-11-18 13:33:22 364

空空如也

空空如也

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

TA关注的人

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