错误异常累积(一)

工作中的错误以及解决方式记录

1、UnsatisfiedDependencyException :这是在将一个java类注入spring的时候报的错,说是创建某个bean失败,可能是创建的bean的类路径找不到。pom添加依赖很容易出问题

模块找不到程序包,需要重新去maven打包,mvn -install可以直接使用maven将找不到的程序包模块添加进来

2、ClassCastException:类型转换错误

3、数据库操作报错:无效标识符,有可能是属性和字段不匹配,比如说缺少字段

java.sql.SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句,找不到指定执行SQL语句的表等,或者SQL语句错误

4、初始异常:java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (BDC_YW_USER.SYS_HGID) 这可能是某一个字段是关联外键,不能随意插入,或者字段过大等等

其中BDC_YW_USER是数据表名,SYS_HGID是违反约束的字段

5、java.lang.NumberFormatException: For input string: "" 异常是指数字格式异常,我的是前端参数为空,所以出错

6、对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,也就是如下:

String[] array = {"1","2","3","4","5"};
        List<String> list = Arrays.asList(array);
        list.add("6");

如上操作会报异常,数组转换而成的List不能使用add添加元素。

可先将其转为ArrayList,在进行操作,如下:

String[] array = {"1","2","3","4","5"};
        List<String> list = Arrays.asList(array);
        List arrList = new ArrayList(list);
        arrList.add("6");

7、异常解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

数据连接池空闲时间设置过大,超过了mysql最大空闲时间

sprintboot:time-between-eviction-runs-millis

8、Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFWorkbook.close()V

poi版本冲突,检查maven依赖,去除不需要的版本。

9、springboot 打包jar后找不到resources下文件

应使用:ClassPathResource classPathResource = new ClassPathResource("importLpbExcel.json");

10、Apollo 2021-09-06 15:11:25.552 ERROR 360 --- [Apollo-ServiceLocator-1] c.c.f.a.p.c.AdminServiceAddressLocator : Get admin server address from meta server failed. env: DEV, meta server address:http://apolloConfig.gisquest.com:9100

apollo-env.properties 配置文件中 apolloConfig.gisquest.com 访问失败,换为ip修复。 local.meta=http://localhost:8080 dev.meta=http://ip:9100 fat.meta=http://apolloConfig.gisquest.com:9100 uat.meta=http://apolloConfig.gisquest.com:9100 lpt.meta=${lpt_meta} pro.meta=http://apolloConfig.gisquest.com:9100

11、com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.73, class org.springframework.web.multipart.MultipartFileResource, fieldName : resource

接口使用实体接收参数时,含有不可序列化的参数,可使用@JSONFailed(serialize=false)排除该属性

12、通过网关访问服务提供接口时,post参数过大返回400 bad request 错误。

远程调用 feign将post参数进行url拼接,造成请求头部过大,spring boot默认头部大小为8k。解决方式为,设置参数:server.max-http-header-size: 1048576 单位为字节(1M)。

13、Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 0, maxActive 200, creating 0, createErrorCount 7

数据库挂掉一段时间后连接池无法创建新的连接

连接池设置了关闭自动重连

//数据库服务宕机自动重连机制 dataSource.setBreakAfterAcquireFailure(true); //连接出错后重试时间间隔 dataSource.setTimeBetweenConnectErrorMillis(60000); //超时重试次数 dataSource.setConnectionErrorRetryAttempts(3);

同类型问题:

Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 100, creating 1, createElapseMillis 686180, createErrorCount 3

keepAlive 保持连接有效

14、ftp下载文件报错:Host attempting data connection ip is not same as server ip

加上这句代码可以解决:ftpClient.setRemoteVerificationEnabled(false); 这句代码的意思是:取消服务器获取自身Ip地址和提交的host进行匹配,否则当不一致时报出以上异常。

15、java.sql.SQLRecoverableException:Closed Connection

spring使用SqlSession获取数据库连接异常,Connection connection = sqlSession.getConnection();

问题出现在Oracle数据库连接上,

数据连接池创建时未配置:dataSource.setValidationQuery("select 1 from dual");

检查当前连接是否有效,无效获取新的连接

16、java.lang.StringIndexOutOfBoundsException: String index out of range: -1

substring(int start,in end) 方法报错,字符串切割的结束数字end大于字符串的长度(多数情况为字符串为空没有处理)

17、org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope

异常原因:异常捕捉手动回滚事务,没有添加注解

//手动开启事务回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

注解:@Transactional

18、nginx报错:upstream sent too big header while reading response header from upstream

请求携带的头部数据过大,配置http段:

proxy_buffer_size 128k; ​ proxy_buffers 32 32k; ​ proxy_busy_buffers_size 128k;

19、Result Maps collection does not contain value for java.lang.String

<select id="selectxxxx" parameterType="xx" resultMap="java.lang.String">

mybatis查询结果使用resultMap接收String类型报错,可怕的是,会影响整个项目的数据库查询报错

20、java.lang.IllegalArgumentException: invalid comparison: java.sql.Timestamp and java.lang.String

mybatis传入的日期类型参数被当作String做对比异常 item.jgsj !=''

21、ERROR: could not load library "/usr/local/pgsql/lib/postgis-3.so": /lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference

访问postgresql数据库函数报错,原因为升级过openssl至openssl-1.1.1o

以下为寻找到的解决方案:

1 、下载openssl-1.1.1l,编译: 编译openssl增加enable-ssl3与enable-ssl3-method选项 # tar -zxvf openssl-1.1.1l.tar.gz cd openssl-1.1.1l ./config shared enable-ssl3 enable-ssl3-method make make install

检查新编译的文件是否包含SSLv3_client_method: [root@node1 lib64]# nm /usr/local/lib64/libssl.so.1.1 | grep SSLv3_client_method 00000000000214f0 T SSLv3_client_method 编译完成后是有SSLv3_client_method 编译好的库拷贝替换原来的libssl.so.1.1:

[root@node1 lib64]# cp /usr/local/lib64/libssl.so.1.1 /opt/software/openGauss/script/gspylib/clib/ cp: overwrite '/opt/software/openGauss/script/gspylib/clib/libssl.so.1.1'? y [root@node1 lib64]# 检查: [root@node1 lib64]# nm /opt/software/openGauss/script/gspylib/clib/libssl.so.1.1| grep SSLv3_client_method 00000000000214f0 T SSLv3_client_method

至此,该文件正常。

22、SQLException: The user specified as a definer ('xxx'@'%') does not exist

mysql删除了用户 xxx@% 后出现的错误,为了安全MySQL的访问需要限制ip,所以删除了次用户。

报错是因为视图定义者是xxx@%,用户被删除之后查询视图认为没有权限

23、UnsupportedOperationException: null

异常产生于java list.addAll(); 函数

原因为此集合list来源于 Arrays.asList(); Arrays.asList()转换而来的集合并未继承allAll();函数;

可再次转换以解决:

List<String> currentQueryGuids = new ArrayList<>(list);

24、com.jcraft.jsch.JSchException: Algorithm negotiation fail

openssh升级导致,客户端和服务器端算法协商失败,这个问题其实可以添加服务端或者sftp客户端的算法类型解决

但升级的版本为ssh9.0,版本太高,添加算法也无效,最后选择降级,降级为7.5版本解决

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 动态时间规整(Dynamic Time Warping,DTW)算法是一种有效的时间序列对齐算法,它可以将两个不同长度的时间序列进行对齐和比较。它的原理是在两个时间序列之间找到一个最短路径,以使它们的相似性最大化。DTW算法首先在时间序列之间建立一个距离矩阵,该矩阵表明每一对点之间的距离,然后使用动态规划方法来找到最短路径,最短路径的长度表示时间序列之间的相似性或差异。DTW算法的优点在于它可以应用于非线性数据,并且可以很好地处理不同长度的时间序列,以及时间序列中可能存在的噪声或错误。DTW算法被广泛应用于许多不同的场合,例如语音识别、文本分类、生物信息学等。 ### 回答2: DTW(动态时间规整)算法是一种用于比较两个时间序列之间相似度的方法。它通过将两个序列上的点进行配对以获得最小的总距离,而不考虑序列的非线性变换或缩放,从而衡量它们之间的相似程度。 DTW算法的核心思想是通过动态规划的方法寻找最佳的配对方式,以最小化两个序列间的总距离。它从两个序列的起点出发,通过递归地选择下一个配对点,直到达到两个序列的终点。在选择配对点时,可以根据序列间的距离来判断最佳配对。最终,DTW算法能够计算出两个序列的最佳配对路径和最小距离。 DTW算法在许多实际应用中被广泛使用。例如,在语音识别中,可以使用DTW算法来比较不同说话人的语音信号,以识别出相似之处。另外,DTW算法还可以应用于手写体识别、运动识别等领域。 虽然DTW算法具有许多优点,比如可以处理不同长度的序列和非线性变换,但也存在一些局限性。首先,DTW算法的时间和空间复杂度相对较高,可能导致计算开销较大。其次,当处理具有高维度数据和大规模数据集时,DTW算法可能会变得更加困难。 总而言之,DTW算法是一种有效的比较两个时间序列相似度的方法。通过动态规划的方法,DTW算法能够找到两个序列的最佳配对,并计算出它们之间的最小距离。尽管DTW算法存在一些局限性,但在许多实际应用中仍然被广泛使用。 ### 回答3: DTW(Dynamic Time Warping)算法是一种用于比较两个时间序列相似度的方法。它可以解决两个时间序列在长度、速度和形状方面的差异问题,被广泛应用于语音识别、手写体识别、运动捕捉等领域。 DTW算法的基本思想是通过动态规划的方法,计算两个时间序列之间的最短距离。它不仅考虑了两个序列点之间的距离,还考虑了对应点间的时间差异。该算法通过选择一条最优路径,将两个序列对齐,并计算最小累积距离。 DTW算法有三个核心步骤:计算距离矩阵、计算累积距离矩阵和路径回溯。首先,计算距离矩阵,其中每个元素表示两个序列点之间的距离。通常使用欧式距离、曼哈顿距离或余弦距离作为距离度量。然后,通过动态规划计算累积距离矩阵,其中每个元素表示到达该点的最小累积距离。最后,通过路径回溯找到最优对齐路径。 DTW算法的优点之一是它可以处理不同长度的时间序列。通过引入时间轴的拉伸和压缩,可以将两个序列对齐并计算最小累积距离。此外,DTW算法对于噪声和异常值具有鲁棒性,因为它允许一定的局部弯曲。 然而,DTW算法也存在一些问题。首先,对于大规模数据集和长时间序列,计算复杂度较高,可能导致较长的运行时间。其次,由于DTW是一种全局比较方法,可能导致偏离较大的时间对齐。因此,在某些情况下,可能需要使用其他方法,如基于局部约束的时间序列对齐方法。 总之,DTW算法是一种强大的时间序列相似度计算方法。它的广泛应用和强大的对齐能力使其成为时间序列分析领域的重要工具。然而,对于不同应用场景,需要根据具体情况选择合适的参数和改进方法,以提高算法的性能和效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值