工作中遇到的小坑合集
fastjson
- fastjson在使用复杂的集合类型的使用,要使用TypeReference.如下
Map<Long,PriorityQueue<Message>> map = JSONObject.parseObject(string,
new TypeReference<Map<Long, PriorityQueue<Message>>>() {});
-
PriorityQueue优先队列,要求内部对象是Comparable
上诉的示例代码,要求Message是Comparable,因为在优先队列建立的时候,会要判断元素之间的compare关系,而TypeReference没法使得PriorityQueue能传入compare对象,所以就要求内部对象本身是Comparable
-
fastJson的ref
当fastJson检测到需要json字符串的对象中有重复的对象的时候,会使用ref字段,表明引用,通过这样的方式来节约字节。
-
PriorityQueue初始化的number
PriorityQueue在初始化的时候可以传入个数字n,不要以为这样就可以用TopN的堆了,实际上PriorityQueue会自动扩容的。
maven
maven jar 加载失败的问题
今天给个子 module 添加 mybatis 代码,在跑单元测试的时候,提示我缺少类,一看是 spring-jdbc 中的类,添加
<dependency>
依赖之后发现, 依旧提示缺少该类,查看 maven 分析,发现确实没有 spring-jdbc 的包,但是 pom 文件中明明添加了。
解决问题:本质原因在于在 spring-jdbc 的引用之上还有一个其它工具的包,我暂时称为 A.jar(公司内部 jar 包,不提及名字) ,由于这个 jar 包的 groupId 写错的,但是坑爹的是 IDEA 并没有提示,(IDE 工具也不是万能的) 导致 maven 解析停在了这一句上,没有加载 spring-jdbc 。将 A.jar 包的 groupId 修改回来之后,问题就解决了。