随笔杂谈为什么是空字符串时,表达式依然为
继续阅读
天天帮领导改bug之空字符串和0
在 MyBatis 的 <if> 标签中,表达式 isDeduc != null and isDeduc == 0 是基于 OGNL (Object-Graph Navigation Language) 表达式进行解析的。OGNL 在处理不同类型的数据时会进行隐式类型转换,这就可能导致一些看似不合理的判断结果。
为什么是空字符串时,表达式依然为 true?
1. OGNL 的类型转换规则
OGNL 在处理表达式时,如果字段类型不匹配,会尝试进行隐式类型转换。例如:
- 如果是字符串类型 (
String),但表达式中使用了isDeduc == 0,OGNL 会尝试将字符串转换为数字。 - 空字符串 (
"") 在转换为数字时,会被解析为0。
2. 示例分析
假设值是空字符串 (""),表达式 isDeduc != null and isDeduc == 0 的执行过程如下:
isDeduc != null:空字符串 ("") 是一个有效的字符串对象,不为null,所以条件为true。isDeduc == 0:由于 isDeduc 是字符串类型,OGNL 会尝试将其转换为数字:- 空字符串 (
"") 被转换为0。 - 因此
isDeduc == 0的结果也为true。
- 空字符串 (
最终,整个表达式的结果为 true。
随笔杂谈
继续阅读
看看公司的老项目中有多少依赖没有被引用

maven构建工具,使用起来很简单,也正是因为简单,才会使很多项目的pom文件被写的一团糟,尤其是小团队中没有架构师护航,没有专人管理基础构建.
打包优化
排除无用依赖:用
mvn dependency:analyze检测「未使用的依赖」和「使用了但未声明的依赖」。瘦身可执行 JAR:Spring Boot 项目可用
spring-boot-maven-plugin的excludes排除不需要的依赖(如开发工具类)。分层构建:配合 Docker 实现「依赖层缓存」,加快镜像构建(如将
BOOT-INF/lib和BOOT-INF/classes分开)。我们就运行一下
mvn dependency:analyze
| |
这些警告来自 Maven 的dependency:analyze插件(或类似分析工具),用于检测依赖管理的不规范。具体分为两类:Used undeclared dependencies(使用了但未显式声明)和Unused declared dependencies(声明了但未使用)。下面详细解释并提供解决建议: