`
bean-woo
  • 浏览: 136101 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

主键生成器

    博客分类:
  • Util
阅读更多

package com.appdev.bsf.fusioncharts.client;

 

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.util.Date;

 

/**

 * 主键生成器。该类使用单例模式。

 * 

 */

public class PKGenerator {

/**

* �存储主机IP左移48位后的值。ֵ��

*/

private long key;

 

private static final PKGenerator instance = new PKGenerator();

 

/**

* 获得当前主机IP的后3位(如192.168.0.112中的112),左移48位后存入变量lastTransIP中������ l

* @roseuid 3EF6A8F0023D

*/

private PKGenerator() {

try {

InetAddress ia = InetAddress.getLocalHost();

String strIP = ia.getHostAddress();

int lastPoint = strIP.lastIndexOf(".");

int longip = Integer.parseInt(strIP.substring(lastPoint + 1));

makeKey(longip);

} catch (UnknownHostException e) {

System.out.println("No Host");

}

}

 

/**

* 生成key

* @param seed

*/

private synchronized void makeKey(int seed) {

long lastTransIP = ((long) seed) << 48;

Date date = new Date();

long longTime = date.getTime();

key = longTime | lastTransIP;

}

 

/**

* @return com.adtech.util.PKGenerator

* @roseuid 3EF6A8F00251

*/

public static PKGenerator getInstance() {

return instance;

}

 

/**

* 返回唯一的键。获得当前时间的毫秒数位与lastTransIP的值。ֵ��

* @return long

* @roseuid 3EF6A8F00265

*/

private synchronized long getKey() {

return ++key;

}

 

public long generateKey() {

return instance.getKey();

}

}


分享到:
评论

相关推荐

    在SQLSERVER中通过存储过程和触发器创建主键生成器

    下面我们将深入探讨如何利用这些工具创建主键生成器。 首先,让我们理解存储过程。存储过程是预编译的SQL语句集合,可以视为数据库中的可重用函数。它们提高了代码的复用性和性能,并且可以通过参数化来增强灵活性...

    主键生成器sequence

    ### 主键生成器sequence在Oracle中的应用 #### 一、概述 在数据库设计与开发过程中,经常需要为数据表中的某列(通常是主键)自动分配一个唯一且递增的值,以确保每一行记录的独特性。Oracle数据库提供了一种非常...

    主键生成器MSSQLSERVER

    用于在数据库中生成数据库表的主键

    java实现数据库主键生成示例

    在Java编程中,数据库主键生成是...总结来说,这个Java示例提供了一个简单的主键生成器,适用于低并发、单机环境,但并不完全适用于高并发或分布式系统。在实际生产环境中,需要根据具体需求选择更适合的主键生成策略。

    Oracle数据库表序列ID自增生成器

    总结来说,Oracle数据库表序列ID自增生成器结合了序列和触发器的概念,实现了主键ID的自动增长。这种机制在处理大量数据和并发操作时,能确保数据的完整性和一致性。了解并熟练运用这些知识点,对于进行高效的Oracle...

    MybatisPlus主键生成策略方法详解.docx

    - **自定义主键生成器**:如果内置的策略无法满足需求,可以通过实现`IKeyGenerator`接口来自定义主键生成逻辑。 综上所述,MybatisPlus的主键生成策略非常灵活,可以根据项目需求选择合适的策略,包括默认的雪花...

    Hibernate主键生成

    主键生成器确保了每个记录都有一个独一无二的标识,这对于数据的完整性至关重要。以下是Hibernate中常见的主键生成方式及其特点: 1. **increment**:此策略对long、short或int类型的字段生成自动增长的主键。主键...

    雪花id生成器源码-雪花算法ID生成器

    雪花算法ID生成器 一个适合大量数据的主键生成器 可以尽可能的让数据靠拢; 可以赋予主键更多的区分信息 支持数据库的扩容/分片

    mycat 主键自增代码

    要启用 AUTO_INCREMENT 策略,你需要在 schema.xml 文件中对每个分片(shard)定义主键生成器。例如: ```xml ,dn2" rule="autoIncrementRule"&gt; ... ``` 其中,`generator="autoIncrement"` 指定了主键...

    JPA学习笔记-EJB-03JPA主键生成策略总结

    ### JPA主键生成策略详解 #### 一、概述 持久化对象的主键生成机制在JPA(Java Persistence API)中占据着重要的位置。它不仅关乎数据的唯一标识符如何确定,还与数据的存储效率及应用逻辑紧密相关。JPA通过`@...

    Hibernate主键策略-sequence

    Hibernate通过`org.hibernate.id.SequenceGenerator`类来实现序列主键生成器。在`nextValue()`方法中,它会与数据库进行交互,获取序列的下一个值。这个过程涉及到JDBC操作,包括SQL的执行和结果的处理。 3. **...

    04_JPA详解_第一个JPA实例与JPA主键生成策略.zip

    本压缩包文件"04_JPA详解_第一个JPA实例与JPA主键生成策略.zip"包含了关于如何在实际项目中运用JPA,以及理解JPA主键生成策略的详细教程。 ### JPA基础 1. **JPA简介**: JPA是Java EE的一部分,它提供了一套规范,...

    08_ibatis教程_sql主键生成方式.rar

    在Ibatis中,可以通过`&lt;selectKey&gt;`标签配合`keyProperty`指定主键属性,`resultType`指定返回类型,然后在SQL语句中调用序列生成器。 3. **自增(Identity)**: MySQL、SQL Server等数据库支持字段的自动递增...

    Hibernate映射文件主键的生成

    在Hibernate中,主键的生成可以通过编程方式、数据库内置机制或者特定的生成器来实现。接下来我们将逐一探讨这些策略: 1. **Identity策略**: 这种策略适用于支持自动增长主键的数据库,如MySQL的`AUTO_INCREMENT...

    dedid全局唯一 ID(主键)生成器

    "dedid全局唯一 ID(主键)生成器" 是一个专为分布式数据库设计的系统,它的主要任务是生成全局唯一的标识符,通常作为数据表中的主键。这里的“dedid”可能是一个特定命名的ID生成器,它借鉴了Twitter的Snowflake...

    hibernate的主键生成策略

    Hibernate通过调用数据库的序列生成器来获取主键值。这是数据库特定的,不适用于所有数据库。 7. **native**: native策略会根据所使用的数据库选择最适合的策略,例如在MySQL上使用identity,在PostgreSQL上使用...

    DataFieldMaxValueIncrementer 管理主键

    在实际应用中,`DataFieldMaxValueIncrementer` 可以集成到Spring框架中,通过Spring的配置和依赖注入机制,使得在服务启动时自动初始化并管理主键生成器。例如,开发者可以创建一个自定义的实现类,覆盖默认的行为...

    JPA注解详解

    `@TableGenerator`注解用于配置主键生成器,特别是当主键生成策略为`GenerationType.TABLE`时。它允许我们自定义生成器的表名、分配大小、初始值等属性,以适应应用程序需求和数据库性能。 - `name`: 生成器的名称...

    基于多语言优化的分布式主键ID生成器设计源码

    本分布式主键ID生成器基于多语言优化,包含204个文件,包括Markdown文档、Dockerfile、Go源代码、Java源代码、GIT忽略文件、Header文件、C#源代码、C源代码、Pascal源代码、Rust源代码。系统采用优化的雪花算法...

    idgenerator分布式主键ID生成器

    迄今为止最全面的分布式主键ID生成器。优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...

Global site tag (gtag.js) - Google Analytics