您的位置:首页 > 编程语言 > Java开发

Java____随机数+时间戳+拼接=图片命名

2015-09-02 11:35 363 查看
————————————————获取随机数————————————————

方法1

(数据类型)(最小值+Math.random()*(最大值-最小值+1))

例:

(int)(1+Math.random()*(10-1+1))

从1到10的int型随数

方法2

方法3

Random ra =new Random();

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

{System.out.println(ra.nextInt(10)+1);}

通过java.util包中的Random类的nextInt方法来得到1-10的int随机数

————————————————获取时间————————————————
package com.java.test;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.lang.System;

public class timerandForPic {
public static void main(String[] args) {
System.out.println(	System.currentTimeMillis());// 返回以毫秒为单位的当前时间。
System.out.println("-----------------------------------");
System.out.println(System.nanoTime());//返回最准确的可用系统计时器的当前值,以毫微秒为单位。
System.out.println("-----------------------------------");
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
}

}


——————————————拼接字符串(转)——————————————

import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestString {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Test
public void testPlus() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s = s + String.valueOf(i);
}
long te = System.currentTimeMillis();
logger.info("+ cost {} ms", te - ts);
}
@Test
public void testConcat() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s = s.concat(String.valueOf(i));
}
long te = System.currentTimeMillis();
logger.info("concat cost {} ms", te - ts);
}
@Test
public void testJoin() {
List<String> list = new ArrayList<String>();
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
list.add(String.valueOf(i));
}
StringUtils.join(list, "");
long te = System.currentTimeMillis();
logger.info("StringUtils.join cost {} ms", te - ts);
}
@Test
public void testStringBuffer() {
StringBuffer sb = new StringBuffer();
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
sb.append(String.valueOf(i));
}
sb.toString();
long te = System.currentTimeMillis();
logger.info("StringBuffer cost {} ms", te - ts);
}
@Test
public void testStringBuilder() {
StringBuilder sb = new StringBuilder();
long ts = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
sb.append(String.valueOf(i));
}
sb.toString();
long te = System.currentTimeMillis();
logger.info("StringBuilder cost {} ms", te - ts);
}
}


运行结果如下:

11:00:22,359  INFO TestString:23 - + cost 1828 ms
11:00:22,921  INFO TestString:34 - concat cost 562 ms
11:00:22,937  INFO TestString:46 - StringUtils.join cost 16 ms
11:00:22,968  INFO TestString:58 - StringBuffer cost 31 ms
11:00:23,031  INFO TestString:70 - StringBuilder cost 63 ms


要特别注意的是:

StringBuilder 循环的次数是其它的10倍,如果是一样,那么返回 0,可见StringBuilder 的速度之快。

总结:

用+的方式效率最差,concat由于是内部机制实现,比+的方式好了不少。

Join 和 StringBuffer,相差不大,Join方式要快些,可见这种JavaScript中快速拼接字符串的方式在Java中也非常适用。

StringBuilder 的速度最快,但其有线程安全的问题,而且只有JDK5支持。

——————————————获取唯一图片名称——————————————
package com.java.test;

import java.text.SimpleDateFormat;
import java.util.*;

public class test1 {

public static void main(String[] args) {

String s = "a";
Random rand = new Random();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式

String time = df.format(new Date());
int randnum1 = rand.nextInt(900)+100;
<span style="color:#ff0000;">time=</span>time.concat(String.valueOf(randnum1));
int randnum2 = rand.nextInt(90)+10;
<span style="color:#ff0000;">time=</span>time.concat(String.valueOf(randnum2));
s=time;

System.out.println(s);
System.out.println(String.valueOf(randnum1)+"abc");

}
s.concat("5"); 输出s就不会有问题。但是time=不加到句子前面输出time 或者s 字符串最后都没有随机数!

#CONCAT后得到的是一个新字符串,并没有存储到原来生命的变量中去!

———————————————选择性更新图片——————————————

更新作物信息时由于form里的file无法传入值,导致读取不到被更新作物的图片信息。原来的方法时每次更新都要把四张图片全部重新录入一遍。现在通过if判断,在更新模式下,当录入的图片为空时不覆盖原图片。

Mybatis SQL语句:
<insert id="uploadPlants" parameterType="cdata">
INSERT INTO wc_plants
(
id,
name,
seed_img,
sprout_img,
growup_img,
ripe_img,
sprout_day,
growup_day,
ripe_day
)
VALUES (
#{id},
#{name},
#{seed_img},
#{sprout_img},
#{growup_img},
#{ripe_img},
#{sprout_day},
#{growup_day},
#{ripe_day})
ON DUPLICATE KEY UPDATE

<if test="NAME!=null and NAME!=''">
NAME=VALUES(NAME),
</if>
<if test="seed_img!=null and seed_img!=''">
seed_img=VALUES(seed_img),
</if>
<if test="sprout_img!=null and sprout_img!=''">
sprout_img=VALUES(sprout_img),
</if>
<if test="growup_img!=null and growup_img!=''">
growup_img=VALUES(growup_img),
</if>
<if test="ripe_img!=null and ripe_img!=''">
ripe_img=VALUES(ripe_img),
</if>
sprout_day=VALUES(sprout_day),growup_day=VALUES(growup_day),ripe_day=VALUES(ripe_day);
</insert>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: