1、Spring,yml配置文件,错读数字字符串
结果发现读出来的字符串变量内容为1,而不是期望的001.
其原因是yml会把0开头的作为8进制对待,主动去掉了前导零。
bcm.userNo: 00003 实际为“3”
bcm.corpNo: 0008146710 实际为“8146710.0”
正确的配置:
bcm.userNo: "00003"
bcm.corpNo: "0008146710"
2、lombook的@Data is only supported on a class.
枚举中不让用。
public enum YnEnum {
YES(1, "是"), NO(0, "否");
private Integer code;
private String value;
YnEnum(Integer code, String value) {
this.code = code;
this.value = value;
}
public Integer getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
3、上面的枚举YnEnum。
```
/**
* 根据code得到 对应的枚举类型
*/
public static YnEnum getEnumByCode(Integer code) {
if (code == null) {
return null;
}
//Integer必须equals,int用==
for (YnEnum item : YnEnum.values()) {
if (item.code.equals(code)) {
return item;
}
}
return null;
}
```
比较的时候,出bug了。 有的地方用int,所以直接==。 有的地方用Integer或String,就应该用equals方法。
4、java文件缓存,诡异的问题
Linux服务器A上,有若干文件,这些文件从B机器同步过来。
Linux上的同名文件,大小和时间已经更新了。
而Java文件的listFiles有缓存。
也有一种可能,用户一直在对某一个文件进行读取,底层自动只对这1条数据,进行了缓存。
Linux系统文件名不允许出现“英文括号()”。
Linux文件会有缓存吗?可能性感觉不大
Java File读写目录,会有缓存吗?可能性感觉不大
(java文件缓存,已经重新同步了,读取的还是之前大小的同名文件。
读取linux上的文件失败,缓存了?
)
Linux文件名,不允许英文括号。
Windows中英文括号没问题。
2个公司名匹配“我的公司(上海)科技”,“我的公司(上海)科技”。
之前的思路是,把括号改为一致的,比如都用“中文括号”,或都用“英文括号”。
今天,有了新的思路,统一把括号去掉,这样就不会存在奇葩括号问题了。
5、项目里,SpringMVC默认响应格式为xml。
具体原因,可以参考资料。
首先访问这个
http://localhost:18004/api/query/queryCompContract?compId=256 ,后台返回一个map,但是Chrome报错:
This page contains the following errors:
error on line 1 at column 7: StartTag: invalid element name
Below is a rendering of the page up to the first error.
后台debug,没看到问题。
网上找资料,发现这个错误大多是说xml格式不对。
突然想起来,默认格式xml,不支持直接显示map吗?
用json格式访问就好了。
http://localhost:18004/api/query/queryCompContract.json?compId=256 {
256: "公司不存在"
}
手动用json
@RequestMapping(value="/queryCompContract", produces={"application/json; charset=UTF-8"})
参考资料:
系统默认的设置的 media type[4]
在一些简单的环境中,比如项目返回的数据类型只需要JSON格式,可能就不需要设置 produces的类型,来指定 media type,也能够按照要求返回正常的JSON数据,这是为什么?
因为SpringMVC在项目初始化时,会去扫描系统中的JAR包,然后根据扫描到的JAR包设置默认的转换类型,大概的扫描过程是:
1)检查系统中是否存在jackson-xml的JAR包,如果存在,就将数据转换类型列表中设置XML类型,以及其对应的转换器
2)检查系统中是否存在jackson-json的JAR包,如果存在,就在数据转换类型列表中设置JSON类型,以及其对应的转换器
因为是先检测的XML,因此XML排在JSON前面,如果系统两者的JAR包都存在,那么默认情况下数据会被转换成XML格式
6、Windows系统,Telnet不可执行
控制面板->程序和功能->启用或关闭Windows功能->勾选Telnet