![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 57
开 端
所有的知识、你能吸收多少,更取决于自己,自律性!(好比一座山,能搬有多少看自己的努力)
展开
-
注解的属性进行加密处理,并且只对 Controller 返回的对象
如果处理的对象中有循环引用或深层嵌套结构,上述代码中的循环检测机制(visited 集合)会有效防止 StackOverflowError。修改 @AfterReturning 的切面只处理带有 @EncryptAttribute 注解的 Controller 返回对象。在 processFields 方法中只处理带有 @EncryptAttribute 注解的字段。只处理带有 @EncryptAttribute 注解的字段。在方法返回时,对返回的对象进行处理。原创 2024-07-18 14:17:27 · 164 阅读 · 0 评论 -
使用Java方法:用于向文件批量添加水印和密码完整版
请注意,代码中的一些变量(例如 watermark、ImgUtil)在这里没有定义,您需要根据您的实际情况进行替换。请注意,代码中的一些变量(例如 fileUrl、dto)在这里没有定义,您需要根据您的实际情况进行替换。在 invoke 方法内部,它从表示一行数据的 Map 中提取值,并将其添加到 data 列表中。在循环中,它逐个读取每个 sheet 的数据,并将其添加到 fileDatas 列表中。首先,它接受一个 fileAddress 参数,表示文件的地址。原创 2024-07-19 09:38:26 · 349 阅读 · 0 评论 -
数据切分的设计方案
文章目录1. 数据的切分实现方式1.1. 垂直切分1.2. 水平拆分1.3. 整体方案总结2. MyCat的整体分析2.1. MyCat的内部逻辑2.2. MyCat实现数据分库分表3. MyCat安装应用4. MyCat分库分表配置4.1. server.xml4.2. schema.xml4.3. schema相关操作5. MyCat的分片规则5.1. 枚举分片5.2. 取模分片5.3. 创建一个时间分片规则5.4. MyCat全局表的概念5.5. MyCat子表管理6. MyCat安全机制6.1. 用原创 2022-01-20 13:43:38 · 2338 阅读 · 0 评论 -
数据架构设计实现(3)-数据库高阶应用
文章目录1.1. 数据库永远是系统最脆弱的环节1.2. 数据库的HA实现的方式1.2.1. 高可以计算方式1.2.2. 数据库高可用的三种方式1.2.3. 主从实现的逻辑1.3. 配置主从复制# 1. MySQL主从复制实现高可用1.1. 数据库永远是系统最脆弱的环节80%都是查询缓存来保护数据库:Redis、ElasticSearch数据库系统要有一定的容灾能力数据状态化明显1.2. 数据库的HA实现的方式1.2.1. 高可以计算方式MTTF:平均无故障时间M原创 2022-01-19 16:59:18 · 97 阅读 · 0 评论 -
分布式限流设计
文章目录1. 分布式限流概述2. 分布式限流的几种纬度2.1. QPS和连接数控制2.2. 传输速率2.3. 黑白名单2.4. 分布式环境3. 分布式限流的主流方案3.1. 客户端限流3.2. 网关层限流3.3. 中间件限流3.4. 限流组件4. 限流方案常用的算法分析4.1. 令牌桶算法4.1.1. 令牌生成4.1.2. 令牌获取4.2. 漏桶算法4.3. 漏桶vs令牌桶的区别4.4. 滑动窗口和计数器5. 使用Guava RateLimiter实现客户端限流5.1. 非阻塞式限流5.2. 阻塞式限流6.原创 2022-01-14 11:07:56 · 926 阅读 · 0 评论 -
系统安全相关知识学习
系统安全相关知识学习1. 系统安全是什么一般人只有当系统被侵入之后才会意识到网络安全非常重要,往往看到问题的时候都只是表面现象,是否能够找到根本原因并进行修复,才是安全投入的关键安全的本质就是保护数据被合法地使用,怎么才叫做被合法的使用呢?我们可以从机密性、完整性、可用性这三个方面具体来看,这三个方面也是安全领域最为基础的3个安全原则安全原则:机密性、完整性、可用性,我们可以简称为CIA三元组,是安全的基本原则1.1. 机密性机密性用一句话来说就是,确保数据只被授权的主体访问,不被任何为授权的原创 2022-01-06 08:00:00 · 5164 阅读 · 0 评论 -
SpringCloud服务网关快速落地实战
目录服务网关在微服务中的应用对外服务的难题文章目录服务网关在微服务中的应用前言一、服务网关在微服务中的应用1. 对外服务的难题2.访问控制3. 路由规则二、第二代网关Gateway1.Gateway的标签2.Gateway可以做什么三、Gateway快速落地实施体验四、路由功能详解1.路由组成结构2.负载均衡3.路由的工作流程五、断言功能详解1.Predicate机制2.断言的作用阶段3.常用断言介绍4.路径断言5.Method断言6.RequestParam匹配6.Header断言7. Coo原创 2022-01-04 07:45:00 · 126 阅读 · 0 评论 -
Gateway过滤器原理和生命周期
1. 过滤器原理和生命周期所有的开源框架实现过滤器的模式都是大同小异的,通过一种类似职责链的方式,传统的职责链模式中的事件会传递指直到有一个处理对象接手,而过滤器和传统的职责链有点不同,所有过滤器都要进行过滤和处理,一路走到底,直到被最后一个过滤器处理1.1. 过滤器的实现方式在Gateway中实现一个过滤器非常简单,只要实现GatewayFilter接口的默认方法就好了public Mono<Void> filter(ServerWebExchange exchange, Gatewa原创 2022-01-01 08:00:00 · 582 阅读 · 0 评论 -
Gateway断言功能详解
1. Predicate机制Predicate是Java8中引入的一个新功能,和我们平时写单元测试的时候Assertion差不多,Predicate是接收一个判断条件,返回一个ture或false的布尔值结果,告知调用发判断结果。也可以通过and、or和negative(非)三个操作符多个Predicate串联在一块共同判断Predicate其实就是我们和Gateway对接的数据暗号,比如要求你的Request中必须带有某个指定的参数叫name,对应的值必须是一个指定的人名(Gavin),如果Reque原创 2021-12-31 08:36:02 · 5878 阅读 · 1 评论 -
Gateway路由功能详解
1. 路由组成结构Gateway中可以定义很多个Route,一个Route就是一套包含完整转发规则的路由,主要有三部分组成断言集合:断言是路由器处理的第一个环节,他是路由的匹配规则,他决定了一个网络请求是否可以匹配给当前路径来处理,之所以他是一个集合是因为我们可以个一个路由添加多个断言,当每个断言都配置成功了才算是过了路由这一关过滤器集合:如果请求通过了前面断言的匹配,表明被路由正式接手了,结下就需要经过过滤器了,比如说权限验证,如果验证不通过就设置为Status Code为403并中断操作UR原创 2021-12-29 08:56:05 · 3419 阅读 · 1 评论 -
Gateway快速落地实施体验
创建gateway项目连接Eureka基于服务发现自动创建路由规则通过Actuator实现动态路由功能创建项目并加入POM依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</arti.原创 2021-12-30 08:00:00 · 168 阅读 · 0 评论 -
SpringCloud服务网关
1. 对外服务的难题微服务架构的应用系统的体系非常庞大的,光是需要独立部署的基础组件就有注册中心、配置中心和服务总线、Turbine异常聚合和监控大盘、调用链追踪和链路聚合,还用kafka和MQ之类的消息中间件,加上按照业务域拆分的微服务组件和模块,一个小的系统非常轻松的就能弄出20多个module,会有这么多的部署包。我们前面都是采用localhost加端口的方式直接访问,如果这些服务一并都要提供给外部用户访问那该怎么处理?开发在各个页面给不同的请求配置URL和端口号,但是一大堆的URL在我们的前端进原创 2021-12-29 08:00:00 · 194 阅读 · 0 评论 -
Failed to introspect Class [org.springframework.cloud.gateway.config.GatewayAutoConfiguration$NettyC
今天碰到一个版本的问题,搭建gateway、idea运行。maven工程来的。起初运行一直卡在这,无法进入SpringBoot启动的界面java.lang.IllegalStateException: Error processing condition on org.springframework.cloud.gateway.config.GatewayAutoConfiguration.propertiesRouteDefinitionLocator at org.springframework.原创 2021-12-27 12:00:30 · 3832 阅读 · 0 评论 -
什么是线程安全
一个无状态Select@NotThreadSafepublic class StatelessFactoreizer implements Servlet { private Long count = 0L; public Long getCount() { return count; } @Override public void service(ServletRequest servletRequest, ServletResponse s原创 2021-12-17 14:36:44 · 195 阅读 · 0 评论 -
DatagramChannel 数据传输
在java中使用UDP传输数据比TCP更加简单。和socket的TCP不同,UDP不是面向连接的协议。使用UDP时,只要知道服务器IP和端口就可以直接向对方发送数据。在java中使用DatagramChannel来处理UDP的数据传输。public class UDPClient { public static void main(String[] args) { new UDPClient().send(); } @SneakyThrows public原创 2021-12-08 10:44:43 · 604 阅读 · 0 评论 -
FileChannel 文件通道
FileChannel是专门操作文件通道,通过FileChannel,即可以从一个文件读取数据,也可以将数据写入文件中。 FileChannel为阻塞模式,不能设置为非阻塞模式FileChannel文成文件复制的实战案例。具体的功能使用FileChannel将原文件 复制一份,把原文件的数据都复制到目标文件中: /** * NIO FileChannel 复制文件 * * @param srcPath * @param destPath */原创 2021-12-07 15:02:24 · 351 阅读 · 0 评论 -
Orcale函数Regexp_like
给大家在工作中碰到的一些问题:不区分大小写查询方法:SQL以实践:success批量插入 Insert into 方法:SQL以实践:success希望给大家在工作带欣赏与快乐!原创 2021-12-01 10:57:38 · 81 阅读 · 0 评论 -
Spring AOP 概念
连接点(join point):对应的是具体被拦截的对象,因为spring只能支持方法,所以被拦截的对象往往就是指特定的方法,例如我们提到UserServiceImpl 的 printUser方法就是一个连接点,AOP将通过动态代理几十把它织入对应的流程中。切点(point cut):有时候,我们的切面不单单应用于单个方法,也可能是多个类的不同方法,这时...原创 2021-11-22 10:13:34 · 486 阅读 · 0 评论 -
Spring Boot 开发自己的拦截器
/** * -- Created with IntelliJ IDEA. * -- @REMARK: * -- @Author: tanwei * -- @Date: 2021/11/16/1:31 下午 * -- @Description: */public interface HelloService { public void sayHello(String name);}/** * -- Created with IntelliJ IDEA. * -- @REMARK:原创 2021-11-16 17:13:11 · 384 阅读 · 0 评论 -
Spring 初始化 生命周期
生命周期我们在项目使用过程中很常见的要求。为了解决这些问题,我们有必要了解Spring IoC初始化和销毁Bean的过程,这便是Bean的生命周期的过程,它大致分为Bean定义、Bean初始化、Bean的生存期和Bean的销毁4个部分。 Spring 通过我们的配置,如@ComponentScan定义的扫描路径去找到带有@Componet的类,这个过程就是一个资源定位的过程。 一旦找到了资源,那么它就开始解析,并且将定义的信息保存起来。注意,此时还没有初始化Bean,也就没有Bean的实例,它的仅仅是原创 2021-11-14 09:26:36 · 261 阅读 · 0 评论 -
SpringBootJPA 原生《upate、select 》sql写法
@Resource EntityManager entityManager; @Transactional @Override public Long addRemark(AddRemarkDTO req) { RemarkInfoPO remarkInfoPO = new RemarkInfoPO(); DCBeanUtils.copy(req, remarkInfoPO); RemarkInfoPO po = re...原创 2021-04-28 15:50:21 · 213 阅读 · 0 评论 -
SpringBootJpa 实现多条件复杂查询and (xx ord xx)
首先定义一个接口继承JpaRepository 和JpaSpecificationExecutor。package com.yaoyanshe.crf.dao;import com.yaoyanshe.crf.model.CrfMo;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.JpaSpecificationExecutor;原创 2021-03-30 16:54:18 · 607 阅读 · 4 评论 -
SptringBootJPA的save方法更新忽略没有赋值的属性
import org.springframework.beans.BeanUtils;import org.springframework.beans.BeanWrapper;import org.springframework.beans.BeanWrapperImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.jpa.repository.supp..原创 2021-03-16 11:33:00 · 282 阅读 · 0 评论 -
Spring源码分析
1、核心基础1(常规),2(部分内部原理),3(专业训练)1(spring.xml) 2(注解)1、核心注解注解作用备注@Bean容器中注册组件@Primary同类组件如果有多个,标注主组件@DependsOn组件之间声明依赖关系@Lazy组件懒加载(最后使用的时候才创建)@Scope声明组件的作用范围(SCOPE_PROTOTYPE,SCOPE_SINGLETON,)@Primary同类组件如果有多个,标注主组件@原创 2021-03-08 11:17:47 · 96 阅读 · 0 评论 -
SpringCloud服务网关
1.1. 对外服务的难题微服务架构的应用系统的体系非常庞大的,光是需要独立部署的基础组件就有注册中心、配置中心和服务总线、Turbine异常聚合和监控大盘、调用链追踪和链路聚合,还用kafka和MQ之类的消息中间件,加上按照业务域拆分的微服务组件和模块,一个小的系统非常轻松的就能弄出20多个module,会有这么多的部署包。我们前面都是采用localhost加端口的方式直接访问,如果这些服务一并都要提供给外部用户访问那该怎么处理?开发在各个页面给不同的请求配置URL和端口号,但是一大堆的URL在我们的前原创 2021-02-23 15:35:32 · 381 阅读 · 0 评论 -
Spring Boot 自定义Controller切面日记拦截
@Retention(RetentionPolicy.RUNTIME)//注解会在class中存在,运行时可通过反射获取@Target(ElementType.METHOD)//目标是方法@Documented//文档生成时,该注解将被包含在javadoc中,可去掉public @interface Logger { /** * 模块名字 */ String name() default ""; /** *方法 */ Stri原创 2021-01-25 14:28:55 · 530 阅读 · 0 评论 -
controller拦截请求报文统一输出报文
package com.yaoyanshe.masterdata.framework.filter;import com.alibaba.fastjson.JSONObject;import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import原创 2020-12-21 13:29:06 · 304 阅读 · 0 评论 -
集合分割算法
```javapackage com.example.springsouress.com.utils;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;/** * -- Created by IntelliJ IDEA. * -- REMARK: * -- User: jerry * -- Date: 2.原创 2020-12-10 14:33:52 · 297 阅读 · 0 评论 -
比较同对象属性值、取出不同属性
public static <T> Object compare(T obj1, T Obj2) throws Exception { HospitalBaseInfo unOfficialDto = new HospitalBaseInfo(); Field[] fs = obj1.getClass().getDeclaredFields(); Field[] fields = Obj2.getClass().getDeclaredFields(); Field原创 2020-12-04 18:38:59 · 314 阅读 · 0 评论 -
分页多线程执行ThreadPoolTaskExecutor
public class ScheduleConfig implements SchedulingConfigurer { @Bean(name = "initTaskExecutor") public ThreadPoolTaskExecutor initTaskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(原创 2020-12-03 13:26:24 · 312 阅读 · 0 评论 -
DateUtil封装高效实践
public class DateUtil { private DateUtil() { } public static final String yyyyMMdd = "yyyyMMdd"; /** * 英文简写(默认)如:2010-12-01 */ public static final String FORMAT_SHORT = "yyyy-MM-dd"; /** * 英文全称 如:2010-12-01 23:15:原创 2020-11-20 17:17:48 · 121 阅读 · 0 评论 -
StringUtils封装重复利用
public class StringUtils { private static final AtomicInteger incUnique = new AtomicInteger(); private StringUtils() { } public static String nameMask(final String name) { if (isBlank(name)) { return name;原创 2020-11-20 17:16:24 · 228 阅读 · 0 评论 -
XxJobConfig调度任务配置
@Slf4j@Data@Configuration@ComponentScan(basePackages = "cn.edc.wechat.edcwechatpublic.config")public class XxlJobConfig { @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.executor.appname}") priva原创 2020-11-20 17:03:48 · 983 阅读 · 0 评论 -
微信公众号开发者模式
@ApiOperation(value = "验证") @RequestMapping(value = "/verify_wx_token") public void verifyWXToken(HttpServletRequest request, HttpServletResponse response) throws Exception { coreServlet.doGet(request, response); coreServlet.doP...原创 2020-11-20 17:01:56 · 119 阅读 · 0 评论 -
钉钉自定义关键字实现
DingTalkClient client = new DefaultDingTalkClient(didiUrl); OapiRobotSendRequest request = new OapiRobotSendRequest(); request.setMsgtype("text"); OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); tex...原创 2020-11-20 16:52:47 · 542 阅读 · 0 评论 -
mvn install 配置文件自动切换命令
mvn clean package -Pdev<build> <!-- 包名 --> <finalName>SE-Monitor-Svc-web</finalName> <extensions> <extension> <groupId>org.apache.maven.archetype</groupId&g原创 2020-11-20 16:49:32 · 307 阅读 · 0 评论 -
elasticsearch配置注入索引
@Data@AllArgsConstructor@NoArgsConstructor@Document(indexName = “#{appConfig.trial}”, type = “trialData”)public class EsTrialData {@IdString id;@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")Date updateTime;}@Data@Configuration原创 2020-11-20 16:45:56 · 304 阅读 · 0 评论 -
分布式事务
分布式事务在传统的数据操作中,数据库本身就是提供了ACID的相关特性操作,但是由于业务数据增大数据眼里导致我们不是得不将数据分到多个表中,如果还在一个库里还可以使用CID原则,只要两个分在不同的数据库上ACID原则不能实现,数据就会出现不一致。特性:原子性、一致性、隔离性、持久性要掌握分布式需要了了解一下的概念CAP原理ACID原理与BASE原理基于XA协议的两个阶段提交:在实际应用中因为提交过程比较复杂、如果提交中出现失败就会导致数据挂起状态书屋补偿机制 理解起来非常简单,实现比较复杂原创 2020-07-29 06:44:29 · 91 阅读 · 0 评论 -
使用Nacos作为注册/配置中心
一个更易于构建云原生的动态服务发现、配置管理、服务管理平台 Naming&Configuration&service = Nacos功能: 动态的服务配置 服务发现和管理 动态的DNS服务SpringCloud Neffix全家桶如何对比 相当于:Eureka_confing+Bus(Nacos)https://github.com/alibaba/nacos/tags2. 安装Tar -zxvf单机模式启动./startup.sh -m standal.原创 2020-07-10 17:54:41 · 723 阅读 · 0 评论 -
GC详解
分代收集算法Yuans: GC频繁区域old:GC次数少Perm代:不会生产GCGC四大算法一、引用计数法: 计算器维护麻烦、 循环引用无法处理二、复制算法:每次存回的对象,都会被从form区和enden区等复制到to区Form和to会放生一次交换;优点:没有标记和清除算法过程!效率高!没有内存碎片缺点: 需要浪费双倍的空间Eden区,对象存活效率极低! 推荐使用复制算法。三、标记清除算法老年代推荐使用优点:不需要额外空间!缺点:两次扫描,耗时较为严重,会产生内存原创 2020-07-08 10:41:27 · 237 阅读 · 0 评论