Java后端面试题
标★号为重要知识点 id全局唯一且自增,如何实现? Redis的 incr 和 increby 自增原子命令 统一数据库的id发放 美团Leaf Leaf——美团点评分布式ID生成系统(批发号段) Twitter的snowflake算法 UUID ★如何设计算法压缩一段URL? 通过发号策略,给每一个过来的长地址,发一个号即可,小型系统直接用mysql的自增索引就搞定了。如果是大型应用,可以考虑各种分布式key-value系统做发号器。不停的自增就行了。第一个使用这个服务的人得到的短地址是 http://xx.xx/0 第二个是 http://xx.xx/1 第11个是 http://xx.xx/a 第依次往后,相当于实现了一个62进制的自增字段即可。 常用的url压缩算法是短地址映射法。具体步骤是: 将长网址用md5算法生成32位签名串,分为4段,,每段8个字符; 对这4段循环处理,取每段的8个字符, 将他看成16进制字符串与0x3fffffff(30位1)的位与操作,超过30位的忽略处理; 将每段得到的这30位又分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串; 这样一个md5字符串可以获得4个6位串,取里面的任意一个就可作为这个长url的短url地址。 ★Dubbo负载均衡策略? 随机、轮询、最少使用、一致性哈希(除了一致性哈希外,都有加权)