JAVA基础算法

JAVA基础算法,第1张

你在这里没有进行排序

public static void main(String[] args) throws InterruptedException {

//生成随机数组

int[] arr = new int[100];

for (int i = 0; i < 100; i++) {

arr[i] = (int) (Mathrandom() 100) + 1;

}

for (int i = 0; i < arrlength; i++)

Systemoutprint(arr[i] + "\t");

//生成随机数组

//小到大排序

int num=0;//记录移动次数 根据你的意思这是会根据生成数组的不同而大小不一样的

for(int i=0;i<arrlength;i++){

for(int j=0;j<arrlength-i-1;j++){

if(arr[j]>arr[j+1]){

arr[j]=arr[j]+arr[j+1];

arr[j+1]=arr[j]-arr[j+1];

arr[j]=arr[j]-arr[j+1];

num++;

}

}

}

Systemoutprintln("\n一共移动"+num+"次,完成排序");

for (int i = 0; i < arrlength; i++)

Systemoutprint(arr[i] + "\t");

}

Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。各种主键ID生成策略对比,见 常见分布式主键ID生成策略

41位的时间前缀 10位的节点标识 12位的sequence 组合在一起。

除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。 默认情况下41bit的时间戳,1970年算起可以支持该算法使用到2038年,10bit的工作机器id可以支持1024台机器,序列号支持1毫秒产生4096个自增序列id

Snowflake是Twitter在2010年用Scala语言写的一套主键生成策略,用Thrift对外发布主键生成服务,其中依赖了Twitter内部的Infrastructure,后来Twitter用 Twitter-server 代替了Snowflake,自2012年起就未更新。见 Twitter-Snowflake项目地址(Tags:snowflake-2010)

之前写了一个Java的实现,改自网上一个版本: Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版 。后来看到当当网的 Sharding-JDBC 分库分表中间件已实现了此算法。就直接在其中添加了一些新特性,已merge。( 具体实现 , 说明文档 )

添加3种IdGenerator实现。

用笔记本(i7-3632QM 22GHz 四核八线程)测试了下,每秒生成409万(理论上的峰值),CPU占用率185%。

以上就是关于JAVA基础算法全部的内容,包括:JAVA基础算法、数据库分库分表(二)Twitter-Snowflake(64位分布式ID算法)分析与JAVA实现、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10186160.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存