2022工作中遇到问题三

Posted 今夜月色很美

tags:

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

1、nacos读取配置不正确问题

nacos客户端通过调用/listener接口监听配置信息是否修改,核心方法为:ConfigCacheService#isUptodate

	public static boolean isUptodate(String groupKey, String md5, String ip, String tag) 
        String serverMd5 = ConfigCacheService.getContentMd5(groupKey, ip, tag);
        return StringUtils.equals(md5, serverMd5);
    

	public static String getContentMd5(String groupKey, String ip, String tag) 
        CacheItem item = CACHE.get(groupKey);
        if (item != null && item.isBeta) 
            if (item.ips4Beta.contains(ip)) 
                return item.md54Beta;
            
        
        if (item != null && item.tagMd5 != null && item.tagMd5.size() > 0) 
            if (StringUtils.isNotBlank(tag) && item.tagMd5.containsKey(tag)) 
                return item.tagMd5.get(tag);
            
        
        return (null != item) ? item.md5 : Constants.NULL;
    

nacos将所有配置信息缓存在CACHE中,然后以名称空间、group、data ID作为key,取得配置信息后计算md5值比较。

注意:public的名称空间id是空,不是public,如果指定配置中心名称空间为public,调用/listener从缓存中获取不到配置,item值为null,则判断新旧md5值不相等。

2、mybatis if test条件判断数组参数

mybatis做if test判断的时候,如果参数只用来做条件判断,查看sql参数的时候会发现参数根本没传,所以条件接收到的参数会一直是空的。如果参数是数组

<if test='aa != null and aa.length > 0 and aa[0] == "0"'>
	。。。
</if>

可以通过aa[0]判断第几个元素的值作为条件

3、mybatis一对多分页查询

一对多查询分页问题,之前踩过这个坑,但是没有记录,今天又遇到了,记录一下:

使用collection标签,传参用column,用主表的column作为从表的参数

<resultMap type="com.xxx" id="xxxStatusRecoResult">
        <result property="id"    column="r_id"    />
        <result property="status"    column="r_status"    />
        <collection property="recordDetailsList" ofType="com.xxxStatusRecordDetails"
                    select="selectDetails" column="r_id"/>
    </resultMap>
    
    <select id="selectDetails" resultMap="xxxStatusRecordDetailsResult">
        select d.id d_id, ..., d.status d_status, d.marks d_marks
        from xx_status_record_details d
        where d.xx_status_id = #id
    </select>

4、table中加标签v-model的三种方式

vue官网提供了使用原生input的方式

props: ['value'],
render: function (createElement) 
  var self = this
  return createElement('input', 
    domProps: 
      value: self.value
    ,
    on: 
      input: function (event) 
        self.$emit('input', event.target.value)
      
    
  )

如果想用el-input:

建议使用插槽的方式,先设置scope: true,然后在table中添加template标签

<template #xxx="scope">
          <el-input v-model="scope.row.xxx" placeholder="请输入"></el-input>
        </template>

5、el-table使用v-if控制列动态显示隐藏

v-if判断的变量刷新时调用el-table原生方法doLayout,并在动态显示隐藏列el-table-column标签中添加属性 key=“name”

6、oracle有的表名查询不到

oracle表和字段是有大小写的区别。oracle默认是大写,如果我们用双引号括起来的就区分大小写,如果没有,系统会自动转成大写。

7、redis单点和集群配置属性不同

  redis:
    # host: 192.168.1.90
    # port: 6379
    # password: 123456
    cluster:
      nodes:
        - xxx:7000
        - xxx:7001
        - xxx:7002
        - xxx:7003
        - xxx:7004
        - xxx:7005

8、flyway启动报错

No value provided for placeholder expressions: $billNo.  Check your configuration!

flyway把sql脚本中的$当作占位符参数解析,但是又没有找到billNo参数导致的

解决方法:修改flyway.conf文件的placeholderReplacement属性,默认为true,改为false

9、获取验证码报错

Caused by: java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font$FontAccessImpl.getFont2D(Font.java:237)
	at java.desktop/sun.font.FontUtilities.getFont2D(FontUtilities.java:139)
	at java.desktop/sun.font.StandardGlyphVector.initFontData(StandardGlyphVector.java:1132)
	at java.desktop/sun.font.StandardGlyphVector.init(StandardGlyphVector.java:1121)
	at java.desktop/sun.font.StandardGlyphVector.<init>(StandardGlyphVector.java:167)
	at java.desktop/java.awt.Font.createGlyphVector(Font.java:2734)
	at com.google.code.kaptcha.text.impl.DefaultWordRenderer.renderWord(DefaultWordRenderer.java:66)
	at com.google.code.kaptcha.impl.DefaultKaptcha.createImage(DefaultKaptcha.java:43)

可能是由于linux服务器缺少swing 需要的字体。

yum install dejavu-sans-fonts fontconfig -y

服务器安装字体后重启应用,问题解决。

10、查询oracle表创建时间

SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'xxx'
yum install dejavu-sans-fonts fontconfig -y

服务器安装字体后重启应用,问题解决。

10、查询oracle表创建时间

SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'xxx'

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

2022工作中遇到问题五

Karaf-组装和特点:新旧方法?

Spring系列框架系统复习spring原理-面试常遇到的问题

2022工作中遇到的问题四

2022工作中遇到的问题四

2022工作中遇到的问题二