`
yajie
  • 浏览: 210821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一段耗CPU的随机生成字符串的代码,why?

阅读更多

感兴趣的同学可以把下面的代码copy到机器上执行看看(例如java GenRandomStringTest 50 100 1024),会发现是挺耗CPU的,原因是什么呢? 有什么建议吗?

GenRandomStringTest代码如下,也可从这下载

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.Random;
 
public class GenRandomStringTest {
 
public static void main(String[] args) throws Exception{
int threadNums = Integer.parseInt(args[ 0 ]);
int keySize = Integer.parseInt(args[ 1 ]);
int valueSize = Integer.parseInt(args[ 2 ]);
for ( int i = 0 ; i < threadNums; i++) {
new Thread( new Test(keySize,valueSize)).start();
}
}
 
}
 
class Test implements Runnable{
 
private Random rand = new Random();
 
private int keySize = 0 ;
private int valueSize = 0 ;
 
public Test( int keySize, int valueSize){
this .keySize = keySize;
this .valueSize = valueSize;
}
 
public void run() {
while ( true ){
RandomStringUtils.generateBytes(keySize);
RandomStringUtils.generateBytes(valueSize);
try {
Thread.sleep(rand.nextInt( 2 ));
}
catch (Exception e){
// IGNORE;
}
}
}
 
}

RandomStringUtils代码如下,由于blog渲染有问题,会丢失代码,只好截图如下了,也可从这下载

ps: 不过话说以这种方式随机生成指定大小的字符串还是挺耗时的,也欢迎提供建议,:).

 

源码如下:

 

import java.util.Random;

public class RandomStringUtils {

        private static final String KEY_SEED="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        private static final int KEY_SEED_LEN=KEY_SEED.length();

        private static final char[] KEY_SEED_CHARS=KEY_SEED.toCharArray();

        private static Random random = new Random();

        public static byte[] generateBytes(int length){
                StringBuilder keyBuilder=new StringBuilder(length);
                for (int i = 0; i < length; i++) {
                    keyBuilder.append(KEY_SEED_CHARS[random.nextInt(KEY_SEED_LEN)]);
                }
                return keyBuilder.toString().getBytes();
        }

}
分享到:
评论

相关推荐

    随机生成32位字符串

    在这个场景中,"随机生成32位字符串"是一个常见的需求,例如在创建唯一标识符、生成安全密码或进行加密算法时。下面将详细介绍如何在VB中实现这一功能。 首先,我们要了解VB中的字符串是由一系列字符组成的,每个...

    C#随机字符串生成代码

    在C#编程语言中,生成随机字符串是一项常见的任务,它在许多应用场景中都有用到,例如测试数据的生成、密码的生成以及唯一标识符的创建等。本篇将深入探讨如何在C#中生成指定长度、包含字母或数字或者两者的混合随机...

    C# 生成随机字母字符串

    以下是一个简单的示例代码,用于生成随机大小写字母字符串: ```csharp using System; public static string GenerateRandomString(int length) { Random random = new Random(); const string chars = ...

    java随机生成字符串(字符随机生成类 生成随机字符组合).docx

    这段代码将输出一个长度为24的大写字母组成的随机字符串。 #### 四、总结 本文档详细介绍了一种基于Java的随机字符串生成方法,通过定义一个枚举类型来区分不同的字符串组成规则,并提供了一个简单的接口来生成...

    php 随机生成10位字符代码

    在这段代码中,最后使用`echo`语句调用`randStr(10)`来输出一个10位的随机字符串。` `标签用于换行,以便在浏览器中显示清晰的输出结果。 从这段代码中,我们可以提炼出几个关键知识点: 1. `rand()`函数:在...

    正则表达式随机生成字符串工具

    而“正则表达式随机生成字符串工具”则是一个能够根据预设的正则规则,自动生成符合该规则的随机字符串的实用程序。 这个工具的核心功能在于其灵活性和多样性。通过定义不同的正则表达式,用户可以生成各种类型的...

    易语言快速取随机字符源码

    在循环内部,每次迭代都会生成一个新的随机字符并添加到结果字符串中。 5. **条件判断**:如果需要限制某些字符的出现(例如,避免连续相同的字符),可以添加条件判断语句,如`如果...则`,在生成字符后检查是否...

    生成随机字符串(字符串,数字)

    总的来说,生成随机字符串和数字在C#编程中是一项基础且实用的技能。通过掌握`Random`类的使用和字符串操作,你可以轻松应对各种需求,无论是简单的测试数据填充还是复杂的安全性要求。在Visual Studio 2008中,这些...

    随机字符串生成器.exe

    本工具用于生成随机字符串,可以自定义字符池及字符串长度。欢迎下载使用! 本工具用于生成随机字符串,可以自定义字符池及字符串长度。欢迎下载使用!

    根据正则表达式生成随机字符串

    根据java正则表达式生成一个随机的字符串,具体可以去一下网站看:https://code.google.com/p/xeger/

    js随机生成32位字符串

    js随机生成32位字符串 包含大小写

    C# 生成随机字符串

    最近做个功能,需要用到随机字符串,在网上整理了一些代码,生成随机字符串 可以设置生成的随机字符的取间..

    Java随机字符串生成器,可用于生成随机密码,密约等场景,支持字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)

    Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...

    易语言快速取随机字符

    2. 初始化一个空字符串作为结果,用于存放生成的随机字符。 3. 根据需求设置循环次数,如取十万个字符,就设置循环100000次。 4. 在每次循环中,生成一个随机数,根据这个随机数的范围选择对应的字符集。 5. 使用...

    Java获取随机字符串

    本文将详细介绍如何在Java中生成随机字符串,并且会结合给定的部分代码示例进行深入分析。 #### 基本原理与方法 Java提供了多种方法来生成随机字符串,主要包括使用`java.util.Random`类和`java.security....

    生成随机字符串的方法

    此方法是最常见的一种生成随机字符串的方式,它首先定义一个包含所有可能字符的字符串池,然后通过随机数生成器从中选择字符来构建随机字符串。 **代码示例:** ```java public String make() { String radStr = ...

    java语言产生随机字符串代码正确版.txt

    java语言产生随机字符串代码正确版.txt

    随机字符串/密码生成器

    在网络安全中,随机字符串通常用于生成一次性密码(OTP)、加密密钥、验证码等,因为它们难以被猜测或破解。真正的随机性是通过随机数生成器(RNG)来实现的,这可以是硬件RNG,也可以是软件实现的伪随机数生成器...

    java基础-给出一个随机字符串,判断有多少字母?多少数字?

    System.out.println("请随机输入一段字符串"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); char s[] = str.toCharArray(); int char_num=0;//计算字母 int num = 0;//计算数字 ...

Global site tag (gtag.js) - Google Analytics