Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – Google App Engine – 太多数据存储读取操作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经通过Google App ENGIne为我的 Android应用程序实现了在线排行榜.但在2小时后,我在“数据存储区读取操作”中达到了100%的配额.任何人都可以帮我@L_618_2@我的代码以减少读取操作吗?
这是我的代码

public class The_Big_Bang_Theory_Quiz_HighscoreserverServlet extends httpServlet {
public void doGet(httpServletrequest req,httpServletResponse resp) throws IOException {
    String game = req.getParameter("game");
    String name = req.getParameter("name");
    String pointsStr = req.getParameter("points");
    String behaviorStr = req.getParameter("behavior");
    int behavior = 0; // 0 = upload,1 = download
    if (behaviorStr != null) {
        try {
            behavior = Integer.parseInt(behaviorStr);
        } catch (numberFormatException E) {
            behavior = 0;
        }
    }
    if (behavior == 0) {
        int points = 0;
        if (pointsStr != null) {
            try {
                points = Integer.parseInt(pointsStr);
            } catch (numberFormatException E) {
                points = 0;
            }
        }
        if (points > 0 && name != null) {
            addHighscore(game,name,points);
        }
    } else {
        String maxStr = req.getParameter("max");
        int max = 1000;
        if (maxStr != null) {
            try {
                max = Integer.parseInt(maxStr);
            } catch (numberFormatException E) {
                max = 1000;
            }
        }
        returnHighscores(resp,game,maX);
    }
}

private void returnHighscores(httpServletResponse resp,String game,int maX) {
    Datastoreservice datastore = DatastoreserviceFactory.getDatastoreservice();
    Key gameKey = KeyFactory.createKey("game",gamE);
    Query query = new Query("highscore",gameKey);
    query.addSort("points",Query.sortDirection.DESCENDING);
    List<Entity> highscores = datastore.prepare(query).asList(FetchOptions.builder.withLimit(maX));
    for(Entity e : highscores) {
        try {
            resp.getWriter().println(e.getProperty("name") + ";" +e.getProperty("points"));
        } catch (IOException exC) {
            exc.printStackTrace();
        }
    }
}

private void addHighscore(String game,String name,int points) {
    Datastoreservice datastore = DatastoreserviceFactory.getDatastoreservice();
    Key gameKey = KeyFactory.createKey("game",gamE);
    Entity highscore = new Entity("highscore",gameKey);
    highscore.setProperty("name",@R_489_8313@;
    highscore.setProperty("points",points);
    datastore.put(highscore);
}
}

我读了一些关于BlobStore的内容.这是一种更好的方法吗?

解决方法

我有同样的问题,我使用GEA的缓存机制来解决问题.
基本上,Cache是​​分布式Hasmap

一些代码
创建地图:

try {
            cache = CacheManager.geTinstance().getCacheFactory().createCache(
                    new ConcurrentHashMap<String,Category>());
        } catch (CacheException E) {
            Logger
                    .getLogger(TipsDAO.class.getName())
                    .severe(
                            "unable to cretate cache using an internal ConcurrentHashMap");
            cache = new ConcurrentHashMap<String,Category>();
        }

对于每个阅读弹出,您首先检查地图,如果您发现我返回,如果您没有找到它,您从数据库中读取并在返回之前将其放入地图中.

if (cache.containsKey(cat)) {
            return (Category) cache.get(cat);
        }
        try {
            Query query = entitymanager
                    .createQuery("SELECT FROM Category WHERE name = ?1");
            query.setParameter(1,cat);
            Category temp = (Category) query.getSingleResult();
            cache.put(cat,temp);
            return temp;
        } catch (Exception E) {
            LOG.severe(e.getmessage());
            return null;
        }

对于DB的每个写操作,您也可以写入Map

cache.put(cat.getName(),cat);

大佬总结

以上是大佬教程为你收集整理的android – Google App Engine – 太多数据存储读取操作全部内容,希望文章能够帮你解决android – Google App Engine – 太多数据存储读取操作所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。