最近做一个直播视频app源码的邀请码功能,一直没找到感觉很完美的方法,然后自己造了一个轮子,当然效果还不是很完善。

首先我认为直播视频app源码的邀请码需要有以下特性:

1、唯一性,不能出现两个场景下生成一样的邀请码。

2、不规律性,至少在字面上不能猜出规律来。

3、高效性,生成邀请码的算法不能太过复杂,或者太消耗性能。

思路:

理论上用时间戳生成的数字串基本上是唯一的,如果经过一定规则的打乱顺序,然后进行字母映射的话,字面上的规律还是不怎么可能直接看出来的。但是时间戳有一个不好的地方,就是长度太长了,当前我想要使用的场景下,邀请码推荐是生成6位的,6位用完了才会去使用更长的。此外,对于长度短的随机算法,出现冲突,去重的过程不管从空间上还是时间上去解决都一定程度上消耗性能。

所以,我希望找到一个算法,能每次都直接生成长度优先在6位,而且唯一的邀请码。

当然,凭空直接生成邀请码肯定会冲突,生成邀请码这里可以输入一个唯一的依据。比如说,我使用了当前是第几个邀请码。

这样就类似于,y=f(x),输入的x是整数序列1、2、3、4......,输出的y是一段优先为6位的邀请码。但是f函数的映射不是事先生成好的,这样的话会占空间,这里希望是在线生成。

步骤:

网上找了一些很好的混淆规律的点,比如:数字转36进制包含字母的串(然后把36进制中映射的字母和数字顺序打乱)、数字顺序按照一定规则打乱等。于是我按照了以下步骤生成邀请码。

步骤一(打乱数字顺序):首先输入的序列x是唯一的,假设我的邀请码最短长度MIN_LENGTH是6,那么我先把x转成长度至少为6的数字串,不足6位的高位补0。然后,对低6位按照一定规则进行打乱,比如固定的交换第4位和第5位,然后交换第1位和第3位等。让再次生成的数字串不是连续的。(当然此处的打乱长度可以不一定是6位,但是邀请码是6位的话,数字串6位长度不会超过邀请码的长度)

步骤二(32进制乱序编码):由步骤一生成的乱序数字串进行32进制乱序编码,为什么选取32进制?因为保留了a、b、c、d四个字母在后续步骤中做随机补全。乱序编码表比如:

code_map = ['e', '0','f', 'g', '6','h', 'i', 'j', 'k', '9','l', '3','m', 'n', 'o', 'p', 'q', 'r', '1','s', 't', '7','u', 'v', 'w', '8','x', '2','y', '4','z', '5']

在十进制中数字p,会映射成字符code_map[p],这样进行乱序编码后,生成了字符串s。

步骤三(随机补全):因为步骤二保留了a、b、c、d四个关键字母,而且生成的字符串s不一定达到了MIN_LENGTH长度6。那么就用关键字母补全剩余的位数,而且是随机选取补全到字符串中的随机位置。最终生成长度优先为6位的邀请码。(后续x越大的时候,邀请码会超过6位,但是基本上高位可能会基本上某段区间是一样的,不过规律还是比较不明显的)

实践:

比如我某次生成的直播视频app源码邀请码:

daa6gb
kabaci
ddmc9c
qccmbc
atpaca
caw1ba
byccb7
dedaa8
6ydbdc

这样,我们就可以简单的实现一个,直播视频app源码邀请码的功能了。

声明:本文由云豹科技转发自AndyQsmart博客,如有侵权请联系作者删除

实现一个直播视频app源码的邀请码功能相关推荐

  1. 实现直播视频app源码的底部导航栏

    底部导航栏的应用非常的广泛.今天就介绍直播视频app源码的其中一种实现方式. 一.Fragment + TextView 实现 前面一篇博客在介绍Fragment 的时候就使用了Fragment + ...

  2. 教你实现,搭建直播视频app源码的账号体系

    账号体系价值 我们先来说一下直播视频app源码账号体系的价值,账号基础价值是用户识别,并将用户权益关联在账号下.账号在一定程度上就等同于会员,通过服务与用户建立深度链接.在这个得用户者得天下的时代,各 ...

  3. 直播视频app源码的靓号可以怎样实现?

    一般开发直播视频app源码时,会预留一些号码给以后升级的会员使用,比如靓号,直播视频app源码采用正则表达式实现较好,通过规则引擎的后台页面做成实时可配置的也是不错的选择. 一. 一般会有如下的正则需 ...

  4. java修改动态视频,直播视频app源码,动态修改cron

    直播视频app源码,动态修改cron相关的代码 package com.chashiyu.task.dynamic; import org.springframework.beans.factory. ...

  5. 直播视频app源码,Android 点击生成二维码

    直播视频app源码,Android 点击生成二维码实现的相关代码 activity.xml代码如下: <?xml version="1.0" encoding="u ...

  6. 直播视频app源码,自定义可点击可滑动的通用RatingBar

    直播视频app源码,自定义可点击可滑动的通用RatingBar实现的相关代码 绘制ratingbar 绘制未选中的背景 /*** 未选中Bitmap*/ private val starBgBitma ...

  7. 直播视频app源码,保存图片到系统相册

    直播视频app源码,保存图片到系统相册相关的代码 public static void saveImageToGallery(Context context, Bitmap bmp) {// 首先保存 ...

  8. 直播视频app源码,高度不能充满全屏

    直播视频app源码,修改高度不能充满全屏相关的代码 <ScrollViewandroid:layout_width="match_parent"android:layout_ ...

  9. 直播视频app源码的分享功能,是这样实现的

    直播视频app源码拥有大量的用户和直播内容,为了方便用户分享平台内容,直播视频app源码实现了分享到第三方的功能,下面就是直播视频app源码实现分享功能的代码. <!doctype html&g ...

最新文章

  1. Linux 之Cut命令详解
  2. BAT可真拿抖音一点儿办法也没有
  3. 容器技术之二.Docker的安装和常见问题
  4. 带旋treap概念及模板,带例题:普通平衡树
  5. 数据结构php语言,PHP语言做网页开发,会用到什么数据结构,算法?
  6. autojs命令代码大全_各个主流品牌手机的命令代码大全,安卓工程模式的指令大全!...
  7. oracle去除检查非空,oracle 主键,非空,检查,唯一,默认,外键约束
  8. [导入]C#做的一个加密/解密的类
  9. 2021-08-22监听器实现在线客户端统计
  10. android actionbar setCustomView时布局整体右移解决方案
  11. ESP32的SDK开发之获取SNTP网络时间
  12. 2019年南京大学计算机研究生复试分数线,南京大学2019年硕士研究生复试基本分数线...
  13. Jetson Nano系列教程4-生死看淡,不服就干之I2C
  14. GraphicsLab Project之简易贴画系统(Decal System)
  15. 秒针计时器 html,JS实现一个秒表计时器
  16. 微信小程序获取当前系统时间以及判断周几
  17. 用PGP实现加密和解密全过程
  18. 【思维题】CodeForce 817A Treasure Hunt
  19. smi时序_详解芯片组上电时序.ppt
  20. 光纤仿真相关参数——光纤损耗、数值孔径、归一化参数

热门文章

  1. vim 配置及插件安装管理(超级详细)
  2. PS(简单操作) 单张图片制作九宫格/证件照排版
  3. HTTP接口测试代码,HTTP GET/POST模拟请求测试工具
  4. 2023年全国最新二级建造师精选真题及答案62
  5. RAC的并发操作与分布式锁DLM
  6. Android实战技巧之三十九:短信收发
  7. linux服务器在没有网的条件下,怎么安装使用numpy呢
  8. AI生命科学绘图(2):基因结构可变剪切的绘制
  9. SSL_read: Failure in SSL library (protocol error?)
  10. 化工集团公司安全风险智能化管控平台