有时我们需要随机地获取数据记录(实体),比如博客程序中的“随机文章”的实现。

目前 GAE 并没有 API 可以直接获取随机实体,要实现这样的需求我们只能自己想办法了 :-)

在 stackoverflow 上也有人提过该问题,总结如下:

  • Generate and store a random number on your entities as you create them, then pick a random number and look (via a query) for the closet record(s) to it.
  • Implement some mechanism to ensure your entity ids are "densely" populated, then fetch within the known range using keys.
  • Periodically generate random lists of the entities and return entities from those lists. This may take the form of a stack that entities are popped off of, or as actual lists that are returned.

目前 B3log Solo 在处理“随机阅读”上采用的是方法一,即在每个文章实体上添加一个属性保存 0-1 的随机浮点数。

在获取随机文章时生成一个 0-1 的随机数(mid)作为查询条件,以此查询条件作为边界(0 <= mid <=1)来过滤实体保存的随机值属性。

这个方法基本可以达到随机的效果了,为了让随机的效果更动态一点,我们可以考虑经常更新文章实体中的随机浮点值:

  • 访问文章时(即在更新文章浏览次数时一并更新该文章的随机浮点值)
  • 后台定时任务(获取一定数量的随机文章然后更新它们的随机浮点值)
  • 用户做文章更新时

加上以上处理后,随机的效果比较好了 :-)

本文是使用 B3log Solo 从 简约设计の艺术 进行同步发布的
原文地址:http://88250.b3log.org/get-gae-random-entities.html

转载于:https://www.cnblogs.com/lanzhi/archive/2011/01/10/6468264.html

GAE 随机获取实体相关推荐

  1. 微信小程序云数据库触底分页加载,下拉无限加载,第一次请求数据随机,随机获取数据库的数据

    效果图 小程序云开发分页加载代码 <!--pages/chatList/chatList.wxml--> <view class="pageTitle">家 ...

  2. mysql每组随机一条_MySql分组后随机获取每组一条数据的操作

    思路:先随机排序然后再分组就好了. 1.创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAUL ...

  3. mysql高效率写法_mysql高效率随机获取n条数据写法

    今天做项目遇到这个问题,本来想用mysql自带的随机函数来实现,但是想到这样做功能是实现了,但是效率真的好差!一下子想不到好的方法,就去网上找了一下,记录下来,好好研究学习一下. ID连续的情况下(注 ...

  4. 使用 SQL 语句从数据库一个表中随机获取一些数据

    以前从一个表中随机获取数据的时候,都是先把数据读取到来, 然后再在程序中来随机抽取一部分数据, 今天告诉大家一种使用 SQL 语句的方法来随机获取一部分数据 SQL Server: -- 随机获取 1 ...

  5. qtp web随机获取下拉框的值

    1.先顶一个随机获取数的函数 Function GetList(i)    randomize    GetList=RandomNumber(0,i) End Function 2.以下就是纯代码了 ...

  6. Hibernate随机获取指定范围内的指定条目的记录

    下面这段代码是我最近写项目用到的,功能是查找用户列表 限制条件是:指定用户周边.条数限制.随机获取.指定范围 public List<User> listUserByLocation(St ...

  7. mysql 随机分组_MySql分组后随机获取每组一条数据的操作

    MySql分组后随机获取每组一条数据的操作,数据,效率,时间,李四,条数 MySql分组后随机获取每组一条数据的操作 易采站长站,站长之家为您整理了MySql分组后随机获取每组一条数据的操作的相关内容 ...

  8. Oracle 随机获取N条数据

    Oracle 随机获取N条数据     当我们获取数据时,可能会有这样的需求,即每次从表中获取数据时,是随机获取一定的记录,而不是每次都获取一样的数据,这时我们可以采取Oracle内部一些函数,来达到 ...

  9. java map 随机取值_随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value...

    利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一 ...

最新文章

  1. Activity Recognition行为识别
  2. 面向对象编程 object oriented programming(OOP)
  3. 分享几种绕过防注入的方法
  4. 【Ubuntu】Linux系统( ubuntu )安装方案
  5. Android开发之微信支付获取签名小工具分享
  6. 设计数据密集型应用程序_设计数据密集型应用程序书评
  7. linux c之strncpy函数和strncmp函数最简单使用总结
  8. ssl1763-观光旅游【最小环,Floyd,dijkstra】
  9. 在php中创建三个表格,创建新工作表PHPExcel
  10. html设置json请求头,当我想在zf2客户端代码中使用“application/json”时,接受请求标头是“text/html,application/xhtm ...(etc)”...
  11. python htmltestrunner报告_python3使用HTMLTestRunner生成测试报告
  12. 改变自己就是改变世界的开始
  13. 2021年下半年《信息系统项目管理师》真题
  14. 表白代码,浪漫网页-JavaScript的应用
  15. Tomcat原理整理
  16. CentOS系统下载阿里yum源
  17. java:comp/env 解释
  18. 供应链金融的三种业务模式
  19. 挖掘Dark Sky Maps(热的要死后,疯传的一个气温地图网站)
  20. Excel中提取单元格中的部分内容或单元格中的数字公式大全(提取数字,提取前几位,提取指定文字之间的内容等等)

热门文章

  1. 最大权闭合图hdu3996
  2. Android JNI和NDK学习(5)--JNI分析API
  3. 23种设计模式之简单工厂
  4. Android启动initlogo.rle制作
  5. 面经——Linux相关
  6. python实现50行代码_50行Python代码,教你获取公众号全部文章
  7. 用于计算的计算机主机,一种用于区块链计算的计算机主机的制作方法
  8. js将docx转换为html,js 将word转换Html
  9. php 三方即时通讯_php即时通讯解决方案-请问PHP能否实现即时通讯?
  10. 最详细的Mac下安装nacos教程来了