2017-09-27 11:13
@liuvlun 如果你不使用 fst 序列化就可以删掉 fst 这个包,这样配置一下:
redisPlugin.setSerializer(new JdkSerializer());
2017-09-27 11:12
jfinal 路由规则的参数总是在最后一部分的,所以支持这样:
http://localhost:8080/friendship/profile/rKJGdAKPm
jfinal 路由有性能上的考虑,也有设计上的考虑,简单说一说:
1:性能上
jfinal 路由匹配不需要循环,也不需要正则匹配,多数情况下只有一次从 map 中取值的操作,性能达到极致,路由匹配代码只有 10 行
几乎所有的 web 框架在匹配路由时,都需要使用正则和循环,jfinal 路由匹配性能起码高一个数级
2:设计上
jfinal 路由的设计类比了方法调用:
methodName(p1, p2, ..., pn)
对应到路由的 url 为:
/controllerKey/methodName/p1-p2-p3...pn
这里的一个显著特征是参数永远在最后方,而不是掺杂在 methodName 或者 controllerKey 里面。基于上面的类比设计方法,如果破坏上面规则的话,方法调用相当于这样:
method p1, p2, ...pn Name()
显然不符合直觉
2017-09-27 11:01
设置成多少合适取决于数据库类型,例如 mysql 在数据量到达 5 千还是 5 万后会自动提交一次,即便你设置成 10 万都是没有意义的
建议的做法是,根据数据量选择一个小于数据库支持的 size。这个 batchSize 本质是为了让开发者选一个小于数据库支持的 size 值,好在碰到异常时可以针对本次提交的数据进行回滚,当然,你得开启事务才支持回滚,开启事务的方式与其它数据库操作 API 是一样的方法
此外,再延升一下,数据库支持的 batchSize 可能与配置有关,而这个配置可能是缓冲区的大小,而不是一个 int 型数值,所以可能与你每条数据中包含的字段内容长度有关,这个没有深入研究过,有兴趣、有时间的朋友可以翻看一下 mysql 文档
我个人一般用 1000 2000 顶多 3000 的 batchSize,避免了自动提交,可以回滚事务