- 博客(31)
- 收藏
- 关注
原创 Spring Task 定时任务
Spring Task 是 Spring 框架中用于定时任务调度的工具,它基于注解驱动,简单易用,适合大多数场景。基于注解的定时任务:通过@Scheduled注解配置定时任务的执行规则。基于配置的定时任务:通过实现接口,自定义线程池等高级配置。Spring Task 的核心在于其灵活性和轻量化,适合中小型项目中的定时任务需求。Spring Task 是一个轻量级的定时任务工具,适合中小型项目中的定时任务需求。通过@Scheduled注解和线程池配置,可以灵活地实现各种定时任务。
2025-04-03 16:53:03
614
原创 Elasticsearch-实战案例
数据库模糊查询不走索引,在数据量较大的时候,查询性能很差。需要注意的是,数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,而搜索引擎的性能则不会随着数据增多而下降太多。目前仅10万不到的数据量差距就如此明显,如果数据量达到百万、千万、甚至上亿级别,这个性能差距会非常夸张。其次,功能单一数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。而在搜索引擎中,用户输入出现个别错字,或者用拼音搜索、同义词搜索都能正确匹配到数据。
2025-03-27 19:14:51
894
原创 ThreadLocal:多线程时代的神器
ThreadLocal是Java多线程编程中的一个强大工具,它通过为每个线程提供独立的变量副本,解决了线程安全问题。在使用ThreadLocal时,我们需要注意内存泄漏和线程复用等问题,合理地使用它可以让我们的代码更加简洁和高效。希望这篇博客能够帮助你更好地理解和使用ThreadLocal,如果你有任何问题或建议,欢迎在评论区留言!
2025-03-24 14:32:46
775
原创 Java Spring 中循环依赖的解决之道
Spring 通过三级缓存机制有效地解决了循环依赖问题,但这并不意味着我们可以在代码中随意创建循环依赖。在实际开发中,应尽量避免循环依赖,以保持代码的简洁性和可维护性。如果无法避免循环依赖,可以利用 Spring 提供的机制来解决,但也要注意合理使用,避免引入新的问题。希望本文能帮助你更好地理解和解决 Java Spring 中的循环依赖问题。如果你在实际开发中遇到了循环依赖的问题,欢迎在评论区留言,我们一起探讨解决方案。
2025-03-18 17:44:18
926
原创 使用Redis如何实现分布式锁?(超卖)
在多线程环境下,为了保证数据的线程安全,锁保证同一时刻,只有一个可以访问和更新共享数据。在单机系统我们可以使用锁、锁保证线程安全。锁是 Java 提供的一种内置锁,在单个 JVM 进程中提供线程之间的锁定机制,控制多线程并发。只适用于单机环境下的并发控制。想要在多个节点中提供锁定,在分布式系统并发控制共享资源,确保同一时刻只有一个访问可以调用,避免多个调用者竞争调用和数据不一致问题,保证数据的一致性,就需要分布式锁。:控制分布式系统不同进程访问共享资源的一种锁的机制。
2025-03-14 18:25:31
705
原创 RabbitMQ五种消息模型
简单模式是最基础的消息传递模型,包含一个生产者、一个队列和一个消费者。生产者将消息发送到队列,消费者从队列中接收消息。这种模式适用于一对一的通信场景。工作模式用于在多个消费者之间分配任务。一个生产者将消息发送到队列,多个消费者可以并发地从队列中获取任务并处理。这种模式可以实现任务的负载均衡。一条消息只能被一个消费者处理。
2025-03-13 17:05:39
1313
原创 excel的导入和下载(poi)
Apache POI官网GitHub示例代码通过使用相关的Java库,如,可以轻松地实现Excel文件的读写操作。
2025-03-11 18:25:57
561
原创 消息队列MQ(RabbitMQ)
在现代软件架构中,消息队列(Message Queue,简称MQ)是一种非常重要的中间件,广泛应用于分布式系统、微服务架构以及异步通信场景中。消息队列通过允许应用程序之间通过消息进行通信,从而实现解耦、提高系统的可扩展性和可靠性。本文将介绍消息队列的基本概念、常见实现方式,并通过一个简单的Java示例来展示如何使用消息队列。消息Broker,目前常见的实现方案就是消息队列(MessageQueue),简称为MQ.追求可用性:Kafka、 RocketMQ 、RabbitMQ。
2025-03-09 17:05:40
1161
原创 SpringCloud常见的问题
基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventual Consistency),强调高可用而非强一致性。:分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者不可兼得。:服务启动时向注册中心(如 Nacos)注册自身信息(IP、端口、服务名)。:优先调用同集群实例,减少跨网络调用延迟,提升容灾能力(如异地多活)。:声明式的 HTTP 客户端,简化服务间调用。
2025-03-06 15:55:28
733
原创 微服务保护:Sentinel
(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。这些方案或多或少都会导致服务的体验上略有下降,比如请求限流,降低了并发上限;服务熔断,降低了服务的完整度,部分服务变的不可用或弱可用。当一个业务接口响应时间长,而且并发高时,就可能耗尽服务器的线程资源,导致服务内的其它接口受到影响。线程隔离虽然避免了雪崩问题,但故障服务依然会拖慢(服务调用方)的接口响应速度。当然,接口的并发不是一直很高,而是突发的。
2025-03-05 20:11:37
1185
原创 Elasticsearch:Java开发者必备全文搜索技能(一)
本文从零开始讲解Elasticsearch的核心概念,结合Java API实现索引创建、文档CRUD、复杂查询等操作,并附赠SpringBoot整合实战案例。建议收藏!
2025-03-03 17:24:56
819
1
原创 Spring Cloud Gateway:构建高效微服务网关的利器
Component@Override// 验证Token合法性(伪代码)if (!
2025-02-12 15:57:07
551
原创 Java中的依赖注入(可以不使用@Autowired注解)
Resource和@Autowired都是用于依赖注入的注解,但它们有一些细微的差别。在纯 Spring 项目中,推荐使用@Autowired,因为它与 Spring 框架的集成更加紧密。在需要与 Java EE 项目集成的场景中,可以使用@Resource。
2025-01-26 19:52:44
986
原创 org.springframework.web.client.ResourceAccessException: I/O error on GET request for “http://cloud-p
报错因为微服务不知道是哪个模块,所以需要再配置里面加上注解:加上就不会报错了。
2025-01-22 14:40:09
1007
原创 @Validation数据校验
所有参数注解含义 总结来说, 主要用于字符串长度的验证,而 更为通用,可以用于验证字符串长度以及集合和数组的大小。在使用时,根据需要验证的数据类型选择合适的注解。注:若不做异常处理,@Validated注解默认异常消息,所以需要添加一个全局异常处理类对MethodArgumentNotValidException进行处理 和 是两个常用的参数校验注解,它们的作用如下:
2024-12-18 09:56:41
1268
原创 Spring Security 认证
- 1.mybatis-plus整合SpringBoot的依赖--> < dependency > < groupId > com.baomidou < artifactId > mybatis-plus-boot-starter < version > 3.4.1
2024-12-09 09:31:37
1365
原创 SpringBoot(v2.5.3)整合SpringSecurity
定义UserDetailsService是SpringSecurity提供用来获取认证用户信息(用户名,密码,用户的权限列表)的接口,我们可以实现该接口,复写loadUserByUsername(username)方法加载我们数据库中的用户信息。UserDetails是SpringSecurity用来封装用户认证信息,权限信息的对象,我们使用它的实现类User封装用户信息并返回,我们这里从数据库查询用户名。创建类UserDetailServiceImpl实现UserDetailsService接口/**
2024-12-03 18:34:47
811
原创 JWT(Json-Web-Token)、JWT工具类
官网地址: https://jwt.io/introduction/翻译: jsonwebtoken(JWT)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。jwt可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名JWT简称JSON Web Token,也就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输。
2024-12-02 09:15:03
1392
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人