数据结构与算法

身份证验证算法

身份证验证算法

18位身份证号码结构 公民身份证号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码和1位校验码。 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。 出生日期码:

Joe.Ye Joe.Ye 2023-04-01
0 0 0
分布式Snowflake雪花算法

分布式Snowflake雪花算法

主键ID生成方式比较 UUID(缺点:太长、没法排序、使数据库性能降低) Redis(缺点:必须依赖Redis) Oracle序列号(缺点:用Oracle才能使用) Snowflake雪花算法(优点:生成有顺序的id,提高数据库的性能) Snowflake雪花算法解析 雪花算法snowflak

Joe.Ye Joe.Ye 2023-04-01
0 0 0
Java根据概率(权重)排序

Java根据概率(权重)排序

原理:依次将权重叠加,构建各元素命中区间,然后利用random.nextInt(int)在总的区间内生成随机整数,落在指定区间内即为命中。命中者不参与下一轮命中事件,同时命中者自身、后面的元素、以及总和均减少本轮命中值,继续下一轮,直至所有区间被命中 public class App {

Joe.Ye Joe.Ye 2023-04-01
0 0 0
Java Map数据结构总结

Java Map数据结构总结

Hashtable 和 HashMap 的区别 Hashtable和HashMap都实现Map接口,但是Hashtable的实现是基于Dictionary抽象类 在HashMap中,null可以作为key或value;而在Hashtable中,无论是key还是value都不能为null Hasht

Joe.Ye Joe.Ye 2023-02-14
0 0 0
Java实现拼手气红包算法

Java实现拼手气红包算法

实现拼手气红包算法,有以下几个需要注意的地方: 抢红包的期望收益应与先后顺序无关 保证每个用户至少能抢到一个预设的最小金额,人民币红包设置的最小金额一般是0.01元,如果需要发其他货币类型的红包,比如区块链货币或者积分,需要自定义一个最小金额 所有抢红包的人领取的子红包的金额之和加起来,等于发红包

Joe.Ye Joe.Ye 2023-02-12
0 0 1