利用系统内存的一个小技巧
来源:互联网 发布:淘宝延长收货是几天 编辑:程序博客网 时间:2024/06/05 04:42
需求是这样的:
offer表:offerId,offerName
source表: sourceId,sourceName,offerId
source表中关联了了offer表的offerId,但是在做展现的时候并不能直接展现id,要把offerName展现在界面上,那就得通过source表里的id查offer,也就是说每次进source的展示界面的时候不仅要访问一次source表还要访问一次offer表,而且要根据每条source记录的id一个个查出来offer,数据库访问次数瞬间翻倍。
解决方案:
在sourceAction中设置一个静态map来缓存offer,如果在条件不改变的情况下,就只需查一次数据库就可以,如果offer那边有改动,比如某个offer的name被修改了,就只需清一个静态缓存就可以,再对数据库查询一次。这样避免了每次进入source展现页面都要查询offer表的麻烦。
代码:
public class Offer { private Integer offerId; //提供者Id private String offerName; //提供者
public class Source { private Integer sourceId; //Id private String sourceName; //数据源代码 private Integer offerId; //提供者ID
public class OfferAction implements ActionSupport{ @Autowired private OfferManager offerManager; public void save(Offer offer){ offerManager.save(offer); SourceAction.clearCache();//offer有修改或删除时都要清除缓存; }}
public class SourceAction implements ActionSupport{ @Autowired private SourceManager sourceManager; @Autowired private OfferManager offerManager; private static Map<Integer, String> offerMap = new HashMap<Integer, String>(); //提供清除静态缓存的方法 public static void clearCache() { offerMap.clear(); } public String execute(){ //source表的查询省略 //下面把offer放入静态Map if (offerMap.isEmpty()) { Map<String, Object> queryMap = new HashMap<String, Object>(); List<Offer> offerList = offerManager.find(queryMap); for (Offer offer : offerList) { offerMap.put(offer.getOfferId(), offer.getOfferName()); } } //下面需要offer的地方直接从offerMap里拿 }}
其实方法很简单,就是用静态Map缓存需要的数据。但碰到有循环取值的情况,这种方法还是能很有效的减少数据库访问次数提高程序运行速度的。
0 0
- 利用系统内存的一个小技巧
- 一个完善的小内存管理系统.
- 利用with关键字写sql语句的一个小技巧
- 的一个小技巧
- 利用urlbase64的小技巧
- XP不用登录密码进入系统的一个小技巧
- 内存管理的小技巧
- 一个去年写的小tips,一个利用CruiseControl.NET做baseline的技巧, in english.
- 一个.net的小技巧
- JbossIDE的一个小技巧
- printf的一个小技巧
- WinRAR的一个小技巧
- AutoCAD的一个小技巧
- CTreeCtrl的一个小技巧
- python的一个小技巧
- Xshell 一个小的技巧
- mstsc的一个小技巧
- 提升android开发的小技巧-利用系统自带脚本.
- 使用反射特性获取类的访问权限
- [TwistedFate] NSDictionary NSSet
- 基于QML开发的二维码生成的QML插件
- React入门:关于JSX语法
- SurfaceView绘制触摸轨迹闪烁问题的最终解决方案
- 利用系统内存的一个小技巧
- Android开发&个人常见问题汇总
- 通过Spring配置JNDI数据源
- lua几点注意和脚本操作gui文件
- 接口自动化初试(一)
- Oracle中的递归总结
- 如何远程登录计算机
- 五大常用算法之一:分治算法
- 新闻上下滚动jquery 超简洁