??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人亚洲精品狼色在线,最新亚洲成av人免费看,亚洲AV无码AV吞精久久http://www.tkk7.com/killva/archive/2010/11/13/337979.htmlz神?/dc:creator>z神?/author>Sat, 13 Nov 2010 03:52:00 GMThttp://www.tkk7.com/killva/archive/2010/11/13/337979.htmlhttp://www.tkk7.com/killva/comments/337979.htmlhttp://www.tkk7.com/killva/archive/2010/11/13/337979.html#Feedback0http://www.tkk7.com/killva/comments/commentRss/337979.htmlhttp://www.tkk7.com/killva/services/trackbacks/337979.html知识点一Q分c?span style="font-family: 宋体">
         IO中按照数据流的方向不同可以分入流和输出流Q以E序的角度来考虑Q?/span>

         按照数据单位的不同可以分为字节流和字W流?/span>

         按照功能的不同可以分Ҏ和处理流?br />


知识点二: 四大{l构

  java语言的i/o库提供了四大{l构:InputStream,OutputStream,Reader,Writer四个pd的类。InputStream和OutputStream处理8位字节流数据, Reader和Writer处理16位的字符数据。InputStream和Reader处理输入, OutputStream和Writer处理输出。大家一定要到J2SE文档中看看这四大{l构的类l承体系?/p>

  除了q四大系列类,i/o库还提供了少数的辅助c?其中比较重要的是InputStreamReader和OutputStreamWriter。InputStreamReader把InputStream适配为Reader, OutputStreamWriter把OutputStream适配为Writer;q样架起了字节处理类和字W流处理c间的桥梁?/p>

  您用I/O库时,只要按以上的规则,到相应的cMpML您需要的cd?br />
下面我就会对I/O q行不定期更斎ͼ

1 FileOutputStream 文g字节?br />

Public class FileInputStream extends InputStream

  {

  /* File Descriptor - handle to the open file */

  private FileDescriptor fd;

  public FileInputStream(FileDescriptor fdObj)

  {

  SecurityManager security = System.getSecurityManager();

  if (fdObj == null) {

  throw new NullPointerException();

  }

  if (security != null) {

  security.checkRead(fdObj);

  }

  fd = fdObj;

  }

  //其他代码

  }

  可见,FileInputStreaml承了InputStream,l合了FileDescriptor,采用的是对象Adapter模式。我们学习i/o库时,主要应该掌握q四个对象Adapter模式的适配? ByteArrayInputStream的适配源是Byte数组, FileInputStream的适配源是File对象, PipedInputStream的适配源是PipedOutputStream对象, StringBufferInputStream的适配源是String对象





]]>
java--多线E(著名的生产者与消费者的实例Q?/title><link>http://www.tkk7.com/killva/archive/2010/11/13/337974.html</link><dc:creator>z神?/dc:creator><author>z神?/author><pubDate>Sat, 13 Nov 2010 03:12:00 GMT</pubDate><guid>http://www.tkk7.com/killva/archive/2010/11/13/337974.html</guid><wfw:comment>http://www.tkk7.com/killva/comments/337974.html</wfw:comment><comments>http://www.tkk7.com/killva/archive/2010/11/13/337974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/killva/comments/commentRss/337974.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/killva/services/trackbacks/337974.html</trackback:ping><description><![CDATA[<br /> <p><span style="font-family: 宋体">U程间通信Q一个线E向数据存储I间d数据Q唐老鸭</span><span style="font-family: 宋体">Q,另一个线E从数据存储I间取出数据Q?/span>c琪<span style="font-family: 宋体">Q?/span></p> <p><span style="font-family: 宋体">E序有两U以外需要考虑Q?/span></p> <p style="text-indent: 21pt; margin-left: 18pt; tab-stops: list 18.0pt" class="MsoNormal">1?span style="font: 7pt 'Times New Roman'">      </span><span style="font-family: 宋体">假设</span>唐老鸭<span style="font-family: 宋体">U程刚向数据存储I间d了一辆R的名字。还没有加入q辆车的颜色Q?/span>CPU<span style="font-family: 宋体">切换到?/span>c琪<span style="font-family: 宋体">U程Q?/span>唐老鸭<span style="font-family: 宋体">U程把q辆车的名字和上辆R的颜色联pd了一赗?/span></p> <p style="text-indent: 21pt; margin-left: 18pt; tab-stops: list 18.0pt" class="MsoNormal">2 、唐老鸭<span style="font-family: 宋体">了若q次的数据?/span>c琪<span style="font-family: 宋体">才开始取数据Q或者是Q?/span>c琪<span style="font-family: 宋体">取完了一个数据后Q还没等?/span>唐老鸭<span style="font-family: 宋体">攑օ新的数据Q又重复取出已取q的数据?/span></p> <p><span style="font-family: 宋体">可能出现的问题:</span></p> <p style="text-indent: 21pt; margin-left: 18pt; tab-stops: list 18.0pt" class="MsoNormal">1唐老鸭<span style="font-family: 宋体">?/span>c琪<span style="font-family: 宋体">快时Q?/span>c琪<span style="font-family: 宋体">会漏掉一些数据没有取到?/span></p> <p style="text-indent: 21pt; margin-left: 18pt; tab-stops: list 18.0pt" class="MsoNormal">2?span style="font: 7pt 'Times New Roman'">      </span>c琪<span style="font-family: 宋体">?/span>唐老鸭<span style="font-family: 宋体">快时Q?/span>c琪<span style="font-family: 宋体">取相同的数据?/span></p> <p><span style="font-family: 宋体">多个U程׃n同一资源的时候,必须q行同步Q采用同步方法,解决W一个问题?/span></p> <p><span style="font-family: 宋体">U程的等待和唤醒机制Q?/span></p> <p style="text-indent: 21pt" class="MsoNormal">wait()<span style="font-family: 宋体">Q告诉当前线E放弃监视器q进入睡眠状态,直到其他U程q入同一监视器ƈ调用</span>notify<span style="font-family: 宋体">为止?/span></p> <p style="text-indent: 21pt" class="MsoNormal">notify()<span style="font-family: 宋体">Q唤醒同一对象监视器中调用</span>wait<span style="font-family: 宋体">的第一个线E?/span></p> <p><span style="font-family: 宋体">E序中采用线E的{待和唤醒机Ӟ当发?/span>c琪<span style="font-family: 宋体">没有取走内容Ӟ</span>唐老鸭<span style="font-family: 宋体">应该{待Q当</span>c琪<span style="font-family: 宋体">把内容取C后,</span>唐老鸭<span style="font-family: 宋体">才可以放。这栯决了W二个问题?br /> <br /> <br /> 代码如下Q?br /> <br /> <br /> </p> <p>package Killva.IOchaper4.o3;</p> <p><br /> class Animal{<br />  private String name ="唐老鸭";<br />  private String  sex= "?;<br />  private boolean flag=false;<br />  <br />  public synchronized void set(String name, String sex){//生?br />   //如果flag的g是true则要{待<br />   <br />   if(!flag){<br />    //{待<br />    try{<br />     wait();<br />    }catch(Exception e){}<br />    <br />   }<br />   //如果向下l箋执行了,则表C可以设|, flag =true<br />   this.name=name;<br />   this.sex=sex;<br />   //修改讄的标?br />   flag = false;<br />   //唤醒其他U程<br />   notify();<br />  }<br />  //讄一个输出的Ҏ<br />  public synchronized void get(){<br />   //如果flag的gؓtrue的时候,表示要等?br />   if(flag){<br />    try{<br />     wait();<br />     <br />    }catch(Exception e){}<br />    <br />   }<br />   //如果向下执行了,pC允?br />   System.out.println(this.name+"-->"+this.sex);<br />   //改变标签<br />   flag =true;<br />   notify();<br />  }<br /> }</p> <p>class Pro implements Runnable{<br />  Animal per =null;<br />  public Pro(Animal p){<br />   this.per=p;<br />   <br />  }<br />  public void run() {<br />   int i =0;<br />   <br />   while (true){<br />    <br />    if(i==0){<br />     per.set("c琪", "?);<br />     i=1;<br />     <br />    }else{<br />     per.set("唐老鸭", "?);<br />     i=0;<br />    }<br />   }<br />  }<br /> }</p> <p>class Cus implements Runnable{<br />  Animal per =null;<br />  public Cus(Animal p){<br />   this.per=p;<br />  }<br />  public void run() {<br />   while(true){<br />      per.get();<br />   }<br />  }<br /> }</p> <p><br /> public class Demo01 {<br />  //L?br />  public static void main(String[] args){<br />   Animal per =new Animal();<br />   Pro p =new Pro(per);<br />   Cus c =new Cus(per);<br />   <br />   new Thread(p).start();<br />   new Thread(c).start();<br />   <br />  }</p> <p>}<br /> </p> q行l果Q?/span><br /> <br /> <img border="0" alt="" src="http://www.tkk7.com/images/blogjava_net/killva/32.jpg" /><br /> <br /> <br /> 感谢阅读 Q!Q欢q交!Q!    QQQ?37333696<br /> <img src ="http://www.tkk7.com/killva/aggbug/337974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/killva/" target="_blank">z神?/a> 2010-11-13 11:12 <a href="http://www.tkk7.com/killva/archive/2010/11/13/337974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中关于Socket一个简单的q用Q帮助初学者理解SocketQ!Q?/title><link>http://www.tkk7.com/killva/archive/2010/11/13/337968.html</link><dc:creator>z神?/dc:creator><author>z神?/author><pubDate>Sat, 13 Nov 2010 01:51:00 GMT</pubDate><guid>http://www.tkk7.com/killva/archive/2010/11/13/337968.html</guid><wfw:comment>http://www.tkk7.com/killva/comments/337968.html</wfw:comment><comments>http://www.tkk7.com/killva/archive/2010/11/13/337968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/killva/comments/commentRss/337968.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/killva/services/trackbacks/337968.html</trackback:ping><description><![CDATA[<p>         所谓socket通常也称?套接?Q用于描qIP地址和端口,是一个通信铄句柄。应用程序通常通过"套接?向网l发求或者应{网l请求。Socket和ServerSocketcd位于java.net包中。ServerSocket用于服务器端QSocket是徏立网l连接时使用的。在q接成功Ӟ应用E序两端都会产生一个Socket实例Q操作这个实例,完成所需的会话。对于一个网l连接来_套接字是q等的,q没有差别,不因为在服务器端或在客户端而生不同别。不是Socketq是ServerSocket它们的工作都是通过SocketImplcd其子cd成的?<br /> 下面是我忍ؓ比较重要的APIQ?br />         1? AcceptҎ用于产生"d"Q直到接受到一个连接,q且q回一个客L的Socket对象实例?d"是一个术语,它ɽE序q行暂时"停留"在这个地方,直到一个会话生,然后E序l箋Q通常"d"是由循环产生的?</p> <p>  2? getInputStreamҎ获得|络q接输入Q同时返回一个InputStream对象实例Q?</p> <p>  3? getOutputStreamҎq接的另一端将得到输入Q同时返回一个OutputStream对象实例?</p> <p>  注意Q其中getInputStream和getOutputStreamҎ均会产生一个IOExceptionQ它必须被捕P因ؓ它们q回的流对象Q通常都会被另一个流对象使用?br /> <br />   写代码时一般先写server?<br /> //Server<br /> <br /> package Killva.NetWorkchaper1.o3;</p> <p>import java.io.DataOutputStream;<br /> import java.io.IOException;<br /> import java.net.ServerSocket;<br /> import java.net.Socket;</p> <p>public class TestTCPServer {<br />  public static void main(String args[])throws IOException{<br />   ServerSocket ss =new ServerSocket(9999);<br />   while(true){<br />    System.out.println("--------服务端已q启?-----------");<br />       Socket s =ss.accept();<br />       <br />       DataOutputStream dos =new DataOutputStream(s.getOutputStream());<br />       <br />       System.out.println("客户端["+s.getInetAddress().getHostAddress()+<br />                      "  :"+s.getPort()+<br />                      "]已近链接Q?);<br />       dos.writeUTF("服务器端写入客户端的数据Q客L("+<br />                s.getInetAddress().getHostAddress()+<br />                 "  :"+s.getPort()+<br />                         "]已经链接上服务器端["+<br />                         s.getLocalAddress().getHostName()+<br />                         ":"+s.getLocalPort()+<br />                         "]Q?);<br />       <br />       dos.flush();<br />       dos.close();<br />       s.close();<br />       <br />       <br />   }<br />  }<br />  </p> <p>}<br /> </p> <br /> <br /> Client?br /> <br /> <p>package Killva.NetWorkchaper1.o3;</p> <p>import java.io.DataInputStream;<br /> import java.io.IOException;<br /> import java.net.Socket;</p> <p><br /> public class TestTCPCLient {<br />  public static void main(String[] args) throws IOException{<br />   System.out.println("-------------client?----------");<br />   for(long i=0;i<10;i++){<br />    Socket s =new Socket("192.168.1.*",9999);//IP是用你所在的局域网来测?br />    <br />    DataInputStream dis = new DataInputStream(s.getInputStream());<br />    System.out.println(""+dis.readUTF());<br />    dis.close();<br />    s.close();<br />   }<br />  }<br /> }<br /> <br /> <br /> q行l果真确时服务器端和客户端能q接<br /> <br /> 感谢阅读Q!Q!</p> <br /> <br /> <img src ="http://www.tkk7.com/killva/aggbug/337968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/killva/" target="_blank">z神?/a> 2010-11-13 09:51 <a href="http://www.tkk7.com/killva/archive/2010/11/13/337968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javaU程---实现U程的两U方法(刚学U程理解有限 更新中……)http://www.tkk7.com/killva/archive/2010/11/08/337514.htmlz神?/dc:creator>z神?/author>Mon, 08 Nov 2010 03:56:00 GMThttp://www.tkk7.com/killva/archive/2010/11/08/337514.htmlhttp://www.tkk7.com/killva/comments/337514.htmlhttp://www.tkk7.com/killva/archive/2010/11/08/337514.html#Feedback0http://www.tkk7.com/killva/comments/commentRss/337514.htmlhttp://www.tkk7.com/killva/services/trackbacks/337514.html Normal 0 7.8 ?/w:DrawingGridVerticalSpacing> 0 2 false false false MicrosoftInternetExplorer4
创徏U程有两U方法:l承Threadcd实现Runnable接口?/pre>
 
Ҏ一Q?span lang="EN-US"> Thread c,覆盖Ҏ run()Q我们在创徏?span lang="EN-US"> Thread cȝ子类中重?span lang="EN-US"> run() ,加入U程所要执行的代码卛_?/pre>

a.每个U程都是通过某个特定Thread对象所对应的方?/span>run()l来完成其操作的,Ҏrun()成ؓU程体?/span>

b.如果惌启动多线E,则肯定调?/span>start()ҎQ?/span>startҎ可以调用被子c覆写过?/span>runҎ

c.不过q种q种实现方式会受到单l承的局?/span>

下面是一个例子:
public class MyThread extends Thread {
int count= 1, number;
public MyThread(int num) {
number = num;
System.out.println("创徏U程 " + number);
}
public void run() {
while(true) {
System.out.println("U程 " + number + ":计数 " + count);
if(++count== 6) return;
}
}
public static void main(String args[]) {
for(int i = 0; i < 5; i++) new MyThread(i+1).start();
}
}
 
Ҏ二:实现 Runnable 接口
  Runnable 接口只有一个方?span lang="EN-US"> run()Q我们声明自qcd?span lang="EN-US"> Runnable 接口q提供这一ҎQ将我们的线E代码写入其中,完成了q一部分的Q务?/pre>
但是 Runnable 接口q没有Q何对U程的支持,我们q必d?span lang="EN-US"> Thread cȝ实例Q这一炚w过 Thread cȝ构造函?span lang="EN-US">public Thread(Runnable target);来实现?/pre>

该实现方式有以下好处Q?/span>

?span style="font: 7pt 'Times New Roman'">     适合多个相干同程序代码的U程d理同一资源的情c?/span>

?span style="font: 7pt 'Times New Roman'">     可以避免׃Java单承特性带来的局限?/span>

?span style="font: 7pt 'Times New Roman'">     有利于程序的健壮性,代码能够被多个线E共享?/span>

下面是一个例子:
public class MyThread implements Runnable {
int count= 1, number;
public MyThread(int num) {
number = num;
System.out.println("创徏U程 " + number);
}
public void run() {
while(true) {
System.out.println("U程 " + number + ":计数 " + count);
if(++count== 6) return;
} 
}
public static void main(String args[]) {
for(int i = 0; i < 5; i++) new Thread(new MyThread(i+1)).start();
}
}
  两种Ҏ各有千秋Q可以灵z运用?span lang="EN-US">







]]>JAVA虚拟机内存分配与回收机制http://www.tkk7.com/killva/archive/2010/11/06/337414.htmlz神?/dc:creator>z神?/author>Sat, 06 Nov 2010 10:14:00 GMThttp://www.tkk7.com/killva/archive/2010/11/06/337414.htmlhttp://www.tkk7.com/killva/comments/337414.htmlhttp://www.tkk7.com/killva/archive/2010/11/06/337414.html#Feedback0http://www.tkk7.com/killva/comments/commentRss/337414.htmlhttp://www.tkk7.com/killva/services/trackbacks/337414.htmlJava把内存划分成两种Q一U是栈内存,一U是堆内存?
    在函C定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配?
    当在一D代码块定义一个变量时QJava在栈中个变量分配内存空_当超q变量的作用域后QJava会自动释放掉变量所分配的内存空_该内存空间可以立卌另作他用?
    堆内存用来存攄new建立的对象和数组?
    在堆中分配的内存Q由Java虚拟机的自动垃圾回收器来理?
    在堆中生了一个数l或对象后,q可以在栈中定义一个特D的变量Q让栈中q个变量的取值等于数l或对象在堆内存中的首地址Q栈中的q个变量成了数l或对象的引用变量?
    引用变量q当于是ؓ数组或对象v的一个名Uͼ以后可以在E序中运用栈中的引用变量来访问堆中的数组或对象?
    具体的说Q?
    栈与堆都是Java用来在Ram中存放数据的地点。与C++不同QJava自动理栈和堆,E序员不能直接地配置栈或堆?
    Java的堆是一个运行时数据?cȝ(对象从中分配I间。这些对象通过new、newarray、anewarray和multianewarray{?指o建立Q它们不要E序代码来显式的释放。堆是由垃圾回收来负责的Q堆的优势是可以动态地分配内存大小Q生存期也不必事先告诉编译器Q因为它是在q行?动态分配内存的QJava的垃圾收集器会自动收走这些不再运用的数据。但~点是,׃要在q行时动态分配内存,存取速度较慢?
    栈的优势是,存取速度比堆要快Q仅ơ于寄存器,栈数据可以共享。但~点是,存在栈中的数据大与生存期必L定的,~Z灉|性。栈中主要存放一些基?cd的变量(,int, short, long, byte, float, double, boolean, charQ和对象句柄?
    栈有一个很主要的特D性,是存在栈中的数据可以共享。假设我们同时定义:
    int a = 3;
    int b = 3Q?
    ~译器先处理int a = 3Q首先它会在栈中建立一个变量ؓa的引用,然后查找栈中能不能有3q个|如果没找刎ͼ将3存放q来Q然后将a指向3。接着处理int b = 3Q在建立完b的引用变量后Q因为在栈中已经?q个|便将b直接指向3。这P出Ca与b同时均指?的情c这Ӟ如果再oa=4Q那么编译器 会重新搜索栈中能不能?|如果没有Q则?存放q来Qƈ令a指向4Q如果已l有了,则直接将a指向q个地址。因此a值的改动不会影响到b的倹{要留心q?U数据的׃n与两个对象的引用同时指向一个对象的q种׃n是不同的Q因U情况a的修改ƈ不会影响到b, 它是q译器完成的,它有利于节省I间。而一个对象引用变量修改了q个对象的内部状态,会媄响到另一个对象引用变量?/p>

 

String是一个特D的包装cL据。可以用Q?
    String str = new String("abc");
    String str = "abc";
    两种的Ş式来建立Q第一U是用new()来新建对象的Q它会在存放于堆中。每调用一ơ就会徏立一个新的对象?
    而第二种是先在栈中徏立一个对Stringcȝ对象引用变量strQ然后查找栈中有没有存放"abc"Q如果没有,则将"abc"存放q栈Qƈ令str指向“abc”Q如果已l有“abc” 则直接ostr指向“abc”?
    比较c里面的数D不能相等Ӟ用equals()要领Q当试两个包装cȝ引用能不能指向同一个对象时Q用==Q下面用例子说明上面的理论?
    String str1 = "abc";
    String str2 = "abc";
    System.out.println(str1==str2); //true可以看出str1和str2是指向同一个对象的?
    String str1 =new String ("abc");
    String str2 =new String ("abc");
    System.out.println(str1==str2); // false用new的方式是生成不同的对象。每一ơ生成一个?
    因此用第二种方式建立多个“abc”字符?在内存中其实只存在一个对象而已. q种写法有利与节省内存空? 同时它可以在一定程度上提高E序的运行速度Q因为JVM会自动根据栈中数据的实际情况来决定能不能有必要徏立新对象。而对于String str = new String("abc")Q的代码Q则一概在堆中建立新对象,而不其字符串D不能相等Q能不能有必要徏立新对象Q从而加重了E序的负担?
    另一斚w, 要留?: 我们在运用诸如String str = "abc"Q的格式定义cLQL惛_然地认ؓQ徏立了Stringcȝ对象str。担心陷阱!对象可能q没有被建立Q而可能只是指向一个先前已l徏立的 对象。只有通过new()要领才能保证每次都徏立一个新的对象?׃Stringcȝimmutable性质Q当String变量要l常变换其值时Q应该考虑q用 StringBufferc,以提高程序效率?
    java中内存分配策略及堆和栈的比较
    2.1 内存分配{略按照~译原理的观?E序q行时的内存分配有三U策?分别是静态的,栈式?和堆式的.静态存储分配是指在~译时就能确定每个数据目标在q行时刻的存储空间需?因而在~译时就可以l他们分配固定的内存I间.q种分配{略要求E序代码中不?许有可变数据l构(比如可变数组)的存?也不允许有嵌套或者递归的结构出?因ؓ它们都会D~译E序不能计算准确的存储空间需?栈式存储分配也可UCؓ动态存储分?是由一个类g堆栈的运行栈来实现的.和静态存储分配相?在栈式存储方案中,E序Ҏ据区的需求在~译时是完全未知 ?只有到运行的时候才能够知道,但是规定在运行中q入一个程序模块时,必须知道该程序模块所需的数据区大小才能够ؓ其分配内?和我们在数据l构所熟知 的栈一?栈式存储分配按照先进后出的原则执?分配?/p>

静态存储分配要求在~译时能知道所有变量的存储要求,栈式存储分配要求在流E的入口处必ȝ道所有的存储要求,而堆式存储分配则专门负责在编译时或运行时 模块入口处都不能定存储要求的数据结构的内存分配,比如可变长度串和对象实例.堆由大片的可q用 块或I闲块组?堆中的内存可以按照Q意顺序分配和??
    2.2 堆和栈的比较
    上面的定义从~译原理的教材中ȝ而来,除静态存储分配之?都显得很呆板和难以理?下面撇开静态存储分?集中比较堆和?从堆和栈的功能和作用来通俗的比?堆主要用来存攑֯象的Q栈主要是用来执行程序的.而这U不同又主要是由于堆和栈的特点决定的:在编E中Q例如C/C++中,所有的要领调用都是通过栈来执行 ?所有的局部变?形式参数都是从栈中分配内存空间的。实际上也不是什么分?只是从栈?向上用就?好像工厂中的传送带(conveyor belt)一?Stack Pointer会自动指引你到放东西的位|?你所要做的只是把东西放下来就?退出函数的时候,修改栈指针就可以把栈中的内容销?q样的模式速度最? 当然要用来运行程序了.要留心的是,在分配的时?比如Z个即要调用的程序模块分配数据区?应事先知道这个数据区的大?也就说是虽然分配是在E?序运行时执行 ?但是分配的大多是定?不变?而这?大小多少"是在~译时确定的,不是在运行时.堆是使用E序在运行的时候请求操作系l分配给自己内存Q由于从操作pȝ理的内存分?所以在分配和销毁时都要占用旉Q因此用堆的效率非常?但是堆的 优点在于,~译器不必知道要从堆里分配多存储空_也不必知道存储的数据要在堆里停留多长的时?因此,用堆保存数据时会得到更大的灵zL。事实上,?向对象的多态?堆内存分配是必不可少?因ؓ多态变量所需的存储空间只有在q行时徏立了对象之后才能定.在C++中,要求建立一个对象时Q只需?new命o~制有关的代码即可。执行这些代码时Q会在堆里自动执?数据的保?当然Qؓ辑ֈq种灉|性,必然会付Z定的代h:在堆里分配存储空间时会花 掉更长的旉Q这也正是导致我们刚才所说的效率低的原由 ,看来列宁同志说的?人的优点往往也是人的~点,人的~点往往也是人的优点.
    2.3 JVM中的堆和栈JVM是基于堆栈的虚拟?JVM为每个新建立的线E都分配一个堆?也就是说,对于一个JavaE序来说Q它的运行就是通过对堆栈的操作来完成的。堆栈以帧ؓ单位保存U程的状态。JVM对堆栈只执行 两种操作:以为单位的压栈和出栈操作?
    我们知道,某个U程正在执行的要领称为此U程的当前要?.我们可能不知?当前要领q用的UCؓ当前帧。当U程ȀzM个Java要领 ,JVM׃在线E的 Java堆栈里新压入一个。这个自然成ؓ了当前.在此要领执行期间,q个帧将用来保存参数,局部变?中间计算程和其他数?q个帧在q里和编?原理中的zdU录的概忉|差不多的.从Java的这U分配机制来?堆栈又可以这L?堆栈(Stack)是操作系l在建立某个q程时或者线E?在支持多U程的操作系l中是线E?个线E徏立的存储区域Q该区域h先进后出的特征?
每一个Java使用都唯一对应一个JVM实例Q每一个实例唯一对应一个堆。用程序在q行中所建立的所有类实例或数l都攑֜q个堆中,q由使用所有的U程 ׃n.跟C/C++不同QJava中分配堆内存是自动原始化的。Java中所有对象的存储I间都是在堆中分配的Q但是这个对象的引用却是在堆栈中分配,?是说在建立一个对象时从两个地炚w分配内存Q在堆中分配的内存实际徏立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指?引用)而已?/p>



]]>
java--IO和面向对象(单的水果仓库理pȝ--可选择操作Q?/title><link>http://www.tkk7.com/killva/archive/2010/11/06/337409.html</link><dc:creator>z神?/dc:creator><author>z神?/author><pubDate>Sat, 06 Nov 2010 08:51:00 GMT</pubDate><guid>http://www.tkk7.com/killva/archive/2010/11/06/337409.html</guid><wfw:comment>http://www.tkk7.com/killva/comments/337409.html</wfw:comment><comments>http://www.tkk7.com/killva/archive/2010/11/06/337409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/killva/comments/commentRss/337409.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/killva/services/trackbacks/337409.html</trackback:ping><description><![CDATA[要求Q?br />             1、完成一个对水果仓库理的简单系.?br />             2、完成,增加、查询、修改简单的操作?br /> 分析Q?br />             1、首先我们要有进行分成分?nbsp; 表层----操作?---底层Q?br />             2、表层有什?Q可供操作的选项?增、查、改)Q?br />             3、操作层有什么:完成不同的操作(L件和写文ӞQ?br />             4、底层有什么:完成数据的写出和dQ?br /> 步骤Q?br /> 先完成如下javaproject的创建:<br /> <img border="0" alt="" src="http://www.tkk7.com/images/blogjava_net/killva/29.jpg" width="245" height="235" /><br /> //下面为每个类中的具体内容Q按我做改程序的须写的Q?br /> //Fruit<br /> <p>package VO;</p> <p>import java.io.Serializable;</p> <p>@SuppressWarnings("serial")<br /> public class Fruit implements Serializable {<br /> //属?br />  private String name;<br />  private String area;<br />  private float   kg;<br />  //构造方?br />  public Fruit(){}<br />  public Fruit(String name,String area,float kg){<br />   this.name =name;<br />   this.area =area;<br />   this.kg =kg; <br />  }<br />  <br />  <br />  public String getName() {<br />   return name;<br />  }<br />  public void setName(String name) {<br />   this.name = name;<br />  }<br />  public String getArea() {<br />   return area;<br />  }<br />  public void setArea(String area) {<br />   this.area = area;<br />  }<br />  public float getKg() {<br />   return kg;<br />  }<br />  public void setKg(float kg) {<br />   this.kg = kg;<br />  }<br /> <br />  public String toString (){<br />   return "水果名:"+this.name +"  源圎ͼ"+this.area+"  现重量:"+this.kg ;<br />  }</p> <p>}<br /> <br /> //L?br /> </p> <p>package Main;</p> <p>import Menu.Menu;</p> <p>public class Main {<br />  //L?br />  public static void main(String[] args){<br />   System.out.println("单的水果仓库理pȝ");<br />   //调用MenuҎ<br />   new Menu();<br />  }<br /> }</p> <p>//Menu<br /> <br /> </p> <p>package Menu;</p> <p>import OP.FruitOperate;<br /> import Util.InputDate;</p> <p>public class Menu {<br />  InputDate input= null;<br />  public Menu(){<br />   this.input=new InputDate();<br />   //循环出现菜单<br />   while (true){<br />    this.show();<br />   }<br />  }<br />  //需要定义的菜单内容<br />  private void show() {<br />   System.out.println("\t\t\t1、增加水果库?);    <br />         System.out.println("\t\t\t2、浏览库存信?);    <br />         System.out.println("\t\t\t3、修改库存信?);    <br />         System.out.println("\t\t\t4、注销理pȝ");    <br />         System.out.print("\n\n请选择您要使用的操作:");    <br />         int temp = input.getInt();    <br />         switch(temp){    <br />         case 1:{  // 增加水果库存 <br />                 new FruitOperate().add(); //业务处理?nbsp;  <br />                 break;    <br />         }    <br />         case 2:{ // 览库存信息 <br />                 new FruitOperate().show();    <br />                 break;    <br />         }    <br />         case 3:{ // 修改库存信息<br />                 new FruitOperate().update();    <br />                 break;    <br />         }    <br />         case 4:{ //注销理pȝ<br />                 System.out.println("注销?*****************");    <br />                 System.out.println("注销成功Q?);    <br />                 System.exit(1);    <br />         }    <br />         default:{    //错误信息提示<br />                 System.out.println("请选择正确的操作范围如下:");    <br />                 break;    <br />         }    <br />  <br />         }</p> <p> }<br /> }<br /> </p> <p><br /> <br /> //对度入数据的相关操作<br /> <br /> </p> <p>package Util;</p> <p>import java.io.BufferedReader;<br /> import java.io.IOException;<br /> import java.io.InputStreamReader;</p> <p>public class InputDate {<br />  <br />   private BufferedReader buf =null;    <br />      public InputDate(){    <br />              buf = new BufferedReader(new InputStreamReader(System.in));    <br />      };    <br />      public String getString(){    <br />              String str = null;    <br />              try {    <br />                      str = buf.readLine();    <br />              } catch (IOException e) {}    <br />              return str;    <br />      }    <br />  <br />   public int getInt(){    <br />          int temp = 0;    <br />          //如果输入的不是数字,告诉用户输入错了~    <br />          //可以使用正则验证    <br />          String str = null;    <br />          boolean flag = true;    <br />          while(flag){    <br />                  //输入数据    <br />                  str = this.getString();    <br />                  if (!(str.matches("\\d+"))){    <br />                          //如果输入的不是一个数字,则必重新输?nbsp;   <br />                          System.out.print("输入的内容必L上面操作代号的范_请重新输?");    <br />                  }else{    <br />                          //输入的是一个正的数字Q则可以q行转换    <br />                          temp = Integer.parseInt(str);    <br />                          //表示退出@?nbsp;   <br />                          flag = false;    <br />                  }    <br />          }    <br />          return temp;    <br />  }<br />  public float getFloat() {<br />   <br />      <br />         float f = 0.0f;    <br />         //如果输入的不是数字,提示告诉用户输入错了~    <br />         //可以使用正则验证    <br />         String str = null;    <br />         boolean flag = true;    <br />         while(flag){    <br />                 //输入数据    <br />                 str = this.getString();    <br />                 if (!(str.matches("\\d+?.\\d{1,2}"))){    <br />                         //如果输入的不是一个数字,则必重新输?nbsp;   <br />                         System.out.print("输入的内容必L数(数点后两位)Q请重新输入:");    <br />                 }else{    <br />                         //输入的是一个正的数字Q则可以q行转换    <br />                         f = Float.parseFloat(str);    <br />                         //表示退出@?nbsp;   <br />                         flag = false;    <br />                 }    <br />         }    <br />         return f;    </p> <p>}<br />   <br /> }<br /> </p> <p>///实现理的方法类<br /> <br /> </p> <p>package OP;</p> <p>import Util.FileOperate;<br /> import Util.InputDate;<br /> import VO.Fruit;</p> <p>public class FruitOperate {<br />    private InputDate input = null;    <br />       public FruitOperate(){    <br />               this.input = new InputDate();    <br />       }    <br />       //完成具体的Fruit对象操作    <br />       public void add(){    <br />               //要用输入数据的c?nbsp;   <br />               String name = null;    <br />               String area = null;    <br />               float kg = 0.0f;    <br />               System.out.print("输入水果名:");    <br />               name = this.input.getString();    <br />               System.out.print("输入源圎ͼ");    <br />               area = this.input.getString();                                 <br />               System.out.print("输入入库量:"); <br />               kg = this.input.getFloat();<br />               //生成Fruit对象Q把对象保存在文件中    <br />               Fruit f = new Fruit(name,area,kg);    <br />                          <br />               try{    <br />                       new FileOperate().save(f);    //io操作?br />                       System.out.println("数据保存成功Q?);    <br />               }catch(Exception e){    <br />                       System.out.println("数据保存p|Q?);    <br />               }    <br />       }    <br />       public void show(){    <br />               //从文件中把内容读q来    <br />        Fruit f = null;    <br />               try{    <br />                       f = (Fruit) new FileOperate().read();    <br />               }catch(Exception e){    <br />                       System.out.println("内容昄p|Q请定数据是否存在Q?);    <br />               }    <br />               if(f != null){    <br />                       System.out.println(f);    <br />               }    <br />       }    <br />       public void update(){    <br />               //先将之前的信息查出来    <br />        Fruit f = null;    <br />               try{    <br />                       f = (Fruit) new FileOperate().read();    <br />               }catch(Exception e){    <br />                       System.out.println("内容昄p|Q请定数据是否存在Q?);    <br />               }    <br />               if(f != null){    <br />                       String name = null;    <br />                       String area = null;    <br />                       float kg =0.0f;    <br />                       System.out.print("误入新的水果名Q原水果名:"+f.getName()+"Q?);    <br />                       name = this.input.getString();    <br />                       System.out.print("误入新的源产地Q原源圎ͼ"+f.getArea()+"Q?);    <br />                       area = this.input.getString();    <br />                       System.out.print("误入新的库总量Q原库总量Q?+f.getKg()+"Q?);    <br />                       kg = this.input.getFloat();  <br />                       <br />                       //信息重新讄    <br />                       f.setName(name);    <br />                       f.setArea(area);    <br />                       f.setKg(kg);    <br />                       try{    <br />                               new FileOperate().save(f);    <br />                               System.out.println("数据更新成功Q?);    <br />                       }catch(Exception e){    <br />                               System.out.println("数据更新p|Q?);    <br />                       }    <br />               }    <br />       }   </p> <p>}<br /> </p> <p>//底层操作  文g的读入和d<br /> </p> <p>package Util;</p> <p>import java.io.File;<br /> import java.io.FileInputStream;<br /> import java.io.FileOutputStream;<br /> import java.io.ObjectInputStream;<br /> import java.io.ObjectOutputStream;</p> <p>public class FileOperate {<br />  public static final String FILENAME = "E:\\fruit.txt";    <br />     //把对象保存在文g之中    <br />     public void save(Object obj){    <br />             ObjectOutputStream out = null;    <br />             try {    <br />                     out = new ObjectOutputStream(new FileOutputStream(new File(FILENAME)));    <br />                     //写入对象    <br />                     out.writeObject(obj);    <br />             }catch(Exception e){    <br />                     try {    <br />                             throw e;    <br />                     } catch (Exception e1) {}    <br />             }finally {    <br />                     try {    <br />                             out.close();    <br />                     }catch(Exception e){}    <br />             }    <br />     }    <br />     <br />     //把对象从文g之中d?nbsp;   <br />     public Object read() throws Exception{    <br />             Object obj = null;    <br />             ObjectInputStream input =null;    <br />             try {    <br />                     input = new ObjectInputStream(new FileInputStream(new File(FILENAME)));    <br />                     obj = input.readObject();    <br />             } catch (Exception e) {    <br />                     throw e;    <br />             }finally{    <br />                     try{    <br />                             input.close();                                 <br />                     }catch(Exception e){}    <br />             }    <br />             return obj;    <br />     }    </p> <p>}<br /> </p> <p>q行l果如下Q?br /> <img border="0" alt="" src="http://www.tkk7.com/images/blogjava_net/killva/30.jpg" width="359" height="472" /><br /> <img border="0" alt="" src="http://www.tkk7.com/images/blogjava_net/killva/31.jpg" width="363" height="376" /><br /> <br /> <br /> <br /> q篇文章只是一个原?nbsp; Q感谢阅?nbsp; 希望能够提供宝贵意见QQQQ?37333696<br /> <br /> <br /> <br /> <br /> <br /> <br /> </p> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/killva/aggbug/337409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/killva/" target="_blank">z神?/a> 2010-11-06 16:51 <a href="http://www.tkk7.com/killva/archive/2010/11/06/337409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java----一个简单的股票pȝ原理Q原理版--swt 可视化)http://www.tkk7.com/killva/archive/2010/11/03/337171.htmlz神?/dc:creator>z神?/author>Wed, 03 Nov 2010 12:40:00 GMThttp://www.tkk7.com/killva/archive/2010/11/03/337171.htmlhttp://www.tkk7.com/killva/comments/337171.htmlhttp://www.tkk7.com/killva/archive/2010/11/03/337171.html#Feedback0http://www.tkk7.com/killva/comments/commentRss/337171.htmlhttp://www.tkk7.com/killva/services/trackbacks/337171.html该程序是很简?只是把我上一个程序可视化希望能给初学java的h提供帮助Q!Q?br />
//stock

package StockUI;

public class Stock {

 private int id;      // 
 private String name;  //
 private int price;  //
 private int flag;   //
 
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getPrice() {
  return price;
 }
 public void setPrice(int price) {
  this.price = price;
 }
 public int getFlag() {
  return flag;
 }
 public void setFlag(int flag) {
  this.flag = flag;
 }
 
 
}


//服务器端

package StockUI;

import java.util.Random;


public class StockServer {

 
 public static void main(String[] args){
  
  
  Stock sk[] = getStock();
  for(int i=0;i<sk.length;i++){
   if(sk[i] != null){
    System.out.println("name = " + sk[i].getPrice());
    
   }
  }
 }
 
 
 public static Stock[] getStock(){
  
  
  Stock stock[] = new Stock[3];
 //##################################################### 
  Stock sk = new Stock();
  sk.setId(1);
  sk.setName("ibm");
  Random rd = new Random();
  sk.setPrice(rd.nextInt(100));
  sk.setFlag(1);
  stock[0] = sk;
 //#######################################################
  Stock sk1 = new Stock();
  sk1.setId(2);
  sk1.setName("sun");  
  sk1.setPrice(rd.nextInt(100));
  sk1.setFlag(1);
  stock[1] = sk1;
 //###################################################### 
  Stock sk2 = new Stock();
  sk2.setId(3);
  sk2.setName("oracle");  
  sk2.setPrice(rd.nextInt(100));
  sk2.setFlag(1);
  stock[2] = sk2;
  
  
  
  return stock;
  
 }
 
}




package StockUI;
 
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

 

public class StockUI {
 
private TableEditor editor = null;  
private Table table = null; 

public static void main(String[] args) {  
   new StockUI();  
}  
private StockUI() {  
   Display display = new Display();  
   Shell shell = new Shell(display);  
   shell.setLayout(new FillLayout());  
   shell.setText("大智慧股模拟系l?);  
   createTable(shell,display);  
   shell.pack();       //H口变大
   shell.open();  
   while (!shell.isDisposed()) {  
    if (!display.readAndDispatch())  
     display.sleep();  
   }  
   display.dispose();  
}  
/** 
* 创徏表格 
*  
* @param shell 
*/ 
private void createTable(final Shell shell,final Display display) {  
   table = new Table(shell, SWT.MULTI | SWT.FULL_SELECTION);  
   editor = new TableEditor(table);  
   editor.horizontalAlignment = SWT.LEFT;  
   editor.grabHorizontal = true;  
   table.setHeaderVisible(true);  
   table.setLinesVisible(true);  
   TableColumn col1 = new TableColumn(table, SWT.LEFT);  
   col1.setText("股票代码");  
   col1.setWidth(100);  
   TableColumn col2 = new TableColumn(table, SWT.LEFT);  
   col2.setText("公司?);  
   col2.setWidth(100);  
   TableColumn col5 = new TableColumn(table, SWT.LEFT);  
   col5.setText("Ch");  
   col5.setWidth(100);  
   TableColumn col3 = new TableColumn(table, SWT.LEFT);  
   col3.setText("涨幅");  
   col3.setWidth(100);  
   TableColumn col4 = new TableColumn(table, SWT.LEFT);  
   col4.setText("换手?);  
   col4.setWidth(100);  
   /** 
   * d表格数据 
   */ 
 
  
   Stock[] sk = StockServer.getStock();
   final TableItem[] itemArr = new TableItem[sk.length];
   for(int i=0;i<itemArr.length;i++){
   itemArr[i] = new TableItem(table, SWT.LEFT);
   }
   
 final int time=1000;  
    Runnable showTime = new Runnable(){          
          public void run(){  
           Stock[] sk = StockServer.getStock();
           for(int i=0;i<itemArr.length;i++){
            itemArr[i].setText(new String[] { String.valueOf(sk[i].getId()), String.valueOf(sk[i].getName()), String.valueOf(sk[i].getPrice())
               });
           }   
              display.timerExec(time, this);  
          }  
    };                  
 display.timerExec(time,showTime);//你的swtE序的display
  
  
   // 删除菜单  
   Menu menu1 = new Menu(shell, SWT.POP_UP);  
   table.setMenu(menu1);  
   MenuItem menuitem1 = new MenuItem(menu1, SWT.PUSH);  
   menuitem1.setText("删除");  
   menuitem1.addListener(SWT.Selection, new Listener() {  
    @Override 
    public void handleEvent(Event event) {  
     MessageBox mbox = new MessageBox(shell, SWT.DIALOG_TRIM|SWT.ICON_INFORMATION);  
     mbox.setText("删除成功");  
     mbox.setMessage("删除? + table.getSelectionCount() + "条记?);  
     table.remove(table.getSelectionIndices());  
     mbox.open();  
    }  
   });  
   // 修改table  
   {}  
}  
}



//q行l果如下Q?br /> 不同时段 不同l果
















]]>
java----一个简单的股票pȝ原理Q原理版Q?/title><link>http://www.tkk7.com/killva/archive/2010/11/02/336847.html</link><dc:creator>z神?/dc:creator><author>z神?/author><pubDate>Tue, 02 Nov 2010 12:45:00 GMT</pubDate><guid>http://www.tkk7.com/killva/archive/2010/11/02/336847.html</guid><wfw:comment>http://www.tkk7.com/killva/comments/336847.html</wfw:comment><comments>http://www.tkk7.com/killva/archive/2010/11/02/336847.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/killva/comments/commentRss/336847.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/killva/services/trackbacks/336847.html</trackback:ping><description><![CDATA[<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 ?/w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表? mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">我写的这个系l主要是z股工作原?Q真真的股票pȝ我想一定比q个要复杂的多!着个程序只是让我们了解面的咱对象的意义Q!Q?/span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">要求Q?/span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">要求在股服务器中存储一些列不同股票的基本信息,包括股票LQ股类型,上市公司Q股h根{在客户端实时显C信息,q且要求股票h要实时变化?/span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">分析Q?/span></p> <p class="MsoNormal" style="margin-left: 30pt; text-align: left; text-indent: -30pt;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><span>1?span style="font: 7pt "Times New Roman";">        </span></span></span><span style="font-size: 12pt; font-family: 宋体;">创徏一个股类Q里面包括股号码,股票cdQ上市公司,股票P股票的方法(<span lang="EN-US">get/set</span>Ҏ和构造函敎ͼQ属性要U有Q方法要公有?/span></p> <p class="MsoNormal" style="margin-left: 30pt; text-align: left; text-indent: -30pt;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><span>2?span style="font: 7pt "Times New Roman";">        </span></span></span><span style="font-size: 12pt; font-family: 宋体;">创徏一个股服务器c,当客L需要调用股信息时Q用于需要时传递给客户端一l股信息,</span></p> <p class="MsoNormal" style="margin-left: 30pt; text-align: left; text-indent: -30pt;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><span>3?span style="font: 7pt "Times New Roman";">        </span></span></span><span style="font-size: 12pt; font-family: 宋体;">创徏一个股客Lc,q个c需要实时显CQ动信息,因此需要调用服务器端的数据Q通过一个获取方法)Q然后打印出来股数l中每一个数据的基本信息Q这样就实现了股hg断Q动显C的效果?/span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">以下附该E序代码<span lang="EN-US">:</span></span></p> <p class="MsoNormal" style="text-align: left;" align="left">//股票c?/p> <p class="MsoNormal" style="text-align: left;" align="left">package com.dr.stock;<br /> <br /> <br /> public class Stock implements Comparable<Object> {<br />     private int id;<br />     private int num;<br />     private String name;<br />     private int price;<br />     <br />     public String toString(){<br />         return this.getId()+"  "+this.getNum()+" "+this.getName()+"  "+this.getPrice();<br />         <br />     }<br />     <br />     public int getId() {<br />         return id;<br />     }<br />     public void setId(int id) {<br />         this.id = id;<br />     }<br />     public int getNum() {<br />         return num;<br />     }<br />     public void setNum(int num) {<br />         this.num = num;<br />     }<br />     public String getName() {<br />         return name;<br />     }<br />     public void setName(String name) {<br />         this.name = name;<br />     }<br />     public int getPrice() {<br />         return price;<br />     }<br />     public void setPrice(int price) {<br />         this.price = price;<br />     }<br />     @Override<br />     public int compareTo(Object obj) {<br />         Stock s =  (Stock)obj;<br />         if(this.price<s.price){<br />             return -1;<br />         }<br />         else if(this.price>s.price){<br />             return 1;<br />         }else{<br />             return 0;<br />         }<br />     }<br /> <br /> }<br /> //服务器类</p> <p class="MsoNormal" style="text-align: left;" align="left">package com.dr.stock;<br /> <br /> import java.util.ArrayList;<br /> import java.util.List;<br /> import java.util.Random;<br /> <br /> public class StockServer {<br />     <br />     private static List<Stock> stockList =new ArrayList<Stock>();<br />        static{<br />            <br />            Stock stock = new Stock();<br />             <br />             stock.setId(01);<br />             stock.setNum(2524);<br />             stock.setName("hhg");<br />             <br />             stockList.add(stock);    <br />             stock = new Stock();<br />             stock.setId(02);<br />             stock.setNum(2252);<br />             stock.setName("smj");<br />             <br />             stockList.add(stock);    <br />         <br />           }<br />     <br />     <br />     public static List<Stock> getStockList(){<br />         <br />         Random r = new Random();<br />         <br />         for(Stock stock : stockList){<br />         stock.setPrice(r.nextInt(100));<br />         }<br /> <br />         return stockList;<br />     }<br /> <br /> }<br /> //客户?/p> <p class="MsoNormal" style="text-align: left;" align="left">package com.dr.stock;<br /> <br /> <br /> import java.util.Iterator;<br /> import java.util.List;<br /> import java.util.Set;<br /> import java.util.TreeSet;<br /> <br /> public class StockClient {<br />     public static void getStockListFromServer(){<br />         <br />         List<Stock> stockList =StockServer.getStockList();<br />     <br />         for(Stock s:stockList){<br />             System.out.println(s.getId()+"  "+s.getNum()+" "+s.getName()+"  "+s.getPrice());<br />         }<br />     <br />         System.out.println("-------");<br />         <br />          Set<Stock> s1 = new TreeSet<Stock>();<br />           //s1.add(stockList);<br />             s1.add(StockServer.getStockList().get(0));<br />             s1.add(StockServer.getStockList().get(1));<br />          for(Iterator<Stock> iter = s1.iterator(); <br />             iter.hasNext(); <br />             System.out.println(iter.next()));<br />          <br />          System.out.println("##################");<br />         <br />     }<br />     <br />     public static void main(String[] args){        <br /> <br /> <br />             <br />         while (true){<br />         getStockListFromServer();<br />         try {<br />             Thread.sleep(1000*3);<br />         } catch (InterruptedException e) {<br /> <br />             e.printStackTrace();<br />             break;<br />         }<br />     }<br />     }<br /> }<br /> </p> <p class="MsoNormal" style="text-align: left;" align="left">//q行l果Q?/p> <img alt="" src="http://www.tkk7.com/images/blogjava_net/killva/23.jpg" height="466" width="198" /><br /> <p class="MsoNormal" style="text-align: left;" align="left"><br /> </p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> </p> <p class="MsoNormal" style="text-align: left;" align="left"><img alt="" src="http://www.tkk7.com/images/blogjava_net/killva/24.jpg" height="657" width="198" /></p> <p class="MsoNormal" style="text-align: left;" align="left">感谢阅读  !!!!! <br /> </p> <p class="MsoNormal" style="text-align: left;" align="left">希望提供宝贵的意见!Q!<br /> </p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> </p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> </p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> </p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><br /> <span style="font-size: 12pt; font-family: 宋体;"></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;"><span lang="EN-US"><br /> </span></span></p> <img src ="http://www.tkk7.com/killva/aggbug/336847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/killva/" target="_blank">z神?/a> 2010-11-02 20:45 <a href="http://www.tkk7.com/killva/archive/2010/11/02/336847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java? 单的d代码Q?SWT 可视化界?http://www.tkk7.com/killva/archive/2010/11/02/336841.htmlz神?/dc:creator>z神?/author>Tue, 02 Nov 2010 12:14:00 GMThttp://www.tkk7.com/killva/archive/2010/11/02/336841.htmlhttp://www.tkk7.com/killva/comments/336841.htmlhttp://www.tkk7.com/killva/archive/2010/11/02/336841.html#Feedback0http://www.tkk7.com/killva/comments/commentRss/336841.htmlhttp://www.tkk7.com/killva/services/trackbacks/336841.html
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Login {

    public static void main(String[] args) {
        Display display = new Display();
        final Shell shell = new Shell();
        shell.setBounds(30, 75, 300, 400);
        shell.setText("登陆界面");
       
     // ------------------新插入的界面核心代码------------------------
  
        //创徏触发按钮以及按钮的显C文字和大小位置
        Button okButton = new Button(shell,SWT.NONE);
        Button registerButton = new Button(shell,SWT.NONE);
        okButton.setText("定");
        registerButton.setText("注册");
        registerButton.setBounds(160, 235, 70, 25);
        okButton.setBounds(60, 235, 70, 25);
      
        final Text nameText = new Text(shell,SWT.NONE);
        final Text passNumber = new Text(shell,SWT.PASSWORD);
        nameText.setBounds(120, 100, 110, 20);
        passNumber.setBounds(120, 160, 110, 20);
      
        Label nameLabel = new Label(shell,SWT.NONE);
        nameLabel.setText("用户名:");
        nameLabel.setBounds(65, 100, 40,20);
      
        Label passLabel = new Label(shell,SWT.NONE);
        passLabel.setText("?nbsp;  码:");
        passLabel.setBounds(65, 165, 40, 20);
      
        //输入后单ȝ定后的操?br />         okButton.addSelectionListener(new SelectionAdapter(){
            public void widgetSelected(SelectionEvent e){
                //创徏一个adm数组
                Users[] user = new Users[3];
            
                user[0] = new Users("123", "123");
                user[1] = new Users("123456", "123456");
                user[2] = new Users("123456789", "123456789");
              
                int j=-1;
              
                //判断账号密码是否正确
                for(int i=0;i<user.length;i++){
                    if(user[i].getName().equals(nameText.getText())&&user[i].getPastNumber().equals(passNumber.getText())){
                        j = 0;
                       break;
                    }
                }              
                if(j==0){
                    MessageDialog.openWarning(shell, "恭喜", "Ƣ迎"+nameText.getText()+"d");
                }
                else{
                     MessageDialog.openError(shell, "错误","误入正的用户名或密码Q?);
                }
               
               
           }
        }
      
        );
      
      
        registerButton.addSelectionListener(new SelectionAdapter(){
            public void widgetSelected(SelectionEvent e){{
                //用一个错误对话框来提醒该功能q没有实?br />                  MessageDialog.openError(shell, "错误","该功能还没有实现Q?);
            }}});
       
      //-----------------------END-----------------------------------
        shell.open();
        while(!shell.isDisposed()){
            if(!display.readAndDispatch()){
                display.sleep();
            }
        }
        display.dispose();
      
    }

}


class Users{
    private String username;
    private String pastNumber;
  
    Users(String name, String pastNumber){
        this.username = name;
        this.pastNumber = pastNumber;
    }

    public String getName() {
        return username;
    }

    public void setName(String name) {
        this.username = name;
    }

    public String getPastNumber() {
        return pastNumber;
    }

    public void setPastNumber(String pastNumber) {
        this.pastNumber = pastNumber;
    }
  
  
  
}


q行l果Q?br /> 情况如下
1?br />


2?br />
3?br />



感谢阅读Q!Q!Q希望提供宝贉|见!Q!QQQQ?37333696





















]]>
java? 单的d代码Q?/title><link>http://www.tkk7.com/killva/archive/2010/11/02/336770.html</link><dc:creator>z神?/dc:creator><author>z神?/author><pubDate>Tue, 02 Nov 2010 03:00:00 GMT</pubDate><guid>http://www.tkk7.com/killva/archive/2010/11/02/336770.html</guid><wfw:comment>http://www.tkk7.com/killva/comments/336770.html</wfw:comment><comments>http://www.tkk7.com/killva/archive/2010/11/02/336770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/killva/comments/commentRss/336770.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/killva/services/trackbacks/336770.html</trackback:ping><description><![CDATA[<span style="font-family: 楷体_GB2312;">要求Q做一个小E序Q在控制台输入用户名和密码,判断当输入正输?#8220;<font face="楷体_GB2312">Ƣ迎讉K哈!Q!</font>”Q输入错误输?#8220;<font face="楷体_GB2312">用户名和密码不正!Q!</font>”<br /> <br /> 代码如下Q?br /> <p><font face="楷体_GB2312">package com.dr.Static;</font></p> <p><font face="楷体_GB2312">import java.util.Scanner;</font></p> <p><font face="楷体_GB2312">public class Demo06 {</font></p> <p><font face="楷体_GB2312"> <br />  public static void main(String[] args) {<br />   <br />   Scanner s0=new Scanner(System.in);<br />   System.out.println("误入用户名Q?);<br />   String name=s0.nextLine();<br />   <br />   Scanner s1=new Scanner(System.in);<br />   System.out.println("误入密码:");<br />   String pwd=s1.nextLine();<br />   <br />   if("abc".equals(name)&&"123".equals(pwd)){<br />    System.out.println("Ƣ迎讉K哈!Q!");<br />   }<br />   else{<br />    System.out.println("用户名和密码不正!Q!");<br />   }<br />  }</font></p> <p><font face="楷体_GB2312">}<br /> </font></p> <br /> 输入正确的运行结果:<br /> <br /> <img alt="" src="http://www.tkk7.com/images/blogjava_net/killva/18.jpg" height="190" width="173" /><br /> q行错误l果Q?br /> <img alt="" src="http://www.tkk7.com/images/blogjava_net/killva/17.jpg" height="153" width="192" /><br /> </span> <img src ="http://www.tkk7.com/killva/aggbug/336770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/killva/" target="_blank">z神?/a> 2010-11-02 11:00 <a href="http://www.tkk7.com/killva/archive/2010/11/02/336770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://meijibear.com" target="_blank">ij˾þþþӰԺѹۿ</a>| <a href="http://www79909c.com" target="_blank">ִӲˬƵ</a>| <a href="http://3bmmatv.com" target="_blank">Ůžž</a>| <a href="http://96yizhi.com" target="_blank">ྫƷxxxx</a>| <a href="http://91se01.com" target="_blank">ֱӽѿƵվ</a>| <a href="http://b7277.com" target="_blank">ַ߹ۿ</a>| <a href="http://ee45987.com" target="_blank">޹Ʒ۲ӰԺ߹ۿ </a>| <a href="http://by22877.com" target="_blank">AVרAVѿ</a>| <a href="http://140699.com" target="_blank">ۺһƷþ</a>| <a href="http://0147222.com" target="_blank">͵͵Ʒ</a>| <a href="http://dbyssw.com" target="_blank">С˵ͼƬ</a>| <a href="http://spxingyiquan.com" target="_blank">99߹߲ѹۿ</a>| <a href="http://717795.com" target="_blank">Ƶ2ѹۿ</a>| <a href="http://my77789.com" target="_blank">ۺavһ </a>| <a href="http://nnlxl.com" target="_blank">պŷƵ</a>| <a href="http://fz166.com" target="_blank">ƷŮͬһѲ</a>| <a href="http://vcnxa.com" target="_blank">˳.wwwʯ</a>| <a href="http://gzbaida.com" target="_blank">һ245699</a>| <a href="http://shelaoban.com" target="_blank">޹ۺ91Ʒ鶹</a>| <a href="http://cdkunyu.com" target="_blank">AVۺɫһ</a>| <a href="http://9898vip.com" target="_blank">޾ƷþþþþĻ</a>| <a href="http://yanhx.com" target="_blank">޳AƬ߹ۿ3D</a>| <a href="http://ziniurj.com" target="_blank">ѹۿAVƬ</a>| <a href="http://scdsrq.com" target="_blank">ƷĻƵ</a>| <a href="http://kppp4.com" target="_blank">һ</a>| <a href="http://13813855.com" target="_blank">ȫƵѹۿ</a>| <a href="http://alankell.com" target="_blank">˿appַios</a>| <a href="http://jogador1.com" target="_blank">պƵƵ</a>| <a href="http://hairdehf.com" target="_blank">߹ۿ</a>| <a href="http://ai-xian.com" target="_blank">Ʒާѡ2021</a>| <a href="http://26cgw.com" target="_blank">רר</a>| <a href="http://hzsprfm.com" target="_blank">ҹƷ</a>| <a href="http://youyou8tv.com" target="_blank">һëƬѿ˾</a>| <a href="http://922eee.com" target="_blank">ý61</a>| <a href="http://dnf1000.com" target="_blank">þavСݲ</a>| <a href="http://nit8.com" target="_blank">˾ƷƵ</a>| <a href="http://16688shop.com" target="_blank">ɫվapp߹ۿ</a>| <a href="http://91packing.com" target="_blank">ĻѹۿƵ</a>| <a href="http://gttest5.com" target="_blank">߻ɫӰ</a>| <a href="http://66keke.com" target="_blank">ĻƵ</a>| <a href="http://ygloka.com" target="_blank">뾫ƷA߹ۿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>