• java雪花算法


    java工具类
    1.IdGeneratorSnowflake.java用于生成雪花算法,分为有参构造和无参构造
    package com.sale.util.common;
    
    import cn.hutool.core.lang.Snowflake;
    import cn.hutool.core.net.NetUtil;
    import cn.hutool.core.util.IdUtil;
    import lombok.Data;
    import lombok.Synchronized;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    
    /**
     * @author wjn
     * @version 1.0
     * @date 2020/12/10 18:13
     */
    @Slf4j
    @Component
    public class IdGeneratorSnowflake {
    
        private long workerId =0;
        private long datacenterId=1;
        private Snowflake snowflake= IdUtil.createSnowflake(workerId,datacenterId);
    
        @PostConstruct
        public void init(){
            try {
                workerId = NetUtil.ipv4ToLong(NetUtil.getLocalhostStr());
                log.info("当前机器的workerId:{}",workerId);
            }catch (Exception e){
                e.printStackTrace();
                log.info("当前机器的workerId获取失败",e);
                workerId=NetUtil.getLocalhostStr().hashCode();
            }
    
        }
        public synchronized long snowflakeId(){
            return snowflake.nextId();
        }
        public synchronized long snowflakeId(long workerId,long datacenterId){
            Snowflake snowflake= IdUtil.createSnowflake(workerId,datacenterId);
            return snowflake.nextId();
        }
    
        public static void main(String[] args) {
            System.out.println(new IdGeneratorSnowflake().snowflakeId());
        }
    }
    

    2.service层

    public interface DeliverGoodsService {
    
        String getIDBySnowFlake();
    }
    

      

    3.serviceimpl层

    @Slf4j
    @Service
    @Transactional
    public class DeliverGoodsServiceImpl implements DeliverGoodsService {
      @Autowired
        private IdGeneratorSnowflake idGeneratorSnowflake; 
      
       @Override
        public String getIDBySnowFlake() {
            ExecutorService executorService= Executors.newFixedThreadPool(5);
            for (int i=1;i<=20;i++){
                executorService.submit(()->{
                    System.out.println(idGeneratorSnowflake.snowflakeId());
                });
            }
            executorService.shutdown();
            return "hello snowflake";
        }
    }
    项目设计的工具类
    <!--Java工具类库-->
    <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.5.2</version>
    </dependency>
    java工具类库包含时间戳生成,图片工具类,加密工具类,ip工具类等一系列工具类,非常强大

    github开源地址 https://github.com/looly/hutool/
    官方中文文档 https://www.hutool.cn/docs/#/
    哔哩哔哩
    springcloudalibaba上硅谷视频视频 https://www.bilibili.com/video/BV18E411x7eT?from=search&seid=13488436241056256401
    上硅谷github地址sql及脑图 https://github.com/acloudyh/springCloud
  • 相关阅读:
    QTableView之一:基本使用
    Qt Plugin插件开发之一:插件机制与实例
    Qt样式表之一:QSS名词解释
    git 阻止在某个分支上面提交commit
    1.TP6的入门安装
    华为Gaussdb 高级知识培训
    list 序列号为字符json:字符串json序列化为list
    华为Gaussdb性能优化
    ElasticSearch 知识点汇总
    mongdb 操作总结,聚合操作,数据库恢复和备份
  • 原文地址:https://www.cnblogs.com/Hello-TomCat/p/14116816.html
Copyright © 2020-2023  润新知