![](https://img-blog.csdnimg.cn/a610fed3faad489999c2a44ee3bb775f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 81
Java 学习笔记
阿杆.
Java后台工程师,Kotlin后台工程师,全网同名【阿杆】,我的公众号【程序员阿杆】。
展开
-
保姆级教程:从 0 到 1 将项目发布到 Maven 中央仓库【2024年5月】
想让你的Java项目被更多人使用吗?快来学习如何将其发布至Maven中央仓库吧!虽然过程不简单,但我已经帮你完整的总结好啦~ 你直接对着抄就行~原创 2024-05-07 18:16:25 · 491 阅读 · 2 评论 -
我写了一套几乎无敌的参数校验组件!基于 SpEL 的参数校验组件「SpEL Validator」
一个强大的 Java 参数校验包,基于 SpEL 实现,扩展自 javax.validation 包,几乎支持所有场景下的参数校验。原创 2024-05-07 18:13:09 · 756 阅读 · 0 评论 -
接了个私活,分享下我是如何从 0 到 1 交付项目的
🤣虽然我也不知道在哪能接到靠谱的私活,但你可以先收藏本文,万一之后来活了,还能翻出来看看是吧。。。原创 2024-04-23 21:44:40 · 722 阅读 · 0 评论 -
小米一面:说说MVC与设计模式的关系
😡面试官:请说说MVC模式是基于哪种设计模式的?我的意思是,MVC是基于23中设计模式中的哪一种?原创 2024-04-23 21:40:22 · 1170 阅读 · 0 评论 -
基于javax.validation自定义参数校验注解,类似@NotNull
那些奇奇怪怪的参数校验你是怎么处理的?我选择向 @NotNull 学习😏。作为一名服务端开发程序员,接口的参数校验肯定是要经常写的,我们常用的参数校验方法,是通过 @NotNull、@Size、@NotBlank 等注解,然后配合 @Valid 注解来进行校验的。但这些注解无法完全满足我们的校验需求,这种情况下,我们可以选择自定义一个校验注解,来实现一些定制化的需求。原创 2024-01-31 14:19:38 · 1301 阅读 · 1 评论 -
踩了一堆坑,终于把微服务系统全面升级 JDK17 和 SpringBoot3 了
最近正在给自己的开源项目校园博客升级到 JDK17 以及 SpringBoot3,正好记录下升级和踩坑的过程,给大家提供一些解决方案的参考。先说结论:非常推荐升级JDK17,成本低收益高。至于SpringBoot3.0,迁移成本比较高,坑也会比较多,但如果是新项目的话,还是可以试试的。原创 2024-01-31 14:18:11 · 1819 阅读 · 2 评论 -
【项目实战】从零开始设计并实现一个接口异常链路分析器
你以为你写的后端:高性能、高可用、高并发!实际上你写的后端:接口耗时高、重复代码多、参数没限制🤣🤣!本文准备带你从 0 到 1 实现一个异常链路分析器,帮助你排查出不合理的链路信息!原创 2023-10-22 11:00:00 · 343 阅读 · 2 评论 -
maven引入本地jar包的简单方式【IDEA】【SpringBoot】
想必点进来看这篇文章的各位,都是已经习惯了Maven从中央仓库或者阿里仓库直接拉取jar包进行使用。我也是🤡🤡。前两天遇到一个工作场景,对接三方平台,结果对方就是提供的一个jar包下载链接,可给我整不会了。研究了一番之后,找到了合适的方法,故此记录。这种引入方式是比较靠谱的,只需要开发者操作一次,后续就可以不用再去管它了👍。原创 2023-07-29 10:11:42 · 2231 阅读 · 2 评论 -
基于异步+缓存的请求日志批量保存方案,拿去写在你的简历上吧!
你见过把日志库储存玩出花的吗?今天看了这篇文章你就见到了。先使用缓存区进行数据存储,然后再创建子线程去异步执行数据库保存操作,对主线程的影响应该是微乎其微了。原创 2023-03-24 20:28:19 · 838 阅读 · 3 评论 -
MySQL逻辑删除+Mybatis-Plus = 墙裂推荐
90%的公司都在使用的逻辑删除,当搭配上Mybatis-Plus,写代码时将几乎无感,轻松的一匹!原创 2023-01-15 13:44:57 · 1326 阅读 · 0 评论 -
过滤器、拦截器、AOP、ControllerAdvcie的使用对比、执行顺序及代码教程
本文讲解了过滤器、拦截器、AOP、ControllerAdvcie的区别,并用代码和文字展示了他们的使用方式,文末对它们的执行顺序进行了研究,并提出了使用建议。原创 2022-09-05 20:18:53 · 1753 阅读 · 45 评论 -
阿里云MaxCompute存取性能测试报告
前几天公司给我安排了个任务,让我去测试一下阿里云DataWork下的MaxCompute的存取性能,这不,测试报告来了。MaxCompute(ODPS)是适用于数据分析场景的企业级SaaS(Software as a Service)模式云数据仓库,以Serverless架构提供快速、全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使用户可以经济并高效地分析处理海量数据。MaxCompute适用于100 GB以上规模的存储及计算需求,最大可达EB级别。原创 2022-09-01 22:00:47 · 1336 阅读 · 12 评论 -
【开源微服务项目】基于 AOP + Redis + 自定义注解 实现细粒度的接口IP访问限制
我的写法是基于 AOP + 自定义注解 + Redis,并且封装在一个单独的模块 common-web 下,需要使用的模块只需引入该包,并且给需要限制的方法添加注解即可,很方便,且松耦合😁。唯一的缺点是该方法只支持在方法上添加注解,不支持给类添加,如果想给一个类的所有方法添加上限制,则必须给该类的所有方法都加上该注解才行🤧。...原创 2022-08-18 16:39:04 · 810 阅读 · 10 评论 -
【开源微服务项目】论如何在微服务中优雅的实现Redis序列化配置
本章讲解的主要内容在项目中的位置: scblogs / common / common-redis / src / main / java / cn / sticki / common / redis / autoconfig /由于微服务所涉及的模块较多,每个模块都是一个单独的服务,如果我们有多个服务需要使用到redis的话,每个服务都做一次redis序列化配置,那重复的代码是很多的。所以我们可以把配置抽离出来作为一个单独的模块,提供给其他需要的模块使用,以此来达到解耦和代码复用的效果。.........原创 2022-08-16 16:04:21 · 943 阅读 · 12 评论 -
基于Spring-Data-Elasticsearch 优雅的实现 多字段搜索 + 高亮 + 分页 + 数据同步 功能
技术要点1. 使用 *copyTo* 和 *ElasticsearchRepository* 完成的多字段搜索。2. 使用注解 *@Highlight* 和 *@HighlightField* 完成的高亮显示。3. 使用 *Pageable* 和 *SearchPage* 实现分页和高亮两不误的接口。4. 使用 *RabbitMQ* 完成 *MySQL* 和 *elasticsearch* 的数据同步。......原创 2022-07-11 13:36:54 · 1702 阅读 · 0 评论 -
SpringCloud Fegin CircuitBreaker (原hystrix) 失效原因 —— 版本3.1.2
今天想着给自己的微服务项目添加一个的功能,正好项目内远程调用是用的feign,那就直接用hystrix好了,也比较方便。然后呢,我以为比较简单的东西,却一直不生效,资料查了个遍,硬是弄了我一上午+一下午的时间,所以记录一下,给大家避坑。如果你的环境跟我差的有点多,那这篇文章可能对你的帮助不大。原因主要有二配置文件网上很多教程都是给的旧版本的配置文件,都是,但在新版本这是不生效的,正确的配置应该是下面我这样:可以参考官网:https://docs.spring.io/spring-cloud-openfei原创 2022-07-06 18:24:43 · 2232 阅读 · 4 评论 -
基于Redis的分布式锁 以及 超详细的改进思路
什么是分布式锁满足分布式系统或集群模式下多进程可见并且互斥的锁获取锁互斥:确保只能有一个线程获取锁,可以利用的互斥特性非阻塞:尝试一次,成功返回true,失败返回false释放锁手动释放,超时释放:获取锁时添加一个超时时间,避免服务宕机引起的死锁,组合实现思路改进思路存在的问题存在一种情况,按照以下顺序执行:示意图:这个问题,实际上就是释放了不是自己产生的锁,故我们可以通过特定的标识,在释放锁之前判断锁是否是由自己产生的,且只释放自己产生的锁。可以将线程id存入value,在释放之前判断锁的val原创 2022-06-22 12:30:16 · 339 阅读 · 1 评论 -
ServerHttpResponse返回Json数据
此ServerHttpResponse指的是org.springframework.http.server.reactive.ServerHttpResponse;就是gateway当中使用ServerWebExchange得到的一个response。某些条件下,我希望在gateway的全局过滤器中直接返回请求,而不进行转发,比如做ip限制这样的功能。然而GlobalFilter的处理方法中只提供了一个``ServerWebExchangeGatewayFilterChainServerWebExchan原创 2022-06-17 22:03:28 · 7260 阅读 · 1 评论 -
@Autowired 和 @Resource 的区别
@Autowired 默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类),如果想要指定名称,可以通过@Qualifier配合使用。@Resource 默认注入方式为 byName(根据命名进行匹配)。如果无法通过名称匹配到对应的实现类的话,注入方式会变为byType。1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常; 2. 如果指定了name,则从上下文中查找名称(id)匹原创 2022-06-16 20:41:43 · 92 阅读 · 0 评论 -
关于Gateway中使用@Controller的问题
以gateway作为网关时,使用@Controller,请求得到的响应中所有字段都为null且不为设定的通用返回格式。例如:请求路径:/user/user?username=sticki,得到的参数字段全部都是null。在gateway不应出现控制器类,应避免在gateway的类上标注@Controller。所以我最后改成了网关服务只做签名验证,然后登陆授权的功能放到用户服务里去了。...原创 2022-06-16 20:09:35 · 1796 阅读 · 0 评论 -
Spring事务回滚的两种方法
使用 来配置自动回滚,可以配置在类上,也可以配置在方法上(作用域不同),但对final或private修饰的方法无效,且该类必须是受spring所管控的。若被配置的方法或类抛出了异常,则事务会被自动回滚,除非你在该方法中手动捕获了异常。可以使用 来设定针对特定的异常进行事务回滚,如果不设置则默认会回滚 RuntimeException and Error (参考自源码内文档)。通过注入 来手动开启事务,手动回滚事务,用于抛出异常被catch后,进行手动回滚。...原创 2022-06-12 18:01:31 · 4985 阅读 · 1 评论 -
SpringBoot 自定义@Enable开关注解之配置MybatisPlus分页助手
自定义开关注解配置分页助手使用 IPage 的话,记得一定要配置分页助手,尤其是在做微服务项目的时候,有可能这个服务配置了,但是另一个没配置,很容易遗漏。因为给每个微服务都加配置确实太麻烦了,所以想到可以使用开关注解来做一个自动配置的操作。就像你常用的那些开关注解一样:@EnableAsync // 开启异步控制@EnableCreateCacheAnnotation // jetcache启用缓存的主开关我将mybatis-plus的配置类也做成了这样的东西。首先在微服务的公共模块里原创 2022-05-27 14:14:16 · 593 阅读 · 0 评论 -
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 · 16631 阅读 · 25 评论 -
MybatisPlus之Wrapper的使用有感
MybatisPlus之Wrapper的使用有感,讲述了我在使用mybatisPlus的过程中想到的一些问题。原创 2022-05-16 10:06:56 · 790 阅读 · 1 评论 -
Spring PathPattern-路径匹配器【超详细】
前言由于没有在网上没有找到比较详细的 PathPattern 说明,于是一路查代码找到官方文档。本文是官方文档的翻译文档,个人觉得还是写的比较清晰的,提供给大家参考,有助于精确的路径匹配。中午文档PathPattern使用以下规则匹配URL路径:?匹配一个字符*在一个路径段中匹配零个或多个字符**匹配零个或多个路径段,直到路径结束{spring}匹配一个路径段,并将其捕获为一个名为“spring”的变量{spring:[a-z]+}匹配regexp [a-z]+作为名为原创 2022-05-14 15:57:59 · 3706 阅读 · 0 评论 -
Minio文件下载问题——inputstream:closed
在使用minio进行文件下载的时候,代码一直报错 java.io.IOException: closed ,最终发现原来是因为 try () {} 语法问题所导致的。原创 2022-04-22 19:25:58 · 6153 阅读 · 3 评论 -
SpringBoot配置SSL 坑点总结【密码验证失败、连接不安全】
SpringBoot配置SSL坑点总结,包括四种常见错误和不常见错误,导致出现 密码验证失败、网站不安全 的原因。原创 2022-04-21 11:03:21 · 4284 阅读 · 4 评论 -
Spring Bean的加载方式【8种】
本文讲述了Spring bean 的八种加载方式,包含的内容足以应付大多数场景原创 2022-04-18 13:52:24 · 3377 阅读 · 2 评论