
Java
文章平均质量分 64
以Java为基础,逐步深入,搭建完整架构体系
一勺菠萝丶
做一个俗人,贪财好色,一世风流
展开
-
如何彻底禁用 Spring Boot 的热部署功能?| 小白也能懂的解决方案
如果你正在学习或使用框架,可能会遇到一个叫做的依赖。自动重启(热部署):当你修改 Java 代码后,应用会自动重启,无需手动停止再启动。(例如:修改了Controller的代码,刷新浏览器就能看到变化)静态资源实时更新:修改 HTML、CSS、JS 等文件后,浏览器会自动刷新页面。(适合前端调试)开发者友好配置:默认关闭模板引擎的缓存(如 Thymeleaf),方便调试时实时看到修改效果。场景操作效果需要热部署保留devtools依赖自动重启、实时刷新彻底禁用热部署移除devtools。原创 2025-05-20 10:27:56 · 350 阅读 · 0 评论 -
如何在数据库中正确存储金额?
基本原则✅ 精确计算 →DECIMAL✅ 极致性能 →BIGINT(需处理单位)❌ 禁止使用 →FLOATDOUBLE扩展建议金额字段设置为NOT NULL并设置默认值0定期备份和审计资金相关表用CHECK约束防止负数(如参考文档IEEE 754浮点数陷阱。原创 2025-05-19 11:53:01 · 731 阅读 · 0 评论 -
Redis实现分布式锁的进阶版:Redisson实战指南
避免手动处理复杂边界条件获得生产级的可靠性保证轻松扩展更多分布式功能。原创 2025-05-18 16:52:26 · 879 阅读 · 0 评论 -
Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码
Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码。二、配置文件中文乱码。原创 2025-05-14 19:25:23 · 365 阅读 · 0 评论 -
Java精度陷阱:为什么BigDecimal比较不能直接用doubleValue?
操作正确方式错误方式比较是否相等判断正负核心原则:涉及BigDecimal的数值比较或计算时,始终优先使用其原生方法(如compareTosubtract),避免转换为double或float。原创 2025-05-13 23:14:21 · 373 阅读 · 0 评论 -
深入理解Elasticsearch集群与分片:原理及配置方案
想象一下,你有海量的数据,比如一个超大型图书馆的所有书籍信息,要是把这些数据都放在一台电脑里,不仅存不下,而且查询起来会超级慢。Elasticsearch集群就像是一个分布式的数据图书馆系统,它把数据分散存储在多台服务器(我们叫它们节点)上,这些节点协同工作,就像图书馆里不同区域的工作人员,一起完成数据的存储、管理和查询任务。如果对数据可用性要求极高,也可以考虑增加副本数量,但要权衡资源消耗。假设我们有一个业务场景,需要处理中等规模的数据量,并且对查询性能和数据可用性有一定要求。原创 2025-02-15 18:24:02 · 534 阅读 · 0 评论 -
MongoDB 常用操作指南(Docker 环境下)
本文详细介绍如何在 Docker 中操作 MongoDB,包括如何进入命令行、进行用户认证、查看数据库和集合,以及常用的索引操作和其他高频使用的 MongoDB 方法。小白也能轻松上手。原创 2024-12-24 23:14:57 · 1507 阅读 · 0 评论 -
深入理解 `@TableId(type = IdType.AUTO)`:使用方法及其与其他主键生成策略的区别
是一个常见的配置选项,它指定了主键的生成策略。在实际开发中,如何配置主键生成策略对数据库的性能和稳定性有着重要影响。表示主键由数据库自动生成,通常与自增长字段一起使用。这意味着,主键的值在插入时由数据库自增,而不是由程序代码显式指定。通常情况下,主键字段需要具有唯一性,而且数据库会根据该字段的值来区分每一条记录。雪花算法是一种分布式ID生成算法,确保在分布式环境下每个服务生成的主键唯一且递增。配置表示主键为分布式的 UUID,通常与分布式系统搭配使用,确保不同节点生成的主键不会冲突。原创 2024-11-15 12:03:05 · 1951 阅读 · 0 评论 -
微服务中的技术使用与搭配:如何选择合适的工具构建高效的微服务架构
不同的技术能够解决不同的问题,比如服务发现、API网关、服务间通信、数据存储等。而API网关的作用是作为客户端和微服务之间的中介,它将客户端的请求路由到正确的服务,并处理跨服务的功能,如认证、负载均衡、限流等。微服务架构的一个重要特性是各个服务是独立部署的,因此它们的地址(IP、端口等)是动态变化的。微服务架构提倡每个服务拥有自己的数据库(或数据存储),这就要求我们在数据库的选择和管理上也要非常灵活。作为API网关,接收所有的外部请求,并将它们路由到正确的微服务,如用户服务、商品服务等。原创 2024-11-15 11:59:38 · 1023 阅读 · 0 评论 -
Java微服务架构概述:让复杂的系统变得简单
尽管每个部门是独立的,但它们之间会通过超市的系统进行协调,比如顾客买了一些水果,系统会自动更新库存。而微服务架构则与此不同,它把一个大型应用拆分成多个小的、独立的服务,每个服务完成系统中的一个具体功能。在微服务架构中,每个服务就像这个超市中的一个部门,每个服务负责某一方面的功能,彼此之间独立但又互相协作。比如,一个服务用Java开发,另一个服务用Python开发,甚至可以使用不同的数据库。随着微服务数量的增加,如何监控和管理大量的微服务实例,确保它们的健康和稳定运行,成为一个复杂的挑战。原创 2024-11-15 11:58:29 · 557 阅读 · 0 评论 -
Java Stream API 的应用:提取并处理多属性集合
何利用 Java Stream API 进行高效的数据提取和处理。通过flatMapfilter和distinct等操作,我们能够从复杂的数据结构中提取和处理所需的信息,同时保持代码的清晰和高效。原创 2024-08-20 09:23:41 · 625 阅读 · 0 评论 -
Java控制流和循环结构详解
在Java编程中,控制流语句是基本构建块之一,它们使我们能够根据不同的条件执行不同的代码路径,以及重复执行代码块。本文将详细介绍Java中的各种控制流语句和循环结构,包括它们的用法、示例和最佳实践。原创 2024-07-31 10:01:10 · 520 阅读 · 0 评论 -
成功解决:java.security.InvalidKeyException: Illegal key size
在集成微信支付到Spring Boot项目时,可能会遇到启动报错的问题。这是由于Java加密扩展(JCE)限制了密钥的长度。幸运的是,我们可以通过简单的替换文件来解决这个问题。原创 2024-07-30 10:13:58 · 1611 阅读 · 0 评论 -
如何在 Windows 上配置 Java 开发环境
配置 Java 开发环境是 Java 开发者的基础任务之一。本文将指导你如何在 Windows 操作系统上安装 Java 开发工具包(JDK)并设置相应的环境变量,确保你的开发环境能够正确编译和运行 Java 程序。原创 2024-07-22 15:14:26 · 782 阅读 · 0 评论 -
深入理解并使用 MySQL 的 SUBSTRING_INDEX 函数
是 MySQL 中的一个字符串函数,用于返回字符串从开始位置到指定的分隔符的第 N 次出现之前的部分。这个函数尤其在处理包含分隔符的字段时显得非常实用,比如文件路径、URLs、复合字符串等。原创 2024-07-18 16:25:47 · 2959 阅读 · 0 评论 -
使用MyBatis-Plus中的IPage和LambdaQueryWrapper进行分页查询
通过上述步骤,我们可以在MyBatis-Plus中实现一个基于的类型安全查询,并结合IPage接口实现分页功能。这种方式不仅提高了代码的可读性和维护性,也使得分页实现更为简洁和高效。原创 2024-07-18 14:16:32 · 2246 阅读 · 1 评论 -
如何使用Java和高德地图API将经纬度转换为地理位置信息
通过以上步骤,你可以轻松地在任何Java应用中实现经纬度到地理位置的转换。这对于开发地理信息系统(GIS)、位置服务或任何需要地理编码的应用都非常有用。希望这篇教程能帮助你在项目中实现位置转换功能。如果有任何疑问或者需要进一步的帮助,请在下方评论区留言。原创 2024-05-11 15:42:18 · 2583 阅读 · 0 评论 -
Mybatis plus自定义分页
这种方法在大多数情况下都非常高效。本文将介绍一种在服务层进行分页处理的策略,这种策略提供了更高的灵活性,适用于复杂的业务逻辑处理。在某些复杂的业务场景中,我们可能需要对数据集进行多层过滤、排序或其他预处理操作,而这些操作可能需要在应用层面完成,而非数据库层面。为了解决上述问题,我们可以将分页逻辑从数据库层移到服务层,即在获取到全部相关数据后,在应用服务器上进行分页处理。服务层分页是一种有效的数据处理策略,它通过在应用层面提供数据分页,使得开发者可以在满足复杂业务需求的同时,保持系统的响应性和灵活性。原创 2024-07-16 11:12:39 · 666 阅读 · 0 评论 -
如何解决《英雄联盟》高帧率却依然卡顿的问题
在《英雄联盟》中,即使帧率很高,游戏仍然感觉一卡一卡?这种问题往往与游戏的某些设置有关。原创 2024-07-10 15:23:28 · 5939 阅读 · 0 评论 -
理解和解决Spring框架中的事务自调用问题
在Spring中,如果在一个被标记的方法内部直接调用同一个类的另一个方法,第二个方法的事务管理将不会被触发。这是因为Spring事务管理默认是通过代理实现的,而这种内部调用绕过了Spring的代理机制。原创 2024-07-09 18:23:18 · 787 阅读 · 0 评论 -
选择合适的SSL证书:性价比最优选择指南
当我们谈论HTTPS证书时,主要涉及的是SSL/TLS证书,这些证书用于在服务器与客户端之间建立安全的加密连接。原创 2024-07-01 13:53:46 · 479 阅读 · 0 评论 -
如何在Java中使用Levenshtein距离实现字符串相似度匹配
Levenshtein距离是由俄罗斯科学家Vladimir Levenshtein在1965年提出的,用以量化两个字符串之间的差异。这种度量方式计算将一个字符串转换成另一个字符串所需要的最少编辑操作次数,包括插入、删除和替换字符。通过这个例子,我们可以看到Levenshtein距离是如何帮助我们在实际应用中匹配用户问题的。这种方法不仅适用于问答系统,还可以用于任何需要衡量文本相似度的场景,如搜索引擎优化、数据清洗等。原创 2024-06-27 14:40:28 · 1498 阅读 · 0 评论 -
成功解决ES高亮内容引起的字段显示不一致问题
在处理搜索引擎(如Elasticsearch)结果时,常见需求之一是对用户搜索的关键词进行高亮显示,这有助于用户快速识别搜索结果为何与其查询相关。但在实际应用中,如果处理不当,直接使用高亮片段可能会导致原始数据的部分内容丢失。原创 2024-06-25 18:44:49 · 1028 阅读 · 0 评论 -
如何在Elasticsearch中添加字段和更新索引映射
Elasticsearch 是一款强大的搜索和分析引擎,广泛用于全文搜索、实时数据分析和日志聚合等场景。在使用过程中,你可能需要向现有索引中添加新字段以支持更复杂的数据结构或新的功能需求。本文将详细介绍如何通过Elasticsearch的API来更新索引映射并添加新字段。原创 2024-06-21 17:55:16 · 1129 阅读 · 0 评论 -
Java开发接口设计的原则
在现代软件开发实践中,接口设计扮演着至关重要的角色。它不仅关乎代码的结构和未来的可维护性,还直接影响到软件系统的灵活性和扩展性。本文将通过实例详解几个核心的接口设计原则,帮助开发者更好地编写和管理接口,从而提升软件的整体质量。原创 2024-06-21 17:31:44 · 551 阅读 · 0 评论 -
TCP 协议详解:三次握手与四次挥手
TCP的三次握手和四次挥手是保证网络通信可靠性的关键机制。理解这两个过程对于任何网络专业人士来说都是基本功,不仅有助于解决网络问题,也有助于设计更高效的网络通信协议。原创 2024-06-21 17:16:48 · 1299 阅读 · 1 评论 -
如何排查和优化Linux服务器上的Java应用内存使用
在管理Linux服务器时,有效地监控和优化内存使用是保持系统稳定性的关键。特别是运行内存密集型的Java应用时,正确地诊断和处理高内存使用至关重要。本文将介绍几种方法来帮助你分析哪些进程或服务占用了较多的内存,并提供一些优化建议。原创 2024-06-19 10:51:03 · 1493 阅读 · 0 评论 -
解决Linux下Java应用因内存不足而崩溃的问题
在Linux系统中运行内存密集型的Java应用时,经常会遇到因系统内存不足而导致应用崩溃的问题。本文将探讨如何诊断这类问题以及提供有效的解决方案。原创 2024-06-19 10:47:38 · 547 阅读 · 0 评论 -
Java 8 Stream API与日期时间处理:按年月日分组
在Java 8中,Stream API提供了一种高效且表达式丰富的方式来处理集合数据。当我们需要对集合中的对象进行分组时,是一个非常实用的工具。此外,Java 8引入的新日期时间API(位于java.time包中)让日期和时间的操作变得更加直观和易于管理。原创 2024-06-18 15:38:31 · 1202 阅读 · 0 评论 -
优化Elasticsearch搜索性能:查询调优与索引设计
在构建基于 Elasticsearch 的搜索解决方案时,性能优化是关键。本文将深入探讨如何通过查询调优和索引设计来优化 Elasticsearch 的搜索性能,从而提高用户体验和系统效率。原创 2024-06-12 17:53:31 · 1278 阅读 · 0 评论 -
Mybatis中#和$的区别(通俗简单易解版)
和的标记。了解这两种方式的区别非常重要,因为它们在安全性和功能上有明显的不同。我们将通过示例来说明这些差异,并提供实用的建议,以帮助开发者选择适当的方式,以确保应用程序的安全性和效率。原创 2024-06-12 17:38:04 · 610 阅读 · 0 评论 -
MySQ中CONCAT函数使用
通过本文,我们详细了解了MySQL中处理字符串的一些常用函数,它们在数据处理和报告制作中非常有用。希望这些内容能够帮助你更有效地管理和查询数据库中的数据。点个关注,不会迷路!原创 2024-06-07 14:22:36 · 428 阅读 · 0 评论 -
Mysql sql语句字段截取前几位,后几位等
在MySQL中,处理字符串数据时,我们经常需要对字符串进行截取操作。MySQL提供了多种字符串截取函数,用以满足不同的需求。MySQL的字符串截取函数提供了强大的工具来处理和分析字符串数据。通过合理使用这些函数,可以极大地简化SQL查询中的字符串操作。函数是一个功能强大且灵活的字符串截取函数,它允许从任意位置开始截取,并可以指定截取的长度。此函数在Hibernate框架中不支持,但可以在MySQL客户端中使用。,此函数在Hibernate框架中不得支持,但在MySQL客户端中有效。原创 2024-06-07 14:03:02 · 3382 阅读 · 0 评论 -
确保数据完整性:使用 @NotNull 和 @NotBlank 注解
NotNull和@NotBlank注解是Java中常用的数据验证工具,它们帮助开发者确保数据的完整性和有效性。理解并正确使用这些注解,可以极大提高应用程序处理数据的准确性和用户体验。在设计表单或数据模型时,合理选择和应用这些注解,对于保障数据质量至关重要。原创 2024-06-06 14:23:19 · 700 阅读 · 0 评论 -
既然有了Tomcat,为什么还要Nginx?
在构建Web服务时,可能会有开发人员质疑,为何不能仅使用Tomcat,而必须引入Nginx?这看似一个简单的技术选择问题,实际上却关系到成本、安全性、扩展性和可用性等多个关键层面。本文将详细解析,在现代Web服务架构中,为什么Nginx的角色变得尤为重要。原创 2024-06-05 16:44:58 · 619 阅读 · 0 评论 -
深入解析MyBatis-Plus主键生成策略:优化数据库操作
TableId是 MyBatis-Plus 用来标注数据表主键的注解。其中,表示主键由数据库自动管理,通常对应于自增字段。这种方式简化了数据插入操作,避免了手动管理主键的复杂性。原创 2024-06-05 15:06:03 · 507 阅读 · 0 评论 -
深入理解 `@TableId(type = IdType.AUTO)`:使用方法及其与其他主键生成策略的区别
TableId是 MyBatis-Plus 用于标识数据库表主键字段的注解。是其中的一种主键生成策略,表示数据库表的主键字段采用自增策略,即由数据库自动生成主键值。在使用 MyBatis-Plus 时,选择适当的主键生成策略是非常重要的。适用于主键由数据库自动生成的场景,特别是在数据库设计中主键字段设置为自增时非常方便。而其他主键生成策略则适用于不同的业务需求,例如分布式系统、需要手动指定主键等。希望本文能帮助你更好地理解和使用及其他主键生成策略。原创 2024-05-14 16:19:52 · 6779 阅读 · 0 评论 -
提升应用性能必备:深入解析7大SQL优化技巧
通过掌握上述SQL优化技巧,可以显著提升数据库操作的效率。在实际应用中,根据具体场景选择合适的优化方法,不断调整和优化数据库性能。希望这篇博客能帮助你更好地理解和运用SQL优化技巧,提升应用程序的响应速度和用户体验。原创 2024-06-04 10:47:41 · 891 阅读 · 0 评论 -
RedisSearch vs. Elasticsearch:数据时代的全文搜索选择
RedisSearch是Redis的一个模块,将全文搜索功能集成到Redis中。RedisSearch利用Redis的内存存储和高性能特性,为用户提供快速、准确的搜索体验。它支持多种查询方式,包括全文搜索、精确匹配和模糊搜索,并且具有良好的可扩展性,能够应对大规模数据的搜索需求。Elasticsearch是一个基于Lucene的开源搜索和分析引擎。它提供了一个分布式、多租户的全文搜索引擎,具有强大的搜索和分析功能。原创 2024-06-04 10:41:40 · 515 阅读 · 0 评论 -
Java中HashMap的几种典型遍历方式
在Java中,HashMap是一种非常常用的数据结构。在管理键值对时,我们经常需要遍历整个HashMap。本文将展示几种典型的遍历方式,包括使用Java 8的Lambda表达式。如果你使用Java 8,由于该版本JDK支持Lambda表达式,可以采用第五种方式来遍历。如果你想使用泛型,可以参考方法三。如果你使用旧版JDK不支持泛型,可以参考方法四。原创 2024-06-04 10:34:07 · 1050 阅读 · 0 评论