-
Lombok 初体验
2020-08-05 21:14你都加上
@Builder
了:Book b = Book.builder() .setName("note") .setISBN("abeffect") .setPubDate("2018-07-21") .bulid();
-
关于 Java BigDecimal 类型调用 divide 做除法运算时报错详解:
2020-08-01 18:11你这解释。。。还是看我的吧:
ROUND_UP
:向正无穷方向对齐(转换为正无穷方向最接近的所需数值)ROUND_DOWN
:向负无穷方向对齐ROUND_CEILING
:向原点的反方向对齐ROUND_FLOOR
:向原点方向对齐ROUND_HALF_UP
:“四舍五入”,如果舍弃部分的最高位大于等于 5,向正无穷方向对齐,否则向负无穷方向对齐ROUND_HALF_DOWN
:“五舍六入”,如果舍弃部分的最高位大于 5,向正无穷方向对齐,否则向负无穷方向对齐ROUND_HALF_EVEN
:“四舍六入五成双”,如果舍弃部分的最高位大于等于六,或等于五并且前一位是奇数,向正无穷方向对齐,否则向负无穷方向对齐ROUND_UNNECESSARY
:如果需要舍入,就抛出算术异常
-
JDK8 函数式编程
2020-07-26 16:18问题多了去了。
首先可以用 Lombok 的
@Data
注解来简化 Bean 的编写。@Data public class Order { private List<Item> itemList; } @Data public class Item { private String productName; private Integer price; }
然后创建不为空
List
的话,可以用List.of
工厂方法,Java 9 以下可以用 Guava 的ImmutableList.of
List<Item> itemList = List.of( new Item("键盘", 16), new Item("鼠标", 32), new Item("笔记本支架", 25) );
然后用了函数式编程就不要用
for
循环了,配合Stream
把它干掉吧。Consumer:
getTestOrder().getItemList() .stream() .filter(it -> it != null && !it.isEmpty()) .forEach(orderConsumer::accept);
Supplier:
List<Integer> priceList = getTestOrder() .getItemList() .stream() .filter(it -> it != null && !it.isEmpty()) .map(Item::getPrice) .collect(Collectors.toList());
Function:
List<Item> itemList = List.of("苹果,22", "香蕉,33", "橘子,12") .stream() .map(s -> s.split(",")) .map(spl -> new Item(spl[0], Inetger.parseInt(spl[1]))) .collect(Collectors.toList());
Predicate:
getTestOrder().getItemList() .stream() .filter(it -> it.getPrice() > 30) .forEach(System.out::println);
-
强烈建议 Symphony 抛弃某些固执的过去,拥抱 Spring
2020-07-07 16:41并不新颖,就是动态语言的常用做法。
其实 controller 不怎么修改实体的,多数情况下就是拼接,然后传到 view。
而且动态语言的哈希表操作更容易,不比对象复杂。
view 那边因为模板引擎会在 obj.a 和 obj.get('a') 里面选,所以是兼容的。
-
2020 年 6 月感想
2020-07-06 00:39国内公司普遍没有 ticket 制度,否则所有人放下手头的任务搞 ticket 是应该。而且你选择设成 ticket 就有个权衡值不值得的过程,避免滥用。
-
大家喜欢单表查询和还是多表连接?
2020-07-03 09:34高性能 mysql 里面的建议是做一下性能测试,哪个快用哪个。
我一般交给 orm,如果用 qbc 这种 api 的话。
如果非得提供 sql,我还是倾向于单表。因为 sql 和 rdbms 绑得非常紧,但 rdbms 也不是常青树,说不定啥时候就被取代了,而几个单表查询显然更容易切换到其他查询表达式(比如 bson)。