![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 83
Spring原理,SpringBoot具体应用等
九城风雪
这个作者很懒,什么都没留下…
展开
-
Spring Boot整合MybatisPlus逆向工程快速生成代码
MyBatis-Plus是MyBatis的增强工具,Generator通过MyBatis-Plus快速生成Entity、Mapper、Mapper XML、Service、Controller等模块的代码,方便快捷,并且支持MySQL/PostgreSQL。原创 2024-05-11 11:18:15 · 415 阅读 · 0 评论 -
分分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有!
布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。布隆过滤器(Bloom Filter)本质上是由长度为 m 的位向量或位列表(仅包含 0 或 1 位值的列表)组成,最初所有的值均设置为 0,如下图所示。向布隆过滤器中添加 key 时,会使用多个 hash 函数。转载 2023-12-05 16:13:56 · 181 阅读 · 0 评论 -
# EasyExcel mac或者windows下读取EXCEL正常,Linux服务器下报ExcelAnalysisException:java.lang.AbstractMethodError 异常
网上搜了很多帖子,有说poi依赖冲突的,有说linux上无对应字体的,但是都不生效。最新 3.3.2,更新pom依赖,重新部署到Linux 服务器上问题就解决了。原创 2023-09-15 15:46:07 · 233 阅读 · 0 评论 -
Spring自定义参数解析器设计
RequstBody、@RequstParam 这些注解是不是很熟悉?我们在开发Controller接口时经常会用到此类参数注解,那这些注解的作用是什么?我们真的了解吗?前台传参参数格式//***但如果是服务接收参数的方式改变了,如下代码,参数就不能成功接收了,这个是为什么呢?//***如果上面的代码稍微改动一下注解的使用并且前台更改一下传参格式,就可以正常解析了。前台传参参数格式http://***?无//***转载 2023-09-09 21:07:14 · 81 阅读 · 0 评论 -
Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?
这两者最大的区别在于基于 JDK 的动态代理需要被代理的对象有接口,而基于 Cglib 的动态代理并不需要被代理对象有接口。那么小伙伴们不禁要问,Spring 中的 AOP 是怎么实现的?是基于 JDK 的动态代理还是基于 Cglib 的动态代理?转载 2023-08-30 22:27:57 · 90 阅读 · 0 评论 -
既然有HTTP协议,为什么还要有RPC
纯裸TCP是能收发数据,但它是个无边界的数据流,上层需要定义消息格式用于定义消息边界。于是就有了各种协议,HTTP和各类RPC协议就是在TCP之上定义的应用层协议。RPC本质上不算是协议,而是一种调用方式,而像gRPC和thrift这样的具体实现,才是协议,它们是实现了RPC调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时RPC有很多种实现方式,不一定非得基于TCP协议。从发展历史来说,**HTTP主要用于b/s架构,而RPC更多用于c/s架构。转载 2023-08-21 22:22:39 · 48 阅读 · 0 评论 -
一个SpringBoot 项目能处理多少请求?
这篇文章是基于“一个 SpringBoot 项目能同时处理多少请求?”这个面试题出发的。但是经过我们前面简单的分析,你也知道,这个问题如果在没有加一些特定的前提条件的情况下,答案是各不一样的。比如我再给你举一个例子,还是我们的 Demo,只是使用一下 @Async 注解,其他什么都不变:再次启动项目,发起访问,日志输出变成了这样:同时能处理的请求,直接从 Tomcat 的默认 200 个变成了 8 个?因为 @Async 注解对应的线程池,默认的核心线程数是 8。之前写过这篇文章。转载 2023-07-31 12:20:16 · 58 阅读 · 0 评论 -
单例模式的七种写法,你都知道吗?
从使用的角度来讲,如果不需要懒加载的话,直接饿汉式就行了;如果需要懒加载,可以考虑静态内部类,或者尝试一下枚举的方式。从面试的角度,懒汉式、饿汉式、双重校验锁饿汉式,这三种是重点。双重校验锁方式一定要知道指令重排是在哪,会导致什么问题。转载 2023-02-20 15:51:58 · 118 阅读 · 0 评论 -
Chrome浏览器获取httpServletRequest每次请求sessionId不同问题的一种解决办法分享
request.getSession()和request.getSession(true)意思相同:获取session,如果session不存在,就新建一个reqeust.getSession(false)获取session,如果session不存在,则返回null如果 项目中无法确定回话一定存在,最好用request.session(false);getSession(boolean create)意思是返回当前reqeust中的HttpSession ,如果当前reqeust中的HttpSe转载 2020-09-30 15:15:07 · 2978 阅读 · 0 评论 -
从单体架构到微服务架构的那些事
尤其对于互联网软件产品,不变的是变化,而且产品上线后面向用户,可能功能并不满足市场需求,甚至是无用的,所以一开始就在技术层面考虑过多,追寻完美不变的方案,是不现实的,而且很容易因过度设计,导致实现过于复杂,增加太多其实不必要的工作量,从而影响项目按时交付,以及后期应对需求变化的调整效率,进而挫伤整个团队士气。因此,这项拆分重构的工作,一方面要按照微服务架构,把核心模块间的调用改为RPC方式,把非业务部分放到网关等,还要做大量业务类、接口、方法重新编写,以及删除重复代码等重构工作,很有挑战。转载 2023-01-20 22:27:01 · 376 阅读 · 0 评论 -
SpringBoot 项目打成 .exe 程序
近期做了一个前后端合并的spring boot项目,但是要求达成exe文件,提供给不懂电脑的小白安装使用,就去研究了半天,踩了很多坑,写这篇文章,是想看到这篇文章的人,按照我的步骤走,能少踩坑。转载 2023-01-02 20:56:22 · 189 阅读 · 0 评论 -
SpringSecurity的原理与使用
Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。 一般Web应用的需要进行认证和授权。 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 授权:经过认证后判断当前用户是否有权限进行某个操作转载 2022-11-28 22:10:17 · 499 阅读 · 0 评论 -
SpringBoot监听器
在学习的路上遵循一些原则,可以更高效的学习,其中就有这么一条“循循渐进”,在深入SpringBoot之前先要了解清楚什么是监听器,监听器是如何实现的,这些都是对付大魔王的神兵利器,和RPG游戏一样打boss之前先要打小怪提升等级,爆出“屠龙宝刀”。 伊泽瑞尔作为瓦罗拉大陆上组名的探险家在探险的路上,却总是受到天气的影响无法冒险,所以他拜托我帮他写一个软件,辅助他关注天气。步骤1:创建抽象类WeatherEvent(天气状态)步骤2:实现下雪和下雨事件 下雪事件下雨事件步骤3:创建天气监听器接口步骤转载 2022-11-07 22:37:20 · 1114 阅读 · 0 评论 -
spring中的过滤器与拦截器
与 Servlet 相似,过滤器是一些 web 应用程序组件,可以绑定到一个 web 应用程序中。但是与其他 web 应用组件不同的是,过滤器是“链”在容器的处理过程中的。这就意味着它们可以在请求达到 servlet 之前对其进行访问,也可以在响应信息返回到客户端之前对其进行拦截。这种访问使得过滤器可以检查并修改请求和响应的内容。init :Filter 的初始化,在 Servlet 容器创建过滤器实例的时候调用,以确保过滤器能够正常工作。在 init() 方法执行过程中遇到如下问题时,web 容器将不会配转载 2022-11-06 23:19:34 · 348 阅读 · 0 评论 -
springboot+spring security+swagger 配置
springboot+spring security+swagger 配置一、配置swagger2.x1.添加pom依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependenc转载 2022-05-06 11:32:29 · 753 阅读 · 0 评论 -
解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在...
解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在…网上很多帖子的解决方案如下:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <versio原创 2022-02-09 16:35:13 · 2058 阅读 · 0 评论 -
搭建ELK 日志收集系统
搭建ELK 日志收集系统ELK(Elasticsearch,Logstash,Kibana),在springboot等项目中常用来收集日志还有进行日志分析,最后通过可视化UI进行展示。在大量日志产生的项目场景中,ELK是收集、分析日志的利器一、 Elasticsearch安装环境准备系统: Centos8防火墙: 关闭Sellinux: 关闭JDK 1.8(备注至少是1.8版本的JDK)image.png1、下载https://www.elastic.co/downloads/elast原创 2022-02-03 15:40:20 · 707 阅读 · 0 评论 -
Spring Boot 中使用自定义注解,AOP 切面统一打印出入参日志
一、先看看切面日志输出效果在看看实现方法之前,我们先看下切面日志输出效果咋样:Spring boot 自定义注解,aop切面统一打印请求日志效果图从上图中可以看到,每个对于每个请求,开始与结束一目了然,并且打印了以下参数:URL: 请求接口地址;Description: 接口的中文说明信息;HTTP Method: 请求的方法,是 POST, GET, 还是 DELETE 等;Class Method: 被请求的方法路径 : 包名 + 方法名;IP: 请求方的 IP 地址;Request转载 2021-12-20 11:33:16 · 1140 阅读 · 1 评论 -
Spring 代理模式
代理模式代理模式在 Java 开发中是一种比较常见的设计模式。设计目的旨在为服务类与客户类之间插入其他功能,插入的功能对于调用者是透明的,起到伪装控制的作用。如租房的例子:房客、中介、房东。对应于代理模式中即:客户类、代理类 、委托类(被代理类)。为某一个对象(委托类)提供一个代理(代理类),用来控制对这个对象的访问。委托类和代理类有一个共同的父类或父接口。代理类会对请求做预处理、过滤,将请求分配给指定对象。生活中常见的代理情况: 租房中介、婚庆公司等代理模式的两个设计原则:代理类与委托类具有相转载 2021-12-20 11:29:39 · 1042 阅读 · 0 评论 -
【SpringBoot】切面AOP实现权限校验:实例演示与注解全解
转载:https://blog.csdn.net/mu_wind/article/details/1027580051 理解AOP1.1 什么是AOPAOP(Aspect Oriented Programming),面向切面思想,是Spring的三大核心思想之一(两外两个:IOC-控制反转、DI-依赖注入)。那么AOP为何那么重要呢?在我们的程序中,经常存在一些系统性的需求,比如权限校验、日志记录、统计等,这些代码会散落穿插在各个业务逻辑中,非常冗余且不利于维护。例如下面这个示意图:有多少业务操转载 2021-10-06 17:07:59 · 379 阅读 · 0 评论 -
RocketMQ在SpringBoot中的使用
RocketMQ 在SpringBoot中的使用一、前言在Springboot中使用RocketMQ基本有两种方式, 第一种是基于RocketMQ原生的API,第二种是采用Springboot对RocketMQ封装的写法,接下来分别介绍这两种方式的基本用法,各自的优缺点各位看官仁者见仁,智者见智。二、RocketMQ原生API的使用方式2.1生产者的使用pom 依赖如下:<dependency> <groupId>org.apache.rocketmq</g原创 2021-07-22 22:54:04 · 16846 阅读 · 1 评论 -
SpringBoot打War包部署Tomacat
原文链接:https://blog.csdn.net/u012489412/article/details/84023569一、前言大家都知道,springboot有2种部署方式,一种是打jar包部署,一种是打war包部署,jar包部署通常比较简单,war包部署麻烦一些,这里我就分享一下我部署war包的经验。二、如何打war包对于如何打war包,很多小伙伴,都知道,直接pom文件里,把那个jar换成war即可,是的,确实如此,但是还需要一点其它操作。2.1第一步:修改pom文件的转载 2021-07-22 16:09:07 · 171 阅读 · 0 评论 -
@Transactional回滚问题(try catch、嵌套)
Spring 事务注解 @Transactional 本来可以保证原子性,如果事务内有报错的话,整个事务可以保证回滚,但是加上try catch或者事务嵌套,可能会导致事务回滚失败。测试一波。准备建两张表,模拟两个数据操作CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` smallint(3) DEFAULT NULL, PRI.转载 2021-06-23 10:52:19 · 1461 阅读 · 0 评论 -
Java ArrayList Remove方法失效的问题
看到一篇博客:https://blog.csdn.net/Sun_flower77/article/details/78008491?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLea转载 2020-11-09 10:55:50 · 1860 阅读 · 0 评论