![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
解决方案
文章平均质量分 57
解决方案
cyh男
这个作者很懒,什么都没留下…
展开
-
Failed to submit application_1662088449147_0004 to YARN : User sfapp cannot submit applications to q
提交MR任务,报无队列权限问题原创 2022-09-02 14:04:55 · 1714 阅读 · 1 评论 -
使用easyexcel时遇到Could not initialize class cglib.beans.BeanMap
maven依赖问题排查原创 2022-06-14 10:12:43 · 252 阅读 · 0 评论 -
Hadoop远程调试参数配置
在hadoop-env.sh下加#调试NODEMANAGERexpor YARN_NODEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=11888,server=y,suspend=y"#调试RESOURCEMANAGERexport YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"#调试M原创 2022-04-01 14:14:03 · 129 阅读 · 0 评论 -
java设置远程代理
问题配置代理后,在linux上能curl某接口但是应用代码中通过http访问却不行分析发现telnet连不上,但curl可以。因为curl走了代理,telnet不会走代理,所以java调用时会报连不上的错误。解决应用的启动参数加上代理设置java -Dhttp.proxyHost=ip -Dhttp.proxyPort=port -Dhttps.proxyHost=ip -Dhttps.proxyPort=port ...原创 2022-01-26 13:47:37 · 165 阅读 · 0 评论 -
ORA-27102: out of memory
问题背景使用Flink Oracle CDC组件<dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-oracle-cdc</artifactId> <version>2.1.0</version> </dependency>程序在运行一段原创 2022-01-18 19:02:52 · 2784 阅读 · 0 评论 -
spring aop中ms.getMethod().getAnnotation拿不到注解信息
问题场景注解如下public @interface GlobalQueueLock { String mode() default "block"; String lockName() default "globalQueueLock"; int expire() default 30;}aop pointcut如下 @Pointcut("@annotation(com.sf.annotation.GlobalQueueLock)") public void p原创 2022-01-12 13:58:14 · 1394 阅读 · 0 评论 -
Java HTTP接口返回数据乱码
问题场景使用hutool工具类发起get请求,代码如下String res = HttpUtil.get(url, Charset.forName("UTF-8"));实际返回结果没有中文,但还是显示乱码,如下问题分析结合这篇文章给的思路(关于Http请求后返回json乱码的问题),并结合源码,发现HttpUtil默认会给请求头加上Accept-Encoding: gzip, deflate设置代码如下导致hutool后续处理时,使用GZIP流解析响应结果而服务端可能并不是GZIP原创 2021-12-11 12:48:36 · 3145 阅读 · 0 评论 -
SpringBoo同时支持http和https
1.本地生成证书window打开cmd,输入keytool -genkey -alias tomcat -dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365最终在C:\Users\01393330可以发现keystore.p12文件2.项目配置1.证书复制到src/main原创 2021-11-25 11:32:26 · 156 阅读 · 0 评论 -
object alibaba is not a member of package
问题场景电脑上的scala版本为2.11.8,然后使用IDEA创建scala的maven项目。其中pom引入如下依赖 <build> <plugins> <!-- 该插件用于将Scala代码编译成class文件 --> <plugin> <groupId>net.alchim31.maven</groupId>原创 2021-10-05 20:48:36 · 1223 阅读 · 0 评论 -
Spring中Primary注解在项目中的解决方案
项目背景项目采用springboot+mybatis-plus+druid。其中druid数据源供mysql使用,信息配置在yml文件中:spring: main: allow-bean-definition-overriding: true profiles: active: dev application: name: iotp datasource: url: jdbc:mysql://${mysql.ip}:3306/idap?character原创 2021-07-28 14:32:44 · 366 阅读 · 0 评论 -
java读取远程jar的解决方案
需求背景用户将自己写的java代码打成jar包,然后在A项目的前端页面上上传,后台会将jar包通过http方式上传到B项目。现在有个需求是:A项目某业务逻辑会用到B项目的jar包,执行其中的方法并拿到方法返回结果。需求的难点在于:A项目如何远程执行B项目中jar包中的方法呢?URLClassLoader远程加载java中提供了URLClassLoader类来加载外部jar,并可以执行其中的方法,参考 记录——JAVA动态加载外部JAR,并调用方法以及卸载关闭打开的外部JAR。这篇博文介绍原创 2021-06-25 14:16:08 · 1419 阅读 · 0 评论 -
java线程池的核心线程数过少引发的血案
前置条件项目采用如下线程池 private static final ExecutorService CACHED_THREAD_POOL = new ThreadPoolExecutor(4, 40, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(1024), NAMED_THREAD_FACTORY, new AbortPolicy());其中核心线程数为4,最大线程数为40。往线程池提交任务的逻辑如下 Threa原创 2021-06-25 13:37:18 · 675 阅读 · 0 评论 -
通过HTTP方式上传文件
前言A项目的后台接收到MultipartFile类型的参数,然后需要通过B项目暴露的http接口,将该文件上传至B项目。步骤1.引入相关依赖<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.8.1</version></dependenc原创 2021-06-22 19:19:49 · 3507 阅读 · 0 评论 -
java Instant与mysql时间对不上
文章目录前置条件问题描述问题解决前置条件1.mysql时间字段字段类型为某条记录的时间为2021-05-19 14:01:342.java时间字段字段类型为Instant createTime;3.代码中jdbc连接信息spring: datasource: url: jdbc:mysql://${mysql.url}:3306/idap?characterEncoding=UTF-8&rewriteBatchedStatements=true&so原创 2021-05-19 15:32:20 · 687 阅读 · 0 评论 -
项目maven依赖冲突问题排查思路
文章目录前言问题场景问题分析1.分析异常链路,找到报错代码2.断点跟进3.对比其他正常项目4.分析依赖树,看是哪里引入了jsp-api包问题解决前言先介绍下接口字段校验的框架Java服务端接口参数校验框架——hibernate-validator使用。我们项目采用的springboot,在web依赖中已经封装了该框架,如下所以可以直接使用,无需再引入其他依赖。这里仅贴出一段在项目中用到的、和问题有关的代码,如下ValidationUtils类private static final Vali原创 2021-05-15 18:04:42 · 1527 阅读 · 0 评论 -
java子类重写父类后的泛型类型返回值
在java中,子类重写父类方法时,子类的返回值可以和父类相同,或者为父类的子类。比如abstract class Parent{ abstract Parent test();}class Son extends Parent{ @Override Son test() { return new Son(); }}而如果父类返回值包括泛型类型,那么子类重写时,如果返回值的泛型类型是父类泛型的子类,此时会报错 abstract class原创 2021-04-29 18:27:22 · 2027 阅读 · 0 评论 -
Hive远程debug步骤
1.官网下载hive启动包我用的包版本为apache-hive-2.3.8-bin.tar.gz,下载完后解压到linux指定目录。我的路径为/app/hive/apache-hive-2.3.8-bin2.官网下载hive源码包对应的版本为apache-hive-2.3.8-src.tar.gz,下载完后解压到window指定目录,...原创 2021-03-10 19:53:19 · 1356 阅读 · 0 评论 -
java的appendReplacement方法去除反斜杠
问题场景项目中维护的一个字符串常量的内容为(\\d{2}:\\d{2}:\\d{2}.\\d{3})在业务逻辑中使用Matcher类的appendReplacement方法,将该常量写入StringBuffer中String str = "(\\d{2}:\\d{2}:\\d{2}.\\d{3})"StringBuffer sb = new StringBuffer();Matcher m = r.matcher(moduleFileContent);//moduleFileContent为另原创 2021-04-08 18:18:03 · 1457 阅读 · 0 评论 -
项目中多线程修改同一引用引发的线程安全问题
问题描述项目中存在如下伪代码:其中customThreadPool变量是项目自定义的线程池,fileBeatInstanceDTO变量是线程池外部创建的一个对象。最后issueOperator.operateWhenFirstDeploy方法接收fileBeatInstanceDTO参数。FileBeatInstanceDTO fileBeatInstanceDTO = new FileBeatInstanceDTO(); ...... ...... //赋值 fileBeatInstanc原创 2021-03-30 17:25:31 · 279 阅读 · 0 评论 -
JAVA责任链设计模式在项目中的体现
项目需求项目包含如下业务逻辑1.前端界面点击“新增采集”按钮,进入后台逻辑。2.后台开始部署FileBeat实例的逻辑。部署过程包含下发、安装、启动、更新配置等操作,每个操作都是一次http接口调用。只有当前一个操作完成后,才能进行下一个操作,否则操作中断。传统设计由于“只有当前一个操作完成后,才能进行下一个操作,否则操作中断”,所以我们定义一个接口方法,方法使用如下伪代码结构:每个操作都用try-catch包裹public void deploy(FileBeatInstanceDTO fil原创 2021-03-27 17:07:24 · 99 阅读 · 0 评论 -
kafka主题总消息大小和每条消息大小的计算方式
1.总消息大小假设主题名为monitor_data_to_hbase,共3个分区,分别分布在3个brokers上,都只有1个副本。monitor_data_to_hbase_0分布在broker1,monitor_data_to_hbase_1分布在broker2,monitor_data_to_hbase_2分布在broker3。进入monitor_data_to_hbase_0目录,执行du -shc *.log可以看到输出的总大小为依次类推,再分别计算1、2号分区的大小,最后相加。原创 2021-03-09 10:45:46 · 2728 阅读 · 0 评论 -
springmvc使用拦截器跳转至不同页面
前言在前后端未分离的传统web项目中,当前端访问后台时,后台controller会跳转至指定页面。假如现在需要根据页面选择的不同语言,让后台跳转至不同页面。传统做法是写不同的controller,每个controller对应一个语言的页面。其实,我们可以只写一个controller,然后再通过拦截器对页面进行修改。代码1.controller代码返回ok.jsp页面@RequestMapping("/ok")public String queryUser(@RequestParam(requ原创 2021-03-07 16:01:38 · 1266 阅读 · 1 评论 -
kafka的producer执行卡住的问题
前言在我前面写的一篇文章中(线上cpu过高的排查思路),提到了网关项目由于抗不住大量数据导致疯狂GC的问题。在解决这个问题之后,我在项目调用下游系统逻辑后加了一段逻辑————往自己搭建的kafka发送数据问题刚开始启动的时候,通过日志发现数据能发送kafka,过了一段时间后,日志没有再打印了。而且每次重新启动都是这个现象。原以为是外部没有再发送监控数据,所以kafka也不会收到。但是奇怪的是,为什么只有在刚启动那段时间才发送后面,就不发送了?断点分析通过打远程断点发现,刚开始启动那会,断点原创 2021-03-06 12:57:54 · 647 阅读 · 0 评论 -
传统springmvc同时使用jsp和freemarker出现的无法访问页面的问题
项目介绍项目不是前后端分离,使用的springmvc架构。其中配置类如下,我们同时配置jsp和freeMarker两种静态页面@Configuration@EnableWebMvcpublic class AppConfig implements WebMvcConfigurer { @Bean public FreeMarkerConfigurer freeMarkerConfigurer() { FreeMarkerConfigurer freeMarkerC原创 2021-02-27 21:16:43 · 434 阅读 · 3 评论 -
rabbitmq批量确认结合qos导致的消费者假死和消息丢失问题
代码项目使用的是springboot整合rabbitmq。其中消费者代码如下,用的是手动批量确认模式@Slf4j@Componentpublic class MessageListener { @RabbitListener(queues = "jack.queue") public void process(@Payload String message, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag, Channel ch原创 2021-02-01 21:47:50 · 1309 阅读 · 0 评论 -
zk分布式锁解决方案
普通版一、思路加锁时,在指定路径创建临时节点(临时节点避免死锁),于是只有一个线程能创建成功;等待时,其他创建节点失败的线程,会watch指定路径的删除事件,一旦事件触发,说明临时节点被删除,线程可以继续去获取锁;解锁时,当前线程删除它创建的节点二、ZookeeperDistrbuteLock类代码public class ZookeeperDistrbuteLock { // zk连接地址 private static final String CONNECTSTRING =原创 2021-02-01 21:44:13 · 327 阅读 · 0 评论 -
将无Component注解的类加入spring容器
需求背景旧项目没有用spring,现在想将项目的类交给spring管理。但是如果每个类都加@Component比较麻烦,希望能在不加Component情况下,也能将类交给spring管理。比如如下路径的类实战1.定义注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface MyAnnotation { String value();}2.增加配置类,并使用该注解注解的值表示原创 2021-02-01 21:42:10 · 1287 阅读 · 0 评论 -
使用InheritableThreadLocal解决子线程不会与主线程共享请求的问题
参考博文 传送门问题场景采用ForkJoin处理子任务时,任务里方法的参数要传HttpServletRequest,我是把外层的request传进去,结果报No thread-bound request found: Are you referring to request attributes outside of an actual web re问题分析开启子线程后,子线程不会与主线程共享请求解决方法ServletRequestAttributes servletRequestAttrib原创 2021-02-01 21:41:24 · 602 阅读 · 0 评论 -
JAVA WEB项目中的功能权限和数据权限设计
功能权限1.介绍每个controller接口,对应权限表一条记录。项目启动时,通过springmvc提供的类,可以获取到有权限注解的方法,从而构造权限对象,插入数据库。2.代码接口注解权限初始化类@Component@Slf4jpublic class FunInitConfig implements CommandLineRunner { @Autowired private BdpFuncMapper bdpFuncMapper; @Autowired原创 2021-02-01 21:40:58 · 3896 阅读 · 0 评论 -
springmvc方法传父类型参数,无法映射到子类型
需求描述现有类型BaseCollectModelDTO,CommonCollectModelDTO、PluginCollectModelDTO、CustomCollectModelDTO是BaseCollectModelDTO的子类,于是我想直接将controller方法参数定义为BaseCollectModelDTO类(当然使用了@RequestBody注解),当需要传子类型的参数时,直接通过这个controller方法搞定,不需要再去写其他方法。 @RequestMapping(value = "原创 2021-02-01 21:40:28 · 2487 阅读 · 0 评论 -
JAVA门面和模板设计模式在项目中的体现
项目需求业务包含三种指标采集模型:公共采集模型、插件采集模型、自主上报模型。在数据结构方面,有同一个特点:包含指标字段、模型token、模型名称、标签等信息。其他信息则随着模型不同而不同。在后台实现方面,也存在相同之处:都包含增删改查等方法,且每个方法存在通用代码。设计模式的体现1.设计过程- 数据结构设计考虑到三种模型数据结构存在相同之处,于是后台定义一个父类,包含公共属性,三个子类继承父类,再扩展私有的属性。数据结构如下:- controller层设计常规做法是:针对每个模型分别写自原创 2021-02-01 21:40:16 · 541 阅读 · 0 评论 -
项目整合atomikos数据源
整合背景公司用的是springboot项目,使用的是druid数据源。后台大部分业务逻辑都会同时操作多个数据源,而原生spring的事务不支持多数据源场景,因此咱们在业务逻辑里都是通过手动的方式控制事务。比如insert插入数据抛出异常了,那么在catch中再delete。这种做法虽然满足了“事务回滚”需求,但是需要编写额外的代码;同时,粗心时难免会漏写,导致实际业务没有回滚。所以,咱们需要一个能支持多数据源场景下的事务回滚框架,做到类似spring事务那样无侵入。代码和配置咱们先看看,目前项目中原创 2021-01-26 16:09:43 · 285 阅读 · 0 评论 -
分布式缓存和本地缓存的一致性在项目中的解决方案
业务逻辑1.放入缓存A项目修改或者创建采集模型时,通过http接口调用B项目,B项目将信息放入redis,同时放入本地map缓存。缓存的key为模型的token,value为模型的所有采集字段代码如下private ConcurrentHashMap<String, Map<String,String>> tokenAndColumns = new ConcurrentHashMap()<>;............ public static Re原创 2021-01-28 17:29:58 · 2433 阅读 · 2 评论 -
spring自定义Environment中的属性值
需求背景在springboot项目中,我们可以在properties文件里配置各种属性,然后在代码里通过@Value方式获取属性值。比如properties定义user.ids=XXXXX代码中使用 @Value("${user.ids}") private String userIds;这种方式的特点是,除非重启项目,否则通过@Value方式获取的值在项目启动过程中就确定了。但现在有个需求是:在项目运行过程中改变属性的值,不能重启项目。现在我们来实现这个功能。代码1.自定义Pro原创 2021-02-01 21:34:49 · 2453 阅读 · 0 评论