﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-java之家-随笔分类-java基础</title><link>http://www.blogjava.net/kang-ak/category/28107.html</link><description>开发心得</description><language>zh-cn</language><lastBuildDate>Fri, 14 Dec 2007 09:36:10 GMT</lastBuildDate><pubDate>Fri, 14 Dec 2007 09:36:10 GMT</pubDate><ttl>60</ttl><item><title>随机数</title><link>http://www.blogjava.net/kang-ak/archive/2007/12/14/167681.html</link><dc:creator>java fan nb</dc:creator><author>java fan nb</author><pubDate>Fri, 14 Dec 2007 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/kang-ak/archive/2007/12/14/167681.html</guid><wfw:comment>http://www.blogjava.net/kang-ak/comments/167681.html</wfw:comment><comments>http://www.blogjava.net/kang-ak/archive/2007/12/14/167681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kang-ak/comments/commentRss/167681.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kang-ak/services/trackbacks/167681.html</trackback:ping><description><![CDATA[<p>import java.util.ArrayList;<br />
import java.util.List;<br />
import java.util.Random;<br />
public class PrimeNumberTest {<br />
&nbsp;/** Creates a new instance of PrimeNumberTest */<br />
&nbsp;public PrimeNumberTest() { } <br />
public static void main(String[] args){<br />
&nbsp;//获得一个4位数的随机大素数 <br />
long longVar4 = createRadomPrimeNunber(4); <br />
System.out.println(longVar4);<br />
&nbsp;//获得一个5位数的随机大素数 <br />
long longVar5 = createRadomPrimeNunber(5); <br />
System.out.println(longVar5);<br />
&nbsp;} <br />
public static long createRadomPrimeNunber(int n){<br />
&nbsp;long recLong = 0; <br />
List list = listAllPrimeNumber(n); <br />
Random rd = new Random(); <br />
int randomIndex = Math.abs( rd.nextInt()%list.size()); <br />
recLong = ((Long)list.get(randomIndex)).longValue(); <br />
return recLong; <br />
}<br />
&nbsp;public static List listAllPrimeNumber(int n){ <br />
List list = new ArrayList(); <br />
long low = (long)Math.pow(10,n-1);<br />
&nbsp;long high = (long)Math.pow(10,n) - 1; <br />
for(long i= low;i &lt; high;i++){ <br />
if( isSushu(i)) { <br />
list.add(new Long(i)); <br />
} }<br />
&nbsp;return list; <br />
}<br />
&nbsp;public static boolean isSushu(long x){<br />
//定义一个判断一个数是否是素数的函数 <br />
if(x&lt;2) return false; if( x==2)return true; <br />
for(long i=2;<br />
i&lt;= (long)Math.sqrt(x);i++)<br />
&nbsp;if(x%i==0) <br />
return false; <br />
return true;<br />
&nbsp;}}</p>
<br />
<br />
<br />
例二<br />
<p>import java.util.Random;<br />
/**<br />
&nbsp;* Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。<br />
&nbsp;* 它可以产生int、long、float、double以及Goussian等类型的随机数。<br />
&nbsp;* java.lang.Math中的方法random()只产生double型的随机数。<br />
&nbsp;*/<br />
public class RandomNumber{</p>
<p>&nbsp;public static void main(String[] args) {</p>
<p>&nbsp;&nbsp;// 使用java.lang.Math的random方法生成随机数<br />
&nbsp;&nbsp;System.out.println("Math.random(): " + Math.random());</p>
<p>&nbsp;&nbsp;// 使用不带参数的构造方法构造java.util.Random对象<br />
&nbsp;&nbsp;System.out.println("使用不带参数的构造方法构造的Random对象:");<br />
&nbsp;&nbsp;Random rd1 = new Random();<br />
&nbsp;&nbsp;// 产生各种类型的随机数<br />
&nbsp;&nbsp;// 按均匀分布产生整数<br />
&nbsp;&nbsp;System.out.println("int: " + rd1.nextInt());<br />
&nbsp;&nbsp;// 按均匀分布产生长整数<br />
&nbsp;&nbsp;System.out.println("long: " + rd1.nextLong());<br />
&nbsp;&nbsp;// 按均匀分布产生大于等于0，小于1的float数[0, 1)<br />
&nbsp;&nbsp;System.out.println("float: " + rd1.nextFloat());<br />
&nbsp;&nbsp;// 按均匀分布产生[0, 1)范围的double数<br />
&nbsp;&nbsp;System.out.println("double: " + rd1.nextDouble());<br />
&nbsp;&nbsp;// 按正态分布产生随机数<br />
&nbsp;&nbsp;System.out.println("Gaussian: " + rd1.nextGaussian());</p>
<p>&nbsp;&nbsp;// 生成一系列随机数<br />
&nbsp;&nbsp;System.out.print("随机整数序列:");<br />
&nbsp;&nbsp;for (int i = 0; i &lt; 5; i++) {<br />
&nbsp;&nbsp;&nbsp;System.out.print(rd1.nextInt() + "&nbsp; ");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;System.out.println();</p>
<p>&nbsp;&nbsp;// 指定随机数产生的范围<br />
&nbsp;&nbsp;System.out.print("[0,10)范围内随机整数序列: ");<br />
&nbsp;&nbsp;for (int i = 0; i &lt; 10; i++) {<br />
&nbsp;&nbsp;&nbsp;// Random的nextInt(int n)方法返回一个[0, n)范围内的随机数<br />
&nbsp;&nbsp;&nbsp;System.out.print(rd1.nextInt(10) + "&nbsp; ");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;System.out.print("[5,23)范围内随机整数序列: ");<br />
&nbsp;&nbsp;for (int i = 0; i &lt; 10; i++) {<br />
&nbsp;&nbsp;&nbsp;// 因为nextInt(int n)方法的范围是从0开始的，<br />
&nbsp;&nbsp;&nbsp;// 所以需要把区间[5,28)转换成5 + [0, 23)。<br />
&nbsp;&nbsp;&nbsp;System.out.print(5 + rd1.nextInt(23) + "&nbsp; ");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;System.out.print("利用nextFloat()生成[0,99)范围内的随机整数序列: ");<br />
&nbsp;&nbsp;for (int i = 0; i &lt; 10; i++) {<br />
&nbsp;&nbsp;&nbsp;System.out.print((int) (rd1.nextFloat() * 100) + "&nbsp; ");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;System.out.println();</p>
<p>&nbsp;&nbsp;// 使用带参数的构造方法构造Random对象<br />
&nbsp;&nbsp;// 构造函数的参数是long类型，是生成随机数的种子。<br />
&nbsp;&nbsp;System.out.println("使用带参数的构造方法构造的Random对象:");<br />
&nbsp;&nbsp;Random ran2 = new Random(10);<br />
&nbsp;&nbsp;// 对于种子相同的Random对象，生成的随机数序列是一样的。<br />
&nbsp;&nbsp;System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: ");<br />
&nbsp;&nbsp;for (int i = 0; i &lt; 10; i++) {<br />
&nbsp;&nbsp;&nbsp;System.out.print(ran2.nextInt(10) + "&nbsp; ");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;Random ran3 = new Random(10);<br />
&nbsp;&nbsp;System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: ");<br />
&nbsp;&nbsp;for (int i = 0; i &lt; 10; i++) {<br />
&nbsp;&nbsp;&nbsp;System.out.print(ran3.nextInt(10) + "&nbsp; ");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;// ran2和ran3生成的随机数序列是一样的，如果使用两个没带参数构造函数生成的Random对象，<br />
&nbsp;&nbsp;// 则不会出现这种情况，这是因为在没带参数构造函数生成的Random对象的种子缺省是当前系统时间的毫秒数。</p>
<p>&nbsp;&nbsp;// 另外，直接使用Random无法避免生成重复的数字，如果需要生成不重复的随机数序列，需要借助数组和集合类<br />
&nbsp;&nbsp;//本书第4章将给出解决方法。<br />
&nbsp;}<br />
}</p>
<p>运行结果：<br />
C:\&gt;java&nbsp; RandomNumber<br />
Math.random(): 0.525171492959965<br />
使用不带参数的构造方法构造的Random对象:<br />
int: 636539740<br />
long: -752663949229005813<br />
float: 0.87349784<br />
double: 0.4065973309853902<br />
Gaussian: 0.4505871918488808<br />
随机整数序列:1936784917&nbsp; 1339857386&nbsp; -1185229615&nbsp; 1883411721&nbsp; 1409219372<br />
[0,10)范围内随机整数序列: 1&nbsp; 1&nbsp; 5&nbsp; 5&nbsp; 9&nbsp; 0&nbsp; 1&nbsp; 0&nbsp; 2&nbsp; 4<br />
[5,23)范围内随机整数序列: 9&nbsp; 13&nbsp; 26&nbsp; 18&nbsp; 11&nbsp; 27&nbsp; 26&nbsp; 12&nbsp; 21&nbsp; 8<br />
利用nextFloat()生成[0,99)范围内的随机整数序列: 1&nbsp; 47&nbsp; 72&nbsp; 59&nbsp; 49&nbsp; 86&nbsp; 80&nbsp; 88&nbsp; 55&nbsp;&nbsp; 82</p>
<p>使用带参数的构造方法构造的Random对象:<br />
使用种子为10的Random对象生成[0,10)内随机整数序列:<br />
3&nbsp; 0&nbsp; 3&nbsp; 0&nbsp; 6&nbsp; 6&nbsp; 7&nbsp; 8&nbsp; 1&nbsp; 4<br />
使用另一个种子为10的Random对象生成[0,10)内随机整数序列:<br />
3&nbsp; 0&nbsp; 3&nbsp; 0&nbsp; 6&nbsp; 6&nbsp; 7&nbsp; 8&nbsp; 1&nbsp; 4<br />
<br />
<br />
<br />
例三:带随机种子的随机数<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp; import &nbsp; java.util.*; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; public &nbsp; class &nbsp; test &nbsp; { &nbsp; <br />
&nbsp; public &nbsp; static &nbsp; void &nbsp; main(String[] &nbsp; args) &nbsp; { &nbsp; <br />
&nbsp; Random &nbsp; rand &nbsp; = &nbsp; new &nbsp; Random(); &nbsp; <br />
&nbsp; for(int &nbsp; i &nbsp; = &nbsp; 0; &nbsp; i &nbsp; &lt; &nbsp; 10; &nbsp; i++) &nbsp; { &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rand.setSeed(i); &nbsp; <br />
&nbsp; System.out.println(rand.nextInt()); &nbsp; <br />
&nbsp; } &nbsp; <br />
&nbsp; } &nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
<br />
</p>
<img src ="http://www.blogjava.net/kang-ak/aggbug/167681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kang-ak/" target="_blank">java fan nb</a> 2007-12-14 10:06 <a href="http://www.blogjava.net/kang-ak/archive/2007/12/14/167681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 如何快速生成100万不重复的8位编号</title><link>http://www.blogjava.net/kang-ak/archive/2007/12/14/167672.html</link><dc:creator>java fan nb</dc:creator><author>java fan nb</author><pubDate>Fri, 14 Dec 2007 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/kang-ak/archive/2007/12/14/167672.html</guid><wfw:comment>http://www.blogjava.net/kang-ak/comments/167672.html</wfw:comment><comments>http://www.blogjava.net/kang-ak/archive/2007/12/14/167672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kang-ak/comments/commentRss/167672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kang-ak/services/trackbacks/167672.html</trackback:ping><description><![CDATA[<p style="background: #ccffff; margin: 0cm 0cm 0pt"><font size="3"><strong><span style="color: red; font-family: 宋体">生成</span><span style="color: red"><font face="Times New Roman">100</font></span></strong><strong><span style="color: red; font-family: 宋体">万条</span><span style="color: red"><font face="Times New Roman">8</font></span></strong><strong><span style="color: red; font-family: 宋体">位不重复数据的示例</span></strong></font></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; background: #f3f3f3; padding-bottom: 1pt; border-left: medium none; padding-top: 1pt; border-bottom: windowtext 1pt solid">
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">USE</span><span style="font-size: 9pt; font-family: 'Courier New'"> tempdb</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">GO</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">创建测试表</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">CREATE</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: blue">TABLE</span> tb<span style="color: gray">(</span>id <span style="color: blue">char</span><span style="color: gray">(</span>8<span style="color: gray">))</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">创建用于自动过滤重复值的唯一索引</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">CREATE</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: blue">UNIQUE</span> <span style="color: blue">INDEX</span> IX_tb <span style="color: blue">ON</span> tb<span style="color: gray">(</span>id<span style="color: gray">)</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">WITH</span><span style="font-size: 9pt; font-family: 'Courier New'"> IGNORE_DUP_KEY </span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">GO</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">测试数据插入的处理时间</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">, </span><span style="font-size: 9pt; color: green; font-family: 宋体">记录开始处理的时间点</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">DECLARE</span><span style="font-size: 9pt; font-family: 'Courier New'"> @dt <span style="color: blue">datetime</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">SET</span><span style="font-size: 9pt; font-family: 'Courier New'"> @dt <span style="color: gray">=</span> <span style="color: fuchsia">GETDATE</span><span style="color: gray">()</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">插入随机数据</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">SET</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: blue">NOCOUNT</span> <span style="color: blue">ON</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">DECLARE</span><span style="font-size: 9pt; font-family: 'Courier New'"> @row <span style="color: blue">int</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">SET</span><span style="font-size: 9pt; font-family: 'Courier New'"> @row <span style="color: gray">=</span> 1000000&nbsp;<span style="color: green">-- </span></span><span style="font-size: 9pt; color: green; font-family: 宋体">设置总记录数</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">WHILE</span><span style="font-size: 9pt; font-family: 'Courier New'"> @row <span style="color: gray">&gt;</span>0</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">BEGIN</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: green">-- </span></span><span style="font-size: 9pt; color: green; font-family: 宋体">显示提示信息</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">, </span><span style="font-size: 9pt; color: green; font-family: 宋体">表示还需要插入多行数据</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: blue">RAISERROR</span><span style="color: gray">(</span><span style="color: red">'need %d rows'</span><span style="color: gray">,</span> 10<span style="color: gray">,</span> 1<span style="color: gray">,</span> @row<span style="color: gray">)</span> <span style="color: blue">WITH</span> NOWAIT</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: green">-- </span></span><span style="font-size: 9pt; color: green; font-family: 宋体">插入随机的位编码数据</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: blue">SET</span> <span style="color: blue">ROWCOUNT</span> @row</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: blue">INSERT</span> tb <span style="color: blue">SELECT</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id <span style="color: gray">=</span> <span style="color: gray">RIGHT(</span>100000000 <span style="color: gray">+</span> <span style="color: fuchsia">CONVERT</span><span style="color: gray">(</span><span style="color: blue">bigint</span><span style="color: gray">,</span> <span style="color: fuchsia">ABS</span><span style="color: gray">(</span><span style="color: fuchsia">CHECKSUM</span><span style="color: gray">(</span><span style="color: fuchsia">NEWID</span><span style="color: gray">()))),</span> 8<span style="color: gray">)</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: blue">FROM</span> syscolumns c1<span style="color: gray">,</span> syscolumns c2</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: blue">SET</span> @row <span style="color: gray">=</span> @row <span style="color: gray">-</span> <span style="color: fuchsia">@@ROWCOUNT</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">END</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">显示插入数据使用的时间</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">SELECT</span><span style="font-size: 9pt; font-family: 'Courier New'"> BeginDate <span style="color: gray">=</span> @dt<span style="color: gray">,</span> EndDate <span style="color: gray">=</span> <span style="color: fuchsia">GETDATE</span><span style="color: gray">(),</span> </span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; Second <span style="color: gray">=</span> <span style="color: fuchsia">DATEDIFF</span><span style="color: gray">(</span>Second<span style="color: gray">,</span> @dt<span style="color: gray">,</span> <span style="color: fuchsia">GETDATE</span><span style="color: gray">()),</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">GO</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">显示最终的结果记录是否正确</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">SELECT</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: fuchsia">COUNT</span><span style="color: gray">(*)</span> <span style="color: blue">FROM</span> tb</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">GO</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">-- </span><span style="font-size: 9pt; color: green; font-family: 宋体">删除测试</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">DROP</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: blue">TABLE</span> tb</span></p>
</div>
<p style="background: #ccffff; margin: 0cm 0cm 0pt"><strong><font size="3"><span style="color: red; font-family: 宋体">解决中用到的技巧：</span></font></strong></p>
<div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; background: #f3f3f3; padding-bottom: 1pt; border-left: medium none; padding-top: 1pt; border-bottom: windowtext 1pt solid">
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt 21pt; border-left: medium none; text-indent: -21pt; padding-top: 0cm; border-bottom: medium none; tab-stops: list 21.0pt"><span style="color: blue"><font face="Times New Roman"><font size="3">1．</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </font></span></span><font size="3"><span style="color: blue; font-family: 宋体">控制产生的数据不重复，直接使用唯一索引中的</span></font><span style="font-size: 9pt; color: red; font-family: 'Courier New'">IGNORE_DUP_KEY</span><span style="font-size: 9pt; color: blue; font-family: 宋体">选项，使插入数据中的重复值自动过滤，避免手工处理重复</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt 21pt; border-left: medium none; text-indent: -21pt; padding-top: 0cm; border-bottom: medium none; tab-stops: list 21.0pt"><span style="color: blue"><font face="Times New Roman"><font size="3">2．</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </font></span></span><font size="3"><span style="color: blue; font-family: 宋体">使用</span><font face="Times New Roman"><span style="color: red">CHECKSUM</span></font><span style="color: blue; font-family: 宋体">配合</span><font face="Times New Roman"><span style="color: red">NEWID()</span></font><span style="color: blue; font-family: 宋体">函数，使生成的数据尽量随机，一般生成随机数会考虑使用</span><font face="Times New Roman"><span style="color: red">RAND()</span></font><span style="color: blue; font-family: 宋体">函数，但这个函数是产生伪随机值，用下面的语句测试一下，会发现产生的数据全部是一样的，这不适用于想批量生成多个随机数，而</span><font face="Times New Roman"><span style="color: red">NEWID()</span></font><span style="color: blue; font-family: 宋体">函数生成的是</span><span style="color: blue"><font face="Times New Roman">GUID</font></span><span style="color: blue; font-family: 宋体">，基本上不会有重复的，再通过</span><span style="color: red"><font face="Times New Roman">CHECKSUM</font></span><span style="color: blue; font-family: 宋体">将其转化成数字，这样产生重复的可能性会比较小</span></font></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #ffcc99; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">SELECT</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: blue">TOP</span> 10</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #ffcc99; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; text-align: left" align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: fuchsia">RAND</span><span style="color: gray">()</span></span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #ffcc99; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">FROM</span><span style="font-size: 9pt; font-family: 'Courier New'"> sysobjects</span></p>
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; background: #f3f3f3; padding-bottom: 0cm; margin: 0cm 0cm 0pt 21pt; border-left: medium none; text-indent: -21pt; padding-top: 0cm; border-bottom: medium none; tab-stops: list 21.0pt"><span style="color: blue"><font face="Times New Roman"><font size="3">3．</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </font></span></span><font size="3"><span style="color: blue; font-family: 宋体">在效率控制，使用循环</span><span style="color: blue"><font face="Times New Roman">+</font></span><span style="color: blue; font-family: 宋体">批量生成的方式，而不是传统的逐个生成。在</span><span style="color: blue"><font face="Times New Roman">SQL Server</font></span><span style="color: blue; font-family: 宋体">中，每个插入语句都会有一个内部的事务处理，如果逐条插入，则事务的开销太大，效率势必非常低；不考虑一次性生成</span><span style="color: blue"><font face="Times New Roman">100</font></span><span style="color: blue; font-family: 宋体">万数据，一则因为生成的数据可能有重复的，去掉重复就没有</span><span style="color: blue"><font face="Times New Roman">100</font></span><span style="color: blue; font-family: 宋体">万了，二则一次性生成</span><span style="color: blue"><font face="Times New Roman">100</font></span><span style="color: blue; font-family: 宋体">万数据，消耗的内存和</span><span style="color: blue"><font face="Times New Roman">CPU</font></span><span style="color: blue; font-family: 宋体">资源也很高，一般的电脑可能承受不住</span></font></p>
</div>
 <img src ="http://www.blogjava.net/kang-ak/aggbug/167672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kang-ak/" target="_blank">java fan nb</a> 2007-12-14 09:47 <a href="http://www.blogjava.net/kang-ak/archive/2007/12/14/167672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>