邀请码生成器,时间紧急先拿来主义下吧,保存时再去检查下是否存在吧。

https://my.oschina.net/u/1469495/blog/470599

import java.util.Random;/*** 邀请码生成器,算法原理:<br/>* 1) 获取id: 1127738 <br/>* 2) 使用自定义进制转为:gpm6 <br/>* 3) 转为字符串,并在后面加'o'字符:gpm6o <br/>* 4)在后面随机产生若干个随机数字字符:gpm6o7 <br/>* 转为自定义进制后就不会出现o这个字符,然后在后面加个'o',这样就能确定唯一性。最后在后面产生一些随机字符进行补全。<br/>* @author jiayu.qiu*/
public class ShareCodeUtil {/** 自定义进制(0,1没有加入,容易与o,l混淆) */private static final char[] r=new char[]{'q', 'w', 'e', '8', 'a', 's', '2', 'd', 'z', 'x', '9', 'c', '7', 'p', '5', 'i', 'k', '3', 'm', 'j', 'u', 'f', 'r', '4', 'v', 'y', 'l', 't', 'n', '6', 'b', 'g', 'h'};/** (不能与自定义进制有重复) */private static final char b='o';/** 进制长度 */private static final int binLen=r.length;/** 序列最小长度 */private static final int s=6;/*** 根据ID生成六位随机码* @param id ID* @return 随机码*/public static String toSerialCode(long id) {char[] buf=new char[32];int charPos=32;while((id / binLen) > 0) {int ind=(int)(id % binLen);// System.out.println(num + "-->" + ind);buf[--charPos]=r[ind];id /= binLen;}buf[--charPos]=r[(int)(id % binLen)];// System.out.println(num + "-->" + num % binLen);String str=new String(buf, charPos, (32 - charPos));// 不够长度的自动随机补全if(str.length() < s) {StringBuilder sb=new StringBuilder();sb.append(b);Random rnd=new Random();for(int i=1; i < s - str.length(); i++) {sb.append(r[rnd.nextInt(binLen)]);}str+=sb.toString();}return str;}public static long codeToId(String code) {char chs[]=code.toCharArray();long res=0L;for(int i=0; i < chs.length; i++) {int ind=0;for(int j=0; j < binLen; j++) {if(chs[i] == r[j]) {ind=j;break;}}if(chs[i] == b) {break;}if(i > 0) {res=res * binLen + ind;} else {res=ind;}// System.out.println(ind + "-->" + res);
        }return res;}
}

转载于:https://www.cnblogs.com/awei4home/p/9395457.html

邀请码生成器[转自网络]相关推荐

  1. java生成8位邀请码,邀请码生成器Java代码

    邀请码生成器,可根据邀请码反向算出用户id import java.util.Random; /** * 邀请码生成器,算法原理: * 1) 获取id: 1127738 * 2) 使用自定义进制转为: ...

  2. 邀请码 java_邀请码生成器Java代码详解

    邀请码生成器,可根据邀请码反向算出用户id import java.util.Random; /** * 邀请码生成器,算法原理: * 1) 获取id: 1127738 * 2) 使用自定义进制转为: ...

  3. Google虚拟现实游戏 Ingress 邀请码一枚(已领)

    2019独角兽企业重金招聘Python工程师标准>>> 今天拿到一枚Ingress邀请码,电信网络太差,host也解决不了问题,现贴出来,若拿去用了,回帖mark下: YER8R2B ...

  4. 网络舆情危及企业经营如何应对?舆情优化十大解决方案!

    近年来,国内互联网发展进入深水区,国内市场产业结构.社会结构.营销环境等都发生了较大的变化,企业面临的舆论形势更加严峻复杂,小马识途接触过各行业的企业,不少大品牌受到受负面舆论的影响.在如今互动性强的 ...

  5. AMA分享回顾丨镜像网络MW对于分布式存储底层系统的思考和后续发展的看法

    ​2020年11月4日15点,藏金阁CryptoPAV邀请到了镜像网络(Mirror World Network)的联合发起人老冯作客,分享关于「镜像网络MW对于分布式存储底层系统的思考和后续发展的看 ...

  6. 镜像网络MW测试网上线一周年精彩回顾

    过去十年,比特币所代表的去中心化思潮飞速蔓延,人们尝试用「去中心化」的新思路去改进现今商业模式的方方面面.在数据存储领域诞生了一种希望借助闲散存储空间和带宽资源来降低云存储成本的的全新业务--分布式存 ...

  7. 华为云会议-网络研讨会简介和基本使用方法

    网络研讨会简介 网络研讨会是在华为云会议基础上增加一个只能观看的观众角色的特殊会议,具备会议+直播的融合体验.比普通会议支持更大容量,比企业级直播具备更低无感知时延和更强的音视频互动能力. 让您能够迅 ...

  8. 28推,交流让网络推广变得很简单

    写了快5年的网络推广博客,接近300篇网络推广经验类的原创文章,在帮助别人的同时,自己也获得了很多的快乐.在前段时间还收了28个徒弟,建了一个徒弟群.通过一些实战任务让徒弟们去实践,在实践的过程中学习 ...

  9. 康普通过整合前TE Connectivity的BNS NDI项目,进一步拓展其PartnerPro网络

    2016 年 9 月 26 日,中国上海- 康普 PartnerPRO网络包括数以千计经康普认证的当地安装商.分销商和集成商,是它们将康普高性能的解决方案落地执行.如今康普PartnerPRO 网络已 ...

最新文章

  1. Linux那些事儿 之 戏说USB(8)从这里开始
  2. MongoDB C++ gridfs worked example
  3. VPS批量管理软件--远程桌面批量管理
  4. 抽象工厂模式(C#)
  5. python web为什么不火_如何用纯 Python 写交互式 Web 应用?
  6. ubuntu 新增mysql用户_Ubuntu中给mysql添加新用户并分配权限
  7. P4051-[JSOI2007]字符加密【SA】
  8. db9针232接口波特率标准_理解串口通信以及232,485,422常见问题
  9. 开发经验分享_04_快速熟悉程序(思路)
  10. python—列表、字典生成式
  11. drupal与html转换,在Drupal中将HTMl添加到CCK
  12. Eclipse run configrations 配置
  13. mysql怎么查合计_mysql-查询不同列的数量合计
  14. yii2 AR打印sql语句
  15. 为什么不使用ipv6计算机网络,ipv6无网络访问权限解决教程
  16. 解决ios微信页面回退不刷新的问题
  17. 使用Linux命令cURL实现文件定时上传到ftp服务器的程序
  18. 兆骑科创高层次人才引进双创平台,双创服务,赛事路演
  19. 国内外主流静态分析类工具汇总
  20. 物联卡中心:物联卡是正规卡吗?与流量卡有什么区别?

热门文章

  1. linux 萌字体,Linux平台上的Ubiqutous字体
  2. 2020-08-31 2020常用面试题
  3. MS-Celeb-1M 数据
  4. 超全超靠谱的 iconfont 字体图标库维护与使用
  5. 自己电脑(ThinkPad SL410K 28428VC)硬件信息记录
  6. coot怎么调用python_python使用xlrd与xlwt对excel的读写和格式设定
  7. python效率计算公式_Python: Pandas运算的效率探讨以及如何选择高效的运算方式
  8. 基于LinuxCNC下的estun从站控制
  9. JAVA设计模式初探之装饰者模式
  10. UIPower视觉设计 - 《UI的革命》文字版