Spring
文章平均质量分 91
小沈同学呀
JAVA程序猿一枚,擅长分布式微服务、高并发、多线程等常规架构。记录成为架构师之路的点滴,分享工作中的各种疑难杂症。
展开
-
支持多语言准确率99.9%的开源离线IP地址定位库Ip2region ,强大到离谱
经过引入和验证Ip2region 获取本地外网IP归属,发现准确率还是可以的,应该可以达到开发者所说的99.9%。最最主要该IP定位库完全开源,再也不用向收费API低头了。那么,如果你的项目上能够接受这极小的误差性还是可以的哦,赶紧GET起来吧!原创 2024-09-09 11:52:36 · 1084 阅读 · 0 评论 -
【实战】Spring Boot 嵌套事务REQUIRES_NEW与NESTED在项目中的运用
通过使用REQUIRES_NEW或者NESTED,我们可以轻松地在现有事务中创建新的事务传播机制,其中REQUIRES_NEW不受外部事务影响,NESTED则是会受到外部事务影响。所以,在实际的开发中我们也需要注意嵌套事务的局限性和潜在的性能问题,以确保应用程序的高效运行。原创 2024-08-27 16:05:45 · 1834 阅读 · 1 评论 -
探索Java Stream API:高效处理集合的利器
Java Stream API以其简洁的语法和强大的功能,为Java集合处理带来了全新的体验。通过Stream API,我们可以以声明式的方式处理数据集合,使代码更加简洁、易于理解和维护。同时,结合Lambda表达式和函数式接口,Stream API还能轻松实现复杂的数据转换和聚合逻辑。然而,在使用Stream API时,我们也需要注意其生命周期、并行与串行的选择以及与其他Java特性的结合使用,以充分发挥其优势。原创 2024-08-15 18:07:40 · 1091 阅读 · 1 评论 -
【实战】Spring Security Oauth2自定义授权模式接入手机验证
Oauth2自定义认证模式还是比较简单,直接自定义认证令牌、自定义授权模式、自定义实际认证者、然后将自定义的授权模式和认证者交给Oauth2。最后,我们在资源配置中可以配置受限资源和免登录资源,以及token储存方式、用户加载方式等等即可。原创 2024-08-09 16:42:34 · 1155 阅读 · 2 评论 -
【实战】Spring Cloud Stream3.0 整合RocketMq
使用Spring Cloud Stream来进行整合RocketMq。如果我们有在一个项目中需要引入多个MQ的需求,用Spring Cloud Stream简直不要太好。当然,我们是直接使用Spring Cloud Stream3.0,不再像之前低版本那样需要引入通道类进行指定,3.0版本可用直接字配置文件进行粘接绑定信道。原创 2024-07-23 16:07:17 · 1705 阅读 · 4 评论 -
飞书开放平台自建网页应用登录与免登录
最近接收到了一个系统接入飞书的需求,大概就是当前系统只有账户密码登录,需要接入飞书扫码登录,另外还可以在飞书里面点击应用直接实现系统用户免登录。解析一下这个需求就是在浏览器端使用飞书扫码授权完成登录验证,同时需要提供飞书内部应用直接免登功能。哈哈,我调研了一些时间后将飞书网页应用登录与免登录接入了我们系统。现在就主要的接入点分享备注,以备二次查阅。原创 2024-07-16 17:26:52 · 2008 阅读 · 2 评论 -
【实战】EasyExcel实现百万级数据导入导出
最近接到一个百万级excel数据导入导出的需求,大概就是我们在进行公众号API群发的时候,需要支持500w以上的openid进行群发,并且可以提供发送openid数据的导出功能。可能有的同学会说,这么大的数据量发送为啥不用标签发送呢。哈哈,标签发送需要提前打标签微信限制50个一批,我们开10个线程也是需要3个小时左右才能打完,这样肯定不能满足客户需求。如果用openid群发就不一样了,微信支持10000个每批,基本上我开5个线程同时发送差不多几分钟搞定。所以,问题就来到了百万级excel数据的导入与导出啦。原创 2024-07-02 15:25:22 · 3713 阅读 · 2 评论 -
【实战】Spring Cloud Stream 3.1+整合Kafka
之前我们已经整合过Spring Cloud Stream 3.0版本与Kafka、RabbitMQ中间件,简直不要太好,直接让我们不用再关心底层MQ如何集与消息收发。但是从Spring Cloud 2020版本开始,Spring Cloud Stream的版本升级至3.1.0以上版本,自此版本开始@StreamListener上面就增加@Deprecated注解,不赞成使用,有可能接下来的版本会删除掉。传说是有利于使用Project Reactor提供的事件流抽象(如Flux和Mono),命令函数在每个单独原创 2024-06-19 16:04:19 · 1481 阅读 · 1 评论 -
使用高性能NIO框架netty实现IM集群对聊方案
netty支持websocket通讯协议,那么我们就可以用它来实现websoket,实现后端服务主动向前端推送消息的功能。比如AB用户分别注册到websoket后台,A用户向B用户发送消息,后端接收到A用户消息后判断消息接收者是B用户,然后后端逻辑直接调用B用户websoket连接进行推送即可。原创 2024-05-27 17:00:07 · 1050 阅读 · 2 评论 -
【实战】SpringBoot整合Websocket、Redis实现Websocket集群负载均衡
因为有websocket的存在,使得前后的主动交互变得容易和低成本。其实在JAVA领域用SpringBoot框架集成Websoket还是很简单的,今天我们重点不是集成而是通过Redis的发布订阅实现Websocket集群通信,当然有条件的也可以用MQ代替。原创 2024-05-18 12:46:14 · 2230 阅读 · 4 评论 -
Spring Boot框架强大的事件驱动模型(ApplicationEvent)
SpringBoot框架提供了强大的事件驱动模型(ApplicationEvent),允许应用程序组件之间通过发布和监听事件来进行松耦合的通信。在实际的生产场景中,我们可以使用事件进行缓存、邮件、日志解耦,从而提高系统性能。原创 2024-04-25 17:29:56 · 1496 阅读 · 5 评论 -
Java编程JDK动态代理概述与实战演示
Java JDK动态代理实例,展示了如何利用JDK提供的动态代理机制为已有接口实现添加额外行为(如日志记录、权限检查、缓存等)。在这个例子中,LogInvocationHandler添加了方法调用的前后日志记录功能。当通过代理对象调用add()方法时,实际上会触发invoke()方法,在执行目标方法之前打印方法调用信息,执行之后记录方法执行耗时。原创 2024-04-19 16:12:24 · 748 阅读 · 2 评论 -
Java编程使用CGLIB动态代理介绍与实战演示
以上就是一个完整的Java CGLIB动态代理实例。通过这个例子,可以看到我们成功地对ActionUserDataServiceImpl 类进行了代理,代理过程中插入了额外的前后置处理逻辑,而无需修改原有类的代码。在实际使用时,我们应根据项目需求和目标类特性选择合适的代理方案,不仅仅限制于CGLIB,如果有实现接口的类用JDK也可,这样才能达到事半功倍的效果。原创 2024-04-03 17:08:33 · 1326 阅读 · 3 评论 -
【实战】SpringBoot自定义 starter及使用
Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。原创 2024-01-20 17:05:07 · 1791 阅读 · 2 评论 -
Mybatis @MapKey注解返回指定Map源码解析与用例
Mybatis框架是Java后端常用的持久层框架,其中的@MapKey注解可以直接返回指定类型的Map。其核心原理就是对数据集合循环处理将指定字段作为key,数据作为value直接返回一个Map让我们直接使用以完成特定的业务功能。原创 2023-10-27 10:57:34 · 5081 阅读 · 7 评论 -
Tomcat线程复用与Threadlocal引发的惨案
Tomcat线程复用与Threadlocal引发的惨案原创 2022-07-27 11:24:57 · 1152 阅读 · 0 评论 -
【分布式云储存】Springboot微服务接入MinIO实现文件服务
Springboot微服务接入MinIO实现文件服务较为简单,我们只要按照官方文档引入依赖调用即可。值得注意的是我们根据需求选择接入ssl兼容方案和静态资源预览功能。当然,minio的private\custom\public可以完全实现我们各种需求,可以完全替代市场上付费和笨重的分布式服务。原创 2023-09-27 10:41:02 · 2640 阅读 · 5 评论 -
Java class 文件安全加密工具对比与ClassFinal实战
非常重要的项目推荐使用XJar可以完全隐藏Class文件内容,但是需要额外的go环境支持,也可以保守选择ClassFinal直接无侵入达到隐藏方法体和配置文件内容的目的。原创 2023-09-13 11:14:05 · 4367 阅读 · 19 评论 -
微服务:Springboot集成Hystrix实现熔断、降级、隔离
Springboot集成Hystrix实现熔断、降级、隔离较为简单,并且提供了hystrix-dashboard可视化仪表盘。Hystrix框架已经实现了熔断降级、隔离策略,我们集成后只需要根据自身情况进行配置选用即可。一般在微服务架构优先选择客户端熔断降级,当然也可在服务端进行注解配置。原创 2023-07-04 09:20:56 · 3887 阅读 · 12 评论 -
实战:win10安装docker并用docker-compose构建运行容器
win10安装docker并用docker-compose构建运行容器较为简单,只需要在程序和功能中开启Hyper-V虚拟功能,然后安装docker desktop即可。原创 2023-06-25 16:02:19 · 9877 阅读 · 20 评论 -
实战:Spring Cloud Stream集成兼容多消息中间件kafka、rabbitmq
Spring Cloud Stream集成多消息中间件kafka、rabbitmq较为简单,直接省去了原生中间的的操作与处理,开发人员可以直接任意切换和混用多种消息中间件,大大增加架构的可用性与可移植性。本实战案例提供重试、私信、手动ack、消费者分组和负载等高可用方案,直接可接入生产使用。原创 2023-06-08 15:07:43 · 5521 阅读 · 43 评论 -
实战:Spring Cloud Stream消息驱动框架整合rabbitMq
Spring Cloud Stream消息驱动框架整合rabbitMq原创 2023-06-05 15:26:19 · 3598 阅读 · 19 评论 -
springboot项目如何优雅停机
springboot项目如何优雅停机?运用有效的方式让微服务项目优雅的停机,让程序顺利执行完成原创 2023-05-13 20:31:09 · 2781 阅读 · 14 评论 -
AOP切面动态获取方法参数并回写标识
本案例直接运用AOP切面动态获取方法参数并回写标识,其中重点是AOP切面环绕增强逻辑处理与请求参数回写,以及内部通过Spring 表达式语言来动态解析注解方法参数,大大提升代码可读性与可维护性。原创 2023-02-07 15:47:50 · 4788 阅读 · 1 评论