又一个2W+的答题抽奖活动,复盘复盘总结总结

news2024/11/16 1:45:07

又一个2W+的答题抽奖活动,复盘复盘总结总结

前段时间太忙了,现在才有时间对一些活动进行复盘总结,这里先对其中一个答题抽奖活动进行复盘总结一下。遇到的一些问题、分析以及其解决方案。

 

 

 

答题+抽奖

参与者每答对一道题既可获得相对应的分数,分数进行累计达到活动规定的分数后即可参与抽奖,通过奖励的方式刺激用户参与活动。

答题抽奖规则:用户需要在规定的时间点才可以答题,非活动开放时间点进入活动也无法参与。给到充足的活动预热时间,让更多用户参与到活动中,在每场的答题时间内用户答对设置的所有的题目,即可有机会获得抽奖奖品。

 

 

抽奖核心算法

基于云开发的聚合能力上进行封装实现。如果现在进行抽奖活动,需要选出一名幸运用户。那么使用云开发的聚合方法 sample,可以轻松实现这样的一个场景。

比如,如果现在进行抽奖活动,需要选出一名幸运用户。可以使用聚合Aggregate.sample(size: number)实现,那么 sample 的调用方式如下:

db.collection('users') .aggregate() .sample({ size: 1 }) .end()

返回了随机选中的一个用户对应的记录,结果如下:

{ "_id": "696529e4-7e82-4e7f-812e-5144714edff6", "name": "b" }

 

关于服务器资源费用开销

这次活动,我选了基础套餐+按量付费,总的下来服务器资源开销也就一百几十不等。具体可以看看官方的计费方式和标准。其实服务器资源总开销,还得看访问人数和访问次数,比如同样的2W+人参与答题抽奖活动,但是人均访问的次数翻倍,那么资源消耗也差不多翻倍了的。

 

 

1、答题过程中的白屏问题

由于题库的题量实在太大了,一次性加载setData或者多次concat后setData,其实它俩都是一次性setData,这样就会造成加载超大数据无法渲染空白的问题。

问题问题

setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

文档中写的是单次设置,但咋使用过程中发现分批次设置达到这个值也依然无法渲染数据,此时的解决方案,一般就是只显示能渲染的条数,或改成翻页,不能无限加载更多,从此看来,还是不够理想,查了半天没有找到答案,特此把解决方案分享给大家。

 

解决办法

通过设置数组下标(二维数组),实现每次只setDate新加载的数据。

data:{
  pageNo:0,
  list:[]
},
 
getListData:function(){
  let arr = [];
  ......// 本次加载的数据赋值给arr
  setData({
       ['list[' + pageNo + ']']: arr
  });
}

<!--wxml-->
  <view wx:for="{{list}}" wx:for-item="item" wx:key="{{index}}">
    <view wx:for="{{item}}" wx:for-item="ele" wx:key="{{indexEle}}">
    	<text>ele.xxx</text>
    	<text>ele.xxx</text>
    </view>
  </view>
 

2、导出成绩排名时遇到的问题

我作为这次答题活动小程序的开发者,应对方要求,比赛结束后,导出的要素要包含排名、参赛编码、所属赛区、分数、用时、答题日期这些信息。

在这次知识竞赛活动结束后,将排行榜数据导出为excel,打开查看,发现了一个问题,看见答题日期与实际相差8小时,这显然是有问题的。既然发现了问题,那就需要解决问题了。

分析问题

云函数中的时区为 UTC+0,不是 UTC+8,在云函数中使用时间时需特别注意。如果需要默认 UTC+8,可以配置函数的环境变量,设置 TZ 为 Asia/Shanghai。

解决办法

打开云开发控制台

 

配置函数的环境变量

 

这样,然后重新导出的数据就正常了。

3、关于学时

参训人员学习时,系统将记录全部学时。因系统后台处理大量数据需要一定时间,有时不能及时反馈至用户端,可能出现学时没有及时显示、学习状态没有改变的情况,待下次登录时系统将更新相关数据。

4、关于系统卡顿

由于前期参与人数较多,系统处理信息能力不足,有时会出现卡顿现象。目前系统已完成升级改造,将有效提升流畅度。

5、数组push时被覆盖

这是一个数据库读取事件,actLine被加值后,在下次开启加值时,会将之前加的值替换,但对原本的值无影响,即几次push后,所有push的值都会变成最后一次push的值。

解决办法:

if(res.data.length != 0){   //查询成功时
   for(let i = 0; i < res.data.length; i++){
        obj.title =  res.data[i].title
        obj.host =  res.data[i].host
        actLine.push(Object.assign({}, obj)) 		//采用Object.assign将obj置于对象中再push给actLine
        console.log(i,actLine) 
}

6、还有一些兼容问题:

1、IOS 的 Date 构造函数不支持2018-04-26这种格式的日期,必须转换为2018/04/26这种格式;

2、image组件使用webp图片时,IOS需要设置webp属性;

3、Android手机在onShow内调用wx.showModal,如果不关闭弹窗(直接点击右上角退出小程序),弹窗不会销毁,再次进入页面触发onShow时会出现两次弹窗,IOS正常;

4、小程序中使用web-view打开pdf, IOS 可以正常打开,Android 打开为空白;

常见使用问题解答

除了一些程序系统本身的bug,还有一些用户在使用上遇到的问题,因为有的用户是第一次使用线上答题,所以还不太会用是可以理解的。在此对常见问题进行一一解答。

1、题目做错了,想再次巩固怎么办?

可点击“错题记录”,然后去错题记录里面去消除错题,最终达到巩固的效果。

2、经典题目,想多次练习,怎么办?

可点击题目下方“收藏”按钮,然后在“题目收藏”中查看!

3、已做题目想重复学习,去哪看?

点击“答题记录”即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是 Schnorr 签名?

在密码学中&#xff0c;Schnorr 签名是由 Schnorr 签名算法生成的数字签名。 与大多数区块链不同&#xff0c;BTC自其早期以来基本保持不变&#xff0c;大多数升级都是有限的&#xff0c;并旨在增强网络的效率而不是功能。BTC协议的更新是非常罕见的&#xff0c;并且通常用于技…

华为云赋能云:聚焦产数融合,深化数字赋能

编辑&#xff1a;阿冒 设计&#xff1a;沐由 假如你是一家制造企业的老板&#xff0c;一定会觉得近期的日子不太好过&#xff1a;国家统计局最新公布的数据显示&#xff0c;4月份制造业采购经理指数&#xff08;PMI&#xff09;为49.2%&#xff0c;较上月下降了2.7个百分点。 市…

I/O控制方式

目录 一、程序查询方式 1.程序查询流程 2.程序查询接口结构 3.案例习题 四、优缺点 二、程序中断方式 1.中断的概念 2.流程图 3.案例习题 三、DMA方式 1.DMA传送过程 2.DMA与主存交换数据的三种方式 3. 与中断程序处理的区别 4.案例习题 一、程序查询方式 1.程序…

C++中pair用法

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;CSTL 前言&#xff1a;Hello各位小伙伴们好&#xff01;欢迎来到本专栏CSTL的学习&#xff0c;本专栏旨在帮助大家了解…

使用FFMPEG进行音频重采样

准备 1. ffmpeg 4.4 2. sdl2 3.一段原始的音频PCM数据 重采样流程 1.设置输入音频参数和输出音频参数 2.根据设置的参数初始化SwrContent上下文 3.创建一个输入buffer, 根据输入的音频参数&#xff08;采样率&#xff0c;通道数&#xff0c;样本位深度&#xff09;申请空间…

机器学习项目实战-能源利用率 Part-3(特征工程与特征筛选)

博主前期相关的博客可见下&#xff1a; 机器学习项目实战-能源利用率 Part-1&#xff08;数据清洗&#xff09; 机器学习项目实战-能源利用率 Part-2&#xff08;探索性数据分析&#xff09; 这部分进行的特征工程与特征筛选。 三 特征工程与特征筛选 一般情况下我们分两步走…

李彦宏一句“车水马龙”,中国AI的一幕天地宽广

“什么叫生成式&#xff1f;比如说&#xff0c;给我画一幅车水马龙的图片。这种东西&#xff0c;过去人们不觉得是人工智能应该做的事&#xff0c;现在可以做了。”5月18日&#xff0c;百度CEO李彦宏在天津举办的第七届世界智能大会上演讲时&#xff0c;说了这么一句话。 不了解…

保护你无价的数据 | 推荐一个开源备份工具,可去重、增量、压缩、还原到特定日期...

Borg 数据备份 Borg 的优势是 高效&#xff1a;BorgBackup 会将文件按数据块去重&#xff0c;只有改动的数据块才会被备份。一个 25 GiB 的虚拟机磁盘文件&#xff0c;只改动了 1 GiB&#xff0c;那就只会新增备份这 1 GiB 的数据&#xff1b;高速&#xff1a;核心算法使用 C 编…

5-《Kotlin》

5-《Kotlin》 1.kotlin基础&#xff1a; From Java To Kotlin2.Kotlin 的延迟初始化: lateinit var 和 by lazy1.lateinit var2.by lazy 3 Kotlin Tips:怎么用 Kotlin 去提高生产力&#xff08;kotlin优势&#xff09;Tip1- 更简洁的字符串Tip2- Kotlin中大多数控制结构都是表达…

[RapidOCRWeb] 桌面版使用教程

引言 说明&#xff1a;桌面版指的是可以直接解压&#xff0c;双击即可运行的版本。通俗来说&#xff0c;对rapidocr_web做了打包&#xff0c;将相关依赖全部放到一个zip包中&#xff0c;不需要本地有额外的环境&#xff0c;降低使用门槛。下面会以Windows版为例&#xff0c;作…

LeetCode 1373. 二叉搜索子树的最大键值和

【LetMeFly】1373.二叉搜索子树的最大键值和 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/ 给你一棵以 root 为根的 二叉树 &#xff0c;请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下&#xff1a; 任意节点的…

pandas---数据处理(excel文件)

近期在弄一个项目的前期数据&#xff0c;所以总结了一下&#xff0c;内容如下&#xff08;以下以csv文件为例&#xff09; 1. DataFrame常用操作1.1 DataFrame去除空行&#xff08;1&#xff09;对于一般空行&#xff08;2&#xff09;对于列表式&#xff08;list&#xff09;空…

Redis(二)对事务进行操作及Jedis

系列文章目录 Redis入门笔记&#xff08;一&#xff09;&#xff1a;Redis在Linux下安装和八大数据类型 文章目录 系列文章目录前言Redis对事务进行操作开启事务&#xff1a;multi执行事务&#xff1a;exec放弃事务&#xff1a;discard编译型异常&#xff08;命令错误&#xf…

信息安全-数据安全-字节大数据平台安全与权限治理实践

导读&#xff1a;本次分享题目为字节跳动大数据平台安全与权限治理实践&#xff0c;文章会围绕下面四点展开&#xff1a; 字节大数据安全体系现状和难点 细粒度权限管控和治理 资产保护能力 数据删除能力 分享嘉宾&#xff5c;许从余 火山引擎 数据平台产品经理 编辑整理&#…

Spring 5 笔记 - 新功能

1. Spring 5 框架新功能 整个Spring 5 框架的代码基于Java8&#xff0c;运行时兼容JDK9&#xff0c;许多不建议使用的类和方法在代码库中删除。Spring 5.0 框架自带了通用的日志封装 &#xff08;1&#xff09;Spring 5 已经移除 Log4jConfigListener&#xff0c;官方建议使用…

立创EDA标准版指南1-原理图与封装库

立创 EDA 标准版 由于立创 EDA 新版本改了对应术语&#xff0c;这是对于的表格&#xff1a; 原理图库->符号 PCB 库->封装 PCB 3D 库->3D 模型 下面的全部讲述将依据旧版称呼&#xff0c;因为更直观&#xff0c;新版称呼模棱两可并且与 AD 的工程架构差别较大 这是…

数据分析11——Pandas中数据偏移/数据切分/数据结构转换

数据偏移&#xff1a; 1、shift函数&#xff1a; 在 Pandas 中&#xff0c;shift 函数用于将数组的数据向前或向后平移指定的步数。它可以应用于 Series 或 DataFrame 类型的数据中&#xff0c;并返回一个平移后的新数据结构&#xff0c;其中每个元素都被取代为原始序列中对应…

kubernetes根据podName获取对应的主机pid

获取指定的podName kubectl get pods -n demo -owide登录对应的主机执行docker命令,获取到容器的id docker ps | grep PODNAME拿到的容器id&#xff0c;执行如下命令 获取容器的长的容器id docker inspect container_id找到容器id后 执行 apt-get install jq cat /var/lib…

关于Word文档的处理【笔记】

关于Word文档的处理【笔记】 前言推荐关于Word文档的处理一、解压word如何恢复1 准备2 解压3 恢复 二、对word文档进行图片替换1 首先解压word文档2 进入word文档存放图片的路径3 批量给图片添加水印4 替换原来的media文件5 压缩为docx文件6 打开 最后 前言 2023-5-20 11:00:1…

uniapp 快手授权登录,发布、编辑、裁剪图片和视频,分享 Ba-Kwai

简介&#xff08;下载地址&#xff09; 快手授权登录&#xff0c;发布、编辑、裁剪图片和视频&#xff0c;一键智能裁剪&#xff0c;分享私信&#xff0c;打开用户主页&#xff0c;挂载小程序等。自带选择图片和选择视频方法。 抖音授权登录、发布、分享 Ba-Aweme&#xff08…