自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

一、需求分析坦克大战中有我方坦克和敌方坦克,我方坦克有一个,敌方坦克有多个。坦克可以移动,也可以发射子弹。我方坦克可以通过上下左右键来控制方向,敌方坦克自动改变方向。在游戏窗体中有障碍物,包括砖墙、钢墙、水墙和草地。坦克可以穿过草地,在遇到其他障碍物时,我方坦克停止移动,并通过操纵改变方向再移动,敌方坦克遇到其他障碍物时可以自动的改变方向。我方坦克有三次生命值,当与敌方坦克或敌方子弹相撞时,生命值减- -, 当生命值是零时,敌方胜利,游戏结束。

2025-12-15 22:09:04 775

原创 苦熬三个月终于成功上岸!这份Java大厂面经值得学习一下!加油!

苦熬三个月终于成功上岸!这份Java大厂面经值得学习一下!加油!

2025-12-15 22:04:52 372

原创 快2026年了,Java程序员还有希望吗?如何备战春招?

2026年Java程序员仍有广阔发展空间,关键在于持续学习新技术趋势,深耕特定领域(如金融科技、云计算等),建立差异化竞争优势。春招备战需技术深度与广度并重,同时注重工程实践能力的展示。春招上岸Java面试题。

2025-12-14 20:53:25 902

原创 春招上岸Java面试神器!!

附赠:最新大厂面经合集+技术Leader推荐简历模板。

2025-12-12 22:31:54 284

原创 放弃 MySQL,拥抱 PG!

利用这个机制其实还可以做数据隔离,比如我们现在的 tb_employees 有一个状态字段 status,标识员工是否在职,然后我们创建一个 tb_employees_his 表记录已经离职的人员,然后给tb_employees 绑定一个触发器在status变为离职状态的时候,往tb_employees_his插入一条数据,然后删除掉tb_employees 中的数据,这样上层应用就查不到这个员工了,但是如果去掉ONLY关键字就还能查到。

2025-12-12 22:26:53 457

原创 领导:谁再在 SQL 中写 in 和 not in,直接走人!

IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?

2025-12-12 22:22:51 277

原创 为什么大厂都禁用 SET 存储用户?Redis避坑指南

选择策略就像整理衣柜:•把衣服胡乱堆进箱子(适合短期存储/不常修改)•使用分格收纳盒整理(适合长期使用/高频修改)在Java开发中,通过合理选择数据结构,可以使你的Redis性能获得质的飞跃。下次存储对象时,不妨先问自己:这个数据需要「整体收纳」还是「分格整理」?

2025-12-12 22:19:33 506

原创 推荐5款好用的 VS Code 插件:注释优雅、可视化数据结构、最强 AI 辅助编码!

AI编程已火了快两年了,各种编程插件层出不穷,已经彻底改变了成员编程代码的方式。AI编程助手中,公认最强的是基于GPT4的Github Copilot插件,但是仅官方订阅大概需要每个月70元左右,且网络方面也是需要考虑的方面,这么综合算下来成本还是不小的,而且Github Copilot还具备一定的使用门槛。因此,给大家推荐分享5个目前比较流行VS Code AI助手且免费使用。

2025-12-12 22:17:05 1211

原创 Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置

•藏好后端 IP,安心摸鱼不怕攻击;•流量均分,再也不用背锅服务器崩了;•让 Nginx 处理图片 JS,后端专注写接口;•恶意请求全拦下,日志清净心情好;•小绿锁一挂,产品经理笑哈哈。记住:Nginx 配置不是一次性的!上线后要根据服务器压力、用户反馈动态调整,比如大促时加大限流阈值,发现恶意 IP 及时拉黑。最后送大家一句摸鱼箴言:代码可以慢慢写,Nginx 必须稳如狗;配置写对了,摸鱼才安心!

2025-12-12 22:06:04 704

原创 JDK8 写 10 行,JDK17 写 1 行,我还用它干嘛?

还在用 Java 8 写代码?是时候升级你的技能库了!JDK 17 作为一个长期支持版本,带来了一系列令人惊艳的语法特性,让 Java 编程变得更加简洁高效。从优雅的密封类到简洁的记录类,从模式匹配到文本块,这些"神仙语法"不仅能让你的代码行数减少 30%,还能提高代码可读性和维护性。作为一位使用 JDK 17 已有两年的开发者,我将分享这些强大特性如何在实际项目中为我节省了无数时间,并彻底改变了我编写 Java 代码的方式。准备好迎接 Java 的新时代了吗?一、从 JDK 8 到 JDK 17。

2025-12-12 22:01:38 603

原创 Java泛型:T、E、K、V、?,你还在傻傻分不清?

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

2025-12-12 21:55:00 1002

原创 阿里又开源了一个顶级 Java 项目!!!

Spring AI Alibaba 作为阿里基于 Spring AI 扩展的 AI 框架,虽在多智能体开发与企业级特性上优势显著,但企业落地时面临 Prompt 调试低效、AI 质量无保障、线上运维难三大核心痛点。

2025-12-12 21:47:21 920

原创 MySQL的JSON_函数总结

以上我们了解了MySQL的常见json函数及用法,以及json_table()的使用场景和用法,虽然易读易用性不高,但对于一个存json内容的场景很有用。

2025-10-27 20:17:50 741

原创 什么是MySQL分区?

当数据库服务器因日常使用性能开始下降时,有多种优化选项可以帮助改善性能。一种常见的MySQL数据库优化方法是。本文将介绍MySQL分区的基础知识,如何在数据库中应用分区,以及它与的关系。

2025-10-27 19:54:04 700

原创 为超过10亿条记录的订单表新增字段

原因说明1. 不读数据不扫描 .ibd 文件,不 touch 任何数据页2. 不写数据不修改任何数据行,不产生 Redo/Undo3. 只改元数据仅更新数据字典(内存 + 少量日志)4. 无 I/O 压力磁盘、CPU、内存消耗几乎为零5. 锁粒度极小仅短暂持有 MDL(元数据锁),毫秒级gh-ost 的本质:用“数据迁移”绕过 MySQL DDL 的锁与重建问题。即使系统每秒写入 1 万条订单不锁表不丢数据最终一致安全完成 10 亿级大表变更。

2025-10-27 19:49:54 1044

原创 这20条SQL优化方案,让你的数据库查询速度提升10倍

SQL优化不是一蹴而就的,需要持续观察、分析和调整。索引是利器,但同时也要用对地方。

2025-10-27 19:41:07 723

原创 建了索引还是慢?索引失效原因有哪些?这10个坑你踩了几个

其实写代码跟做人差不多。建了索引,不一定能跑得快。方向不对,优化器再聪明也没用。人生可能也一样,选错路了,再怎么努力都白搭。希望咱们都能找到自己的最左前缀吧。好了,不早了,今天就这样。下次见。

2025-10-27 19:29:41 685

原创 聊聊Java里的那把锁:ReentrantLock到底有多强大?

说实话,在平时的开发中,synchronized确实能满足80%的需求。但当你需要更细粒度的控制,比如可中断的锁获取、超时机制、多个条件变量时,ReentrantLock的优势就体现出来了。不过也要注意,能力越大责任越大。ReentrantLock用起来比synchronized复杂,需要手动加锁解锁,要是忘了解锁,那问题就大了。所以我的建议是:先用synchronized,当它真的不够用时,再请出ReentrantLock这把利器。毕竟,合适的工具用在合适的场景,才是最好的编程实践。

2025-10-24 22:06:27 391

原创 见过哪些醍醐灌顶的Java代码:从“卧槽“到“原来如此“的顿悟

看完这些例子,你可能会说:"卧槽,原来代码还能这么写!但我想说,这只是冰山一角。编程就像修行,每一次顿悟都是一次成长。所以,下次写代码的时候,不妨多想想:这段代码十年后还有人愿意维护吗?如果答案是肯定的,那你就是真正的编程大师了。"代码不是写给机器看的,是写给下一个维护你的人看的——而那个人很可能就是未来的你。

2025-10-24 22:05:04 304

原创 35岁程序员失业了,除了送外卖,还能做什么?

35岁程序员失业,确实是一个非常大的挑战。但危机中或许也会藏着新的机遇。重要的是,捕蝇自暴自弃,认证找准自己的方向,然后坚定的走下去。任何行业的路都不好走,只要你能保持学习的热情,不断的提升自己,年龄就不是问题。35岁,不是终点,而是新的起点。

2025-10-24 22:02:53 395

原创 MySQL 表新增字段时报丢失连接错误

使用Navicat for MySQL执行该语句会报一个错误,如下图所示:2013 - Lost connection to MySQL server during query,翻译过来就是在查询过程中,MySQL服务器失去连接。该问题是大约一年前遇到的(2020年我写的文章),最近整理笔记看到了,趁有时间做一些整理记录。但是当时的具体环境已经无法复现了。

2025-10-24 21:04:27 921

原创 MySQL 关于视图的简单学习和使用

视图是一种简单的数据查询机制。不同于表,视图不涉及数据存储,不用担心视图会占满磁盘空间。创建视图,就是将一个查询结果保存为一个虚拟表,这个虚拟表可以执行。创建视图可能出于各种理由,比如对用户隐藏列、简化数据库设计等原因。简单来说视图其实就是保存了创建视图时的SELECT语句,通过视图查询数据其实最终查询的还是表,所以表中的数据变动,通过视图查询的结果也会相应的变化。

2025-10-24 20:46:34 549

原创 Redis客户端缓存的4种实现方式

Redis客户端缓存是提升应用性能的强大工具,通过减少网络请求和数据库访问,可以显著降低延迟并提高吞吐量。在实际应用中,这些策略往往不是相互排斥的,而是可以组合使用,针对不同类型的数据采用不同的缓存策略,以获得最佳性能和数据一致性平衡。无论选择哪种缓存策略,关键是理解自己应用的数据访问模式和一致性需求,并据此设计最合适的缓存解决方案。通过正确应用客户端缓存技术,可以在保持数据一致性的同时,显著提升系统性能和用户体验。

2025-10-23 20:30:24 596

原创 大数据量下Redis分片的5种策略

随着业务规模的增长,单一Redis实例面临着内存容量、网络带宽和计算能力的瓶颈。分片(Sharding)成为扩展Redis的关键策略,它将数据分散到多个Redis节点上,每个节点负责整个数据集的一个子集。本文将分享5种Redis分片策略。

2025-10-23 20:28:49 563

原创 一篇深度好文,带你彻底穿透JVM面试核心(附全模块答案解析)

我使用 jmap 命令,导出了一份线上堆栈,然后使用 MAT 进行分析,通过对 GC Roots 的分析,发现了一个非常大的 HashMap 对象,这个原本是其他同事做缓存用的,但是做了一个无界缓存,没有设置超时时间或者 LRU 策略,在使用上又没有重写key类对象的hashcode和equals方法,对象无法取出也直接造成了堆内存占用一直上升,后来,将这个缓存改成 guava 的 Cache,并设置了弱引用,故障就消失了。第三,由于缓存的使用,有大量的弱引用,拿一次长达 10 秒的 GC 来说。

2025-10-23 20:06:44 927

原创 如何选择合适的数据库?PostgreSQL与MySQL各项对比

首先,我们快速了解一下 PostgreSQL 和 MySQL 的定义,以便熟悉这两个关系型数据库管理系统。PostgreSQL,简称 Postgres,是一种广泛使用的关系型数据库管理系统(RDBMS),常用于存储和检索在数据库和表中组织的表格数据。Postgres 因其可扩展的框架和可靠性而备受行业信赖。Postgres 是一款开源工具,可免费下载安装和使用。它兼容所有主流操作系统,并支持许多扩展和插件。除了用作数据存储工具外,Postgres 提供了一种 SQL 方言,用于交互和管理其持久化的数据。

2025-10-22 21:45:18 464

原创 MySQL 时间类型深度解析:精度、时区陷阱与版本兼容

本文深入探讨了 MySQL 时间类型字段的使用陷阱和最佳实践,重点分析了 DATETIME 和 TIMESTAMP 这两种最常用的时间类型。文章从存储机制、时区处理、精度支持等多个维度进行了全面对比,揭示了在实际开发中容易忽视的关键问题。核心洞察:时区处理是根本区别:DATETIME 按字面值存储,时区无关;TIMESTAMP 存储为 UTC 时间,自动进行时区转换存储机制截然不同:TIMESTAMP 使用 4 字节整数存储,存在 2038 年问题;DATETIME 使用 5 字节位打包,时间范围更大。

2025-10-22 21:44:13 1003

原创 最新Java基础面试题RabbitMQ篇(全网最全、最细、含答案,全解析)

使用MQ的场景很多,主要有三个:解耦、异步、削峰。场景:A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊!

2025-10-22 21:34:34 1010

原创 SpringBoot 容器镜像更新只要200k,你敢信???

查看构建成品的镜像层发现竟然有两层一样大小,也会被推送了两遍。其中优化了entrypoint脚本,采用分层构建后启动应用不能采用传统的java $JAVA_OPTS -jar xxx.jar这方式启动应用。为解决镜像上传问题,调研了相关技术栈决定采用spring boot 2.3新增的镜像分层构建功能。以下是我们基于基础镜像构建spring boot镜像制品的Dockerfile,采用了比较传统的COPY jar包。相信这也是大家普遍采用的模式。优化后的镜像只有COPY这一层的jar包了。

2025-10-20 19:36:33 650

原创 SpringBoot 配置文件完全指南-从入门到精通

Spring Boot 配置文件是存储应用程序配置信息的文件,它们告诉应用程序如何运行,包括数据库连接、服务器端口、日志级别等关键信息。🎉恭喜你!你已经掌握了 Spring Boot 配置文件的精髓!✅配置文件基础- 掌握 application.properties 和 application.yml 的使用✅优先级管理- 理解配置文件的加载顺序和覆盖规则✅多环境配置- 实现开发、测试、生产环境的灵活切换✅高级技巧- 使用属性绑定、条件配置等高级特性✅最佳实践。

2025-10-20 19:25:01 803

原创 开发 Java 项目时的命名规范

类型命名模式示例官方Starterspring-boot-starter-模块名自定义Starter模块名-spring-boot-starter。

2025-10-20 19:17:32 658

原创 SpringBoot集成MongoDB使用

Description: 创建一个实体类,用@Document注解标注,表示这是一个MongoDB的集合(Collection)

2025-10-19 20:31:53 214

原创 Java 重试机制没写对,线上很容易出问题!这份生产级方案请收好

前端重试:浏览器/APP自动重新发请求给后端。后端重试:当一个后端服务调用另一个后端服务(或数据库、缓存、第三方API等)失败时,自动重新尝试调用的机制。层级负责的重试类型示例前端重试用户交互层面的瞬时故障网络抖动、网关超时API网关重试路由层面的故障后端服务实例短暂不可用后端服务重试业务逻辑层面的临时故障数据库连接超时、第三方API限流。

2025-10-19 20:22:09 521

原创 POST为什么发送两次请求

跨域资源共享(CORS)是浏览器的一种安全机制,用于控制不同源之间的HTTP请求。当你的前端应用(例如 https://myapp.com)尝试向不同源的服务器(例如 https://api.otherservice.com)发送请求时,浏览器会执行CORS检查。// 同源示例// 跨域示例https://myapp.com → https://api.service.com (不同域名)http://myapp.com → https://myapp.com (不同协议)

2025-10-19 20:08:56 703

原创 最新Java基础面试题!MySQL篇(全网最全、最细、含答案,全解析)

存储过程是一些预编译的 SQL 语句。1、更加直白的理解:存储过程可以说是一个记录集,它是由一些 T-SQL 语句组成的代码块,这些 T-SQL 语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。2、存储过程是一个预编译的代码块,执行效率比较高,一个存储过程替代大量 T_SQL 语句 ,可以降低网络通信量,提高通信速率,可以一定程度上确保数据安全。

2025-10-19 17:29:21 742

原创 最新Java基础面试题!集合篇(全网最全、最细、含答案,全解析)

ConcurrentHashMap 的迭代器创建后,就会按照哈希表结构遍历每个元素,但在遍历过程中,内部元素可能会发生变化,如果变化发生在已遍历过的部分,迭代器就不会反映出来,而如果变化发生在未遍历过的部分,迭代器就会发现并反映出来,这就是弱一致性。由于HashMap的K值本身就不允许重复,并且在HashMap中如果K/V相同时,会用新的V覆盖掉旧的V,然后返回旧的V,那么在HashSet中执行这一句话始终会返回一个false,导致插入失败,这样就保证了数据的不可重复性。

2025-10-19 16:46:14 716

原创 SpringBoot和Servlet的联系

Spring Boot 和 Servlet 之间存在紧密的联系,尽管现代开发中 Spring Boot 已成为主流,但 Servlet 仍然是其底层技术的核心组成部分。

2025-10-17 21:49:16 870

原创 Spring Boot的DispatcherServlet是如何封装和扩展原生Servlet功能的?

通过封装原生Servlet的底层 HTTP 处理能力,并整合 Spring 的依赖注入、AOP、自动化配置等特性,实现了从“协议处理”到“业务逻辑”的全栈抽象。这种设计既保留了Servlet的高性能基础,又提供了现代 Web 开发的便捷性,成为 Spring Boot 高效开发的核心支柱。

2025-10-17 21:48:49 440

原创 每日分享程序员掌握的知识之:分布式ID知识合集

UUID (Universally Unique Identifier),通用唯一识别码。UUID是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的。UUID由以下几部分的组合:1 当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。2 时钟序列。3 全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

2025-10-17 21:43:29 1044

原创 在DDD架构中,如何设计Domain层与Entity层的关系?

在DDD(领域驱动设计)架构中,与的关系是核心业务逻辑与数据模型的结合点,二者的设计直接影响系统的可维护性和扩展性。

2025-10-15 20:25:03 267

空空如也

空空如也

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

TA关注的人

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