2016-09-05 16:03

@林栋 用 count 获取,你需要在私信等需要生成提醒的字段中添加字段,例如添加一个 isRead 字段,然后你需要维护这个字段,数据量大以后这个字段会占用一定空间,并且 count 也需要消耗性能
referMe 到来的时候字段加 1 ,不是关键数据,多出一个少出一个无所谓,而且这个值是访问后立即清零的,相当于随时能回到正确的状态,你在实践中去写代码的时候就能体会现这样设计的好处

2016-09-05 15:57

@林栋 所以静态资源全用的 nginx 接管,例如 css、js、jpg、png 等等,nginx 只需要设置 root /var/www/jfinal_com 即可,整体覆盖是指打包成 war 包以后,再用 war 包中的文件覆盖全部,当然,有时候会为了去掉一些不用的文件,是将原来部署的文件,只保留 upload 目录,其它全部删掉

2016-09-05 14:36

@Romeo 不用手动 new,放在业务层就好,没有人会这么用:UserService.me().dao.save(),但有人会这么用: User.dao.save()

2016-09-05 14:35

@Romeo 我是直接通过 cnzz 统计看的当天最高并发数,没用工具测试

2016-09-05 14:33

@Romeo 没错,前端要什么类型的数据,后端得对应上

2016-09-05 13:36

@IvyHelen 前端用了 nginx,所以会大大提升并发数,而后端用了 ehcache 所以大大减少了数据库存取,目前只调整了 tomcat 运行的内存大小,mysql 只调整了字符集为 utf-8,其它暂时不需要动

2016-09-05 13:34

renderJson("name", "好"); 即可,此外还有其它的 renderJson 方法,例如 rederJson(Object),renderJson(String[]),renderJson(),具体用法见 jfinal 手册,在首页有下载链接

2016-09-05 10:54

1:只有一个 tomcat
2:缓存用 ehcache
3:最高并发到过 900,访问仍然非常迅速
4:图片就简单存放于 webroot/upload 之下,图片大小控制在 200K 以内
5:重新部署大版本是整体覆盖,小版本是小范围覆盖
6:社区部分通用功能会抽取成独立项目开源出来

2016-09-03 21:10

我现在对大家有一个建议:果断删掉 model 中定义的那个 dao 对象,不要再这样用了

2016-09-03 21:09

当一个对象用了 static 修饰,变成了全局共享变量,就必须要注意线程安全问题,而 dao 中的查询方法获取到的数据全部是 new 出来的,所以是线程安全的。

由于一些 jfinal 用户还没有掌握基本的线程安全知识,所以 jfinal 官方在未来出的任何 demo 也好,开源项目也好,都会完全删除 Model 中的 dao 对象,让你没法再犯这个错误

2016-09-03 21:07

@java180 手册 5.3 中的例子,User.dao 后面紧跟的是一个查询方法,而不是 set、update、save 方法。原因是 dao 对象是 static 修饰过的,那么地方面使用 User.dao.save()、update()、set() 之类的方法时,都是共享的这一个 dao 对象,假如线程 A 往里面 set 一个值进去,线程 B 再 save() 或者 update()这样数据就乱套了,这个是最基本的 java 线程安全问题

2016-09-02 20:20

@不懂程序 换成 DruidPlugin,不要再使用 C3p0Plugin。此外,打印 DEBUG 级别的日志是配置问题,下载 jfinal demo ,直接且里面的 log4j.proerties 文件即可

2016-09-02 13:59

没有内置,我前面所说的:“_patinate.html 所使用的 css 文件“ 是指 jfinal demo 项目中的 WebRoot 目录下 css 子目录下的 manage.css 文件

2016-09-02 13:47

如果只改样式,只需要改下 _patinate.html 所使用的 css 文件

2016-09-02 13:34

通常这是前端的事,如果你是全栈开发者也可以自己做