发表于: 2017-08-13 23:58:57
3 1057
今天花的时间不多,只完成了随机生成学生数据的一部分,明天继续,完成后学习Mybatis。
一、要生成的学生数据
students表设计如下:
其中前三项是数据库自动生成的,后面的10项需要程序生成。
>>基于实际要求,插入的Student数据中,major和jnshuId不能同时相同。但由于随机数的不确定性,在程序中限制两个Student的major和jnshuId不同时相同复杂而低效。因此,选择在数据库中将major和jnshuId设为联合唯一性索引,然后在插入数据时忽略重复值。
因此,设计RandomStudent类如下:
通过getStudent方法生成学生数据,其中的各种getXxx方法都是随机生成各种数据的静态方法。
二、Java中的随机
Java中常见的有三种随机方式:
- 1.java.lang.Math.random():返回一个0≤x<1.0的double值。在一次JVM的运行中,只创建一个伪随机数生成器,之后对该方法的所有调用,都是通过该生成器来生成随机数。此方法是同步的,可以在多线程中正确运行,但如果有大量线程需要高速生成随机数,对该生成器的争用会降低效率。
- 2.java.util.Random类:实现更多功能的随机数生成。每创建一个对象就会创建一个伪随机数生成器,只要seed不同,生成的随机数序列就会不同;seed相同时,生成的随机数序列完全相同。该类有两种构造方法:
- ---Random():用某个seed创建一个随机数生成器。在一次JVM的运行中,创建每个随机数生成器的seed都不同。也就是说,用此方法创建的多个random对象,生成的随机数序列一定不同(除非用setSeed方法改变seed)。在多线程中,可以每个线程中创建一个random对象,这样就避免了对随机数生成器的争用。
- ---Random(long seed):用给定seed创建随机数生成器。可通过相同seed创建random对象,生成相同的随机数序列。
- 3.java.security.SecureRandom类:提供强加密随机数生成器。
这里不需要用到多线程,也不需要多样化的随机数生成方法,选择Math.random()即可。
三、程序编写
(明早把代码全部写完再写这块)
评论