一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种通过权重算法实现页面组件自动排序的方法与流程

2022-04-06 20:30:42 来源:中国专利 TAG:


1.本发明涉及页面渲染技术领域,具体一种通过权重算法实现页面组件自动排序的方法。


背景技术:

2.传统的页面渲染,是程序开发的时候就在预定的位置埋下了相应的组件,且每个用户的界面上每个组件的显示顺序都是一致的。既不能做到在页面需要更改时及时更新调整;又不能做到各页面组件的复用,导致代码重复度高;且无排序规则更不能对每个用户的界面进行定制化,用户页面单一将导致对于用户比较在意、重点关注的功能不能做到针对性的显示,不能把用户最常用的功能放在相对更醒目的位置,且单一的界面容易造成审美疲劳。


技术实现要素:

3.为了克服现有技术种存在“页面不能及时更新、组件复用性差、无排序规则且页面单一”等缺陷,本发明提供了一种通过权重算法实现页面组件自动排序的方法,实现组件的随意拖动及自动排序,从而使页面的多样化。具体技术方案如下:
4.一种通过权重算法实现页面组件自动排序的方法,通过管理端及app端实现;具体实现方法如下:
5.s1、管理端设定组件库及预览视图模块,组件库内包含多个组件,根据业务场景,分别对该些组件设定一个基础权重值a,所有组件的基础权重值相加为1;
6.s2、映射关系的制定:定义不同字符串格式的type值分别对应不同组件,每种type都对应一个json对象,json对象中既包含表示基础权重的α,也包含app端具体渲染所需的decoration字段;
7.s3、原始json数组数据的生产:在管理端,将多个组件从组件库拖拽移动到预览视图模块处,预览视图模块处根节点root拥有相应的子元素,通过遍历root节点,以及根据映射关系把每个节点转成json对象push到json数组中;把json数组上传到服务器上形成原始数组供app端获取;
8.s4、app端进入页面后,向服务端发送请求获取原始json数组,并根据权重算法重新自动排序;
9.所述权重算法实现方法如下:
10.1)取出原始json数组数据中的基础权重值α;
11.2)获取随机系数β:app端通过β=1 math.random()方法生成一个范围在1-2之间的随机数。这个范围能保证最终的排序有一定随机性,同时当2个组件的有效点击次数太过悬殊时不至于去把这个差距弥补回来从而导致失去用户优先的效果;
12.3)获取有效点击权重γ;先给定初始基础有效频率c为大于5的整数,其次每产生一次有效的点击次数,有效点击频率u就加1;有效点击权重γ=u c。对每个具体的组件来
说,有效点击次数的定义并不一样。搜索栏的有效点击次数指搜索的次数,其他组件的有效点击次数指点击并在跳转后的新页面停留操作5s的时间,因为停留时间太短大概率是用户误触或者用户不清楚这个组件功能的情况由于好奇点击的,并不能算作有效的点击次数。同时我们把γ的值保存在sqlite数据库中,下次进去app将获取存储的γ值;
13.4)根据a=α*β*γ,计算每个组件的最终权重a;将多个组件的权重值分别记为a1,a2,a3,...对于新用户,未进行过有效点击操作的用户来说,此算法仍然有效,γ为初始设定值,仍然存在随机性。
14.5)将权重a1,a2,a3,...通过java中的comparable接口进行从大到小的排序,得到最终的json数组;
15.6)把最终的json数组反映射,在界面上把依次各组件渲染出来。app端渲染组件的具体方式由开发者自由渲染。理论上存在3628800种排序方式,这样基本能保证不同的用户得到了不同的界面,达到千人千面效果。
16.本发明的有益效果为:1)管理端的可拖拽式方案,操作简单,非开发人员就可完成;2)页面丰富,组件预定范围内若要上线新版本无需更新app,节约开发时间;3)排序算法的合理性。α意味着预定的排序顺序,β意味着可变性,γ意味着用户心中的排序,最终的值a=α*β*γ既考虑到预定规则,又兼顾用户的感受,更增加一定的随机性。4)理论上来说总共排列有10!=3628800种,基本能保证每个用户的界面不一样,丰富感受,达到千人千面。5)本排序的意思本质是我(预定规则)、你(用户使用频率)、它(随机性),其思想可以借鉴到其他领域中。
附图说明
17.图1为本发明的管理端示意图;
18.图2为本发明的实现页面组件自动排序的流程示意图;
19.图3为本发明的权重算法的流程示意图。
具体实施方式
20.一种通过权重算法实现页面组件自动排序的方法,通过管理端及app端实现;
21.1、管理端设定组件库及预览视图模块,组件库内包含10个组件,根据业务场景,分别对该些组件设定一个基础权重值a,其中:搜索栏(α为0.2)、图片广告(α为0.15)、基础卡片(α为0.15)、标题卡片(α为0.1)、橱窗卡片(α为0.1)、分类卡片(α为0.1)、地区精选(α为0.05)、商品橱窗(α为0.05)、附近美食(α为0.05)、专题导航(α为0.05);
22.2、映射关系的制定:定义10种字符串格式的type值分别对应10种组件,type字符串可自由定义,每种type都对应一个json对象,json对象中既包含表示基础权重的α,也包含app端具体渲染所需的decoration字段;
23.3、原始json数组数据的生产:管理端,由h5/js/css语言开发,指定div属性draggable="true"则组件可拖动;将10个组件分别从组件库拖拽移动到预览视图模块处,预览视图模块处根节点root拥有相应的10个子元素,通过document.documentelement获取dom根节点root并遍历,通过遍历每个节点,以及根据映射关系把每个节点转成json对象push到json数组中;把json数组上传到服务器上形成原始数组供app端获取;
24.4、app进入页面后,向服务端发送请求获取原始json数组,并根据权重算法重新自动排序;
25.所述权重算法实现方法如下:
26.1)取出原始json数组数据中的基础权重值α;
27.2)获取随机系数β:app端通过β=1 math.random()方法生成一个范围在1-2之间的随机数。这个范围能保证最终的排序有一定随机性,同时当2个组件的有效点击次数太过悬殊时不至于去把这个差距弥补回来从而导致失去用户优先的效果;
28.3)获取有效点击权重γ;先给定初始基础有效频率c为20,其次每产生一次有效的点击次数,有效点击频率u就加1,有效点击权重γ=u c。对每个具体的组件来说,有效点击次数的定义并不一样。搜索栏的有效点击次数指搜索的次数,其他组件的有效点击次数指点击并在跳转后的新页面停留操作5s的时间,因为停留时间太短大概率是用户误触或者用户不清楚这个组件功能的情况由于好奇点击的,并不能算作有效的点击次数。同时我们把γ的值保存在sqlite数据库中,下次进去app将获取存储的γ值;
29.4)根据a=α*β*γ,计算每个组件的最终权重a;将10个组件的权重值分别记为a1,a2,a3,...a10;对于新用户,未进行过有效点击操作的用户来说,此算法仍然有效,γ为初始值20,仍然存在随机性。
30.5)将权重a1,a2,a3,...a10通过java中的comparable接口进行从大到小的排序,得到最终的json数组;
31.6)把最终的json数组反映射,在界面上把依次各组件渲染出来,app端渲染组件的具体方式由开发者自由渲染。理论上存在3628800种排序方式,这样基本能保证不同的用户得到了不同的界面,达到千人千面效果。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献