- 博客(386)
- 资源 (8)
- 收藏
- 关注
原创 SpringBoot项目整合MongoDB启动失败的常见错误总结
摘要: 本文总结了SpringBoot连接MongoDB时常见的5大类问题及解决方案,包括:1)连接配置问题(URI错误、认证失败、IP白名单、数据库名称);2)服务配置问题(服务未启动、端口占用、配置文件错误);3)依赖冲突问题(自动配置冲突、驱动版本不兼容);4)权限与数据问题(用户权限不足、存储目录权限);5)其他问题(连接超时)。针对每类问题提供了具体的错误内容和解决方法,主要适用于使用MongoDB Atlas服务或本地部署时出现的连接异常情况。
2025-11-17 20:21:16
2345
5
原创 MySQL与Redis缓存一致性问题详解及解决方案
文章摘要 本文深入剖析了缓存一致性问题的核心,即数据库与缓存操作的非原子性。通过对比四种常见缓存更新策略,推荐"先更新数据库再删除缓存"作为最佳方案。针对高并发场景,提出延时双删、MQ重试和Binlog监听等解决方案,并分析了各自的适用场景与优缺点。文章强调缓存过期时间仅是兜底方案,同时提供了避免缓存不一致的实用技巧,如互斥锁和合理的Key设计。最后总结推荐Cache-Aside模式作为首选策略,高并发场景辅以延时双删方案。
2025-11-06 20:46:09
16370
16
原创 SpringBoot中XXL-JOB实现灵活控制的分片处理方案
SpringBoot中基于XXL-JOB实现大量数据灵活控制的分片处理方案: 因为需要并行处理同一张数据表里的数据,所以比较自然地想到了分片查询数据,可以利用对 id 取模的方法进行分片,避免同一条数据被重复处理。那XXL-JOB 的路由策略「分片广播 & 动态分片」很贴合这种场景」来调度定时任务;
2024-09-25 21:34:20
10390
18
原创 SpringBoot中使用EasyExcel并行导出多个excel文件并压缩zip后下载
SpringBoot的同步导出方式中,服务器会阻塞直到Excel文件生成完毕,在处理大量数据的导出功能,利用CompletableFuture,我们可以将导出任务异步化,最后 这些文件进一步压缩成ZIP格式以方便下载
2024-09-16 22:03:30
12713
8
原创 算法学习攻略总结 : 入门至进阶,通关之路指南
算法学习攻略,学习算法没有捷径可走:先死磕入门数据结构,然后接触一些算法思想,最后开始分类刷题。刷题就是最好的捷径了,但刷题后不要就此止步,应该尽可能寻找最优解。当你积累了一定的题量后,你会发现自己的算法能力得到了显著提升。
2024-09-12 21:55:19
53274
19
原创 SpringBoot中注册Bean的10种方式总结
SpringBoot中Bean是构成应用的核心组件。Spring容器负责管理Bean,包括它们的创建、配置、组装、管理和销毁。其提供了多种方式可以注册Bean。本文将总结这些不同的注册方式适用场景。
2024-08-09 22:20:39
78094
4
原创 SpringBoot中读取配置的七种方法总结
Spring Boot提供了多种灵活且强大的方式来读取配置信息。开发者可以根据具体需求和场景选择最适合的方法来管理和使用配置。无论是简单的键值对还是复杂的配置结构,Spring Boot都能提供相应的支持来简化配置读取的过程。
2024-08-06 22:54:00
11521
22
原创 SpringBoot配置文件高级用法实战
Spring Boot配置文件的优先级是一个重要的概念,它决定了当存在多个配置文件时,哪个配置文件中的配置将被优先采用。
2024-08-03 20:54:11
23394
114
原创 Netty技术全解析:PooledUnsafeDirectByteBuf详解
PooledUnsafeDirectByteBuf 是 Netty 中一个结合了内存池技术和直接内存分配优势的字节缓冲区实现。它通过减少内存分配和释放的开销、降低内存复制成本以及对GC压力小等特点,为高性能网络编程提供了有力的支持。同时,Netty 通过避免直接使用 Unsafe 类来确保实现的稳定性和安全性。
2024-08-01 10:00:00
1590
2
原创 SpringBoot中出入参增强的5种方法总结实战 : 加解密、脱敏、格式转换、时间时区处理等
可以编写自定义的来处理特定的媒体类型,并在其中实现自定义的序列化和反序列化逻辑。然后,将其注册到Spring MVC的配置中。使用场景当Spring Boot默认的无法满足自定义的序列化和反序列化需求时。当需要处理非标准的媒体类型时,如自定义的二进制格式或文本格式。当需要在序列化和反序列化过程中应用复杂的业务逻辑时。创建一个自定义的super();@Override选择哪种方法取决于你的具体需求和偏好。通常,对于简单的自定义需求,使用和注解是最直接和简单的方式。
2024-07-29 23:30:00
26353
8
原创 SpringBoot中优化if-else语句的七种方法实战
通过策略模式、枚举与策略模式结合、状态模式, 多态性、Lambda表达式与函数接口、命令模式以及保护子句等策略,我们可以有效地减少Spring Boot项目中`if-else`语句的使用,提升代码的可读性、可维护性和模块化水平。每种策略都有其适用的场景,合理选择和组合这些策略,可以帮助我们编写出更简洁、更高效的代码。
2024-07-26 23:30:00
12599
33
原创 SpringBoot整合Flink CDC,实时追踪mysql数据变动
Flink CDC(Flink Change Data Capture)是一种基于数据库日志的CDC技术,它实现了一个全增量一体化的数据集成框架。与Flink计算框架相结合,Flink CDC能够高效地实现海量数据的实时集成。其核心功能在于实时监视数据库或数据流中的数据变动,并将这些变动抽取出来,以便进行进一步的处理和分析。借助Flink CDC,用户可以轻松地构建实时数据管道,实时响应和处理数据变动,为实时分析、实时报表和实时决策等场景提供有力支持。
2024-07-23 23:20:53
29285
111
原创 Netty技术全解析:Channel技术详解
Channel是Netty框架中的核心组件之一,它代表了一个到实体的开放连接,并提供了执行网络IO操作的方法。通过深入了解Channel的实现原理和功能,我们可以更好地利用Netty框架开发高性能的网络应用。在实际开发中,我们应该根据具体的需求选择合适的Channel实现类,并合理地配置和使用Channel,以确保网络应用的稳定性和性能。
2024-07-22 16:00:00
1475
5
原创 SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战
fastjson允许用户自定义序列化器,用于控制特定类型的序列化过程。用户需要实现接口,并重写write方法。@Override// 自定义序列化逻辑在序列化过程中,可以通过枚举值来指定使用自定义序列化器。fastjson允许用户自定义日期格式。可以通过枚举值和来指定日期格式。此外,用户还可以通过DateFormat属性来指定全局的日期格式。类似地,fastjson也支持自定义反序列化器。用户需要实现接口,并重写deserialze方法。
2024-07-20 22:48:08
20015
109
原创 elasticsearch性能调优方法原理与实战
Elasticsearch性能调优是一个持续的过程,需要根据业务需求、数据量和集群规模不断调整和优化。希望本文提供的详细分析和建议能够帮助读者更好地理解和应用Elasticsearch性能调优方法,提升系统的整体效能。同时,也鼓励读者不断探索和实践新的调优策略,以适应不断变化的业务需求和技术环境。
2024-07-14 22:09:24
17602
103
原创 lua 脚本语言 : 基础到高级语法
在Lua中,函数可以用作数据赋值,也可以作为参数传递。函数可以返回多个值。return x+yendprint(add(1,2)) -- 输出:3在 Lua 中,函数的定义和调用是非常灵活和强大的。除了基本的函数定义和调用,Lua 还支持一些特殊的函数语法,如匿名函数、可变参数函数等。基本函数定义使用function关键字,后面跟着函数名和参数列表,然后是函数体。-- 函数体endlocal result = myFunction(3, 4) -- 调用函数,将返回值赋值给变量 result。
2024-07-12 23:00:26
7504
80
原创 算法学习路线总结: 算法工程师的修炼手册
在算法工程师的学习之路上,经常被问到的问题就是“应该如何系统地学习算法?那,今天,它来了!我将为大家详细解读算法工程师的学习路线,不仅包括基础理论知识,还涵盖实战经验和项目实践。为了更好地帮助大家,我还专门收集整理了配套的视频教程、教材推荐以及刷题网站等资源。
2024-07-01 23:44:01
74599
95
原创 elasticsearch去重:collapse、cardinality、terms+top_hits实现总结
灵活性:字段聚合+top_hits提供了更多的自定义选项,可以按多个字段进行分组,并控制返回的文档数量和排序。而collapse则更简单直接,只基于一个字段进行分组。性能:对于大数据集,collapse可能更高效,因为它避免了复杂的聚合计算。然而,实际性能还取决于具体的使用场景和数据分布。结果丰富性:字段聚合+top_hits可以返回更丰富的信息,包括分组大小和多个代表文档。而collapse只返回每个分组的最佳文档。在选择使用哪种方法时,应根据具体需求、数据量和性能要求来权衡。
2024-06-28 23:33:28
15170
85
原创 elasticsearch 聚合 : 指标聚合、桶聚合、管道聚合解析使用总结
Elasticsearch中的聚合查询是一种功能强大的数据分析工具,它能够提供从索引中提取和计算有关数据的复杂统计信息的能力。聚合查询不仅可以帮助用户理解和分析数据中的趋势和模式,还能在业务决策中发挥关键作用。聚合查询支持多种类型,包括指标聚合、桶聚合和管道聚合,每一种都有其特定的应用场景和使用方法。
2024-06-25 23:43:49
14855
107
原创 elasticsearch pipelineI详解:原理与使用
在Elasticsearch的数据处理流程中,Pipeline API为数据的预处理和转换提供了强大的工具。随着Elasticsearch 5.x版本之后Ingest Node的引入,Pipeline API的引入为开发者们提供了更多的灵活性和便利性。本文将对Pipeline API的原理、具体使用方法及其在实际场景中的应用进行更加详细的探讨。
2024-06-22 23:38:20
18539
105
原创 Elasticsearch中的post_filter后置过滤器技术
Post_Filter后置过滤器是一种在查询执行完成后对结果进行过滤的机制。与传统的过滤器不同,Post_Filter不会对查询的性能产生显著影响,因为它是在查询完成后对结果进行过滤的。这使得Post_Filter在处理大量数据或复杂查询时成为一种高效的选择。Post_Filter的工作原理是在查询执行完毕后,对返回的文档集进行过滤。这意味着所有与查询匹配的文档都会被检索出来,然后Post_Filter会对这些文档进行额外的过滤操作,以满足特定的条件。
2024-06-19 23:24:58
13082
99
原创 MySQL普通表转换为分区表实战指南
本文将详细指导新手开发者如何将MySQL中的普通表转换为分区表。分区表在处理庞大数据集时展现出显著的性能优势,不仅能大幅提升查询速度,还能有效简化数据维护工作。通过掌握这一技巧能够更好地应对数据密集型应用带来的挑战,为系统的高效运行奠定坚实基础。
2024-06-10 20:10:19
80986
24
原创 MySQL Hints:控制查询优化器的选择
MySQL Hints是一组特殊的注释或指令,可以直接嵌入到SQL查询中,以改变MySQL优化器的默认行为。这些Hints通常被用于解决性能问题,或者当开发者比优化器更了解数据分布和查询特性时,来指导优化器选择更好的查询计划。MySQL Hints是一种强大的工具,可以帮助我们解决复杂的查询性能问题。然而,它们应该谨慎使用,并且总是与彻底的测试和验证相结合。通过正确使用Hints,我们可以引导MySQL优化器做出更明智的决策,从而提高数据库查询的性能和稳定性。
2024-06-04 21:40:08
11828
119
原创 MySQL分区表:万字详解与实践指南
MySQL分区是一种数据库优化的技术,它允许将一个大的表或一个索引分割成多个较小的、更易于管理的片段,称为分区。这种技术可以显著提高查询性能、维护的方便性以及数据管理效率。本文将详细介绍MySQL分区的基本概念、工作原理、使用场景以及操作。
2024-05-17 19:54:16
93592
226
原创 Elasticsearch中的三种分页策略深度解析:原理、使用及对比
在选择Elasticsearch的分页方式时,需要根据具体的需求和使用场景来权衡各种方式的优缺点。`from + size`适用于数据量不大、实时性要求高的场景;`scroll`适用于需要遍历大量数据、非实时性要求高的场景;而`search_after`则适用于需要深度分页、实时性要求相对较高、且排序字段唯一的场景。通过合理使用这些分页方式,可以提高Elasticsearch的查询性能,更好地满足业务需求。
2024-05-08 19:07:09
73830
285
原创 Spring Boot中使用Redis和Lua脚本实现延时队列
通过使用Redis和Lua脚本,我们可以在Spring Boot环境中实现一个高效且可靠的延时队列系统。这种方法利用了Redis的有序集合数据结构和Lua脚本的原子性操作来确保任务的正确性和一致性。通过定期调度任务来处理到期的任务,我们可以实现各种需要延迟执行的操作,如发送提醒、执行定时任务等。
2024-05-03 21:20:57
20306
174
原创 深入探索Java并发编程:ConcurrentSkipListSet的高效使用与实现原理
在Java的并发编程中,ConcurrentSkipListSet是一个提供高并发访问能力的有序集合实现。它基于Skip List(跳表)数据结构,并通过精细的锁策略实现了高效的并发操作。本文将深入探讨ConcurrentSkipListSet的内部实现、特性、使用场景以及与其他并发集合的比较。
2024-03-19 15:58:54
1611
6
原创 elasticsearch写入流程和请求检索流程原理全方位解析
首先,从架构的角度来看,Elasticsearch是一个分布式的搜索和分析引擎,它能够存储、搜索和分析大量数据。为了实现这些功能,Elasticsearch采用了分片和副本的机制,使得数据可以分布在多个节点上,并且具有容错性和可扩展性。Elasticsearch的读写流程是一个精心设计的、分布式的处理过程。在写入数据时,它通过缓冲区、事务日志、刷新和flush操作等机制,确保了数据的可靠性与持久性。同时,借助Lucene的强大索引能力,将文档快速转换成可被搜索的形式。
2024-03-19 08:00:00
29977
132
原创 flowable、activiti、camunda 三大工作流引擎技术选型指南
在选择Activiti、Camunda还是Flowable时,您应根据具体需求进行权衡。如果您注重流程的直观建模和易用性,同时希望有丰富的社区资源和插件库支持,那么Camunda可能是一个不错的选择。如果您需要高性能和可扩展的解决方案,并且对商业支持和服务有较高要求,那么Camunda的商业版或Flowable可能是更适合您的选项。而如果您正在寻找一个轻量级且易于集成的工作流引擎,并且愿意接受一定程度的配置和部署复杂性,那么Activiti仍然是一个值得考虑的选项之一。
2024-02-03 16:26:31
103522
7
原创 MapStruct使用教程高级版
MapStruct是一个用于Java的代码生成库,它基于注解处理器在编译时生成类型安全且高性能的对象映射代码,MapStruct可以帮助开发者减少手动编写繁琐的JavaBean之间的转换代码,提高代码的可读性和维护性。
2023-11-04 18:13:45
103502
5
原创 MySQL Online DDL详解:从历史演进到原理及使用
在 MySQL 5.6 中,官方开始支持更多的 ALTER TABLE 类型操作来避免数据拷贝,同时支持了在线上 DDL 的过程中不阻塞 DML 操作,真正意义上的实现了 Online DDL。然而并不是所有的 DDL 操作都支持在线操作,后面会附上 MySQL 官方文档对于 DDL 操作的总结。到了 MySQL 5.7,在 5.6 的基础上又增加了一些新的特性,比如:增加了重命名索引支持,支持了数值类型长度的增大和减小,支持了 VARCHAR 类型的在线增大等。
2023-08-02 18:25:07
125262
7
原创 Go语言全栈成长之路之入门与标准库核心41:io.Pipe goroutine 间管道通信
本文深入解析Go语言中io.Pipe的实现与应用。作为goroutine间流式数据通信的高效工具,io.Pipe通过环形缓冲区和同步原语实现读写同步,完美适配I/O生态系统。相比channel更适合处理连续数据流,如文件传输、压缩解压等场景。文章从内部结构、同步机制到典型用例展开,包含流式压缩、HTTP代理等实战案例,展示其内存友好的特性。通过CloseWithError实现错误传递,并警示死锁风险,帮助开发者掌握这一高级并发编程工具。
2025-11-17 20:20:16
570
原创 SpringBoot整合Redis启动失败的常见错误总结
本文总结了Redis连接的常见问题及解决方案。主要内容包括:Redis服务未启动或配置错误的处理方式(如修改bind和protected-mode参数);配置文件错误排查方法(如检查host、port和密码);依赖问题的解决方法(如添加spring-boot-starter-data-redis依赖);集群配置错误的两种处理方案;密码不匹配问题的解决步骤;防火墙导致的端口访问问题的处理;连接池参数调整建议;以及依赖冲突和服务端端口占用问题的解决方案。通过遵循这些解决方案,可以有效排查和解决Redis连接问题
2025-11-15 22:02:27
5503
9
原创 Go语言全栈成长之路之入门与标准库核心39:io.Writer 输出流的抽象
摘要 io.Writer是Go语言I/O系统的核心接口,通过统一的Write方法实现了文件、网络、内存等多种数据目标的写入操作。本文深度解析io.Writer的语义特征,介绍*os.File、*bytes.Buffer等典型实现,并展示io.Copy、io.MultiWriter等工具函数的高效用法。重点讲解io.Writer的"组合优于继承"设计哲学,包括日志复制、流式管道等高级应用场景,帮助开发者编写更优雅、可复用的Go代码。无论是处理文件导出、构建Web服务还是设计数据流系统,掌握
2025-11-14 23:31:30
1017
1
原创 Go语言全栈成长之路之入门与标准库核心37:io.Reader 输入流的抽象
io.Readerio.Reader是Go语言I/O系统的灵魂接口。✅ 以极简设计实现无限可能✅ 统一了所有数据源的读取方式✅ 支持强大的组合与复用✅ 是构建高效、可维护Go应用的基础掌握io.Reader,你就掌握了Go的“数据流”思维。无论是处理文件、网络、还是自定义数据源,都能写出简洁、高效、可复用的代码。
2025-11-14 23:30:48
905
1
原创 Go语言全栈成长之路之入门与标准库核心36:bufio.Writer批量写入提升性能
bufio.Writer通过缓冲机制显著提升Go程序的I/O性能,将多次小写入合并为批量操作,减少系统调用。关键功能包括多种写入方法(Write/WriteString/WriteByte)和必要的Flush操作,适用于日志、数据处理等场景。最佳实践涉及缓冲区大小选择(4KB-128KB)和定期刷新机制,在保证数据安全性的同时大幅提升吞吐量。基准测试显示其性能可达直接写入的10-30倍,是高并发应用的必备组件。
2025-11-13 17:31:28
835
4
原创 Go语言全栈成长之路之入门与标准库核心35:bufio.Scanner 逐行读取大文件
摘要 本文深入解析Go语言中bufio.Scanner的使用技巧,重点介绍其在处理大文件时的优势。相比传统的bufio.Reader.ReadString方法,bufio.Scanner提供了更简洁、高效的API,支持自定义分词逻辑,并能安全处理内存溢出等问题。文章详细剖析了Scanner的核心设计、内置分词函数(如ScanLines、ScanWords)、错误处理机制,并通过JSON Lines文件的解析示例,展示如何实现自定义分词器。该工具是Go开发者处理日志、CSV等大文件的必备技能,能有效避免性能瓶
2025-11-13 13:49:46
874
原创 Maven 用户的 Gradle 迁移与精通手册
Gradle已成为现代Java/Kotlin生态的主流构建工具,被Android、Spring Boot等知名项目采用。相比Maven,Gradle具有更高灵活性(Groovy/Kotlin DSL)、更优性能(增量构建/缓存)和更强的扩展性,尤其适合多模块和自定义构建场景。其核心基于任务模型和插件机制,支持智能依赖管理。学习Gradle需掌握基础配置、依赖管理、多模块构建等核心技能,并逐步深入自定义任务和CI/CD集成。随着Kotlin和微服务的发展,Gradle正成为开发者提升竞争力的必备技能。
2025-11-12 22:06:21
12774
10
原创 Go语言全栈成长之路之入门与标准库核心34:bufio.Reader 带缓冲的高效读取
摘要: Go语言的bufio.Reader通过缓冲机制优化I/O性能,减少系统调用次数。默认4096字节缓冲区可显著提升读取效率,支持多种方法如Read、ReadByte、ReadString等,适用于文件处理、网络通信等场景。通过基准测试对比,其性能远超直接读取,特别适合大文件日志分析等高频I/O操作,是构建高效Go应用的关键组件。 (字数:100字)
2025-11-12 09:52:31
1063
原创 HTTP 500类别错误总结
本文总结了Java Web应用中HTTP 500错误的常见类型及解决方案。主要包含三类错误:代码异常类(如未捕获异常、JSP编译错误、资源耗尽);配置错误类(如数据库连接问题、服务器配置错误);依赖与环境问题(依赖缺失、版本冲突、环境不匹配)。针对每种情况提供了典型报错示例和具体解决方案,包括添加全局异常处理、修正配置文件、调整JVM参数等。这些方案可帮助开发者快速定位并解决500错误,提高应用稳定性。
2025-11-11 10:44:40
1700
2
架构师该如何考虑软件可持续迭代
2023-11-09
京东到家核心系统微服务演进落地实践
2023-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅