![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 81
莫轻言舞
莫笑少年江湖梦,谁不少年梦江湖。曾经年少立志三千里,如今踌躇百步无寸功。儿女蹒跚学堂中。碎银几两催人老。心仍少,皱纹却上眉目中,浮生醉酒回梦里。青春人依旧,只叹时光太匆匆!
展开
-
在SpringBoot中重试调用第三方API
Spring Retry是Spring框架提供的一个模块,它通过提供注解或编程方式的方式,帮助我们实现方法级别的重试机制。在Spring Boot中,可以很方便地集成并使用Spring Retry。在Spring Boot项目中,通过集成Spring Retry模块,我们可以优雅地实现对第三方API调用的重试机制。通过@Retryable注解,我们能够很方便地在方法级别上添加重试策略。同时,异步方法和异常类型的支持使得我们能够更灵活地应对不同的业务场景。原创 2024-01-02 09:57:34 · 1213 阅读 · 1 评论 -
SpringBoot 集成支付宝支付
通过AlipayClient执行request调用SDK生成表单,用HttpServletResponse(浏览器响应的一个流)写表单的内容,创建一个html的网页)--------------------------->执行请求,拿到响应的结果,返回给浏览器;创建AlipayTradePagePayRequest,设置Request参数(参数包含支付宝回调的订单流水号、总金额、我的订单编号)(格式:JSON格式)---------------------------->创建Request,设置参数;原创 2024-01-02 09:48:50 · 1066 阅读 · 0 评论 -
Spring 在多线程环境下如何确保事务一致性
一次事务的完成通常都是默认在当前线程内完成的,又因为一次事务的执行过程中,涉及到对当前数据库连接Connection的操作,因此为了避免将Connection在事务执行过程中来回传递,我们可以将Connextion绑定到当前事务执行线程对应的ThreadLocalMap内部,顺便还可以将一些其他属性也放入其中进行保存,在Spring中,负责保存这些ThreadLocal属性的实现类由。(这里其实就是责任链模式的应用)事务的结束分为两种情况: 需要进行事务回滚或者事务正常提交,如果是事务回滚,还需要判断。原创 2023-10-09 15:57:07 · 671 阅读 · 0 评论 -
Java实现添加文字水印、图片水印功能实战
java实现给图片添加水印实现步骤:获取原图片对象信息(本地图片或网络图片)添加水印(设置水印颜色、字体、坐标等)处理输出目标图片。原创 2023-10-09 15:53:36 · 1518 阅读 · 0 评论 -
忽视日志吃大亏,玩转 SpringBoot 日志
学习完本文,你应当对现在这几个常用框架的有所了解,并能基础应用了。此次我们没有讲源码,也没有深入的讲其配置及进阶使用,这些我们会在后面慢慢学习,可前往[日志专栏][Link2]查看。但现在我希望你能知道的是。一定要写好日志,一定要写好日志,一定要写好日志。重要的事情说三遍!这是区别新人和老鸟的一个重要依据,也是让自己排查问题更轻松的不二法门!另外,现在很多中间件都自己引用了日志插件,我们作为一个整体工程在使用中间件时,要及时发现并解决插件冲突,避免我们自己的日志配置失效,这也是一个程序员该注意的点。原创 2023-10-09 15:45:18 · 90 阅读 · 0 评论 -
SpringBoot+Redis BitMap 实现签到与统计功能
采用BitMap实现签到功能实现签到接口,将当前用户当天签到信息保存到Redis中我们可以把年和月 作为BitMap的key,然后保存到一个BitMap中,每次签到就到对应的位上把数字从0 变为1,只要是1,就代表是这一天签到了,反之咋没有签到。实现签到接口,将当前用户当天签到信息保存至Redis中说明请求方式POST请求路径/user/sign请求参数无返回值无因为BitMap 底层是基于String数据结构,因此其操作都封装在字符串操作中了。原创 2023-10-09 15:39:05 · 317 阅读 · 0 评论 -
SpringBoot 调用外部接口的三种方式
SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求, 比如在apaas开发过程中需要封装接口在接口中调用apaas提供的接口(像发起流程接口submit等等)下面也是提供了三种方式(不使用**dubbo**的方式)供我们选择。原创 2023-10-09 15:32:37 · 870 阅读 · 0 评论 -
注解实现接口幂等性
简单来说,就是对一个接口执行重复的多次请求,与一次请求所产生的结果是相同的,听起来非常容易理解,但要真正的在系统中要始终保持这个目标,是需要很严谨的设计的,在实际的生产环境下,我们应该保证任何接口都是幂等的,而如何正确的实现幂等,就是本文要讨论的内容。/*** 参数名,表示将从哪个参数中获取属性值。* 获取到的属性值将作为KEY。* @return*//*** 属性,表示将获取哪个属性的值。* @return*//*** 参数类型* @return*/原创 2023-09-19 10:17:57 · 109 阅读 · 0 评论 -
MyBatis-Plus 使用拦截器实现数据权限控制
例如我们名称简单的sql语句 直接在Service层用mybatisPluse自带的方法。原创 2023-09-19 10:14:01 · 651 阅读 · 0 评论 -
SpringBoot 该如何预防 XSS 攻击
*** Filter 过滤器,拦截请求转换为新的请求*//*** 初始化方法*/@Override/*** 过滤方法*/@Override} else {@Override/*注入自定义的序列化工具,将RequestBody的参数进行转译后传输*/// XSS序列化就是注意要分情况处理。拦截器处理一部分,并注意拦截器的注册方式Jackson的方式处理另一部分,也是注意配置方式。原创 2023-08-10 10:44:33 · 1155 阅读 · 0 评论 -
使用上 Spring 的事件机制
新增一个类,继承我们的ApplicationEvent。如下面代码,继承后定义了一个userId,有一个UserChangePasswordEvent方法。这里就定义我们监听器需要的业务参数,监听器需要那些参数,我们这里就定义那些参数。/*** @Description 修改密码事件**/@Getter@Setter。原创 2023-08-03 10:29:35 · 871 阅读 · 0 评论 -
Java 中的 7 种重试机制
从手动重试,到使用 Spring AOP 自己动手实现,再到站在巨人肩上使用特别优秀的开源实现 Spring Retry 和 Google guava-retrying,经过对各种重试实现方式的介绍,可以看到以上几种方式基本上已经满足大部分场景的需要:如果是基于 Spring 的项目,使用 Spring Retry 的注解方式已经可以解决大部分问题如果项目没有使用 Spring 相关框架,则适合使用 Google guava-retrying:自成体系,使用起来更加灵活强大。原创 2023-08-03 10:21:58 · 393 阅读 · 0 评论 -
权限框架jcasbin
基于springboot1.5.10,但是和springboot关系不太大,所以版本可以忽略,用你熟悉的springboot版本就行。同时又写了两个方法,用来添加和删除policy,Policy是自定的一个类,对官方使用的集合/数组进行了封装。jcasbin的权限控制非常简单,自定义一个过滤器,if判断就可以搞定,没错,就这么简单。是固定的文件,之间复制过来放在新建的和src同级的文件夹下即可。在这个类里,我们注入写好的配置类,然后转为静态的,在。,在容器加载的时候就初始化这个类,方便后续的使用。原创 2023-08-03 10:06:12 · 134 阅读 · 0 评论 -
SpringBoot 项目使用 Redis 对用户 IP 进行接口限流
SpringBoot 项目使用 Redis 对用户 IP 进行接口限流原创 2023-07-27 18:58:45 · 1360 阅读 · 0 评论 -
新一代分布式任务调度框架
PowerJob是新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,能让您轻松完成作业的调度与繁杂任务的分布式计算。原创 2023-07-27 18:53:57 · 650 阅读 · 0 评论 -
SpringBoot 快速实现 IP 地址解析
在spring boot 项目中获取请求的ip与详细地址,很多网站app 中都已经新增了ip 地址显示,大家也可以用在自己的开发中,显得更高级。原创 2023-07-27 18:46:50 · 1511 阅读 · 0 评论 -
Controller 就该这么写,简洁又优雅
有些时候 JSR303 标准中提供的校验规则不满足复杂的业务需求,也可以自定义校验规则自定义校验规则需要做两件事情自定义注解类,定义错误信息和一些其他需要的内容注解校验器,定义判定规则//自定义注解类/*** 是否允许为空*//*** 校验不通过返回的提示信息*/String message() default "不是一个手机号码格式";/*** Constraint要求的属性,用于分组校验和扩展,留空就好*/Class<?Class<?//注解校验器。原创 2023-07-27 18:22:25 · 103 阅读 · 0 评论 -
Elasticsearch 介绍及java集成
Elasticsearch 介绍及java集成原创 2023-07-18 19:10:04 · 9240 阅读 · 2 评论 -
SpringBoot 实现审核功能
SpringBoot 实现审核功能原创 2023-07-05 10:27:02 · 424 阅读 · 0 评论 -
推荐对象转换解决方案:MapStruct
对于代码中 JavaBean之间的转换, 一直是困扰我很久的事情。在开发的时候我看到业务代码之间有很多的 JavaBean 之间的相互转化, 非常的影响观感,却又不得不存在。我后来想的一个办法就是通过反射,或者自己写很多的转换器。第一种通过反射的方法确实比较方便,但是现在无论是 BeanUtils, BeanCopier 等在使用反射的时候都会影响到性能。虽然我们可以进行反射信息的缓存来提高性能。原创 2023-06-08 10:33:02 · 3711 阅读 · 0 评论 -
推荐一个非常好用的Java工具类库Hutool
谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以 “甜甜的”。Hutool 最初是我项目中 “util” 包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。原创 2023-06-08 10:26:53 · 1191 阅读 · 0 评论 -
线上慎用 BigDecimal
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。原创 2023-06-08 10:22:31 · 776 阅读 · 0 评论 -
OAuth三方授权登录
自研应用需要扩展时,绕不开的就是集成其他社交软件的三方登录,比如微信/QQ/微博/Github等等,而这用到的模式属于OAuth的授权码方式授权,下面我就介绍几种三方授权登录教程,同时给予数据库扩展设计思路Github的OAuth 授权原理大致如下A网站让用户跳转到 GitHubGitHub 要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意"用户同意,GitHub 就会重定向回 A 网站,同时发回一个授权码A 网站使用授权码,向 GitHub 请求令牌GitHub 返回令牌。转载 2023-06-05 10:48:56 · 1679 阅读 · 0 评论 -
java 接口防刷处理方案
接口防刷处理方案原创 2023-04-03 10:23:35 · 855 阅读 · 1 评论 -
RocketMQ 高级特性
RocketMQ 高级特性原创 2023-03-07 10:07:29 · 431 阅读 · 0 评论 -
优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止
优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止!原创 2023-03-01 11:45:21 · 519 阅读 · 0 评论 -
SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮
SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮转载 2023-03-01 11:41:40 · 149 阅读 · 0 评论 -
用户登录验证流程
用户登录验证流程-图解转载 2023-03-01 11:09:45 · 513 阅读 · 0 评论 -
10 种 Spring 事务失效的常见场景
10 种 Spring 事务失效的常见场景原创 2023-03-01 10:58:34 · 141 阅读 · 0 评论 -
RabbitMQ延迟插件
RabbitMQ延迟插件原创 2023-03-01 10:49:07 · 346 阅读 · 0 评论 -
基于 ThreadLocal 实现一个上下文管理组件
基于 ThreadLocal 实现一个上下文管理组件原创 2023-03-01 10:46:40 · 119 阅读 · 0 评论 -
SpringBoot 中使用 spring-retry 解决失败重试调用
SpringBoot 中使用 spring-retry 解决失败重试调用原创 2023-03-01 10:33:01 · 1037 阅读 · 0 评论 -
线程池ThreadPoolExecutor详解(整理详细)
线程池ThreadPoolExecutor详解(整理详细)转载 2023-02-02 11:12:20 · 22240 阅读 · 0 评论 -
BlockingQueue(阻塞队列)详解
BlockingQueue(阻塞队列)详解原创 2023-02-02 11:00:57 · 757 阅读 · 0 评论 -
线程池中各个参数如何合理设置
线程池中各个参数如何合理设置转载 2023-02-02 10:55:33 · 4609 阅读 · 0 评论 -
java MongoDB 列表分页查询
java MongoDB 列表分页查询原创 2023-02-01 15:59:15 · 799 阅读 · 0 评论 -
Springboot + MongoDB 大容量数据分页及条件查询(千万数据量级别)
Springboot + MongoDB 大容量数据分页及条件查询(千万数据量级别)转载 2023-02-01 15:33:53 · 2231 阅读 · 0 评论 -
Spring Boot Admin 服务监控利器
Spring Boot Admin 服务监控利器转载 2023-01-30 15:04:03 · 319 阅读 · 0 评论 -
多线程事务使用与回滚
多线程提交与回滚原创 2023-01-16 10:11:05 · 616 阅读 · 0 评论 -
SpringBoot 使用 Sa-Token-Quick-Login 插件实现快速登录认证
SpringBoot 使用 Sa-Token-Quick-Login 插件实现快速登录认证转载 2023-01-09 10:14:51 · 96 阅读 · 0 评论