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();
}
}
分享到:
相关推荐
下面我们将深入探讨如何利用这些工具创建主键生成器。 首先,让我们理解存储过程。存储过程是预编译的SQL语句集合,可以视为数据库中的可重用函数。它们提高了代码的复用性和性能,并且可以通过参数化来增强灵活性...
### 主键生成器sequence在Oracle中的应用 #### 一、概述 在数据库设计与开发过程中,经常需要为数据表中的某列(通常是主键)自动分配一个唯一且递增的值,以确保每一行记录的独特性。Oracle数据库提供了一种非常...
用于在数据库中生成数据库表的主键
在Java编程中,数据库主键生成是...总结来说,这个Java示例提供了一个简单的主键生成器,适用于低并发、单机环境,但并不完全适用于高并发或分布式系统。在实际生产环境中,需要根据具体需求选择更适合的主键生成策略。
总结来说,Oracle数据库表序列ID自增生成器结合了序列和触发器的概念,实现了主键ID的自动增长。这种机制在处理大量数据和并发操作时,能确保数据的完整性和一致性。了解并熟练运用这些知识点,对于进行高效的Oracle...
- **自定义主键生成器**:如果内置的策略无法满足需求,可以通过实现`IKeyGenerator`接口来自定义主键生成逻辑。 综上所述,MybatisPlus的主键生成策略非常灵活,可以根据项目需求选择合适的策略,包括默认的雪花...
主键生成器确保了每个记录都有一个独一无二的标识,这对于数据的完整性至关重要。以下是Hibernate中常见的主键生成方式及其特点: 1. **increment**:此策略对long、short或int类型的字段生成自动增长的主键。主键...
雪花算法ID生成器 一个适合大量数据的主键生成器 可以尽可能的让数据靠拢; 可以赋予主键更多的区分信息 支持数据库的扩容/分片
要启用 AUTO_INCREMENT 策略,你需要在 schema.xml 文件中对每个分片(shard)定义主键生成器。例如: ```xml ,dn2" rule="autoIncrementRule"> ... ``` 其中,`generator="autoIncrement"` 指定了主键...
### JPA主键生成策略详解 #### 一、概述 持久化对象的主键生成机制在JPA(Java Persistence API)中占据着重要的位置。它不仅关乎数据的唯一标识符如何确定,还与数据的存储效率及应用逻辑紧密相关。JPA通过`@...
Hibernate通过`org.hibernate.id.SequenceGenerator`类来实现序列主键生成器。在`nextValue()`方法中,它会与数据库进行交互,获取序列的下一个值。这个过程涉及到JDBC操作,包括SQL的执行和结果的处理。 3. **...
本压缩包文件"04_JPA详解_第一个JPA实例与JPA主键生成策略.zip"包含了关于如何在实际项目中运用JPA,以及理解JPA主键生成策略的详细教程。 ### JPA基础 1. **JPA简介**: JPA是Java EE的一部分,它提供了一套规范,...
在Ibatis中,可以通过`<selectKey>`标签配合`keyProperty`指定主键属性,`resultType`指定返回类型,然后在SQL语句中调用序列生成器。 3. **自增(Identity)**: MySQL、SQL Server等数据库支持字段的自动递增...
在Hibernate中,主键的生成可以通过编程方式、数据库内置机制或者特定的生成器来实现。接下来我们将逐一探讨这些策略: 1. **Identity策略**: 这种策略适用于支持自动增长主键的数据库,如MySQL的`AUTO_INCREMENT...
"dedid全局唯一 ID(主键)生成器" 是一个专为分布式数据库设计的系统,它的主要任务是生成全局唯一的标识符,通常作为数据表中的主键。这里的“dedid”可能是一个特定命名的ID生成器,它借鉴了Twitter的Snowflake...
Hibernate通过调用数据库的序列生成器来获取主键值。这是数据库特定的,不适用于所有数据库。 7. **native**: native策略会根据所使用的数据库选择最适合的策略,例如在MySQL上使用identity,在PostgreSQL上使用...
在实际应用中,`DataFieldMaxValueIncrementer` 可以集成到Spring框架中,通过Spring的配置和依赖注入机制,使得在服务启动时自动初始化并管理主键生成器。例如,开发者可以创建一个自定义的实现类,覆盖默认的行为...
`@TableGenerator`注解用于配置主键生成器,特别是当主键生成策略为`GenerationType.TABLE`时。它允许我们自定义生成器的表名、分配大小、初始值等属性,以适应应用程序需求和数据库性能。 - `name`: 生成器的名称...
本分布式主键ID生成器基于多语言优化,包含204个文件,包括Markdown文档、Dockerfile、Go源代码、Java源代码、GIT忽略文件、Header文件、C#源代码、C源代码、Pascal源代码、Rust源代码。系统采用优化的雪花算法...
迄今为止最全面的分布式主键ID生成器。优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...