最近由于现公司某些原因不得不重新投入到找工作的浪潮中。在面试过程中也遇到过一些比较有趣的面试题。可能当时没有想到,回来后自己又思考了下。题目一:已知一个用户的ID(ID是长整形)根据用户ID给用户生成一个唯一的邀请码(邀请码范围([a-z0-9])?代码实现!

当时思考的几种方案都比较简单:

<?phpfunction createCode($userId){//方案一:$currentTime = time();$code = "{$userId}{$currentTime}";return $code;//方案二:while(true){//获取一个随机字符串$code = getRandString(8);//判断该字符串是否存在if( ! checkExists($code))return $code;}}

当时想到的几种方案差不多都是按照这两种演变而来。

两种方案的缺点:

方案一:字符串长度过长,邀请码一般都是需要在用户之间进行传递。过长不利于用户记住。而且不优雅。呵呵。

方案二:每次生成随机字符串都需要去数据库中查找判断是否已经存在了。当用户基数庞大时,势必会影响效率。对于追求效率的开发者来说。这种方案也不是最佳的!

新的方案:

字符a-z0-9刚好是36个。是否可以考虑直接将用户ID转换成一个36进制的数呢?

代码实现:

<?php
function createCode($userId)
{static $sourceString = [0,1,2,3,4,5,6,7,8,9,10,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];$num = $userId;$code = '';while($num){$mod = $num % 36;$num = (int)($num / 36);$code = "{$sourceString[$mod]}{$code}";}//判断code的长度if( empty($code[4]))str_pad($code,5,'0',STR_PAD_LEFT);return $code;
}

与前两种方案相比较新的方案弥补了前两种方案的缺点,同时保证同一个用户重复生成邀请码时不变的优点,当然这种实现方式还需要结合具体的需求来具体区别对待了。

用户邀请码的生成方法相关推荐

  1. outlook qr码在哪里_爱奇艺极速版邀请码是多少在哪里填写 邀请码怎么输入方法...

    爱奇艺极速版填写邀请码领爱奇艺会员卡,邀好友得人气值可兑爱奇艺VIP天卡/周卡/月卡/季卡/年卡.那么爱奇艺极速版邀请码是多少?爱奇艺极速版邀请码在哪里填怎么输入呢?下面小编给大家介绍一下. 爱奇艺极 ...

  2. 易语言 怎么制作一个站长工具:Discuz邀请码批量生成工具?

    前言 考虑到Discuz官方没有提供邀请码批量生成的这个功能,所以我们动手自己做一个,这样生成出来的邀请码可以直接使用或者出售啦! 实现起来很简单,只需要在往本地数据库执行一条sql语句就可以了. s ...

  3. PHP生成用户邀请码

    引言 在许多APP中,为了推广经营用户常常会有分享功能,APP内的用户拥全局唯一的邀请码,将邀请码分享给自己的好友,好友按照分享的引导步骤填写邀请码,邀请人就可以获得一定的奖励,那么我们在开发过程中要 ...

  4. 阿里云网盘注册邀请码怎么获得,阿里云网盘注册邀请码获得内测方法

    阿里云网盘注册邀请码怎么获得,阿里云网盘注册邀请码获得方法 阿里云网盘注册邀请码怎么获得?近日阿里云网盘app上线,但由于还在内测,暂时是采用的是邀请方式注册登录的,所以想要使用的玩家需要拥有注册邀请 ...

  5. 邀请码 java_java 生成邀请码

    package com.yikangyiliao.base.utils; import java.text.SimpleDateFormat; import java.util.Calendar; i ...

  6. php 不重复邀请码,PHP生成不重复的短邀请码函数

    生成原理 将10进制数字转换为[0-9A-Z]的36位进制字符.为了减少输入邀请码的歧义,我们将"0"和"O"去除,变成10进制转34进制:为了增加解密难度防止 ...

  7. 溯源系统溯源码的生成方法

    在追源系统中,主要的是溯源码的生成,系统函数实现的是 生成 16位的小写字母数字组成的追溯码. 如下面是就是生成的效果. 2ea0ac420595db0b b0bcf20759876afa 8837e ...

  8. 如何生成微信二维码?生成方法其实非常简单

    如何生成微信二维码呢?生成微信二维码可以方便地分享微信号或公众号,让其他人可以快速添加你为好友或关注你的公众号.在商业领域中,可以将微信二维码作为营销手段,例如在文章中加入二维码,引导用户进入官方微信 ...

  9. 趣谈唯一邀请码生成方法

    趣谈唯一邀请码生成方法 前段时间项目上需要生成唯一邀请码!嘿嘿,多简单的一件事,心里就已默默将代码写了一遍.但小小的邀请码生成却也小有乾坤,这就是后话了. 一.最简单的实现 很多人 肯定都和我一开始一 ...

  10. java生成一条唯一的邀请码_根据用户id生成一个唯一邀请码

    需求描述:根据用户id生成与之对应的唯一邀请码,范围为'0-9A-Z'. 这个需求的重点在于加粗的部分,也就是要能够根据邀请码反推出用户ID,这样邀请码就不用入库了,在用户量很大的情况下,性能可以得到 ...

最新文章

  1. python 字符串数组互转
  2. Linux内核补丁升级
  3. python里的“__all__ ”作用
  4. 快开宝PDA开单器出入库扫码:让批发零售变得更简单
  5. python图片分析中央气象台降水量预报_php采集自中央气象台范围覆盖全国的天气预报代码实例...
  6. NanoDet:这是个小于4M超轻量目标检测模型
  7. 计算机科学与技术在海南,2017年怀化学院计算机科学与技术专业在海南录取分数线...
  8. STM32 GPIO应用
  9. windows系统bat批处理 执行后 隐藏批处理本身
  10. JavaEE(26) - {TODO}
  11. sql 创建表、删除表 增加字段 删除字段操作
  12. Atitit eclipse tomcat插件常见问题总结.docx 1.1. tomcat插件调整内存设置在 run run cfg 配置页。。Debug模式共享相同设置 1 1.2. Pub
  13. Ubuntu18.04、Ubuntu20.04之ROS安装教程
  14. 列主元消去法例题详解_列主元消去法
  15. 机器学习入门(五):集成学习Bagging,Boosting,RandomForest和GridSearchCV参数调优
  16. 【初创公司系列】由软件先驱Tom Siebel支持的机器学习创业公司C3.ai申请IPO
  17. Viso跨职能流程图连接点操作
  18. 【CCPC-Wannafly Winter Camp Day4 (Div1) H】命命命运(概率DP)
  19. 回调函数举例ajax,通过回调函数的理解来进一步理解ajax及其注意的用法
  20. 假装自己是“黑客”二

热门文章

  1. AutoJs学习-2048小游戏自动化
  2. 【2022】软著申请流程及注意事项分享一下
  3. 云原生与业务可观测性
  4. C# WebApi 返回详细错误信息
  5. 前端vs图片 3 jpg、png、gif 图片老三样系统总结
  6. Mac 和 iPad 产品线要合并?苹果高管回应了
  7. 如何在SCI检索杂志上发表论文
  8. 我为什么放弃java学习Kotlin?
  9. 宏观调控利于粮食安全,调控与市场关系需理顺
  10. java获取融云token、并实现群组聊天、管理等后台接口示例