文档章节

创建定长code

春哥大魔王的博客
 春哥大魔王的博客
发布于 11/20 15:21
字数 342
阅读 5
收藏 0

前言

有的时候我们需要基于现有的code进行改造,但是改造的一个前提可能是对于code长度有一定的要求,比如我们做分库分表,准备在code上做文章。 由于历史原因不同的渠道产生的code有几种不同的表现形式,结果就是code长度不一样。 所以我们在改造之前需要将这些code统一为19位长度,空格位置用0代替。

代码实现

    public static String getDbCode(String original, Long userId) {
        if (StringUtils.isBlank(original) || original.length() == FINAL_CODE_LENGTH) {
            return original;
        }

        //0.获取code
        StringBuffer dbCode = new StringBuffer("");
        dbCode.append(VERSION);

        //1.校验code保证code必须19位
        int len = original.length();
        if (len > LEAF_CODE_LENGTH) {
            dbCode.append(original.substring(0, LEAF_CODE_LENGTH));
        } else if (len < LEAF_CODE_LENGTH) {
            dbCode.append(original).append("0000000000000000000".substring(0, LEAF_CODE_LENGTH - len));
        } else {
            dbCode.append(original);
        }

        //2.对userId值进行取模
        long userDelevery = userId % TABLE_COUNT;

        //3.拼接最终code
        if (userDelevery < 10) {
            dbCode.append("00").append(userDelevery + "");
        } else if (userDelevery < 100) {
            dbCode.append("0").append(userDelevery + "");
        } else {
            dbCode.append(userDelevery + "");
        }

        return dbCode.toString();
    }

这样确保不同渠道产生的code长度统一为19位了。

© 著作权归作者所有

共有 人打赏支持
上一篇: GC问题诊断
春哥大魔王的博客
粉丝 19
博文 164
码字总数 114383
作品 0
海淀
程序员
私信 提问
TiDB 源码阅读系列文章(十)Chunk 和执行框架简介

什么是 Chunk TiDB 2.0 中,我们引入了一个叫 Chunk 的数据结构用来在内存中存储内部数据,用于减小内存分配开销、降低内存占用以及实现内存使用量统计/控制,其特点如下: 只读 不支持随机写...

TiDB
06/19
0
0
java常用线程池

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创...

zhdan
2016/12/22
49
0
​Java 线程池

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创...

待续_
2016/04/09
94
0
Executors创建的4种线程池的使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创...

阿刚ABC
09/30
0
0
字符集与编码(二)——编号 vs 编码

注:由于两边同步的麻烦,更多更改及调整可参考我的网站:xiaogd.net 上的字符集编码与乱码系列,已将字符集编码系列与乱码探源系列合并,更新及勘误等不再更新到这边。 在深入研究字符集编码...

国栋
2014/08/23
0
20

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部