下载此文档

WEB开发.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
WEB 开发 u2// ,数据库用得是 ,数据库缓存是构架在 hibernate 之上的,是一个只有 794 行的 java 类, 但这个 java 类却做了数据库对象缓存、列表缓存、 update 缓冲、自动删除列表缓存,还提供了数据库查询、更新、插入的所有操作, 它节省了我一半以上的开发时间。一个获取含有五个查询条件获取列表的方法只用不到 10 行代码就可以了。【增加: 现在我已经把这个数据库操作工具改成分布式了,可以随便增加 java 应用服务器实现负载均衡, 并且各服务器之间可以实现缓存同步, 这样, 即使每日用户达到百万级别, 我的构架也是可以支持的, 我将在下面详细说明我的构架, 仅供参考。许多人要求我开源, 我觉得现在系统还没有经过大规模用户的并发验证, 还不是时候, 以后我会考虑开源的, 我的代码没有太多高深的算法和设计模式, 主要用到了模板模式, 但全是用心写出来的。问题一:做数据库缓存时遇到的问题。 HashMap 在并发遍历时会报 ConcurrentModificationException ,即使使用 把 Map 包起来还是会报这个异常, 这个问题很简单, 解决办法也简单。第一种解决办法是不要用 Map 的 iterator 来遍历,而是用 Set ( 方法)的 toArray 方法来遍历,这种办法虽然会损耗一定的性能和内存,但比在方法前加 synchronized 好得多;第二种解决办法用 以后的 ConcurrentHashMap 来实现。【修正:经过测试和验证,第一种方法不行,也就是并发操作 MAP 而且要求遍历的时候只能用 ConcruuentHashMap ,在此要感谢写 ConcurrentHashMap 的专家们。】【增加: 数据库的缓存有很多种办法, 对于单个对象的缓存比较容易, 直接用 HashMap 都可以, 但是对于列表的缓存就比较复杂了, 网上说到的 memcachedb+memcache_engin e或者 berkeleyd b 应该都是做不到列表自动缓存, 因为增加一条记录后会影响许多列表的排序, 所以什么时候删除列表缓存是个比较头痛的问题, 我的解决办法是列表的缓存的 key 便包含了查询条件信息。如一个表 T 有字段 A,B,C ,对应 有域 A,B,C ,那么查询一个 A=1 and B=2 and C>0 的组合条件的列表的 key 就是 A=1#B=2#C>0 ,这样,如果增加了一个对象 T, 其中 =1 , =3 , =0 , 显然上面列表查询条件包含了条件 B=2 , 而增加的对象 B=3 , 那么无论如何这个新增加的对象 T 都不可能在这个列表中,也就是说不用删除这个列表,只有增加的对象 T满足 =1 、 =2 、 >0 时该列表才需要重新从数据库中获取, 以此可以推出更新、删除一个 T 对象时什么时候需要删除什么列表。】【增加: 至于分布式, 我用到了 memcached 来做远程缓存, 利用 UDP 报文来保持各服务器之间的缓存同步。如获

WEB开发 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人fy5186fy
  • 文件大小0 KB
  • 时间2016-06-24
最近更新