自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MybatisPlus实现真正批量插入

在 MyBatis-Plus 中实现真正高效的批量插入,可以通过多种方式实现,包括手动编写 XML SQL、使用IService接口的saveBatch方法以及自定义方法。每种方法都有其优缺点,开发者应根据具体业务需求和性能要求选择合适的方法。同时,合理的数据库配置和性能优化策略,也是确保批量操作高效执行的关键。通过本文的介绍,相信您能够更好地在项目中应用 MyBatis-Plus 实现高效的批量插入操作。

2024-10-06 20:55:19 10508

原创 MyBatis 基础使用指南

知识点重点内容#{}vs${}#{}预编译防 SQL 注入,${}直接拼接易受攻击LIKE 语句推荐,避免 SQL 注入动态 SQL使用实现动态查询获取主键适用于自增主键,selectKey适用于非自增。

2025-03-16 12:27:08 535

原创 MyBatis 传递多个参数的方式

方式适用场景代码简洁度灵活性@Param注解少量参数高低Map传参参数动态变化中高实体类封装固定结构参数高低List/Array批量查询高中XML 配合XML 方式参数传递低高✅@Param适用于少量参数,简单清晰。✅Map适用于参数动态变化的查询。✅ 实体类适用于结构固定的查询,推荐封装参数对象。✅List/Array适用于批量查询,但注意 SQL 注入风险。✅ XML 方式适用于复杂 SQL 处理,但可读性相对较低。

2025-03-16 12:26:05 1033

原创 什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,用于简化 Java 应用程序与数据库的交互。它提供了一种基于 SQL 映射的持久化方案,避免了 JDBC 繁琐的代码,同时比全自动的 ORM 框架(如 Hibernate)更灵活。✅需要手写 SQL,优化查询性能的项目复杂数据库结构,ORM 框架难以满足需求的场景需要轻量级持久层框架的应用❌需要全自动 ORM,避免写 SQL 的项目(可以考虑 Hibernate)🎯总结:MyBatis 结合了 SQL 的灵活性和 ORM 的便利性,适用于大多数企业级应用。

2025-03-14 23:57:43 885

原创 MyBatis 的一级、二级缓存

作用范围:SqlSession 级别存储位置:SqlSession 内存中默认开启SqlSession 关闭执行insertupdatedelete操作执行select时手动刷新缓存查询不同的 SQL 语句作用范围:Mapper(Namespace)级别,多 SqlSession 共享存储位置:MyBatis 全局级别缓存,通常存储在默认关闭,需要手动开启失效条件执行insertupdatedelete操作后,缓存会自动清除直接操作数据库✅一级缓存适用于。

2025-03-14 23:57:10 972

原创 Spring Boot 启动失败:Failed to start bean ‘documentationPluginsBootstrapper’ 解决方案

问题解决方案Spring Boot 2.6+ 与 SpringFox 3.0 不兼容添加依赖冲突确保版本正确,删除旧版 Swagger 依赖Spring Boot 3.x 不支持 SpringFox改用Swagger 配置文件错误确保配置正确。

2025-03-12 15:04:38 1788

原创 深入解析 JVM —— 从基础概念到实战调优的全链路学习指南

JVM(Java Virtual Machine)是一台虚拟计算机,它负责加载、验证、解释和执行编译后的字节码,实现了“一次编写,到处运行”。它屏蔽了平台差异,为 Java 程序提供了统一的运行环境。

2025-03-07 23:59:30 1362

原创 computeIfAbsent 的功能和语法

在 Java 开发中,我们经常需要从 获取一个值,如果这个值不存在,就先创建一个默认值再存进去。这通常需要手动 检查,但 Java 8 引入的 方法可以让代码更简洁、更高效!今天,我们就来深挖 ,看看它的作用、用法、对比、适用场景,并通过代码示例和性能分析让你真正掌握它!💡 是 Java 8 在 接口中新增的方法,作用是:方法签名:🔹 参数解析:问题:优势: ✔ 代码更简洁:不用手动 检查,避免冗余代码。✔ 避免并发问题:在多线程环境下, 可以减少竞态条件(race condition

2025-02-28 22:05:53 952

原创 Token相关设计

用途:前端每次请求携带该令牌,用于身份认证。有效期:较短(如10分钟 - 2小时)。存储方式:前端存储(如 LocalStorage、SessionStorage、HTTP Only Cookie)。信息载荷:用户 ID、权限、过期时间等。机制作用过期时间存储位置用于 API 认证短(10分钟-2小时)前端 LocalStorage/SessionStorage用于刷新 Access Token长(7天-30天)Redis/数据库双 Token 机制。

2025-02-28 22:02:31 1346

原创 从“记住我”到 Web 认证:Cookie、JWT 和 Session 的故事

方案存储位置适用场景安全性服务器压力是否支持跨域Cookie客户端轻量级存储,如用户偏好❌ 易被篡改✅ 低⚠️ 受 Same-Origin 限制Session服务器传统 Web 应用,单体架构✅ 安全❌ 高(需存 Session)❌ 不能跨域JWT客户端分布式系统、微服务⚠️ 需保护 Token✅ 低(无状态)✅ 支持。

2025-02-27 22:28:02 1362

原创 登录次数限制

如何平衡安全与用户体验?过于严格的限制可能导致误锁定正常用户,建议提供解锁选项(如通过邮箱验证)。如何应对复杂攻击场景?对于分布式暴力破解,需结合IP限制和设备指纹等多维度数据分析。是否需要提供自定义规则?根据业务场景,允许管理员配置失败次数、锁定时间等规则,以适应不同的安全需求。登录次数限制是一项核心的安全功能,它不仅能有效防御暴力破解攻击,还能增强系统的整体安全性。在实现过程中,应兼顾安全性、用户体验与系统性能。同时,通过动态调整规则、加入验证码和增强监控,可以进一步提升系统的防护能力。

2025-02-27 10:50:19 1127

原创 Spring Security 登录流程中的自定义解密实现

在 Spring Security 中,负责从数据库中加载用户数据,则负责对用户提交的凭据(如密码)进行校验。是前端传递的密码,是数据库中存储的密码,两者通过进行比对。Spring Security 默认会使用,因此需要通过配置显式替换为自定义的。在@Bean@Override用户通过前端提交加密后的密码。后端在中解密前端密码。解密后的密码与数据库中加密存储的密码进行比对。如果比对成功,认证通过;否则抛出异常。通过继承。

2025-02-26 09:21:37 466

原创 MyBatis-Plus 集成失败的常见问题与解决方案

配置文件路径错误或缺失。数据源或 Mapper 文件未正确配置。实体类与数据库字段映射错误。依赖冲突或版本问题。

2025-02-26 09:21:02 917

原创 Spring 三级缓存机制(解决循环依赖)

假设你是一个餐厅老板,你有两个大厨 A 和 B,他们互相配合做菜:如果他们都等对方的食材/酱料准备好,餐厅就会卡死,无法开张!(就像 Bean 创建时循环依赖)于是,你(Spring 容器)设计了一个聪明的解决方案:这个 共享架子,就是 Spring 三级缓存的核心机制!🔍假设 A 和 B 互相依赖(Setter 方式),Spring 解决循环依赖的过程如下:✅ 最终,A 和 B 都成功创建,没有死锁!如果有 AOP 代理,Spring 会先从三级缓存拿出工厂,创建代理对象,再放入二级缓存,保证最终拿到的

2025-02-25 10:39:12 661

原创 Spring 循环依赖解析与解决方案

在 Spring 容器中,循环依赖(Circular Dependency)Bean A 依赖 Bean BBean B 依赖 Bean A这种情况下,Spring 在创建 Bean 时会出现互相等待,可能导致异常。

2025-02-25 10:38:18 1102

原创 EasyExcel 实践案例:打印工资条

场景占位符格式填充方式每个人一个 Excel 文件{字段}(无fill(Map)每个人一个 Sheet{字段}(无fill(Map)一个 Sheet,多个员工{.字段}(有。

2025-02-24 21:11:45 383

原创 EasyExcel 使用指南:基础操作与常见问题

✨EasyExcel是阿里巴巴开源的高效 Excel 读写工具,适用于 Java 项目中处理大量 Excel 数据。相比传统的 POI,EasyExcel 内存占用低,处理速度快,非常适合大数据量场景。EasyExcel 是一个高效的 Excel 处理工具,特别适合大数据量的读取与写入。掌握它的基本用法和常见问题解决方案,能显著提高你的开发效率。

2025-02-24 21:08:45 1506

原创 【JUC编程】JUC 多线程基础全面解析(速食版,25年后更新专栏)

线程是 CPU 调度的最小单元。一个线程是一个独立的执行路径,可以与其他线程共享进程内的资源。JUC 是 Java 提供的一套强大的并发工具,它简化了多线程编程的复杂性,同时提供了高效、安全的解决方案。通过合理使用线程池、锁机制、并发集合以及线程通信工具,我们可以更高效地开发并发程序。在实际开发中,应根据具体场景选择合适的工具,以保证性能与安全性。总是学不会.

2024-12-23 23:29:00 1416

原创 【Mysql优化】SQL优化最佳实践分析与总结(速食版)

优化 SQL 查询的核心思想是减少不必要的资源消耗,提高数据库的利用效率。通过避免全表扫描、使用合适的索引、小表驱动大表、批量操作和分页优化,可以显著提升系统性能。总是学不会.

2024-12-21 23:54:23 812 4

原创 过滤器和拦截器的区别详解

特性过滤器(Filter)拦截器(Interceptor)来源Servlet 规范Spring 框架触发时机在请求进入 Servlet 前执行在请求到达控制器方法前后或完成后执行实现方式函数回调机制,需实现Filter接口动态代理机制,需实现接口适用范围Web 项目Web 项目及其他 Java 项目典型应用场景字符编码设置、数据压缩等通用功能用户认证、权限校验等业务逻辑总结过滤器和拦截器虽然都可以对请求进行处理,但在实现原理、触发时机、适用范围和使用场景上有显著差异。

2024-12-21 23:52:59 2751

原创 小M的数组变换

通过素因数分解和集合统计,我们可以高效判断数组是否能通过操作达到目标。本题的核心在于理解素因数分解的原理以及操作对素因子转移的影响,结合 Java 的集合类,代码实现简洁高效。本方法不仅可以解决本题,还为理解素因数分解提供了通用框架,是数学与编程结合的典范问题之一。总是学不会.

2024-12-20 23:48:39 1079

原创 【Mysql索引优化】索引优化的最佳实现

工作中遇到sql调优问题,结合调优工具和对索引的深入理解,应该能够帮助我们解决大部分问题了。总是学不会.

2024-12-20 23:26:54 1462

原创 第六篇:HTTP 的未来,会变成啥样?

在不断满足用户需求和适应技术发展的过程中,HTTP 也在面对新的挑战。本文将探讨 HTTP 的进化历史、与 WebSocket 的比较,以及它未来可能的方向。HTTP 从单纯的文件传输工具,成长为现代 Web 应用的中坚力量。无论是协议的升级,还是与其他通信技术的结合,HTTP 始终在变化中保持着生命力。HTTP 的无状态特性为开发带来了便利,但在复杂应用中也引入了额外的负担(如会话管理)。在现代 Web 应用中,HTTP 并不是唯一的通信协议,WebSocket 作为双向通信的代表,也发挥了重要作用。

2024-12-19 21:13:21 1321

原创 第五篇:前后端如何“扯皮”——HTTP 在开发中的应用

在这个过程中,HTTP 不仅是工具,也是一门艺术。本文将围绕 HTTP 在前后端分离中的作用、API 设计的对比以及缓存的实际应用,探讨如何用 HTTP 解决“扯皮”问题。REST(Representational State Transfer)是基于 HTTP 的设计风格,被广泛应用于前后端分离的项目中。在现代 Web 开发中,性能优化是绕不开的话题,而 HTTP 缓存则是关键。GraphQL 是“高级武器”,适合复杂或快速迭代的项目。前后端协作中,HTTP 不仅是技术工具,也是一种沟通语言。

2024-12-19 21:12:27 925

原创 【网络安全】网站常见安全漏洞—服务端漏洞介绍

如今,几乎每个网站或应用都会面临安全挑战,尤其是服务端漏洞,往往成为黑客攻击的目标。服务端漏洞不仅可能导致重要数据泄露,还可能让攻击者完全控制你的服务器。了解这些常见的漏洞,并采取防范措施,是每个开发者和系统管理员的必修课。在本文中,我们将深入探讨几种常见的服务端安全漏洞,包括SQL注入命令执行越权漏洞SSRF和文件上传漏洞等,并提供一些简单易行的防护措施。现代网站开发中,大部分功能是依赖第三方的开源组件或库来实现的。例如,使用框架(如Spring、React)或者其他工具库。

2024-12-18 22:17:24 1064

原创 【集合】Java 8 - Stream API 17种常用操作与案例详解

通过以上 17 个常用操作,我们可以看到 Stream API 在数据处理方面提供了强大的功能。数据过滤与筛选filter()distinct()limit()。数据转换与聚合map()flatMap()reduce()。数据统计与校验count()allMatch()anyMatch()。调试与排序peek()sorted()max()min()。合理使用 Stream API,能够让代码更加简洁、可读性更强,同时提高开发效率。希望这篇文章对大家有帮助!!👍★(疯狂暗示)

2024-12-18 22:13:54 1995

原创 【FTP】FTP基础知识点

将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。文件传送协议FTP(File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。RFC 959 很早就成为了因特网的正式标准。

2024-12-17 20:43:27 1217

原创 【AI系列】Paddle Speech安装指南

PaddleSpeech是一个基于PaddlePaddle深度学习框架的语音处理工具包,支持自动语音识别(ASR)、语音合成(TTS)、语音增强等功能。本文将详细介绍PaddleSpeech的安装过程,包括所需环境、Python和PaddlePaddle的安装,以及解决常见的错误问题。选择适合你的系统和需求的PaddlePaddle版本。在使用PaddleSpeech时,可能会遇到一些常见的错误,以下是几种常见的解决方案。安装完成后,你就可以开始使用PaddleSpeech进行语音识别等操作了。

2024-12-17 20:36:18 1644

原创 【Mysql优化】EXPLAIN 返回列详解:深入 SQL 查询优化的工具

EXPLAIN是 MySQL 提供的分析查询计划的命令,执行后会返回一张表格,展示 SQL 查询在实际执行时会采用的策略。是否进行了全表扫描。索引是否被正确利用。哪些地方需要优化。通过对EXPLAIN返回列的理解和应用,我们可以识别查询的性能瓶颈。使用合适的索引,避免全表扫描。优化子查询,尽量减少嵌套层级。使用EXPLAIN定位问题,逐步优化查询结构。总是学不会.

2024-12-16 16:03:56 1238

原创 【Mysql】数据库分区技术详解

分区是数据库管理中的一种技术,指的是将一张表或索引按照某种规则水平切分为多个物理部分。虽然逻辑上表仍然是整体,但在存储层面,这些分区是独立的。每个分区可以单独存储在不同的磁盘或节点上。示例假设有一个包含十亿条订单记录的表orders,如果按照年份划分分区,则每个分区只存储某一年的订单数据。分区是数据库在面对海量数据时的一种有效优化手段,通过将数据按一定规则划分为多个独立的物理存储部分,显著提升查询效率和管理灵活性。然而,分区的使用需要结合具体业务场景进行合理设计,以避免不必要的复杂性和开销。

2024-12-16 15:11:39 1302

原创 【【Mysql优化】数据库优化方法、Explain使用

数据库优化是一项系统性工作,应优先选择成本低、效果好的方式,如SQL及索引优化。Explain工具作为SQL优化的利器,可以帮助我们分析查询的执行计划,发现性能瓶颈。结合创建索引、调整执行计划、SQL改写等手段,可以大幅提升查询性能。优化并非一次性的工作,而是需要持续监控和调整。总是学不会.

2024-12-15 18:50:01 806

原创 【Mysql面试】MyISAM 与 InnoDB相关问题

ACIDRedo LogUndo Log MySQL 从 5.5 版本开始,默认存储引擎改为 InnoDB,因为:InnoDB 在创建表时,如果没有明确指定主键索引,它会按照以下规则选择用于主键的字段:NULLUNIQUENULLNULLORDER BYGROUP BYWHEREJOINORDER BY。

2024-12-15 15:51:30 667

原创 【Mysql】索引下推、索引合并详解

索引下推是 MySQL 5.6 引入的一项优化,用于减少回表次数。它将部分查询条件的过滤工作推到存储引擎层,而不是在 MySQL 服务层处理,从而提升查询效率。索引合并是 MySQL 从 5.1 开始支持的一种优化技术,允许 SQL 查询同时使用多个单列索引,通过合并结果提高查询性能。

2024-12-14 23:54:56 1012

原创 第四篇:HTTP 的铠甲——HTTPS 的故事

在这个世界里,HTTP 就像一个“普通快递员”,它虽然快速高效,但有一个致命的缺陷:信息传递的过程中可能被“偷听”甚至“篡改”。于是,为了保护隐私和安全,人们为 HTTP 穿上了一层坚固的铠甲——HTTPS。HTTPS 增加了加密和解密的计算开销,尤其是初次握手时的非对称加密。幸运的是,随着硬件性能提升和 HTTP/2 的推广,这种影响已经大幅降低。HTTPS 虽然为 HTTP 穿上了铠甲,但它并不是万能的。HTTPS 并不是一套新的协议,而是 HTTP 和 SSL/TLS 协议的结合体。

2024-12-14 23:52:44 871 1

原创 第三篇:HTTP 的烦恼与进化史

HTTP 的演变从“单车”到“摩托车”,再到“飞机”,是技术不断追求性能和效率的缩影。从 HTTP/1 的逐步优化,到 HTTP/2 的革命性改进,再到 HTTP/3 的飞跃,我们可以看到互联网基础设施的持续进化。版本主要特性存在问题HTTP/1明文传输、单路请求队头阻塞、头部冗余、无加密HTTP/2多路复用、头部压缩、二进制协议依然依赖 TCP,存在握手延迟HTTP/3QUIC 协议、默认加密部分浏览器与设备尚未完全支持总是学不会.

2024-12-12 23:30:02 1271

原创 【Mysql】索引相关基础知识(二)

对于InnoDB表,默认主键即为聚簇索引,优先选择查询频繁的字段作为主键。对查询频繁、过滤条件使用的字段单独加索引。优化查询效率时,考虑联合索引以支持覆盖索引和最左前缀匹配。索引过多会增加插入、删除、更新的成本,且占用磁盘空间。避免SELECT *,只查询需要的字段。建表时选择合适的字符集和排序规则(如优化查询效率时,考虑联合索引以支持覆盖索引和最左前缀匹配。索引过多会增加插入、删除、更新的成本,且占用磁盘空间。避免SELECT *,只查询需要的字段。建表时选择合适的字符集和排序规则(如总是学不会.

2024-12-12 23:27:29 749

原创 【Mysql面试】为什么 MySQL 选择 B+树作为默认索引的数据结构?

B+ 树的设计能够在磁盘 I/O 性能有限的情况下,通过高效的存储和查询策略,显著提升数据库索引的查询和维护效率。这使得它成为 MySQL 等数据库系统中首选的数据结构。B+ 树就像图书馆的高效目录系统,非叶子节点是目录,叶子节点是书架,链表是书架之间的通道。通过这种设计,无论是精准找书还是找一类书,效率都非常高。

2024-12-09 23:21:00 758

原创 【Mysql】索引相关基础知识(一)

在关系数据库中,索引是一种数据结构,用于将数据按照一定的规则排序,从而加速数据的查找和访问。,二叉树及其变种的使用有限,更多的是使用**多叉树(如 B 树和 B+ 树)**来组织数据。之所以是B树,而不是"xxx二叉树",就是它不再限制一个父节点中只能有两个子节点,而是。特点:多路平衡查找树,每个节点可以包含多个子节点,适合磁盘存储。在实际使用中,合理选择索引类型和数据结构是优化数据库性能的关键。因此,数据库系统通常会设计索引树的高度为3到4层。在 B+tree 中,A->B,你要先追踪A,才能追踪到B。

2024-12-09 23:11:46 1369

原创 【LINUX】Linux 下打包与部署 Java 程序的全流程指南

打包:使用 Maven 或 Gradle 构建 JAR 文件。运行:支持前台运行(直接运行)和后台运行(或nohup关闭程序:通过ps查找进程并使用kill停止。脚本管理:编写 Shell 脚本实现一键启动、停止、重启和状态查看。

2024-12-05 23:56:26 1073

原创 【LINUX】Shell 脚本管理 Java 程序详解

Shell 脚本是一种自动化工具,能够帮助我们批量执行任务。对于运行 Java 程序的场景,使用脚本可以避免每次手动输入复杂命令,提高效率并减少出错概率。在日常开发和部署中,管理 Java 程序通常需要执行以下操作:手动输入这些命令既麻烦又容易出错,而一个好的 Shell 脚本可以将这些操作封装起来,使用时只需简单调用即可。Shell 脚本文件是普通文本文件,通常以 为后缀,文件开头声明解释器::指定使用 Bash 解释器运行脚本。2. 常用命令:输出文本到终端。:列出系统中的进程。:停止

2024-12-05 23:52:42 774

空空如也

空空如也

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

TA关注的人

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