2018-06-04 10:32

@543734235 缺少 jfinal-3.4 的 jar 包,在首页右侧下载 jfinal-3.4-all.zip,里面都有

2018-06-03 22:23

static 变量一定是全局共享的,这个是 java 语言决定的,不是 jfinal 决定的。

这个问题自然与 main 启动还是 tomcat 启动无关

再仔细调试确认一下

2018-06-03 22:21

虽然在 jfinal 有了 SQL 管理功能后 mybatis 已没有了任何优势:
http://www.jfinal.com/doc/5-13

但分享还是要先点赞

2018-06-03 22:18

java web 规范下的一个 context path 问题

将 context path 设置为 "/" 即可,注意页面中的所有资源路径以 “/” 打头

2018-06-03 22:16

redis 的核心价值在于:
1:持久化
2:中心化(共享)
3:极为丰富的数据结构
4:数据结构配套的 API

ehcahce 的核心价是:
1:JVM 内缓存,速度极快,无需序列化与反序列化
2:无需安装服务端

redis 与 ehcache 的选择取决于应用场景。我个人的使用经验,尽可能只使用 ehcache, redis 仅用于在超高并发下解决雪崩问题

一般的应用用一下 ehcache ,集群环境下使用 jgroup 广播做好缓存同步就好

最后, encache 支持配置 diskPersistent="true" 来持久化数据

2018-06-03 22:09

我自己也点赞收藏一个,ExecutorService 与 AtomicLongMap 配合确实是个高招

2018-06-03 22:09

ExecutorService 与 AtomicLongMap 配合的使用性能会非常高,这个是亮点

有几个小建议:
1:saveAPICountsToDB.execute 中使用 lambda 会更简洁,省好几行代码

2:saveAPICallCountsToDB 中的 findFirst 方法中使用 sql 要添加一个 limit 1 性能才更好

3:saveAPICallCountsToDB 中的逻辑可以改进一下,性能会更高:
int n = Db.update("UPDATE yw_module_statistics SET count = count + ? WHERE controllerName = ? AND methodName = ? LIMIT 1", ...)

if (n == 0) {
Db.update("INSERT INTO....);
}

上面的逻辑是,默认一上来就执行 update ,得到的返回值 n 如果是 0,证明记录不存在,这个时间再执行 insert into

这样做的原因是,绝大部分情况下都会命中前一个 update,只有 action 在第一次被请求时才会命中后面的 insert into,避免掉了每次的 findFirts 判断是非常划算的

2018-06-03 21:58

@tt520 看一下控制台输出的 jfinal action report ,观察 action 请求的是那个

2018-06-03 21:56

pom.xml 配置错误

2018-06-03 21:55

启动数库事务与是否使用 cron4j 没有关系,只考虑业务是否要启动数据库事务即可

2018-06-03 21:53

@昵称而已 如果你使用的是 jfinal enjoy 引擎,热部署只需要配置一下:
engine.setDevMode(true)

2018-06-03 21:52

如果 jfinal action report 中的 parameter 这一栏中根本没有正确的参数,将精力集中解决于前端传参,然后再去关注后端

2018-06-03 21:51

看一下控制台输出的 jfinal action report 中的 parameter 这一栏中的数,然后再选择合适的 getPara 系方法

2018-06-03 21:49

主要取决于你的传值方式,看一下控制台输出的 jfinal action report 中的 parameter 这一栏中的参数,如果是数组会是下面这样:
szxm=[值1, 值2,......, 值n]

如果控制台输出的 szxm 不是数组的形式,自然就无法获取到

2018-06-03 21:47

模板中使用了 user.id, 但你的 user 本身是 null ,因此 user.id 就相当于 null.id ,必然会报错的

jfinal enjoy 对此引入了空合安全表达式,使用 user.id ?? 即可