package com.ezubo.global.util; import org.apache.commons.lang3.time.DateFormatUtils; import java.text.SimpleDateFormat; import java.util.Date; /**利用单例模式生成序列号 不适合分布式系统 * Created by on 2015-12-29. */ public class Generators { private static final String DATE_FORMAT = "yyyyMMddHHmmss"; private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT); private static String forwardTime = ""; private static Long no = 1l; private Generators(){ super(); } /** * 生成序列号 * @param prefix * @return */ public static String getSeqNo(String prefix){ synchronized (Generators.class){ String pfix = prefix == null?"":prefix; String currentTime = SIMPLE_DATE_FORMAT.format(new Date()); if(!currentTime.equals(forwardTime)){ no = 1l; } String serializeNo = FormatUtil.leftpad(no++ , "00000000"); forwardTime = currentTime; return pfix + currentTime + serializeNo; } } }
相关推荐
- **唯一序列号生成**:如订单编号等需要保证全局唯一的情况。 - **计数器**:如网站访问次数统计等。 - **资源密集型对象**:如数据库连接池、线程池等。 #### 实现细节 以下是一个简单的单例模式实现: ```java...
- 当需要生成唯一序列号的环境,如ID生成器、序列号管理器等,单例模式可以确保每个生成的序列号都是唯一的。 - 在整个项目中需要一个共享访问点或共享数据时,单例模式可以提供统一的访问入口,简化数据访问的流程...
7. **软件设计模式**:为了提高代码的复用性和可维护性,开发者可能会采用一些设计模式,如工厂模式(用于创建卡密生成器实例)、单例模式(确保卡密生成器类只有一个实例)等。 综上所述,通过研究这个C#卡密生成...
3. **避免资源多重占用**:单例模式可以避免对同一资源的重复占用,有利于资源的合理利用。 4. **设置全局访问点**:单例对象作为一个全局访问点,可以简化系统配置和共享资源的访问。 **应用场景:** - 需要频繁...
1. 单例模式:ID生成器通常需要全局唯一,因此可能使用单例模式来保证只有一个实例存在,避免资源浪费。 2. 工厂模式:为了方便地创建和管理ID生成器实例,可能会采用工厂模式来提供统一的创建接口。 3. 模块化...
7. **设计模式**:源代码中可能会应用到多种设计模式,如单例模式用于服务器实例的创建,工厂模式用于生成不同类型的坦克,观察者模式用于事件通知等。这些模式提升了代码的可读性和可维护性。 8. **错误处理和调试...
同时,了解和实践软件工程中的设计模式,如工厂模式、单例模式等,将有助于提升编程技能。 总的来说,C#语言开发的IT设备资产管理系统不仅能够帮助企业管理好其IT资产,同时也是学习和提升C#编程技能的绝佳实践。...
10. **设计模式**:虽然LeetCode主要关注算法,但也会遇到需要应用设计模式的题目,如工厂模式、单例模式等。 通过这样的实践,开发者不仅可以提升Python编程技巧,还能增强问题解决能力和算法思维,这对于任何想要...
- **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **工厂模式**:定义一个创建对象的接口,让子类决定实例化哪一个类。 - **装饰器模式**:动态地给一个对象添加新的职责,无需通过子类实现。 - *...