【杂谈】工作时候遇到过的问题及解决方式记录(持续更新)

工作时候遇到过的问题及解决方式记录

数据库相关

默认值问题

在这里插入图片描述

mybatis-plus在查询不到值时返回为空集不是null

使用mybatis-plus查询列表,如果查询不到数据,会返回空集,而不是null的源码探讨

oracle中查询一个字段是什么时候添加的

SELECT t.last_ddl_time, t.* FROM dba_objects t WHERE t.owner = '' AND t.object_name = ''"

mysql在排序列值相等时排序不可靠

使用limit x offset x 分页时会查出来重复数据。

mysql limit 格式

在这里插入图片描述
MySQL中的limit用法详解

mybatis占位符的区别

check the manual that corresponds to your MySQL server version for the right syntax to use near

sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项

  1. 使用in的时候,忽略为null的,不会查询出comm为null的数据
    因为:
    select * from table_a as a where a.id in ( 2, null ); 等价于 select * from table_a as a where a.id=2 or a.id=null;
    当a.id=2判断为true时,那么整个or语句就为ture,判定条件成立,
    而当a.id是null时,a.id=2判断为false,判断式“null=null”结果为null,整个or语句就为null,所以null记录并不会被返回。
  2. 使用not in的时候,如果 not in后面的选项中没有null,只会查询从comm列不为空的列中过滤,会过滤掉comm为null的数据
  3. 使用not in 的时候,如果not in后面的选项中有null,不会查询出来任何数据。sql语句本身直接返回false
    select * from table_a as a where a.id not in ( 2, null ); 等同于 select * from table_a as a where a.id<>2 and a.id<>null;
    null值不能使用比较运算符进行运算,a.id <> null 的结果为null,判定条件不成立

如果想要把null查出来,可以使用nvl函数替代。

select * from  table_a  as  a  where  a.id  in  ( 2, 3 ) or a.id is null;
select * from  table_a  as  a  where  nvl(a.id,'空')  not  in  ( '2', '3', '空');

sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项
为什么sql语句中not in后面的结果集如果有null,主查询就查不到记录?

Java相关

日期为什么用LocalDateTime

为什么建议使用你 LocalDateTime ,而不是 Date?

Spring相关

启动报错 Caused by: java.nio.charset.MalformedInputException: Input length = 1

启动报错:
Caused by: java.nio.charset.MalformedInputException: Input length = 1

原因:
application.yml文件编码格式有问题,可能直接改文件后缀名导致文件有问题

解决:
复制application.yml的内容,删除application.yml文件,重新新建application.yml文件,粘贴到新的application.yml文件

SpringBoot启动报错

框架相关

nacos

nacos寻址机制

nacos寻址机制指的是nacos内部如何去管理集群内的Nacos成员节点信息,即获取当前最新的成员列表信息。

它的核心成员有两个:ServerMemberManager 存储本节点所知道的所有成员节点信息,MemberLookup 接口提供了两个操作,一个是injectMemberManager 它将ServerMemberManager 注入到MemberLookup 中,便于利用ServerMemberManager 的存储和查询。另一个是afterLookup ,它在需要进行成员节点信息更新的时候,将当前最新的成员节点列表信息通过该函数通知给ServerMemberManager

目前nacos内部实现的几种寻址机制是:

  • 单机寻址:找到自己的ip:port组合信息,将其格式化为一个节点,调用afterLookup 接口将信息存储到ServerMemberManager
  • 文件寻址:它是Nacos集群模式下的默认寻址实现,每个节点维护一个cluster.conf 的文件,默认填写每个成员节点的ip信息,端口自动选择默认端口8848。当Nacos节点启动时,读取该文件的内容,将文件内的IP解析为节点列表,调用afterLookup 接口将信息存储到ServerMemberManager 中。这种方式下,如果发现集群扩缩容,需要修改每个节点下的cluster.conf 文件,这导致集群运维成本较大,且易产生不一致性。
  • 地址服务器寻址:Nacos官方推荐的集群成员节点信息管理,它利用了一个简易的web服务器,用于管理cluster.conf下的文件内容,每个Nacos节点只需要向这个web节点定时请求当前最新的成员信息即可。

工具相关

git

  1. 查看分支:git branch
  2. 本地新建分支并切换: git checkout -b 分支名
  3. 推送至远程: git push origin 分支名
  4. 查看所有分支: git branch -a
  5. 推送一个空分支到远程分支,其实就相当于删除远程分支: git push origin :localbranch
  6. 删除远程分支: git push origin --delete localbranch

maven

  1. 强制刷新依赖: mvn clean install -e -U -Dmaven.test.skip=true
  2. 开启多线程编译: -T 线程数

前端相关

  1. 函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
    不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。

react生命周期

其他

  1. windows命令行翻页: 右击左上角图标,找到编辑页面的滚动可以切换至滚动模式,即可向上查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值