校园博客
文章平均质量分 88
开源微服务项目“校园博客”开发经验专栏,项目地址:https://github.com/stick-i/scblogs
阿杆.
后端开发,全网同名【阿杆】,我的公众号【程序员阿杆】。wx:sticki6,添加时请备注来意。
展开
-
基于javax.validation自定义参数校验注解,类似@NotNull
那些奇奇怪怪的参数校验你是怎么处理的?我选择向 @NotNull 学习😏。作为一名服务端开发程序员,接口的参数校验肯定是要经常写的,我们常用的参数校验方法,是通过 @NotNull、@Size、@NotBlank 等注解,然后配合 @Valid 注解来进行校验的。但这些注解无法完全满足我们的校验需求,这种情况下,我们可以选择自定义一个校验注解,来实现一些定制化的需求。原创 2024-01-31 14:19:38 · 1654 阅读 · 1 评论 -
踩了一堆坑,终于把微服务系统全面升级 JDK17 和 SpringBoot3 了
最近正在给自己的开源项目校园博客升级到 JDK17 以及 SpringBoot3,正好记录下升级和踩坑的过程,给大家提供一些解决方案的参考。先说结论:非常推荐升级JDK17,成本低收益高。至于SpringBoot3.0,迁移成本比较高,坑也会比较多,但如果是新项目的话,还是可以试试的。原创 2024-01-31 14:18:11 · 2258 阅读 · 2 评论 -
基于异步+缓存的请求日志批量保存方案,拿去写在你的简历上吧!
你见过把日志库储存玩出花的吗?今天看了这篇文章你就见到了。先使用缓存区进行数据存储,然后再创建子线程去异步执行数据库保存操作,对主线程的影响应该是微乎其微了。原创 2023-03-24 20:28:19 · 988 阅读 · 3 评论 -
GitHub提交代码超时解决方案 | 配置SSH连接
众所周知,GitHub是我们程序员在上班或者学习的时候经常会逛的一个地方[手动狗头],而且如果我们想参与开源项目的话,GitHub也是一个很好的平台。可问题是,提交代码到GitHub总是超时,简直烦死😭😭。有时候我们在Gitee上看到一个好的开源项目想要参加,但是别人可能只是从GitHub同步到Gitee的,Gitee上的社区完全没人交流,那这种情况下,想参与项目贡献还是得去GitHub才行😖🤐。为什么我们访问GitHub这么慢呢?原创 2022-10-25 13:45:59 · 5053 阅读 · 80 评论 -
论如何参与一个开源项目(下):创建PR和代码审查
本篇我们要讲的是如何开始向开源项目提交代码(创建PR)以及提交后(代码审查)应该注意些什么,没有看前几步的同学可以先去看一下上篇和中篇的内容噢!原创 2022-10-06 10:55:24 · 2741 阅读 · 21 评论 -
论如何参与一个开源项目(中):Fork仓库和编写代码
本篇我们要讲的是如何开始向开源项目编写代码,首先我们要先Fork仓库,然后编写代码之前,我们得先看看贡献文档,需要注意....原创 2022-10-05 11:45:42 · 1949 阅读 · 17 评论 -
论如何参与一个开源项目(上):参与的意义和提issue
说起开源项目,好像人人都懂:不过就是一群人一起写了些东西,并且这些东西是公开的,大家都能看。但要细说,可能大多数的开发者都说不出个所以然,甚至不知道怎么提issue。所以我就想写这样一篇文章,来聊聊我是如何参与开源项目的,参与开源项目的正确流程是怎样的,以及我们参与开源项目的意义。原创 2022-10-04 15:04:33 · 2551 阅读 · 18 评论 -
Gateway 根据服务名路由失败,报错 Service Unavailable, status=503
记一次路由转发失败的经历使用gateway+nacos,yaml配置如下,这里使用的是服务名称进行转发:server: port: 10010spring: application: name: @artifactId@ cloud: nacos: server-addr: 127.0.0.1:8848 # nacos地址 gateway: discovery: locator: enabled: tr原创 2022-05-18 16:00:25 · 17127 阅读 · 26 评论 -
【开源微服务项目】基于 AOP + Redis + 自定义注解 实现细粒度的接口IP访问限制
我的写法是基于 AOP + 自定义注解 + Redis,并且封装在一个单独的模块 common-web 下,需要使用的模块只需引入该包,并且给需要限制的方法添加注解即可,很方便,且松耦合😁。唯一的缺点是该方法只支持在方法上添加注解,不支持给类添加,如果想给一个类的所有方法添加上限制,则必须给该类的所有方法都加上该注解才行🤧。...原创 2022-08-18 16:39:04 · 960 阅读 · 10 评论 -
【开源微服务项目】论如何在微服务中优雅的实现Redis序列化配置
本章讲解的主要内容在项目中的位置: scblogs / common / common-redis / src / main / java / cn / sticki / common / redis / autoconfig /由于微服务所涉及的模块较多,每个模块都是一个单独的服务,如果我们有多个服务需要使用到redis的话,每个服务都做一次redis序列化配置,那重复的代码是很多的。所以我们可以把配置抽离出来作为一个单独的模块,提供给其他需要的模块使用,以此来达到解耦和代码复用的效果。.........原创 2022-08-16 16:04:21 · 1112 阅读 · 12 评论 -
SpringBoot 自定义@Enable开关注解之配置MybatisPlus分页助手
自定义开关注解配置分页助手使用 IPage 的话,记得一定要配置分页助手,尤其是在做微服务项目的时候,有可能这个服务配置了,但是另一个没配置,很容易遗漏。因为给每个微服务都加配置确实太麻烦了,所以想到可以使用开关注解来做一个自动配置的操作。就像你常用的那些开关注解一样:@EnableAsync // 开启异步控制@EnableCreateCacheAnnotation // jetcache启用缓存的主开关我将mybatis-plus的配置类也做成了这样的东西。首先在微服务的公共模块里原创 2022-05-27 14:14:16 · 637 阅读 · 0 评论 -
基于Spring-Data-Elasticsearch 优雅的实现 多字段搜索 + 高亮 + 分页 + 数据同步 功能
技术要点1. 使用 *copyTo* 和 *ElasticsearchRepository* 完成的多字段搜索。2. 使用注解 *@Highlight* 和 *@HighlightField* 完成的高亮显示。3. 使用 *Pageable* 和 *SearchPage* 实现分页和高亮两不误的接口。4. 使用 *RabbitMQ* 完成 *MySQL* 和 *elasticsearch* 的数据同步。......原创 2022-07-11 13:36:54 · 2032 阅读 · 0 评论 -
SpringCloud Fegin CircuitBreaker (原hystrix) 失效原因 —— 版本3.1.2
今天想着给自己的微服务项目添加一个的功能,正好项目内远程调用是用的feign,那就直接用hystrix好了,也比较方便。然后呢,我以为比较简单的东西,却一直不生效,资料查了个遍,硬是弄了我一上午+一下午的时间,所以记录一下,给大家避坑。如果你的环境跟我差的有点多,那这篇文章可能对你的帮助不大。原因主要有二配置文件网上很多教程都是给的旧版本的配置文件,都是,但在新版本这是不生效的,正确的配置应该是下面我这样:可以参考官网:https://docs.spring.io/spring-cloud-openfei原创 2022-07-06 18:24:43 · 2378 阅读 · 4 评论 -
ServerHttpResponse返回Json数据
此ServerHttpResponse指的是org.springframework.http.server.reactive.ServerHttpResponse;就是gateway当中使用ServerWebExchange得到的一个response。某些条件下,我希望在gateway的全局过滤器中直接返回请求,而不进行转发,比如做ip限制这样的功能。然而GlobalFilter的处理方法中只提供了一个``ServerWebExchangeGatewayFilterChainServerWebExchan原创 2022-06-17 22:03:28 · 7628 阅读 · 1 评论