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串转换为十六进制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值