
微服务&Spring
文章平均质量分 77
Spring和微服务相关记录
东皋长歌
花开堪折直须折,莫使无花空折枝
展开
-
基于redis实现API接口访问次数限制
日常开发中会有一个常见的需求,需要限制接口在单位时间内的访问次数,比如说某个免费的接口限制单个IP一分钟内只能访问5次。该怎么实现呢,通常大家都会想到用redis,确实通过redis可以实现这个功能,下面实现一下。/*** @date 2024/11/8 上午9:06*//*** 从请求中获取IP当获取不到时,返回null*//*** 获取请求的真实IP,优先级从高到低为:原创 2024-11-08 11:23:27 · 987 阅读 · 0 评论 -
SpringBoot优雅下线
当我们需要部署新版本代码的时候,需要重启服务,这个时候可能会出现一些问题,比如之前服务正在处理的请求还在处理,这个时候如果强制的停止服务,会造成数据丢失或者请求失败的情况。那么就需要有一种功能,当我们发出停止指令的时候,停止接收所有外部的请求,然后处理完已经接收的正在处理的请求,之后,再停止服务。这就是优雅下线。原创 2024-10-17 16:03:52 · 879 阅读 · 0 评论 -
@EqualsAndHashCode注解使用
通过使用 @EqualsAndHashCode,可以显著减少代码量并提高代码的可维护性和一致性。原创 2024-08-30 17:48:39 · 1005 阅读 · 0 评论 -
Nacos配置内容加密实现
因为项目中安全检查的要求,需要将nacos配置的内容进行加密,所以需要实现将配置内容加密处理,这里引入nacos-aes-encryption-plugin插件来完成这一需求。3.2 将项目的yml文件中的"spring.cloud.nacos.config.prefix"改为"cipher-aes-"开头,例:cipher-aes-user。-U参数表示强制更新依赖。进入Nacos控制台,配置内容正常处理,配置名以"cipher-aes-"开头,例:cipher-aes-user。原创 2024-08-13 15:11:10 · 1879 阅读 · 0 评论 -
Spring boot敏感参数加密配置
在项目中很多参数会被配置到配置文件中,比如说密钥,用户名,数据库连接,账号密码之类的,如果用明文配置,会有一定的安全风险。为了减小风险,增加对敏感配置数据的加密配置。# 算法识别前缀(当算法发现配置文件中的值以这前缀开始,后缀结尾时,会使用指定算法解密)// 指定秘钥,和yml配置文件中保持一致。// 指定秘钥,和yml配置文件中保持一致。* @param plaintext 明文。* @param data 加密后数据。密文用指定的前后缀包围: ENC(xxx)# 配置文件加解密配置。原创 2024-08-13 14:49:59 · 1399 阅读 · 0 评论 -
Spring Boot常用注解
Component注解是一个通用的注解,可以用来标注任何Spring管理的bean,像@Service,@Controller,@Repository都是@Component注解的别名。用途:@Data是一个复合注解,集成了@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstuctor等注解。用途:用于标识控制层组件,是@Component注解的别称,用于标识Spring MVC控制器,处理Web请求并返回视图。原创 2024-08-03 15:51:27 · 2711 阅读 · 1 评论 -
Spring Controller接口地址的骚玩法,很有用!
项目里有一个接口需要对外提供,对方的解析方式有不同的方式,一个是使用流行的json格式,另外一个却是老系统,只能用xml格式,但是接口内部的实现逻辑是完全一样的,为了适配更多调用方的需求,就需要将同样的接口数据用两种格式提供出去,总觉得哪儿不对劲儿,写了不好的代码。刚好发现Spring 5.3之后 之后出现的一个新特性——路径后缀匹配,可以支持同一个接口,根据调用方的需求,自动做转换。4,定义一个接口, 路径中使用.*来做后缀, fmt这段可以随意命名5,默认是支持json格式的,如果需要支原创 2024-08-02 20:22:25 · 412 阅读 · 0 评论 -
Spring实现自定义注解
具体原理网络上一大堆,但是没有看到有人用Spring去实现,其他人实现的基本上都是用了SpringBoot,没有参考意义。希望对你有帮助!原创 2024-08-02 17:15:51 · 429 阅读 · 0 评论 -
Spring Boot 3.x集成FastDFS记录
最近在做一个课程,需要用讲一下SpringBoot 使用文件上传的功能,选择了FastDFS作为文件存储OSS。Spring Boot是最新的3.3.0版本,JDK版本是17,中间有一些坑,下面记录一下。原创 2024-06-04 14:18:33 · 1380 阅读 · 0 评论 -
Spring常用注解(超全面)
EnableCaching:开启注解式的缓存支持;@Resource:由JSR-250提供 @Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的,@Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Name一起使用。@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。原创 2024-05-27 20:05:16 · 8382 阅读 · 0 评论 -
Maven查看项目中的pom依赖
安装包路径:/usr/local/opr-platform/opr-platform.jar -> BOOT-INF/lib/commons-compress-1.19.jar。-- 将easyexcel中的低版本commons-compress排除掉,再导入高版本的commons-compress -->但是需要注意的是,并不是所有的升级都适用上面这种,因为可能两个版本不兼容,所以在做上面这样的升级时,需要测试一下是否兼容,功能是否正常。回到背景里提到漏洞,在找到包之后,可以用以下的方法修复。原创 2024-05-27 15:59:09 · 1519 阅读 · 0 评论 -
响应式编程Spring Reactor探索
基本思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上,通过轮询或者边缘触发的方式来处理网络I/O事件。Reactor设计模式和响应式编程类似,它们都不主动调用某个请求的API,而是通过注册对应接口,实现事件触发执行。创建Mono,设置超时时间为60秒,将任务交给service层去处理,请求会在这儿挂着,然后可以继续接收新的请求。Spring Reactor框架是响应式编程的一个很好的实践,能帮助开发者快速完成相关的需求,能很好的实现支持背压处理。原创 2024-05-08 11:44:53 · 1087 阅读 · 0 评论 -
Canal+Springboot实现数据同步,全网唯一一个跑通了的案例
下面代码中的canalServerIp是上面部署了canal的那个服务器的IP,端口是默认的11111, destination就是上面dts(模式是example,也可以是你自己取的实例名)-- 查询是否开启了binlog的格式,需要是row,可以在show后面加一个global,查询全局变量。没想到的是,这玩意儿,号称社区活跃,技术成熟,竟然没找到一个博客写清楚了它的部署,全部是跑不起来的。于是,本着有困难上,没困难制造困难上的初心,决定还是挑战一下其他的方案,比如canal。原创 2024-04-28 17:51:17 · 2325 阅读 · 1 评论 -
规则引擎Drools+Nacos实现动态规则
在内部匹配队里里面,优先级越高的规则,执行顺序越靠前。默认的优先级的值是0,优先级的值可以是正数,也可以是负数。项目中有需要根据规则计算不同收费方费用的需求,后面还会有优惠券、满减、限时折扣之类的规则,同时需要配合不同运营活动动态配置,这些需求对计算的灵活性要求比较高。下面是在nacos中的配置: 格式是text, data-id是drools-rule(随意命名, 只要和项目启动文件里的data-id一致就可以)Drools是比较常用的规则引擎,可以自己定义计算规则,简化项目代码中的逻辑。原创 2024-04-16 08:54:43 · 900 阅读 · 5 评论 -
Spring单元测试+Mockito
单元测试基本上是开发逃不过的一个工作内容,虽然往往因为过于无聊,或者过于麻烦,而停止于项目的迭代之中,不了了之了。其实不是开发们懒,而是上头要求的测试覆盖率高,但是又没有好用的工具,导致工作积压,最后只能舍弃掉这部分。最近发现Spring+junit+mockito很好用,特别是对于DDD架构的项目,可以针对特定的代码层做单元测试,贼好用。2,使用mockito3,覆盖率检测三,实战1,新建测试类idea中在类里ctrl+shift+T注意:只有public方法才能生成原创 2024-03-19 14:56:21 · 1274 阅读 · 0 评论 -
Spring 3升级指导
移除 mybatis-plus-boot-starter 中依赖的 mybatis-spring 2.1.1 版本,单独引入高版本 mybatis-spring 3.0.3 版本。Spring开源多年,已经经过了多次的升级迭代,最新的已经到Spring 6了,但是估计大家最常用的还是Spring 2.x。配置文件里,把spring.redis.xxx.xxx改成spring.data.redis.xxx.xxx。- 删除 log4j-api、slf4j-api 依赖,使用默认依赖和版本。原创 2024-03-19 14:03:09 · 1257 阅读 · 0 评论 -
Springboot和Spring Cloud版本对应
Spring在不断地升级,各个版本存在一些不兼容的地方,为了避免出现问题,最好注意使用正确的版本。原创 2024-03-18 17:37:44 · 928 阅读 · 0 评论 -
分库分表面试必背
按照某些规则,比如说按照年份,对订单数据库进行划分,一年一个数据库,如db_order_2024,db_order_2025,下面的表和表结构完全一致,但是存储的数据不一样,分别归属于不同年份的订单数据。第三层:因为innodb的叶子节点,是直接包含整条mysql数据的,假设每条数据以1kb计算,那么第三层每个节点为16kb,那么每个节点是可以放16个数据的,所以最终mysql可以存储的总数据为。:对于存在逻辑主外键关系的表,如订单表和订单明细表,可以考虑将它们的数据物理上存储在一起,形成一个绑定表。原创 2024-02-19 15:57:57 · 1078 阅读 · 0 评论 -
一次说全COLA应用架构
1,原版COLA 4.0:应用架构的最佳实践_cola实战_程序员万万的博客-优快云博客2,不知道什么的版本COLA 架构_mob649e815da088的技术博客_51CTO博客3,另外一种不知道什么的版本COLA架构 入门-阿里云开发者社区关于定义确实各说各的,我们可以忽略,只要关注一个本质就好了,那就是大家都提到的分层简单来说,就是专一职责,专业的Layer做专业的事儿,解耦,避免臃肿。给 COLA 做减法:应用架构中的“弯弯绕设计”-阿里云开发者社区没有最佳,只有适合。如无必要,勿增实体!原创 2023-10-20 14:43:41 · 1346 阅读 · 0 评论 -
分布式链路追踪系统Skywalking的部署和应用
通过对比可以看到,Pinpoint和Skywalking不相上下,各有优劣,从界面、操作,集成方式来说,Pinpoint更好, 不过因为种种不得已的原因,我们今天还是聚焦在Skywalking上,它的优点是部署难度低,监控范围广、维度多,对代码侵入少,系统性能损失低,还支持接入 ELK 进行存储展示。下图描述的是树结构的Span集合,表示一次完整的跟踪,从请求到服务器开始,服务器返回response结束,跟踪每次rpc调用的耗时,存在唯一标识trace_id。cat: 大众点评开发的实时应用监控平台。原创 2023-10-19 17:49:45 · 1574 阅读 · 0 评论 -
zookeeper可视化工具ZooInspector用法
最近在做银行的项目,用到了thrift,rpc和zookeeper,所有应用都是注册到zookeeper上的,想知道哪些应用注册上了,就用到ZooInspector这个可视化的工具。原创 2023-09-14 19:37:51 · 595 阅读 · 0 评论 -
git拉代码时提示账号密码错误问题解决记录
通常来说执行命令2就可以了,但是有的人本地git版本问题或者其他问题,导致并没有清掉,那么就用命令1,当然两个都执行也可以。Git是常用的代码管理工具,在拉取代码的时候需要配置账号密码信息,如果不对或者需要更换的时候,就需要重新配置一下。命令2:git config --system --unset credential.helper。这样设置之后,后面就只需要配置一次账号信息,不用每次操作git都输密码了。在各个操作的场景下都会触发,输入账号和密码就可以了。步骤二:设置保存账号信息。原创 2023-09-13 16:47:20 · 4482 阅读 · 0 评论 -
RESTful API 面试必问
RESTful API是一种基于 HTTP 协议的 API 设计风格,它提供了一组规范和约束,使得客户端(如 Web 应用程序、移动应用等)和服务端之间的通信更加清晰、简洁和易于理解。原创 2023-08-30 10:54:21 · 1109 阅读 · 0 评论 -
一次讲清楚Linux Cron和 Spring Cron
定时任务是我们日常开发中经常用到的一个功能点,无论是Linux服务器上Crontab还是Spring task schedule,都会使用到cron表达式去实现定时任务的配置。不过,一定要注意,Linux cron表达式和Spring的cron表达式不一样,下面来一次讲清楚。原创 2023-08-29 17:46:19 · 539 阅读 · 0 评论 -
Java实现OTP二次验证
首先简单介绍一下OTP:简单就是说,一个时长30秒的动态密码,和账号绑定了,如果需要做身份验证的话,可以用这个动态码做二次验证。更简单说,就是一个安全要求更高的身份验证方式,一个字,牛!废话不多说,开干!原创 2023-08-21 17:46:12 · 2252 阅读 · 3 评论 -
Freemarker+thymeleaf应用实现打印银行小票
背景:最近项目里有个需求,需要动态配置一个模板,来打印各种不同银行或者其他行业的小票,下面小小记录一下实现过程。关键词:Springboot, thymeleaf, Freemarker,html2image。这里是关键,需要遍历数据,并判断数据中属性。2,组装成需要的数据结构。原创 2023-08-14 17:18:44 · 408 阅读 · 0 评论 -
Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台
内容:完整集成了Spring Gateway, Spring Security, Nacos, OAuth2, RBAC, 手机验证码登录等SSO统一认证平台,全平台唯一,全平台最全,全面细致,已经帮你踩了很多坑,一看就会,可以本地运行,或者直接作为认证平台。适合人群:准备搭建SSO平台的架构师,准备学习OAuth2和Spring Gateway结合的高级开发原创 2023-08-10 14:29:43 · 1406 阅读 · 2 评论 -
Sentinel持久化规则
项目中有用到Sentinel,然后需要将Sentinel上配置的规则做持久化(或者初始化),通过改写Sentinel源码实现了需求,下面记录一下实现过程。原创 2023-07-31 11:25:39 · 547 阅读 · 0 评论 -
流控平台Sentinel搭建和接入教程
流量控制和限流是大型系统必不可少的组成部分,Sentinel是Alibaba提供的一款特别好用的专业工具,属于那种看起来很牛,用起来也很牛的工具原创 2023-07-31 10:21:32 · 1030 阅读 · 0 评论 -
Jenkins搭建最简教程
纠结了一小会儿,到底要不要写这个,最终还是决定简单记录一下,因为Jenkins搭建实在是太简单了,虽然也有坑,但是坑主要在找稳定的版本。先学一个简称,LTS (属实是长见识了,oh yeah!下面是正文部分。原创 2023-07-28 16:28:23 · 942 阅读 · 0 评论 -
Jenkins集成SonarQube保姆级教程
Jenkins是自动化部署平台,一个粗眉大眼的糙汉子!SonarQube是代码扫描平台,一个眉目清秀的小女子!有一天,上天交给我一个任务,去撮合撮合他们!我抬头看了看天,不,天花板。这事儿有戏!原创 2023-07-28 15:05:49 · 2789 阅读 · 7 评论 -
代码扫描平台SonarQube搭建保姆级教程
代码扫描工具SonarQube,想必大家也有了解,就是那种不明觉厉的存在,最近刚好有需求,需要自己搭建,下面就给大家记录下搭建的过程。不了解的,可以先看看有一个初步认识。话不多说,开干!原创 2023-07-28 14:26:10 · 2381 阅读 · 0 评论 -
看完这篇,别再说不会Spring 分库分表了
Springboot + shardingsphere 实现分库分表的需求,比较简单,但是要想真正地投入实用,还有很多路要走,比如实现自定义分库分表规则的算法,自定义分布式表的主键ID,基于分库分表后的排序(默认已实现按分库分表的列进行排序)和分页等等等。t=N6B9Spring多数据源实现https://blog.youkuaiyun.com/wangerrong/article/details/131910740。原创 2023-07-26 11:12:53 · 834 阅读 · 0 评论 -
10分钟搭建链路追踪平台
随着项目越来越多,相互调用越来越复杂,搭建一个可视化的链路追踪平台显得尤为重要,今天给大家介绍的是zipkin,一个轻量级的零侵入的链路追踪平台,看我怎么10分钟给大家搭建出来。3, 在数据库建schema为zipkin的库,并在zipkin库下建相关的表。# zipkin要把sleuth产生的日志,抽取的比例,1.0即100%在服务器上建一个目录,通过下面命令下载zipkin.jar。5,在需要跟踪的项目里配置。4,启动zipkin应用。# zipkin的配置。启动项目,并正常使用。原创 2023-07-25 16:10:20 · 245 阅读 · 0 评论 -
10分钟实现任务调度平台搭建
powerjob是目前最灵活的一个可视化在线调度平台了,支持随时修改立即生效,可随时发起调度,支持告警配置。原创 2023-07-25 15:48:25 · 1204 阅读 · 2 评论 -
Spring 多数据源方法级别注解实现
Spring框架提供了多种数据源管理方式,其中多数据源管理是其中之一。多数据源管理允许应用程序使用多个数据源,而不是只使用一个数据源,从而提高了应用程序的灵活性和可靠性。多数据源管理的主要目的是让应用程序能够在不同的数据库之间切换,以满足不同的业务需求。例如,如果应用程序需要访问一个高可用性的数据库,但是该数据库当前不可用,那么应用程序可以自动切换到备用数据库,以保证业务的连续性。在多数据源管理中,Spring框架通过使用JNDI(Java命名和目录接口)来管理数据源。JNDI允许应用程序在运行时动原创 2023-07-25 10:17:06 · 892 阅读 · 0 评论 -
Nacos搭建和使用保姆级教程
在/conf目录下的nacos-mysql.sql里。首先在解压后的目录 /conf下的application.properties文件修改数据库配置。往下拉,修改授权相关的配置,下图中设置为false之后,后面服务注册时可以不需要账号密码。其次,注册中心,可选的方案有Eureka, Zookeeper,都得单独部署。首先,配置中心,可选的方案有Apollo,但是得另外部署。3,运行sql,把nacos需要的数据库初始化。到/bin目录,./startup.sh。好用又省钱,简直绝了。原创 2023-07-25 09:38:41 · 896 阅读 · 0 评论 -
阿里云OSS上文件下载后文件名前带下划线前缀问题的解决
背景:最近项目中,一个新人说自己写的文件上传和下载有点儿问题,什么问题呢,就是一个文件上传到阿里云OSS后,文件名都是正常的,但是从阿里云上下载之后,文件名前面代了一个下划线(_),有点儿莫名其妙。如图: 研究了一下他的代码,之后,发现有点儿问题,具体说就是没有设置正确的contentType需要根据具体的文件类型来设置contentType,而不是全部设置为file设置之后,上传文件到阿里云OSS,再下载,完美解决!如果对你有帮助,记得点赞关注转发哦原创 2022-12-04 16:42:09 · 1828 阅读 · 1 评论 -
不允许你还不会OSS文件操作,看完一篇就够了
背景:目前各个公司常用的静态文件服务器是OSS,不管是哪一家云厂商,都会有OSS资源服务提供,在项目中通常会议基础组件的形式存在,很少人会关注,下面就以阿里云为例来介绍一下OSS的使用。原创 2022-09-04 09:22:57 · 1845 阅读 · 0 评论 -
为了给你省1千8,给你推荐这款免费的DTS工具
背景:DTS(Data Transfer Service)数据传输服务,是一个在各大厂比较常用的工具,除了常规的数据库主从复制之外,还有在跨地跨DC之间数据实时传输,都会经常会用到。原创 2022-08-15 22:43:03 · 1248 阅读 · 0 评论