一、解决URL存在特殊符号|{}?&、URL中包含%2F、URL中包含%5C

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@Slf4j
public class RfcConfig {@Beanpublic void setRfc(){// 指定jre系统属性,允许特殊符号, 如{} 做入参,其他符号按需添加。见 tomcat的HttpParser源码 |{}?&。System.setProperty("tomcat.util.http.parser.HttpParser.requestTargetAllow", "|{}");// 这个是解决URL中包含%2F的问题System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");// 这个是解决URL中包含%5C的问题System.setProperty("org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH", "true");}
}
    @Beanpublic ServletWebServerFactory servletContainer() {TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();//升级tomcat8.5.5或者更高版本get请求的特殊字符如{}[]|等就会被拦截导致前端参数无法传入到后台,提示400参数错误tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "|{}[]"));return tomcat;}

二、异步线程池配置

import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;/*** 异步线程池配置*/
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer{@Overridepublic Executor getAsyncExecutor() {// 线程池ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//线程池核心线程数,控制每次开启子线程数量taskExecutor.setCorePoolSize(5);//线程池维护线程的最大数量taskExecutor.setMaxPoolSize(10);//线程池所使用的缓冲队列taskExecutor.setQueueCapacity(25);//线程池维护线程所允许的空闲时间taskExecutor.setKeepAliveSeconds(30000);// 配置线程池中的线程的名称前缀 方便排查taskExecutor.setThreadNamePrefix("Async-Thread-");//CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行//设置拒绝策略:当pool已经达到max size的时候,使用预定义的异常处理类taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//执行初始化taskExecutor.initialize();return taskExecutor;}@Overridepublic AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {return null;}}

三、动态加载lib下所有jar包的方法

import org.springframework.util.ResourceUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;/*** 动态加载lib下所有jar包的方法*/
public class JarUtils {public static String getApplicationFolder() {String path = JarUtils.class.getProtectionDomain().getCodeSource().getLocation().getPath();return new File(path).getParent();}public static InputStream getInputStream() throws FileNotFoundException {//读取resources下面的lib文件夹的文件File file = ResourceUtils.getFile("classpath:lib/");return new FileInputStream(file);}public static void loadJarsFromAppFolder() throws Exception {String path = "./lib";File file = new File(path);if (file.isDirectory()) {for (File subj : file.listFiles()) {if (subj.isFile()) {loadJarFile(subj);}}} else {loadJarFile(file);}}public static void loadJarFile(File path) throws Exception {URL url = path.toURI().toURL();// 可以获取到AppClassLoader,可以提到前面,不用每次都获取一次URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();// 加载Method method = URLClassLoader.class.getDeclaredMethod("URL", URL.class);method.setAccessible(true);method.invoke(classLoader, url);}
}

四、Spring Cloud、Dubbo、HSF

Spring Cloud

Spring Cloud 提供了简化应用开发的一系列标准和规范。这些标准和规范包含了服务发现、负载均衡、熔断、配置管理、消息事件驱动、消息总线等,同时 Spring Cloud 还在这些规范的基础上,提供了服务网关、全链路跟踪、安全、分布式任务调度和分布式任务协调的实现。

目前业界比较流行的 Spring Cloud 具体实现有 Spring Cloud Netflix、Spring Cloud Consul、Spring Cloud Gateway、Spring Cloud Sleuth 等,最近由阿里巴巴中间件开源的 Spring Cloud Alibaba 也是业界中受关注度很高的另一种实现。

Dubbo


提供者在启动时,在注册中心注册服务。
消费者在启动时,在注册中心订阅所需的服务。
注册中心返回提供者地址列表给消费者。如果提供者发生变更,注册中心将推送变更数据给消费者。
消费者基于软负载均衡算法,从提供者地址列表中选一个提供者进行调用。

HSF


高速服务框架HSF (High-speed Service Framework),是在阿里巴巴广泛使用的分布式RPC服务框架。
HSF作为一个纯客户端架构的RPC框架,HSF没有服务端集群,所有HSF服务调用均是通过服务消费方(Consumer)与服务提供方(Provider)点对点进行。为了实现整套分布式服务体系,HSF还需要依赖以下外部系统。
应用开发方式:
Ali-Tomcat: 依赖Ali-Tomcat和Pandora,提供了完整的HSF功能,包括服务注册与发现、隐式传参、异步调用、泛化调用和调用链路Filter扩展。应用程序须以WAR包方式部署。
Pandora Boot:依赖Pandora,提供了比较完整的HSF功能,包括服务注册与发现、异步调用。应用程序编译为可运行的JAR包并部署即可。
参考:https://www.alibabacloud.com/help/zh/doc-detail/100087.htm

解决URL存在特殊符号、异步线程池配置、动态加载lib下所有jar包相关推荐

  1. 解决maven打包 无法加载本地lib/下的jar包问题(程序包XXX不存在)

    在进行抖音支付时,引用了tt_pay-1.0.5.jar,在maven打包时,报XXX不存在 一.目录结构 二.解决方法 <build><finalName>xiaoya-ap ...

  2. Spring Boot系列二 Spring @Async异步线程池用法总结

    转载 自 https://blog.csdn.net/hry2015/article/details/67640534 1. TaskExecutor Spring异步线程池的接口类,其实质是java ...

  3. vue 动态加载图片路径报错解决方法

    vue 动态加载图片路径报错解决方法 参考文章: (1)vue 动态加载图片路径报错解决方法 (2)https://www.cnblogs.com/qingcui277/p/8930507.html ...

  4. java异步线程池同时请求多个接口数据

    java异步线程池同时请求多个接口数据 一.适合的使用场景 复杂的网页爬虫,如要同时请求多个不同网页的数据,并且需要执行不同的数据处理,这个是非常合适的,执行线程传递的参数到最后callback是会附 ...

  5. java线程 同步与异步 线程池

    1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理.显然这是由于全局资源造成的,有时为了解 决此问题,优先考虑 ...

  6. 复盘Spring中定时任务和异步线程池

    ​ 项目中最近使用了多个定时任务处理业务需求,于是在实现业务逻辑过程中,产生了上图一些思考和疑问,现在利用空余时间进行一次复盘. 项目搭建 项目搭建环境:JDK1.8+SpringBoot 主启动类: ...

  7. 复盘SpringBoot中定时任务和异步线程池

    作者:溪~源 blog.csdn.net/xuan_lu/article/details/110568508 项目中最近使用了多个定时任务处理业务需求,于是在实现业务逻辑过程中,产生了上图一些思考和疑 ...

  8. springboot使用异步线程池执行自定义任务实例

    文章目录 1.介绍 配置类 业务层 控制层 1.介绍 在Spring中存在一个AsyncConfigurer接口,它是一个可以配置异步线程池的接口,因此只需要Java配置文件,实现AsyncConfi ...

  9. SpringBoot中异步线程池AsynConfigurer配置

    目录​​​​​​​ 什么是AsynConfigurer 为什么需要AsynConfigurer 怎么配置AsynConfigurer 注意事项 统一异常捕获 其他相关类 AsyncExecutionI ...

最新文章

  1. Android一个完整的项目转成SDK提供给第三方嵌入
  2. android 模拟器识别,一种基于符号的识别Android应用运行在模拟器中的方法与流程...
  3. Linux学习之系统编程篇:ps 和 kill 命令以及父子进程间数据共享模式
  4. 分布式文件系统研究-什么是分布式文件系统
  5. 020303阶段三 I/O复用 select和epoll的文件描述符管理
  6. Spring 4.1和Java 8:java.util.Optional
  7. ffmpeg命令_使用ffmpeg命令为多个短视频修改视频备注说明
  8. IIS7配置PHP 报错 对找不到的文件启用文件监视
  9. 关于VS2005智能设备中无法找到PInvoke DLL问题
  10. 关于InnoDB索引长度限制的tips
  11. 计算机系统驱动级变速软件,驱动精灵
  12. yb3防爆电机型号含义_YB3防爆电机和YBX3防爆电机的区别
  13. 软件显示服务器端没有启动,打开软件显示无连接服务器,双击服务器显示如图...
  14. Poi-tl通过word模板生成文件页眉页脚冲突问题
  15. 中美日印程序员收入对比
  16. 解决跳转ICP备案网页报400的问题
  17. 博途v15模拟量转换_浅谈西门子S7-1200PLC的模拟量转换,附实例演示
  18. Microsoft Office 2013 word MathType 报错 (MathPage.wll)
  19. 如何制作表格(一)——TableLayout
  20. 在Java代码中设置布局/控件

热门文章

  1. html 文字段后间距,css怎么设置段前段后的距离?
  2. 【微服务~原始真解】Spring Cloud —— 什么是负载均衡?
  3. 使用Docker实现容器化(一)——Docker基础的介绍与应用
  4. 从金蝶云星空到旺店通·企业奇门通过接口配置打通数据
  5. java将汉字转成拼音首字母大写字母_java 根据汉字生成拼音全拼或拼音首字母的示例...
  6. 安卓手机文件管理的照片删了怎么找回的轻松恢复方法
  7. 解决windows10网络适配器出现问题
  8. imessage_为什么某些iMessage显示为电子邮件而不是电话号码?
  9. 话费充值api接口--专业、稳定的技术对接
  10. wow达拉然发礼物机器人_魔兽世界:新旧达拉然隐藏的玩具,其中有2个点击就送...