![](https://img-blog.csdnimg.cn/20210731092006669.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
实战 Spring Cloud 互联网主流问题解决方案
文章平均质量分 77
内容包括RabbitMQ实现100百分百可靠消息投递、Seata实现分布式事务、ShardingJdbc分库分表、Redisson实现分布式锁、Xxl-Job实现分布式任务调度、Gateway整合Knife4j管理api文档、防止XXS攻击、表单重复提交等,使每个人都可以独立、快速、高效地开发项目!
实战架构师
主要从事Java研发,精通微服务架构,大数据量、高并发编程、Spring, Mybatis Plus,Spring Cloud Alibaba,MQ,ElasticSearch,分库分表,Seata,Redisson,Xxl-Job等框架;
展开
-
JFinal Enjoy模版引擎使用手册
1、概述Enjoy Template Engine 采用独创的 DKFF (Dynamic Key Feature Forward)词法分析算法以及独创的DLRD (Double Layer Recursive Descent)语法分析算法,极大减少了代码量,降低了学习成本,并提升了用户体验。Enjoy 模板引擎专为 java 开发者打造,所以坚持两个核心设计理念:一是在模板中可以直接与 java 代码通畅地交互,二是尽可能沿用 java 语法规则,将学习成本降到极致。因此,立即掌握 90% 的用原创 2022-05-05 15:01:20 · 1105 阅读 · 0 评论 -
Redis内存占用过大如何分析?
redis内存占用过大,如何从成千上万的key中找到占用内存最大的可以,如何快速进行定位与分析?原创 2022-05-05 14:00:18 · 2779 阅读 · 0 评论 -
SpringCloud Feign集成OkHttp&开启请求压缩
文章目录SpringCloud Feign集成OkHttp并开启请求压缩1、引入依赖2、修改配置3、新增配置类4、新增拦截器,开启请求压缩5、Feign使用5.1、启动类加入对应注解5.2、依赖注入调用6、番外篇:什么是Accept-Encoding?SpringCloud Feign集成OkHttp并开启请求压缩使用原因 在Feign中,Client是一个非常重要的组件,Feign最终发送Request请求以及接收Response响应都是由Client组件来完成的。Client在Fei原创 2021-11-29 16:59:39 · 659 阅读 · 0 评论 -
SpringBoot获取文件的真实类型、修改后缀名也能识别出来
1、 前言做文件上传功能时如何准确的判断文件类型?开始是根据文件后缀名判断的,但这样要是故意修改文件后缀就无法准确判断了,在咨询一番度娘后,决定采用读取文件的十六进制文件头来判断文件的真正类型。一、如何获取真实文件格式?当把文件的二进制数据转换成十六进制时,同类型文件的文件头数据是相同的,即使改变了其后缀,这个数据也不会改变。文件头是位于文件开头的一段承担一定任务的数据,一般在开头部分。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序声明(declaration),而定义文件用于保原创 2021-11-10 17:42:11 · 1616 阅读 · 0 评论 -
SpringBoot-Poi-TL通过word模板生成word文件
package com.framework.poitl;import com.deepoove.poi.XWPFTemplate;import com.deepoove.poi.config.Configure;import com.deepoove.poi.data.*;import com.deepoove.poi.policy.HackLoopTableRenderPolicy;import org.junit.Test;import org.junit.runner.RunWith;i原创 2021-11-10 17:28:00 · 1290 阅读 · 0 评论 -
Spring Boot基于Hibernate-Validator,AOP实现数据校验
文章目录1、场景2、引入依赖3、创建AOP3.1、自定义注解3.2、自定义AOP4、方法验证5、Bean验证6、Hibernate Validator注解大全6.1、Bean Validation 中内置的 constraint6.2、Hibernate Validator 附加的 constraint1、场景在企业系统的开发中,用户表单输入的场景是会经常遇见的,如何让数据校验脱离于业务代码逻辑,谁也不想在逻辑代码里对字段逐一判断…2、引入依赖<dependency> <g原创 2021-11-02 17:55:32 · 136 阅读 · 0 评论 -
SpringCloud-Gateway整合Knife4j并实现自定义注解
文章目录1、Knife4j介绍2、网关整合Knife4j2.1、引入依赖2.2、编写配置类2.2.1、配置SwaggerProvider,获取Api-doc,即SwaggerResources2.2.2、Gateway里没有配置SwaggerConfig,而运行Swagger-ui又需要依赖一些接口,所以我的想法是自己建立相应的swagger-resource端点2.3、yaml配置3、微服务整合Knife4j3.1、引入依赖3.2、编写配置类3.2.1、SwaggerAutoConfiguration:主原创 2021-11-01 18:17:00 · 597 阅读 · 0 评论 -
SpringBoot整合Xxl-Job实现分布式任务调度
文章目录一、简介1.1 概述1.2 社区交流1.3 特性1.4 发展1.5 下载文档地址源码仓库地址中央仓库地址1.6 环境二、快速入门2.1 初始化“调度数据库”2.2 编译源码2.3 配置部署“调度中心”步骤一:调度中心配置步骤二:部署项目步骤三:调度中心集群(可选)其他:Docker 镜像方式搭建调度中心:2.4 配置部署“执行器项目”步骤一:maven依赖步骤二:执行器配置步骤三:执行器组件配置步骤四:部署执行器项目步骤五:执行器集群(可选)2.5 开发第一个任务“Hello World”步骤一:新原创 2021-08-31 14:03:04 · 201 阅读 · 0 评论 -
SpringBoot发送文本|HTML|模版|附件邮件
文章目录一、引入依赖二、配置参数三、代码开发3.1 Controller3.2 Service3.2 ServiceImpl一、引入依赖 <!--email--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artif原创 2021-08-05 16:54:12 · 136 阅读 · 0 评论 -
SpringBoot自定义注解防止表单重复提交(幂等性)
文章目录一.前端限制二.后端限制三.实现3.1 自定义注解防止表单重复提交3.2 配置父类拦截器3.3 重复提交的拦截器实现类3.4 配置拦截器3.5 构建可重复读取inputStream的request3.5.1 继承HttpServletRequestWrapper类3.5.2 实现Filter接口3.5.3 配置Filter3.5.4 辅助类3.5.4.1 转义和反转义工具类3.5.4.2 HTML过滤器,用于去除XSS漏洞隐患3.5.4.3 通用http工具封装3.5.4.4 通用http发送方法原创 2021-07-31 12:10:30 · 422 阅读 · 0 评论 -
SpringBoot解决XSS跨站脚本攻击
文章目录一.思路二.实现2.1 定义XssHttpServletRequestWrapper2.2 定义XssFilter类实现Filter接口2.3 Filter配置2.4 yaml配置一.思路1.定义XssHttpServletRequestWrapper类继承HttpServletRequestWrapper覆写getParameterValues,getInputStream方法request的inputStream只能被读取一次,多次读取将报错; 解决方案:通过构造方法先记录已读取的内容,然原创 2021-07-31 11:36:41 · 1028 阅读 · 0 评论 -
Swagger2 注解说明
文章目录一、Maven依赖二、注解说明1、**作用于Controller类上**2、**作用于方法上**2.1、说明参数的含义2.2、说明返回参数或对象含义3、**作用于对象类**三、具体使用1、@Api:请求类的说明2、@ApiOperation:方法的说明2.1、@ApiImplicitParams、@ApiImplicitParam:方法参数的说明3、@ApiResponses、@ApiResponse:方法返回值的状态码说明4、@ApiModel:用于JavaBean上面,表示对JavaBean 的原创 2021-05-11 16:26:36 · 112 阅读 · 0 评论 -
SpringBoot使用Redisson实现分布式锁
文章目录一、什么是分布式锁1.1、概述1.2、为什么要使用分布式锁1.3、分布式锁应该具备哪些条件1.4、典型使用场景二、项目整合2.1、引入依赖2.2、工具类2.3、属性装配类2.4、自动装配类2.5、切面类配置2.5.1、自定义注解2.5.2、切面类三、项目使用3.1、配置文件3.2、工具类封装使用3.3、AOP封装使用一、什么是分布式锁1.1、概述为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。1.2原创 2021-05-11 16:25:08 · 252 阅读 · 0 评论 -
Spring Boot集成百度UidGenerator分布式ID
一、简介百度UidGenerator是一个分布式数据库id生成器,本文在SpringBoot项目快速优雅集成百度UidGenerator,使用的是 uid-generator-spring-boot-starter ,它是基于百度UidGenerator,在此基础上做了部分改进。改造为spring-boot-starter的形式,不用部署为分布式,直接建表、在项目中引入,即可使用针对时钟回拨,提供了修正选项(默认启用,可通过配置关闭),小于阈值直接休眠,大于阈值更改机器号对机器id用尽提供了复用策原创 2021-05-11 16:21:17 · 907 阅读 · 3 评论 -
阿里Druid数据库连接池配置
1、介绍Druid是一个拥有大数据实时查询和分析的高容错、高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析。尤其是当发生代码部署、机器故障以及其他产品系统遇到宕机等情况时,Druid仍然能够保持100%正常运行,而且它自带了可视化的监控界面/druid。创建Druid的最初意图主要是为了解决查询延时问题,当时试图使用hadoop来实现交互式查询分析,但是很难满足实时分析的需要。而Druid提供了以交互方式访问数据的能力,并权衡了查询的灵活性和性能二采取了特殊的存储格式。Druid原创 2021-04-12 09:11:04 · 457 阅读 · 0 评论 -
SpringBoot-Poi-TL通过word模板生成word文件
文章目录1、技术背景2、官方网站3、引入依赖4、代码示例1、技术背景很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等用Java操作word文档,毫无疑问,当下最流行apache poi,对于poi如何操作word文档,这里不作过多介绍这里主要讲解如何通过一个制作好的word模板文件,通过数据填充,生成加工好的word文件2、官方网站http://deepoove.com/poi-tl/poi-tl(poi template langu原创 2021-04-07 10:34:52 · 670 阅读 · 0 评论 -
实战Sharding-Jdbc分库分表
一、水平分表1、搭建环境创建数据库framework_sharding_jdbc,新建course_1,course_2表;约定规则:如果添加课程id是偶数把数据添加到course_1,如果是奇数添加到course_2技术:SpringBoot 2.2.6.RELEASE + 通用Mapper(MyBatisPlus) + Sharding-Jdbc + Druid 连接池创建:SpringBoot工程2、引入依赖<?xml version="1.0" encoding="UTF-8"原创 2021-04-06 17:38:23 · 160 阅读 · 0 评论 -
Seata+Nacos+Mysql实现分布式事务
文章目录一、解决的问题二、Seata简介1、Seata 是什么?2、三大组件3、处理过程4、使用方法三、技术版本四、Seata Server安装与配置1、Windows 安装1.1、seata准备1.2、修改file.conf,registry.conf配置文件内容1.3、下载config.txt与nacos-config.sh文件1.3.1、config.txt操作流程1.3.2、nacos-config.sh操作流程1.4、数据库文件1.5、启动seata2、Docker 安装2.1、拉取镜像2.2、修原创 2021-04-04 17:52:41 · 263 阅读 · 2 评论 -
RabbitMQ实现100%可靠消息投递
文章目录RabbitMQ实现100%可靠消息投递1. **RabbitMQ介绍**2. **相关概念**3. **交换机(Exchange)**4. **案例**4.1 引入依赖&配置4.2 创建数据库4.3 下单并发送消息4.4 创建生产者4.5 创建消费者RabbitMQ实现100%可靠消息投递RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apa原创 2021-04-04 17:36:29 · 167 阅读 · 0 评论 -
JMeter安装配置及性能测试使用
文章目录一、下载1、点击Download Releases2、选择zip压缩包另存为3、解压二、安装配置1、配置环境,新建变量2、配置path变量,加入如下两个3、中文配置4、启动三、性能测试1、新建线程组2、添加取样器,HTTP请求2.1、判断请求是否成功2.1.1、在Http请求上右键,新增响应断言2.2.2、添加响应文本:"success":true(根据项目响应结果填写对应的值)2.3.3、显示结果3、添加HTTP Cookie管理器4、添加监听器(察看结果树和汇总报告)5、运行测试用例一、下载原创 2021-04-04 15:22:27 · 117 阅读 · 0 评论