首先,给大家普及知识:
UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。比如:550e8400-e29b-41d4-a716-446655440000
http://www.baike.com/wiki/UUID
GUID 是微软对UUID这个标准的实现。UUID是由开放软件基金会(OSF)定义的。UUID还有其它各种实现,不止GUID一种。比如我们这里在Java中、Oracle中用到的。
http://www.baike.com/wiki/GUID
COMB(combine)型是数据库特有的一种设计思想,可以理解为一种改进的GUID,它通过组合GUID和系统时间,以使其在索引和检索事有更优的性能。
数据库中没有COMB类型,它是Jimmy Nilsson在他的“The Cost of GUIDs as Primary Keys”一文中设计出来的。COMB数据类型的基本设计思路是这样的:既然UniqueIdentifier数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么我们能不能通过组合的方式,保留UniqueIdentifier的前10个字节,用后6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与UniqueIdentifier组合起来,在保留UniqueIdentifier的唯一性的同时增加了有序性,以此来提高索引效率。
http://blog.csdn.net/happyflystone/article/details/1903854
下边总结下,我们生产编码的CUID代码:
/** * 生成指定类型的25位编码 * @param cuidType 编码类型 * @return String * @throws Exception */ private synchronized static String generateCuid(String cuidType) throws Exception { int max_hash_len = 16; StringBuffer cuidBuffer = new StringBuffer(); Random random = new Random(); // 第1位 类型,比如A、B、C cuidBuffer.append(cuidType); // 第2位 到 第 5位 随机大写字母 for (int i = 0; i < 4; ++i) cuidBuffer.append("ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(random.nextInt("ABCDEFGHIJKLMNOPQRSTUVWXYZ".length()))); long hashCode = UUID.randomUUID().hashCode(); // 第6位 到 第 14/15位 使用UUID的hashcode得到0-9的9位或10位数 cuidBuffer.append(hashCode < 0 ? -hashCode : hashCode); // 第10/11位 正数补0 负数补1 cuidBuffer.append(hashCode > 0 ? "0" : "1"); // 用0补足16位 if (cuidBuffer.length() < max_hash_len) for (int i = 0; i < max_hash_len - cuidBuffer.length(); i++) cuidBuffer.append("0"); // 用当前时分秒 补足最后9位 一共25位(1位类型字母+4位大写字母+20位随机数字) cuidBuffer.append(new SimpleDateFormat("HHmmssSSS").format(new Date())); return cuidBuffer.toString(); }
调用方法:
try { String aCode = generateCuid("A"); System.out.println(aCode); System.out.println(aCode.length()); } catch (Exception e) { Log.error("生成A类型编码失败", e); }
相关推荐
本实验主要探讨了条码生成的过程,涵盖了从一维条码、二维条码到三维条码的生成原理、编码规则及其应用范围。以下是实验内容的详细阐述: 一、条码生成原理 1.1 一维条码 一维条码的工作原理基于不同颜色对光线的...
总结来说,Mybatis-Generator是一款高效实用的代码生成工具,无论你的项目是否使用Maven,都能轻松集成并使用。它通过自动化的方式,帮助开发者节省了大量的手动编码时间,提升了开发效率,让开发者能更专注于业务...
虽然MBG可以节省大量的手动编码工作,但仍然需要注意生成的代码可能不完全符合项目的特定需求。因此,在实际项目中,可能需要对生成的代码进行适当的修改和调整。 8. **总结** MyBatis Generator是一个强大而灵活...
该文档旨在归纳总结编码规则在实际应用中的常见问题,并提供相应的解决方案与指导,帮助用户更好地理解和使用编码规则功能。 ##### 1.2 适用对象 本文档适用于以下几类人群: - **测试人员**:需要熟悉编码规则模块...
MyBatis-Puls自定义代码生成器是提升开发效率的利器,它使得开发者能够从繁琐的手动编码工作中解脱出来,专注于更重要的业务逻辑。通过理解和熟练使用这个工具,可以大大提高团队的开发效率,同时保证代码的一致性...
6. **自定义模板**:MBG允许用户自定义生成的Java和XML模板,这样可以根据团队的编码规范和习惯来定制生成的代码风格。 7. **性能优化**:MBG生成的代码通常遵循最佳实践,例如,它会自动处理主键生成策略,根据表...
- **自定义模板**:用户可以根据自己的需求定制代码生成模板,实现个性化编码风格。 - **智能提示**:在编写SQL时,提供智能提示,帮助快速完成SQL语句的编写。 - **多数据库支持**:兼容多种主流数据库,如MySQL...
1. 配置generatorConfig.xml:这是MBG的主要配置文件,包含了数据库连接信息、生成的目标包路径、生成的类的命名规则等。例如: ```xml connectionURL="jdbc:mysql://localhost:3306/mydatabase" userId=...
总结来说,Mybatis-Plus的代码生成器为开发者带来了极大的便利,它们通过自动化的方式生成常用的业务代码,提高了开发效率,降低了出错的可能性。无论是MysqlGenerator还是CodeGenerator,都是Mybatis-Plus对提高...
3. **生成编码规则**:从根节点到每个叶子节点的路径可以形成一个唯一的编码规则,即从左到右遍历路径时,左子树表示0,右子树表示1。 4. **编码与解码**:根据编码规则对原始数据进行编码,然后通过哈夫曼树逆向...
4. **定义Mapper接口和XML文件**:配置文件中设定Mapper接口和XML文件的生成规则,包括SQL语句模板。 5. **运行生成器**:通过Java API或者Maven插件执行MyBatis Generator,生成代码。 6. **整合到项目**:将生成...
在使用Abator生成代码前,需要先创建一个生成配置文件,用于指定生成代码的规则和模板: - 在myEclipse中选择“Window”菜单下的“Preferences”选项,找到“Abator”配置项。 - 点击“New”按钮,创建一个新的配置...
9. **版本控制**:当业务需求发生变化时,可能需要更新订单编号的生成规则。因此,系统需要有版本控制机制,以确保新旧规则的平滑过渡,避免对现有订单造成影响。 10. **备份与恢复**:在数据备份和恢复过程中,...
- 支持不同类型的编码生成规则,如时间类型、对象属性等。 - **1.2.3 应用示例** - 示例中可能包括如何设置基于时间的编码、基于对象属性的编码等。 **1.3 编码规则定义-集团** - 针对集团层级的编码规则定义...
- 理解霍夫曼编码的构建过程和编码规则。 - 实现霍夫曼编码的MATLAB程序,并分析其压缩效果。 - 比较霍夫曼编码与香农-范诺编码的优劣。 2. 编码原理: - 霍夫曼树是一种带权重的最小带权路径长度二叉树,通过...
它通过不同的模块组合来表示数据,每个模块可以是黑色或白色,通过特定的编码规则和纠错算法来保证信息的准确性和可读性。 2. **PHP QRCode库** 在PHP中生成二维码,通常会借助第三方库,例如PHP QRCode。这个库...
### 机房收费系统工作总结知识点解析 #### 一、工作内容概述 - **项目背景**: - **来源**:为了提升机房管理效率和服务质量,应对日益增长的学生使用需求。 - **目的与意义**:开发一套智能化的机房收费系统,...
总结,MyBatis Generator作为MyBatis框架的重要组件,通过自动化的方式减少了重复编码的工作,提高了开发效率。正确理解和使用MBG,可以帮助开发者更专注于业务逻辑的实现,提升项目的整体质量和开发速度。