import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
/**
* JAVA实现负载均衡
*
*/
public class TJunheng
{
private static char[] asciis =
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r'};
private static final int MAX_SEGMENTS = 7;
public static void main(String[] args)
{
HashMap<String, String>[] segments = new HashMap[MAX_SEGMENTS];
//初始化
for (int x = 0; x < MAX_SEGMENTS; x++)
{
segments[x] = new HashMap<String, String>();
}
//求mask
int ssize = 1;
while (ssize < MAX_SEGMENTS)
{
ssize <<= 1;
}
int segmentShift = 32 - MAX_SEGMENTS * 2;
int segmentMask = ssize - 1;
//填充数据
List<String> list = new ArrayList<String>();
for (int k = 0; k < 100000; k++)
{
String tmno = getTmno();
list.add(tmno);
}
for (String tm : list)
{
int hash = hash(tm.hashCode());
int num = ((hash >>> segmentShift) % MAX_SEGMENTS) & segmentMask;
segments[num].put(tm, tm);
}
//显示各个数组中的大小
for (int m = 0; m < MAX_SEGMENTS; m++)
{
System.out.println(segments[m].size());
}
System.out.println("---------------------------------");
for (String tm2 : list)
{
int hash = hash(tm2.hashCode());
int num = ((hash >>> segmentShift) % MAX_SEGMENTS) & segmentMask;
segments[num].put(tm2, tm2);
}
//显示各个数组中的大小
for (int m1 = 0; m1 < MAX_SEGMENTS; m1++)
{
System.out.println(segments[m1].size());
}
}
private static int hash(int h)
{
h += (h << 15) ^ 0xffffcd7d;
h ^= (h >>> 10);
h += (h << 3);
h ^= (h >>> 6);
h += (h << 2) + (h << 14);
return h ^ (h >>> 16);
}
private static String getTmno()
{
StringBuilder tmno = new StringBuilder();
for (int i = 0; i < 10; i++)
{
tmno.append(asciis[new Random().nextInt(asciis.length)]);
}
for (int j = 0; j < 4; j++)
{
tmno.append(new Random().nextInt(9));
}
return tmno.toString();
}
}
分享到:
相关推荐
本篇文章主要介绍了详解Java实现负载均衡的几种算法代码 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
什么是负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部...
本压缩包包含两个tomcat 一个nginx 模拟负载均衡,对于初学者有很大的帮助
nginx-tomcat整合实现JAVA程序负载均衡
java使用apache+resin实现负载均衡设置
spring cloud gateway的负载均衡和动态路由的实现 demo_01,demo_02,demo_03 这三个服务相当于是集群的微服务 gateway这个服务是 springcloude gateway + ribbon 做的负载均衡 gateway_01 这个服务 是动态路由的...
nginx 完成服务器之间集群的搭建 能够解决服务器调用负载均衡
几种简单的负载均衡算法及java实现1
基于springBoot2.0的springCloud路由网管负载均衡及拦截过滤的简单实现.
主要介绍了Java使用Gateway自定义负载均衡过滤器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Nginx+Tomcat+Redis实现负载均衡jar包: tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar jedis-2.0.0.jar commons-pool-1.5.5.jar
看到好多小公司实施web版本的项目,需要实现负载均衡和提高系统的整体运行性能,需要购买金钱昂贵的硬件F5(60-100W). 闲下来没事,自己开发了一个和硬件F5功能基本相同的系统,开发语言java。现把原代码公布出来...
基于memcached的tomcat7服务器session共享技术,达到了负载均衡的目的!
主要介绍了Java Grpc实例创建负载均衡详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
这个项目即将为您提供一个用 JAVA 编写的简单(但功能强大)的负载均衡器。 “基于 Java 的负载均衡器的性能可能永远无法与用 C/C++ 编写的良好负载均衡器相比,但随着平台的进一步发展,它只会变得更好。” (来自 ...
主要介绍了Java加权负载均衡策略实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Nginx+Tomcat+memcached实现集群部署、负载均衡session共享,内含说明文档,下载地址,依赖jar包,全套提供,亲测有效
algorithm蚂蚁群算法平均Java负载率实现_java
etcd-client-java该项目用于etcd集群的动态注册和发现,并实现负载均衡心跳基于netty连接池长连接实现