2022工作中遇到问题五

Posted 周虽旧邦其命维新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022工作中遇到问题五相关的知识,希望对你有一定的参考价值。

1、jenkins构建Git项目失败,提示超时

 > git fetch --tags --progress http://134.79.10.219:8083/liuyunzhen/flow.git +refs/heads/*:refs/remotes/origin/* # timeout=10
ERROR: Timeout after 10 minutes
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from http://134.79.10.219:8083/liuyunzhen/flow.git

重启gitlab,问题解决。

2、oracle修改json字段

格式1:substr(string string, int a, int b);

1、string 需截取的字符串

2、a截取的开始位置,(0,1都表示为第一个元素)

3、b要截取的字符串长度

a和b均可以为负值,负值表示倒数计算

UPDATE xxx_goods set EXT_JSON=substr(ext_json,0, length(ext_json)-1)||',"isParallelContrast":"1"' WHERE id='000';

3、排查服务器卡顿

查看io负载,-x表示显示所有参数信息,1表示每隔1秒监控一次,50表示共监控50次

iostat -x 1 50

rsec/s表示读入,wsec/s表示每秒写入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uYc85Gv8-1665366815123)(C:\\Users\\11244\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220729110832430.png)]

找出使用io高的进程的工具iotop,如果没有需要yum安装

yum install iotop -y

4、springcloud项目启动卡住

同事springcloud项目debug启动卡住,run可以,开发工具为idea

卡住前最后几行信息为seata相关的wrapIfNecessary、GlobalTransactionalInterceptor.invoke等,判断是启动的时候对包含@GlobalTranscation注解的类织入seata事务的时候卡住了,但是run方式启动可以怀疑是有断点,奇怪的是debug如果遇到断点应该跳转到对应行,但是同事idea并没有显示debug到了某一行。

尝试性的去掉了同事项目中所有的断点,再次debug成功。

5、actuator安全漏洞

方案一:修改Actuator应用监控配置信息和独立端口(如果多个微服务使用同一个nacos配置,因为监控端口相同会端口冲突,需要为每个微服务指定不同端口),引入security配置必须输入用户名密码才可以访问actuator监控接口

spring:
  security:
    user:
      name: admin
      password: 123456!2022
management:
  endpoints:
    web:
      exposure:
        include: '*'
  server:
    port: 8801

pom.xml中引入spring-boot-starter-security

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

但security添加后是在项目登录权限验证之外额外加了一层对所有请求的权限验证,要用起来改动量较大

方案二:直接禁用全部接口

# 暴露监控端点
management:
  endpoints:
    enabled: false

6、springcloud项目启动报错

错误信息:

IllegalStateException: Incompatible fallbackFactory instance. Fallback/fallbackFactory of type class
com.gykjit.spd.base.api.factory.DeviceServiceFactory is not assignable to interface feign.hystrix.FallbackFactory for feign client deviceService

错误原因:

openfeign使用hystrix服务降级引入FallbackFactory类导包错误,既然是使用hystrix来做服务降级处理,当然应该引入hystrix包路径下的FallbackFactory

错误的包路径:

import org.springframework.cloud.openfeign.FallbackFactory;

正确的包路径:

import feign.hystrix.FallbackFactory;

7、mybatis查询到的记录数不正确

现象:代码里返回的结果总是11384条,但是把SQL拿到客户端执行又11582条,每页显示记录数越大少数据的可能性越大。

分析:在网上搜索当PageHelper进行分页时,如果排序字段不唯一或者可能为空,排序重复的数据可能会被过滤,但是实际我的sql打印出来并没有使用order by。通过改变条件定位具体数据,发现是有一个退货单的800条明细中,有200条明细所有返回字段与其他记录完全重复,导致被PageHelper过滤。

原因:PageHelper会过滤掉重复的数据,导致mybaits查询出来的数据多余实际返回的记录数,但是返回的总记录数不变

解决方法:业务上这是脏数据,所有返回字段完全重复不符合我实际项目的业务逻辑,但是假设业务允许这样的数据出现,也可以解决,如我这里业务中退货明细id字段是肯定不会重复的,返回字段中加上退货明细id就可以解决PageHelper过滤掉重复的数据问题。

法:业务上这是脏数据,所有返回字段完全重复不符合我实际项目的业务逻辑,但是假设业务允许这样的数据出现,也可以解决,如我这里业务中退货明细id字段是肯定不会重复的,返回字段中加上退货明细id就可以解决PageHelper过滤掉重复的数据问题。

再假设某个业务场景中返回所有字段全部重复,不存在唯一字段可以区分每一条返回记录,可以通过伪造不同字段来区分,在返回字段中添加rawtohex(sys_guid()),其中SYS_GUID 以16位RAW类型值形式返回一个全局唯一的标识符,rawtohex将raw串转换为十六进制

以上是关于2022工作中遇到问题五的主要内容,如果未能解决你的问题,请参考以下文章

解决 ODE 时避免负值

MySQL中遇到的问题以及解决方法出现负值

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配

margin负值的应用总结

运行时错误:负值左移 -1