2022工作中遇到问题三

2022工作中遇到问题三,第1张

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标签


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.(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'

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/757719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存