写诗有感
早上,送夫人上班,在和她闲聊,聊到以后儿子写作的水平如何培养,此时正遇堵车,就问他如何描写堵车。由于我水平有限,路上思索着,拿《望洞庭》作为底稿,经过反复打磨后,才得一首打油诗。
望长江大桥堵车有感
尾烟素月两相和,路无红灯车未挪。
遥望大桥千里赤,长江漂浮一死蛇。
发给夫人鉴赏后,夫人说:“笑死”,不一会,夫人就来了一首。
望堵车
前路无红灯,油满车却停。
夜黑汽更白,江上一条龙。
我说不押韵,他回到:“这是香菱学诗”,我蹩脚的压了下韵律,改成了这样:
信号灯曰行,油满车却停。
夜黑汽更白,江上一蚯蚓。
她又改道:
路无红灯碍,油满车却停。
夜黑汽更白,江上一蜻蜓。
我一看,“路无红灯碍”似乎更好一点,于是基于此句,加上 ai 韵后得:
路无红灯碍,尾红气更白。
油满车不动,蜻蜓接我来。
她看过后,把 “蜻蜓接我来” 改成 ...
表格驱动法优化ifelse
表格驱动的常见形式开发中,常常会用到各种分支逻辑,if else switch case 霸屏,如下代码。
1234567if (state == 1) { process1();} else if (state == 2){ process2();} else { processByDefault();}
在编程的世界,只有两种元素组成,那就是数据与代码。像上面的代码,估计大家一看,除了 state 的 {1, 2...} 是数据的概念,其他的诸如 if else process1() process2() processByDefault() 自然也就化为代码的部分。
而代码和数据的划分,不是泾渭分明的,你写的任何代码,在编译器的角度,又成为了数据。
因此如果我们换一个角度思考上述代码,重新定义数据,可能就会得到另一个结果。 如下
1234567Map<Integer, Runnable> stateProcessMap = new HashMap<> ...
为Mybatis提供spring-data一致的分页API
前言spring-data 项目中,为数据访问提供熟悉且一致的基于 Spring 的编程模型,同时仍保留底层数据存储的特殊特性,其中 spring-data-jpa 更容易实践领域驱动设计的特性,尤其收开发者欢迎。
然而,面对一些比较复杂的连表查询,如果严格按照 CQRS 的方案实践,方案又会显得比较笨重。在这个背景下, jpa 与 Mybatis 的混合方案,分别发挥了 jpa 模型的长处 与 Mybatis 动态 SQL 的长处,而规避了 jpa动态 SQL 的短处与 Mybatis 模型的短处,受到了广泛的一致认可。
方案特点表现如下:
Jpa 做模型的持久操作,以及单表查询。
Mybatis 只做视图的复杂查询,并且不参与业务逻辑的运算(即代替 CQRS 查询层的逻辑)。
Mybatis PageHelper 的实践在 spring-data 的中,提供了分页排序的 API 基本都是如下形状:
12Iterable<T> findAll(Predicate predicate, Sort sort);Page<T> findAll(Predicate ...
关于枚举的高级用法
关于枚举的高级用法枚举回顾Java 中的枚举,大家都不会陌生,他的一些特点,能让我们得心应手的实现业务逻辑。
它的单例特性,我们就可以直接使用 == 来做逻辑校验,如:
1234567public enum Gender { MAN, WOMAN;}if (Gender.MAN == gender) { // do something}
也可以直接实现一个线程单例,JVM 层面提供的保障
123456789101112131415161718192021public class SingleEnumDemo { public enum SingleEn { INSTANCE; private String name; public String getName() { return name; } public void setName(String name) { ...
从“白马非马”到“协变、逆变”
一段哲学辩论据说,公孙龙有一次需要过关, 关吏只允许人通过,于是有了下面的辩论。
关吏:”按照惯例,过关人可以,但马不行。”
公孙龙:”我的是白马,不是马。”
关吏:”白马怎么能不是马呢?”
公孙龙:”‘马’是对物’形’方面的规定,’白马’则是对马’色’方面的规定,对’色’方面的规定与对’形’方面的规定,自然是不同的,所以说,对不同的概念加以不同规定的结果,白马与马也是不同的。”
关吏:”有了白马,就不可以说没有马。既然不可以说没有马,那么白马不就是马了么?既然有白马称为有马,那么为什么白色的马就不是马呢?”
公孙龙:”如果你要求得到’马’,黄马、黑马都可以满足要求;如果要求得到白马,黄马、黑马就不能满足要求了。假如白马就是马,那么要求得到马与要求得到白马便完全一样了,这就表明白马与马不一样,所以白马非马。”
…略 公孙龙成功过关…
在这个故事中,我们常人的理解,就如关吏一样,马是包含了白马、黄马、黑马……,所以我们认为白马是马
而公孙龙的角度则是,区分出白马的’形’与’色’,分析出他们在不同的场景下,不一样的性质。
HorseWhiteHorseBlackHourseYellowHo ...