
开发工具
文章平均质量分 91
开发工具
小沈同学呀
JAVA程序猿一枚,擅长分布式微服务、高并发、多线程等常规架构。记录成为架构师之路的点滴,分享工作中的各种疑难杂症。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
阿里巴巴高级Java工程师面试算法真题解析:LRU Cache实现
在互联网行业的技术面试中,尤其是针对高级Java工程师岗位,算法和数据结构的考察往往是决定性的一环。作为BAT(百度、阿里巴巴、腾讯)等一线互联网公司面试中的经典题目,LRU(Least Recently Used)缓存机制不仅体现了候选人对基础数据结构的掌握程度,更考察了其在实际场景中解决复杂问题的能力。原创 2025-08-08 14:46:39 · 935 阅读 · 0 评论 -
Java Validator自定义日期范围验证注解:实现不超过一年的时间跨度校验
在实际的业务开发中,我们经常需要对用户输入的时间范围进行校验,比如限制查询时间跨度不能超过一年。虽然Java提供了丰富的日期时间API,但针对特定业务规则的验证仍然需要我们自定义实现。这不,在最近的工作中需要实现dataTracking相关功能,免不了对数据处理跨度进行限制。为了方便在多个VO类中进行复用验证,我们实现了验证注解以满足实际业务需求。本文将详细介绍如何通过自定义注解和验证器来实现"时间跨度不超过一年"的校验逻辑,并探讨其中涉及的日期计算理论。原创 2025-08-01 16:03:25 · 824 阅读 · 0 评论 -
华为高频算法题:最长连续递增子序列(Longest Continuous Increasing Subsequence)
在各大互联网公司的算法面试中,数组类题目一直是考察的重点,尤其是对于应届生和初级工程师的面试来说更是常见题型。华为作为国内顶尖的科技企业,在校招和社招中也经常考察这类基础但极具代表性的题目。本题“最长连续递增子序列”是一道典型的数组遍历与状态维护问题,虽然难度适中,但却能很好地考察候选人对边界条件的处理能力、逻辑思维的严谨性以及代码的简洁性和可读性。原创 2025-07-23 14:58:17 · 488 阅读 · 0 评论 -
Spring Boot 中 META-INF 的作用与功能详解
META-INF 虽然只是一个小小的目录,但它承载了 Spring Boot 模块化、自动化装配、可扩展性等重要特性。掌握其使用方法,有助于我们更深入地理解 Spring Boot 内部机制,并构建高质量的 Starter 模块。如果你正在开发自己的 Spring Boot Starter,务必合理利用 META-INF 中的各种机制来提升模块的可集成性和易用性。原创 2025-07-17 15:06:22 · 1242 阅读 · 0 评论 -
分布式集群雪花 ID:基本结构与原理、推荐与使用策略
雪花算法是分布式系统中生成唯一ID的经典方案,它通过64位结构(41位时间戳+10位机器标识+12位序列号)实现高性能、趋势递增的全局唯一ID。该算法具有本地生成、有序性强等优势,但也面临时间回拨、workerId分配等挑战。改进版本如百度的UidGenerator增加了时间回拨容错机制。文章提供了原生Java实现示例和基于UidGenerator的实践方案,包括Maven依赖和数据库表设计,适用于大规模分布式系统部署。原创 2025-07-03 15:38:06 · 572 阅读 · 0 评论 -
SpringBoot高并发抽奖系统设计与实现,严格控制库存与中奖概率
在高并发场景下,抽奖系统的难点在于防止超发库存、保证中奖公平性以及高性能响应。本文将从架构设计到核心 Java 实现,逐步讲解如何构建一个可扩展的抽奖系统,并特别强调同步写入中奖记录和双重库存验证机制。原创 2025-05-28 11:51:58 · 933 阅读 · 0 评论 -
Apache JMeter API 接口压测技术指南
Apache JMeter 压测接口还是比较简单的,主要分为线程组压测和逐步加压压测。如果我们需要验证接口的最大并发量推荐选择逐步加压压测,这样对接口的并发量会有个明确的结论。当前,如果能够预估接口并发量则可以直接使用线程组以最大并发量压测,这样会简单很多。原创 2025-05-15 17:45:06 · 1194 阅读 · 0 评论 -
深入解析:实现一个详细的日志过滤器(LogFilter)
在现代 Web 应用开发中,日志记录是一个至关重要的环节。它不仅帮助我们调试问题,还能监控应用性能、分析用户行为,并确保系统的稳定性和安全性。本文将详细介绍如何实现一个详细的日志过滤器 LogFilter,记录 HTTP 请求和响应的详细信息,包括请求地址、方法、参数、头信息和体信息,以及响应的状态码、头信息和体信息。此外,我们还将探讨相关的理论和技术知识。综上所述,在我们的项目中,增加一个记录所有 HTTP 请求和响应的详细信息的日志过滤器还是比较简单。原创 2025-04-29 16:54:53 · 791 阅读 · 0 评论 -
Java Stream 复杂场景排序与分组技术解析与示例代码
Java Stream API 提供了强大的排序和分组功能,通过 sorted 方法可以方便地对流中的元素进行排序,通过 Collectors.groupingBy 方法可以对流中的元素进行分组。在复杂场景下,如多级排序、自定义排序逻辑、处理嵌套对象、多级分组与排序等,可以通过 Comparator.comparing 和 thenComparing 方法来实现多级排序,并通过Collectors.groupingBy来实现多级分组并按组内元素多级排序。原创 2025-04-19 09:56:35 · 1020 阅读 · 0 评论 -
微服务注册中心选择指南:Eureka vs Consul vs Zookeeper vs Nacos
服务注册与发现是微服务架构中的关键机制,主要包括以下功能:服务注册:服务实例启动时向注册中心注册自身信息,包括服务名称、IP 地址、端口等。服务发现:服务消费者通过注册中心获取服务提供者的地址信息,实现服务间的调用。健康检查:注册中心定期检查服务实例的健康状态,确保服务调用的可靠性。通过本文,可以了解到微服务注册中心的选择标准,并对比分析了四种流行的注册中心:Eureka、Consul、Zookeeper 和 Nacos。原创 2025-04-08 12:02:43 · 1752 阅读 · 0 评论 -
Spring Boot 嵌入式容器性能对决:Tomcat vs Undertow!
通过本文,已经了解到了 Tomcat 和 Undertow 的理论基础,并通过详细的性能测试代码和分析对比了它们的性能。Tomcat成熟稳定,功能丰富,适合企业级应用;Undertow高性能,低资源消耗,适合高并发和资源受限的环境。原创 2025-04-03 16:17:00 · 687 阅读 · 0 评论 -
使用 vue-code-diff 插件实现各种代码及字符串差异对比
在现代软件开发中,代码差异对比是一个非常重要的功能,它可以帮助开发者快速识别代码变更,确保代码质量。vue-code-diff 是一个基于 Vue.js 的代码差异对比插件,使得代码差异对比更加灵活和高效。由于最近公司需要在运维平台做一个对json数据的对比功能,以便于发现本地数据与三方数据差异化。经过对现在市面上的差异化工具考察,我们选择了vue-code-diff 插件,能够贴合我们实际的业务,能能够减少开发周期。原创 2025-03-28 16:14:55 · 2018 阅读 · 3 评论 -
使用Docker运行 Ollama本地部署 DeepSeek 模型并用Dify实现可视化操作
通过以上步骤,我们已经在Ollama中成功的部署本地大模型DeepSeek,并使用Dify实现了可视化操作。在本次演示中,Ollama提供了大模型运行环境,可以支持运行很多的流行的大模型;Dify则是一个大模型应用平台,可以较为简单的接入各种本地和商业大模型,实现与大模型进行交互。原创 2025-03-21 16:19:32 · 1255 阅读 · 1 评论 -
在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢
在当今快速发展的数据驱动时代,企业越来越重视数据的价值。为了更好地理解和利用数据,许多公司开始采用先进的数据分析和搜索技术。DeepSeek(深度求索)就是一款强大的深度学习驱动的搜索和推荐系统,可以帮助企业高效地处理和分析大规模数据。本文将详细介绍如何在Spring Boot项目中接入DeepSeek,帮助各位大大快速上手并利用其强大的功能。原创 2025-03-14 15:39:18 · 3604 阅读 · 3 评论 -
Spring Boot中AOP的深度解析与应用场景实践
Spring Boot中的AOP功能强大且易于使用,能够帮助开发者更高效地管理横切关注点,提高代码的可维护性和可扩展性。通过合理地运用AOP,可以显著提升软件开发的质量和效率。原创 2025-03-08 13:02:22 · 811 阅读 · 0 评论 -
Java使用ZXing库生成带有Logo的二维码图片,并去除白边动态伸缩上传到阿里云OSS
在现代应用中,二维码因其高效的信息编码能力而被广泛应用。为了提升二维码的视觉效果和品牌识别度,通常会在二维码中嵌入Logo。本文将详细介绍使用ZXing库生成带有Logo的二维码图片,去除白边,并将生成的二维码上传到阿里云OSS。此外,本文还将介绍二维码的基本原理、QR Code的结构、图像处理技术以及阿里云OSS的基本概念。原创 2025-02-26 18:16:22 · 1006 阅读 · 0 评论 -
SpringBoot中使用 ThreadLocal 进行多线程上下文管理及其注意事项
ThreadLocal 是一个非常强大的工具,可以帮助我们在多线程环境中管理线程局部变量。通过合理使用 ThreadLocal,可以有效地避免线程安全问题,提高程序的并发性能和稳定性。我们可以在 Spring Boot 应用中安全地存储和管理每个请求的用户数据,并通过显式地清理 ThreadLocal 变量,可以有效避免内存泄漏问题。原创 2025-02-18 17:20:09 · 2195 阅读 · 2 评论 -
MySQL常用编码格式详解(utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci 、utf8mb4_0900_ai_ci)
在使用MySQL创建数据库时候免不了选择字符集和排序规则,不同的字符集对应不同的排序规则,不同的排序规则的性能和效果是不一样的。一般我们经常使用到的字符集是utf8mb4,使用到的排序规则是utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_0900_ai_ci三种。那么今天就来详细介绍下这几种字符集和排序规则,方便大家今后选用。原创 2025-02-06 11:36:16 · 1054 阅读 · 0 评论 -
Spring Boot 启动流程解析及重点源码
综上所述,我们详细解析了 Spring Boot 应用程序的启动流程,并提供了关键步骤中的源码分析。了解这一过程不仅有助于我们更好地掌握 Spring Boot 的工作原理。原创 2025-01-20 17:25:28 · 1083 阅读 · 0 评论 -
Java UML 类图绘制解析:结构与工具类型详解
在Java开发中,UML(统一建模语言)类图是设计和理解系统架构的重要工具。本文将详细介绍Java UML类图中不同结构的表示方法及其对应的绘图工具类型,帮助各位大大更高效地进行系统设计。原创 2025-01-16 14:59:10 · 1654 阅读 · 1 评论 -
前后端跨域问题的处理方式及Java中的解决方案
总的来说目前推荐的跨域方式是使用代理服务器来解决跨域的问题,比如Nginx反向代理 ,除了可以跨域还能够负载均衡。一般在我们Java后端项目搭建过程中也会考虑到跨域的问题,比如使用我们上面说的的全局CROS配置。这样在开发层面和运维层面都能够覆盖解决跨域问题,简直不要太爽。原创 2025-01-10 15:31:41 · 1220 阅读 · 0 评论 -
Java 线程池详细解析及实战案例(推荐Executors)
ThreadPoolExecutor,配置灵活,功能强大;需要手动管理线程池生命周期,适用于复杂任务调度。Executors 工具类,使用简单,快速创建线程池;默认配置可能不适合所有场景,适用于快速开发。ScheduledThreadPoolExecutor,支持定时和周期性任务;功能相对单一,适用于定时任务调度。CompletableFuture,异步编程模型,易于组合;学习曲线较陡,适用于异步任务处理。在实际的编码场景中,我们通过合理配置和使用线程池,可以显著提升 Java 应用程序的性能和响应原创 2025-01-03 15:26:38 · 1370 阅读 · 0 评论 -
Redis KEYS查询大批量数据替代方案(推荐SCAN 命令)
在使用 Redis 时,KEYS 命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞 Redis 服务。本文将介绍SCAN命令、有序集合、哈希表和RediSearch模块四种替代 KEYS 的高效方案,以应对大批量数据的查询和管理。根据本人实际使用情况,查询Redis大批量数据的情况下推荐使用SCAN命令较好。原创 2024-12-26 15:29:01 · 1397 阅读 · 0 评论 -
Java 本地缓存实现:Guava Cache、Caffeine、Ehcache 和 Spring Cache
Guava Cache 是 Google Guava 库的一部分,提供了轻量级的本地缓存功能。它具有以下特点:简单易用:API 设计简洁,易于集成到项目中。自动回收:支持基于时间或引用的自动回收机制。并发支持:内置高效的并发控制,适合多线程环境。Caffeine 是一个高性能的本地缓存库,继承了 Guava Cache 的优点并进行了优化。它的特点包括:高性能:比 Guava Cache 更快,特别是在高并发环境下。原创 2024-12-20 18:14:05 · 1343 阅读 · 1 评论 -
WebFlux响应式框架主要功能介绍与示例
使用 Spring WebFlux 构建响应式应用程序。WebFlux 的非阻塞特性使得它在处理高并发请求时表现出色,同时它的响应式流支持使得处理异步数据流变得更加简单。原创 2024-11-27 17:11:22 · 850 阅读 · 0 评论 -
Spring 常见的事务失效情况及解决方案
Spring 事务管理虽然强大,但在实际开发中需要注意许多细节。本文列举了十种常见的事务失效情况,并提供了相应的解决方案和示例代码。希望这些内容能帮助开发者更好地理解和使用 Spring 事务管理,确保数据的一致性和完整性。原创 2024-11-20 10:51:38 · 1073 阅读 · 0 评论 -
Spring Boot 接口防重复提交解决方案
本文介绍了三种在Spring Boot中实现接口防重复提交的方法:使用Token机制、使用Redis和使用Spring AOP。每种方法都有其适用场景和优缺点,可以根据实际需求选择合适的方法。通过这些方法,可以有效防止用户重复提交表单,提高系统的稳定性和用户体验。原创 2024-11-13 11:46:14 · 2540 阅读 · 1 评论 -
Mac M1 Docker创建Rocketmq集群并接入Springboot项目
Mac M1上用Docker部署Rocketmq集群还是比较简单,我们只需要安装好docker在选择好适合自己机器芯片的镜像,再编写好docker-compose即可。在Springboot集成Rocketmq方面,我们直接可以引入相关依赖写入mq配置信息,直接在 项目中编写消费者和生产者即可。总的来说,还是比较好上手的。原创 2024-11-06 16:41:35 · 1463 阅读 · 3 评论 -
SQL优化大全:详细总结30个超级实用的SQL优化技巧
在数据库管理和应用开发中,SQL查询的性能优化至关重要。高效的SQL查询不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文详细总结了30个实用的SQL优化技巧,并附带示例代码,帮助各位大大构建高效、稳定的数据库应用。原创 2024-10-30 17:13:21 · 7187 阅读 · 2 评论 -
Java Executors创建四种线程池详解及常见错误案例
Java线程池是一种强大的多线程管理工具,通过合理选择和配置线程池类型,可以显著提高应用程序的性能和稳定性。本文介绍了四种常见的线程池类型及其示例代码,并分析了一些常见的错误案例。原创 2024-10-24 11:37:20 · 990 阅读 · 0 评论 -
Java 虚拟机(JVM)中的内存泄漏排查技巧及各种内存查看命令分析工具推荐
内存泄漏是 Java 应用程序中常见的性能问题,但通过合理的工具和技术,可以有效地排查和解决这些问题。本文介绍了多种工具和技术,包括 jstat、jmap、jvisualvm、MAT、YourKit 和 JProfiler,并通过实战案例展示了如何应用这些工具解决具体的内存泄漏问题。希望能帮助各位大大提升内存泄漏排查的能力,提高应用程序的稳定性和性能。原创 2024-10-17 11:47:32 · 2686 阅读 · 4 评论 -
深入探讨B+树索引的基本概念、工作原理以及在MySQL中的应用
B+树作为一种经典的索引结构,在 MySQL 等数据库系统中扮演着重要角色。通过合理地利用 B+树索引,可以显著提升数据检索速度,从而提高应用程序的整体性能。原创 2024-10-11 15:47:28 · 736 阅读 · 1 评论 -
Java高级:深入理解Java中的并发编程
通过本文的介绍,我们了解了Java并发编程的基础知识,并通过具体的代码示例展示了如何使用Java的并发工具类来实现高效的并发编程。这些技术不仅使代码更加简洁易读,还能提高程序的执行效率。希望这篇博客能为你理解和使用Java中的并发编程提供一些帮助。原创 2024-09-25 17:45:50 · 962 阅读 · 2 评论 -
支持多语言准确率99.9%的开源离线IP地址定位库Ip2region ,强大到离谱
经过引入和验证Ip2region 获取本地外网IP归属,发现准确率还是可以的,应该可以达到开发者所说的99.9%。最最主要该IP定位库完全开源,再也不用向收费API低头了。那么,如果你的项目上能够接受这极小的误差性还是可以的哦,赶紧GET起来吧!原创 2024-09-09 11:52:36 · 1526 阅读 · 1 评论 -
Redis缓存预热方案详解:提升应用性能与用户体验
Redis缓存预热是提升应用性能和用户体验的重要手段。通过合理选择预热数据、设计加载策略以及实现具体方案,可以显著提升应用的响应速度和稳定性。希望本文能帮助各位大大更好地理解和应用Redis缓存预热技术,从而提高应用的整体性能。原创 2024-09-04 16:28:11 · 1928 阅读 · 4 评论 -
【实战】Spring Boot 嵌套事务REQUIRES_NEW与NESTED在项目中的运用
通过使用REQUIRES_NEW或者NESTED,我们可以轻松地在现有事务中创建新的事务传播机制,其中REQUIRES_NEW不受外部事务影响,NESTED则是会受到外部事务影响。所以,在实际的开发中我们也需要注意嵌套事务的局限性和潜在的性能问题,以确保应用程序的高效运行。原创 2024-08-27 16:05:45 · 2447 阅读 · 1 评论 -
探索Java Stream API:高效处理集合的利器
Java Stream API以其简洁的语法和强大的功能,为Java集合处理带来了全新的体验。通过Stream API,我们可以以声明式的方式处理数据集合,使代码更加简洁、易于理解和维护。同时,结合Lambda表达式和函数式接口,Stream API还能轻松实现复杂的数据转换和聚合逻辑。然而,在使用Stream API时,我们也需要注意其生命周期、并行与串行的选择以及与其他Java特性的结合使用,以充分发挥其优势。原创 2024-08-15 18:07:40 · 1341 阅读 · 3 评论 -
【实战】Spring Security Oauth2自定义授权模式接入手机验证
Oauth2自定义认证模式还是比较简单,直接自定义认证令牌、自定义授权模式、自定义实际认证者、然后将自定义的授权模式和认证者交给Oauth2。最后,我们在资源配置中可以配置受限资源和免登录资源,以及token储存方式、用户加载方式等等即可。原创 2024-08-09 16:42:34 · 1565 阅读 · 4 评论 -
【实战】Spring Cloud Stream3.0 整合RocketMq
使用Spring Cloud Stream来进行整合RocketMq。如果我们有在一个项目中需要引入多个MQ的需求,用Spring Cloud Stream简直不要太好。当然,我们是直接使用Spring Cloud Stream3.0,不再像之前低版本那样需要引入通道类进行指定,3.0版本可用直接字配置文件进行粘接绑定信道。原创 2024-07-23 16:07:17 · 2988 阅读 · 4 评论 -
飞书开放平台自建网页应用登录与免登录
最近接收到了一个系统接入飞书的需求,大概就是当前系统只有账户密码登录,需要接入飞书扫码登录,另外还可以在飞书里面点击应用直接实现系统用户免登录。解析一下这个需求就是在浏览器端使用飞书扫码授权完成登录验证,同时需要提供飞书内部应用直接免登功能。哈哈,我调研了一些时间后将飞书网页应用登录与免登录接入了我们系统。现在就主要的接入点分享备注,以备二次查阅。原创 2024-07-16 17:26:52 · 7493 阅读 · 14 评论