Demon_Hao
码龄4年
关注
提问 私信
  • 博客:28,328
    社区:1
    28,329
    总访问量
  • 38
    原创
  • 45,144
    排名
  • 110
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:日常记录,方便你我他

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:斯里兰卡
  • 加入CSDN时间: 2021-05-17
博客简介:

Demon_Hao的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    409
    当月
    3
个人成就
  • 获得147次点赞
  • 内容获得21次评论
  • 获得189次收藏
  • 代码片获得1,125次分享
创作历程
  • 19篇
    2024年
  • 19篇
    2023年
成就勋章
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

353人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Spring Boot使用JDK 21虚拟线程

JDK 21引入的(Virtual Threads)是 Project Loom 的一部分,旨在显著简化并发编程并提高 Java 应用的可扩展性。
原创
发布博客 2024.11.29 ·
330 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

Spring Boot上传文件Amazon S3桶实现

S3中的存储是通过桶(bucket)来组织和管理的。桶是存储对象(文件和元数据)的容器,每个桶的名称在整个S3系统中必须唯一,并且不能包含在另一个桶中。用户可以将数据上传到S3桶中,并通过唯一的对象键来访问这些数据。
原创
发布博客 2024.10.10 ·
1307 阅读 ·
10 点赞 ·
0 评论 ·
21 收藏

Firebase Cloud Messaging实现浏览器消息提醒

总的来说,Firebase Cloud Messaging 是一项功能强大、易于使用的消息传递服务,为开发者提供了一种简单而可靠的方式,用于向移动设备和 Web 应用程序发送通知、消息和数据,从而提高应用的用户参与度和体验。FCM 支持发送不同类型的消息,包括通知消息(通知栏消息)、数据消息(仅携带数据,不显示通知)、数据/通知混合消息等。FCM 提供了丰富的消息分析功能,可以帮助开发者了解消息的发送情况、接收情况和用户行为,以便优化消息推送策略。2、引用Maven依赖。
原创
发布博客 2024.04.16 ·
653 阅读 ·
3 点赞 ·
0 评论 ·
11 收藏

Java DelayQueue实现延时队列

队列中的元素按照延时时间的顺序排列,即延时时间最短的元素位于队列的头部,延时时间最长的元素位于队列的尾部。提供了一种方便的机制来实现延时任务调度和处理延时元素,是 Java 多线程编程中的重要组件之一。是 Java 中的一个特殊队列,它是一个无界阻塞延时队列,用于存放实现了。的内部是使用优先级堆来实现的,可以确保队列中的元素按照延时时间的顺序排列。每个元素都有一个延时时间,只有在延时时间到期后才能被取出。这些元素只有在其指定的延时时间到期后才能被取出。提供了阻塞式的取元素操作,如果队列为空,调用。
原创
发布博客 2024.04.09 ·
466 阅读 ·
6 点赞 ·
0 评论 ·
2 收藏

Spring WebFlux响应式实现WebFilter解决跨域问题

是 Spring Framework 中处理 Web 请求的关键接口之一,它为开发者提供了一种灵活、强大的方式来拦截、处理和增强 Web 请求的处理流程,适用于基于响应式编程模型的 Spring Web 应用程序。适用于基于响应式编程模型的 Spring 应用程序,可以与 Spring WebFlux、Spring WebFlux.fn 等组件集成,实现非阻塞、响应式的请求处理。更加适用于响应式编程模型,可以轻松地与 Spring WebFlux、Spring WebFlux.fn 等响应式模块集成。
原创
发布博客 2024.04.08 ·
843 阅读 ·
6 点赞 ·
0 评论 ·
5 收藏

SpringBoot整合Logback日志框架

总的来说,Logback 是一个功能强大、灵活易用的日志框架,适用于各种规模的 Java 项目,能够帮助开发者实现高效、灵活的日志记录和管理。Logback 提供了丰富的过滤器功能,可以根据日志消息的内容、级别等条件对日志进行过滤和筛选,灵活控制日志的输出。Logback 允许开发者自定义日志的输出格式,可以根据需要定义自己的日志布局模式,满足不同项目的日志格式需求。Logback 支持异步日志记录,可以提高日志记录的性能,避免日志记录操作对应用程序性能的影响。1、引用Maven依赖。
原创
发布博客 2024.04.08 ·
855 阅读 ·
4 点赞 ·
2 评论 ·
7 收藏

Spring Boot整合MyBatis-Plus以及实现分页

MyBatis-Plus 是 MyBatis 的一个增强工具包,它在原有的 MyBatis 框架之上提供了更多便捷的功能和增强,有助于简化开发流程、提高开发效率。MyBatis-Plus 提供了代码生成器工具,能够根据数据库表结构自动生成 Entity、Mapper、Service、Controller 等代码,大大减少了开发者的工作量。MyBatis-Plus 提供了乐观锁和逻辑删除的功能,开发者可以通过简单的配置,在实体类中实现乐观锁和逻辑删除的功能,提高数据安全性和稳定性。4、测试Service。
原创
发布博客 2024.04.08 ·
841 阅读 ·
9 点赞 ·
0 评论 ·
10 收藏

Spring Boot实现Filter解决跨域和请求类型转换问题

Filter 在 Web 开发中有广泛的应用,常见的应用场景包括身份验证与授权、日志记录与监控、字符编码转换、数据压缩与解压、防止 XSS 攻击、跨域请求处理等。总的来说,Filter 是 Java Web 开发中非常有用的一种组件,可以通过它实现各种与请求和响应相关的功能,提高 Web 应用程序的可靠性、安全性和性能。:多个 Filter 可以形成一个过滤器链,一个请求在被 Servlet 处理之前会经过这个链上的所有 Filter 的处理,然后再到达 Servlet。
原创
发布博客 2024.04.06 ·
715 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

Hutool实现用户密码加盐(Salt)工具类

但是加盐后,即使相同的密码,由于盐的不同而得到的哈希值也是不同的,这样一来,攻击者需要为每一个不同的盐重新计算对应的哈希值,大大增加了破解密码的成本和难度。总的来说,密码加盐是一种增强密码安全性的重要手段,通过引入随机生成的盐值,可以有效防止彩虹表攻击和碰撞攻击,提高密码的复杂度和难度,增加破解密码的成本和时间,从而保护用户的密码安全。提高密码的复杂度:盐是一个随机生成的字符串,它会增加密码的长度和复杂度,使得即使用户使用简单密码,也会因为盐的存在而变得复杂起来,增加破解密码的难度。2、密码加点盐工具类。
原创
发布博客 2024.04.01 ·
1487 阅读 ·
6 点赞 ·
0 评论 ·
5 收藏

Spring Boot实现HandlerInterceptor拦截器

HandlerInterceptor 是 Spring 框架提供的一个接口,用于拦截请求的处理过程,可以在请求处理前、请求处理后以及请求完成后进行相应的处理。它允许开发人员在请求进入控制器方法之前或之后执行一些额外的操作,比如日志记录、权限验证、请求参数预处理等。通常情况下,HandlerInterceptor 用于实现一些横切关注点,比如日志记录、权限验证、请求参数预处理等。通过实现该接口,开发人员可以方便地在不同的处理阶段插入自定义的逻辑,从而实现更灵活、可扩展的请求处理流程。
原创
发布博客 2024.04.01 ·
621 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

Spring Boot GraphQL拦截权限验证以及异常拦截封装

GraphQL 拦截权限验证和异常拦截封装是在 GraphQL 服务中常见的一种需求,用于保护 GraphQL 接口免受未经授权的访问,并提供友好的错误信息处理。
原创
发布博客 2024.03.22 ·
679 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

Spring Boot项目集成GraphQL

它提供了一种更高效、强大和灵活的方式来与Web服务进行通信,相比于传统的RESTful API,GraphQL具有更多的优势。与传统的RESTful API相比,GraphQL通常只暴露一个端点,使得客户端无需处理多个端点或版本控制,简化了API的维护和使用。由于GraphQL查询的灵活性,缓存数据变得更加复杂,因为同一个查询可能会请求不同的数据集合,这可能会增加缓存的复杂性和成本。GraphQL拥有丰富的工具生态系统,包括用于开发、测试和调试GraphQL API的各种工具和库,提高了开发效率和质量。
原创
发布博客 2024.03.20 ·
802 阅读 ·
3 点赞 ·
0 评论 ·
9 收藏

Spring WebFlux微服务之间的调用Reactivate-Feign响应式编程

在传统的编程模型中,通常使用回调函数或 Future/Promise 来处理异步操作,而在响应式编程中,则使用流(Stream)来表示数据流,并提供了丰富的操作符来处理这些数据流。在使用 Feign 客户端进行服务间通信时,Reactivate-Feign 可以将方法的返回类型从传统的阻塞式类型(例如 ResponseEntity)转换为响应式类型(例如 Mono 或 Flux),从而支持异步响应式编程。(使用用方式和OpenFeign一样,只是注解不一样,注解参数和使用一样)1、引用Maven依赖。
原创
发布博客 2024.03.07 ·
1313 阅读 ·
9 点赞 ·
1 评论 ·
13 收藏

Spring WebFlux微服务之间的调用WebClient响应式编程

例如,可以设置请求和响应的编解码器、添加过滤器(filter)来修改请求或响应、设置连接器(connector)来配置底层的HTTP客户端等。是一种用于进行HTTP请求的非阻塞式客户端,它提供了一种简洁而灵活的方式来进行服务之间的通信。实例的基本属性,例如设置基本URL、设置连接超时、配置请求和响应的编解码器等。实例的工具,它提供了丰富的配置选项,可以根据具体需求来定制和管理。类似的HTTP客户端,并且具有更好的性能和更多的扩展能力。是一个常用的HTTP客户端,用于发送HTTP请求。在Spring框架中,
原创
发布博客 2024.03.07 ·
947 阅读 ·
8 点赞 ·
0 评论 ·
10 收藏

Spring WebFlux全局异常拦截AbstractErrorWebExceptionHandler

在Spring WebFlux中,异常可能会在请求处理过程中产生,比如控制器方法中的异常、过滤器中的异常或者拦截器中的异常等。它是WebExceptionHandler接口的抽象实现,用于捕获和处理在Web请求处理过程中发生的异常。通过继承AbstractErrorWebExceptionHandler,开发人员可以灵活地实现自定义的异常处理逻辑,比如记录异常信息、返回特定格式的错误响应等,从而提高Web应用程序的稳定性和用户体验。
原创
发布博客 2024.03.06 ·
1433 阅读 ·
11 点赞 ·
0 评论 ·
12 收藏

Spring WebFlux集成Redis响应式编程

它采用了响应式编程的思想,允许开发者以异步、非阻塞的方式与 Redis 进行交互。传统的 Redis 客户端通常采用同步或阻塞式调用,这意味着当客户端发送请求给 Redis 服务器时,它会等待直到收到响应。通常,响应式 Redis 会与响应式编程框架(如 Reactor、RxJava)结合使用,以提供一套异步的 API,用于执行 Redis 命令并处理结果。总的来说,响应式 Redis 是一种使用响应式编程模型来操作 Redis 数据库的方式,旨在提高系统的性能和响应性,特别是在高并发、高负载的场景下。
原创
发布博客 2024.03.06 ·
755 阅读 ·
8 点赞 ·
1 评论 ·
11 收藏

Spring WebFlux整合Spring Data R2DBC实现响应式编程

Spring WebFlux: Spring WebFlux是Spring Framework 5中引入的响应式编程框架。与传统的Spring Data JPA不同,Spring Data R2DBC支持异步和非阻塞的数据库访问,与Spring WebFlux完美契合,从而构建全栈响应式应用程序。综上所述,Spring WebFlux和Spring Data R2DBC为构建响应式应用程序提供了强大的支持,使开发人员能够利用异步和非阻塞的编程模型构建高性能、弹性的应用程序,并与关系型数据库进行高效交互。
原创
发布博客 2024.03.06 ·
663 阅读 ·
9 点赞 ·
0 评论 ·
13 收藏

Spring Boot项目集成PowerJob

PowerJob是一种开源的任务调度框架,旨在帮助企业管理和执行各种类型的任务,包括定时任务、异步任务、数据处理任务等等。: 对于需要大规模数据处理的场景,如数据清洗、ETL等,PowerJob提供了高性能的分布式任务调度和并行处理能力,提高数据处理效率和系统的可扩展性。: 对于有依赖关系的任务,如数据处理流程、工作流程等,PowerJob提供了灵活的依赖任务管理功能,确保任务的顺序执行和数据一致性。: PowerJob提供了严格的权限控制机制,保障任务调度系统的安全性和稳定性,防止未授权的访问和操作。
原创
发布博客 2024.03.06 ·
1369 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

Spring Boot项目集成Pulsar

由Yahoo开发,并随后作为Apache软件基金会的一部分开源,Pulsar拥有独特的架构,将消息存储和消息处理分开,实现了出色的可扩展性和可靠性。随着物联网设备生成海量数据的增加,Pulsar为物联网应用提供了一个理想的平台,用于实时接收、处理和分析物联网数据流。凭借其可扩展的架构、可靠的消息传递和灵活的特性,Pulsar使组织能够构建强大的实时数据处理管道,推动创新和价值创造。作为Apache软件基金会的一部分,Pulsar受益于充满活力的社区和丰富的集成和扩展生态系统。5、pulsar公用方法。
原创
发布博客 2024.03.06 ·
1871 阅读 ·
22 点赞 ·
5 评论 ·
19 收藏

JAVA创建枚举类

使用int、String类型switch时,当出现参数不确定的情况,偶尔会出现越界的现象,这样我们就需要做容错操作(if条件筛选等),使用枚举,编译期间限定类型,不允许发生越界。由于常量值地址唯一,使用枚举可以直接通过“==”进行两个值之间的对比,性能会有所提高。枚举可以让你代码看起来很舒服,而且常量统一管理起来,当项目很大的时候很容易管理。使用枚举类型可以避免使用硬编码的魔法数值,提供了更好的代码可读性和可维护性。4、去除equals两者判断。可以减少参数传递的错误性。5、Switch语句优势。
原创
发布博客 2023.10.30 ·
342 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏
加载更多