张生工作室

一切皆有可能

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  24 随笔 :: 3 文章 :: 11 评论 :: 0 Trackbacks

2007年9月14日 #

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Vector;

import javax.microedition.io.Connector;
import javax.microedition.io.ServerSocketConnection;
import javax.microedition.io.SocketConnection;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class GroupServer extends MIDlet implements Runnable {
 
 private ServerSocketConnection ssc=null;
 private SocketConnection sc=null;
 private Vector v=new Vector();

 protected void startApp() throws MIDletStateChangeException {

    try {
   ssc=(ServerSocketConnection)Connector.open("socket://:9999");
    
   new Thread(this).start();
   
  } catch (IOException e) {
   
   e.printStackTrace();
  }
   

 }

 protected void destroyApp(boolean b) throws MIDletStateChangeException {


 }

 protected void pauseApp() {


 }

 public void run() {
  while(true)
  {
   
   try {
    sc=(SocketConnection)ssc.acceptAndOpen();
    ChatThread chat=new ChatThread(sc);
    v.addElement(chat);
    chat.start();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  
  
 }
 class ChatThread extends Thread
 {
  private SocketConnection sc=null;
  private DataOutputStream dos=null;
  private DataInputStream dis=null;
  public ChatThread(SocketConnection sc)
  {
   this.sc=sc;
   try
   {
       dis=sc.openDataInputStream();
       dos=sc.openDataOutputStream();
   }
   catch(Exception e)
   {
    
   }
   
  }
  public void run()
  {
   while(true)
   {
    try
    {
       // dis=sc.openDataInputStream();
       // dos=sc.openDataOutputStream();
        String str=dis.readUTF();
        for(int i=0;i<v.size();i++)
        {
         ChatThread chat= (ChatThread)v.elementAt(i);
        //chat.dos.writeUTF(chat.dis.readUTF());
         chat.dos.writeUTF(str);
        // System.out.println(str+"\n");
        
        }
    }
    catch(Exception e)
    {
     
    }
   }
  }
 }

 

}

posted @ 2008-12-02 22:40 张生工作室 阅读(298) | 评论 (0)编辑 收藏

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.ServerSocketConnection;
import javax.microedition.io.SocketConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class Client extends MIDlet  implements CommandListener {
 
 

 private DataInputStream dis=null;
 private DataOutputStream dos=null;
 private ServerSocketConnection ssc=null;
 //private StreamConnection sc=null;
 private SocketConnection sc=null;
 private TextField msg=null;
 private Form frm=null;
 private Command cmdSend=null;
 private StringItem imsg=null;
 
 protected void startApp() throws MIDletStateChangeException {
  
  frm=new Form("客户端");
  cmdSend=new Command("发送",Command.OK,1);
  msg=new TextField("请输入你的信息","",255,TextField.ANY);
  frm.append(msg);
  frm.addCommand(cmdSend);
  frm.setCommandListener(this);
  Display.getDisplay(this).setCurrent(frm);
  
  
  try {
   sc=(SocketConnection)Connector.open("socket://127.0.0.1:9999");
   //sc=ssc.acceptAndOpen();
   dis=sc.openDataInputStream();
   dos=sc.openDataOutputStream();
   Chat chat=new Chat();
   chat.start();
   
  } catch (IOException e) {
  
   e.printStackTrace();
  }
  

 }
 

 public void commandAction(Command c, Displayable d) {
  if(c==cmdSend)
  {
   try {
    dos.writeUTF(msg.getString()+"\n");
   } catch (IOException e) {
    // TODO Auto-generated catch block
    System.out.println(e.getMessage()+"\n");
   }
   msg.setString("");
  }
  
  
 }

 protected void destroyApp(boolean b) throws MIDletStateChangeException {
  

 }

 protected void pauseApp() {
 

 }
 
 class Chat extends Thread
 {
  public void run()
  {
   while(true)
   {
    
     try {
      imsg=new StringItem(dis.readUTF(),"");
      frm.insert(1, imsg);
    
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   }
   
   
  }
 }

 
 

 

}

posted @ 2008-12-01 20:28 张生工作室 阅读(232) | 评论 (0)编辑 收藏

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.ServerSocketConnection;
import javax.microedition.io.SocketConnection;
import javax.microedition.io.StreamConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class Server extends MIDlet  implements CommandListener {
 
 

 private DataInputStream dis=null;
 private DataOutputStream dos=null;
 private ServerSocketConnection ssc=null;
 //private StreamConnection sc=null;
 private SocketConnection sc=null;
 private TextField msg=null;
 private Form frm=null;
 private Command cmdSend=null;
 private StringItem imsg=null;
 
 protected void startApp() throws MIDletStateChangeException {
  
  frm=new Form("服务器");
  cmdSend=new Command("发送",Command.OK,1);
  msg=new TextField("请输入你的信息","",255,TextField.ANY);
  frm.append(msg);
  frm.addCommand(cmdSend);
  frm.setCommandListener(this);
  Display.getDisplay(this).setCurrent(frm);
  
  
  try {
   ssc=(ServerSocketConnection)Connector.open("socket://:9999");
   sc=(SocketConnection)ssc.acceptAndOpen();
   dis=sc.openDataInputStream();
   dos=sc.openDataOutputStream();
   Chat chat=new Chat();
   chat.start();
   
  } catch (IOException e) {
  
   e.printStackTrace();
  }
  

 }
 

 public void commandAction(Command c, Displayable d) {
  if(c==cmdSend)
  {
   try {
    dos.writeUTF(msg.getString()+"\n");
   } catch (IOException e) {
    // TODO Auto-generated catch block
    System.out.println(e.getMessage()+"\n");
   }
   msg.setString("");
  }
  
  
 }

 protected void destroyApp(boolean b) throws MIDletStateChangeException {
  

 }

 protected void pauseApp() {
 

 }
 
 class Chat extends Thread
 {
  public void run()
  {
   while(true)
   {
    
     try {
      imsg=new StringItem( dis.readUTF(),"");
      frm.insert(1, imsg);
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   }
   
   
  }
 }

 
 

 

}

posted @ 2008-12-01 20:28 张生工作室 阅读(355) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class MessageMIDlet extends MIDlet {

 
 private welcome wcfrm=null;
 
 public MessageMIDlet() {

 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {


 }

 protected void pauseApp() {
 

 }

 protected void startApp() throws MIDletStateChangeException {
 
  wcfrm=new welcome(this);
  Display.getDisplay(this).setCurrent(wcfrm);
 }

}

class welcome extends Form implements CommandListener
{

 
    private Command cmdExit=null;
    private Command cmdWrite=null;
    private writemsg wrfrm=null;
    private MIDlet let=null;
   
    public welcome(MIDlet mlet)
    {
     super("欢迎使用本程序");
     let=mlet;
 
     cmdExit=new Command("退出",Command.EXIT,1);
     cmdWrite=new Command("写短信",Command.SCREEN,1);
     this.addCommand(cmdExit);
     this.addCommand(cmdWrite);
     this.setCommandListener(this);
     
    }
 public void commandAction(Command c, Displayable d) {
 
   if(c==cmdExit)
   {
  
    let.notifyDestroyed();
   }
   else
    if(c==cmdWrite)
    {
     wrfrm=new writemsg(let);
     Display.getDisplay(let).setCurrent(wrfrm);
   
    
    }
 
 }

}
class writemsg extends javax.microedition.lcdui.Form implements CommandListener,ItemStateListener
{
 

 private Command cmdBack=null;
 private Command cmdwrNum=null;
 private MIDlet let=null;
 private TextField tf=null;
 private Command cmdDel=null;
 private writeNum2 wrnum=null;
 
 

 public writemsg(MIDlet mlet)
 {
 
  super("请输入短信内容");
  let=mlet;
  cmdBack=new Command("返回",Command.EXIT,1);
  cmdwrNum=new Command("发送",Command.SCREEN,1);
  cmdDel=new Command("删除",Command.EXIT,1);
  this.addCommand(cmdBack);
  this.addCommand(cmdwrNum);
 
  tf= new  TextField("","",255,TextField.ANY);
  //tf.addCommand(cmdDel);
  this.append(tf);
  this.setItemStateListener(this);
  this.setCommandListener(this);
  tf.setLayout(TextField.LAYOUT_VEXPAND);
 }
 
 public void commandAction(Command c, Displayable d) {
 
  if(c==cmdBack)
  {
   Display.getDisplay(let).setCurrent(new welcome(let));
  
  }else if(c==cmdwrNum)
  {
  wrnum=new  writeNum2(let);
   Display.getDisplay(let).setCurrent(wrnum);
  
  }else if(c==cmdDel)
  {
   int p=tf.getCaretPosition();
   if(p>0)
   {
    tf.delete(p-1, 1);
   }
   if(tf.getString().length()==0)
   {
      this.removeCommand(cmdDel);
      this.addCommand(cmdBack);
   
   }
  
  }

 
 }

 public void itemStateChanged(Item i) {
 
  if(i==tf)
  {
    if( tf.getString().length()>0)
    {
    // this.addCommand(cmdDel);
     this.removeCommand(cmdBack);
     this.addCommand(cmdDel);
    }
    else
    {
     this.removeCommand(cmdDel);
     this.addCommand(cmdBack);
    }
  
  
  }
 
 
 }
 
 
}

 

class writeNum2 extends javax.microedition.lcdui.Form implements CommandListener,ItemStateListener
{
 

 private Command cmdBack=null;
 private Command cmdwrNum=null;
 private MIDlet let=null;
 private TextField tf=null;
 private Command cmdDel=null;
 private Form preFrm=null;
 private boolean sendflag=false;

 
 

 public writeNum2(MIDlet mlet)
 {
 
  super("请输入对方号码");
  let=mlet;
  preFrm=(Form) Display.getDisplay(let).getCurrent();
  cmdBack=new Command("返回",Command.EXIT,1);
  cmdwrNum=new Command("发送",Command.SCREEN,1);
  cmdDel=new Command("删除",Command.EXIT,1);
  this.addCommand(cmdBack);
  this.addCommand(cmdwrNum);
 
  tf= new  TextField("","",13,TextField.NUMERIC);
  //tf.addCommand(cmdDel);
  this.append(tf);
  this.setItemStateListener(this);
  this.setCommandListener(this);
 
 }
 
 public void commandAction(Command c, Displayable d) {
 
  if(c==cmdBack)
  {
  if (sendflag)
  Display.getDisplay(let).setCurrent(new welcome(let));
  else
   Display.getDisplay(let).setCurrent(this.preFrm);
  
  }else if(c==cmdwrNum)
  {

    String msg= ((TextField)(preFrm.get(0))).getString();
    String phonenum= tf.getString();
   
    this.append("信息内容:"+ msg);
    this.append("发送号码:"+ phonenum);
    this.append("发送状态:成功");
    this.delete(0);
    this.removeCommand(cmdwrNum);
    this.removeCommand(cmdDel);
    this.addCommand(cmdBack);
    sendflag=true;
  }else if(c==cmdDel)
  {
   int p=tf.getCaretPosition();
   if(p>0)
   {
    tf.delete(p-1, 1);
   }
   if(tf.getString().length()==0)
   {
      this.removeCommand(cmdDel);
      this.addCommand(cmdBack);
   
   }
  
  }

 
 }


 public void itemStateChanged(Item i) {
 
  if(i==tf)
  {
    if( tf.getString().length()>0)
    {
    // this.addCommand(cmdDel);
     this.removeCommand(cmdBack);
     this.addCommand(cmdDel);
    }
    else
    {
     this.removeCommand(cmdDel);
     this.addCommand(cmdBack);
    }
  
  
  }
 
 
 }
 
 
}

/*

class writeNum extends Form implements CommandListener
{

 private MIDlet let=null;
 private Command cmdSend=null;
 private Command cmdBack=null;
 private TextField num=null;
 private Form backfrm=null;
 public writeNum(MIDlet mlet) {
 
  super("请输入要发送的号码");
  let=mlet;
  num=new TextField("","",13,TextField.NUMERIC);
  this.append(num);
  cmdSend=new Command("发送",Command.OK,1);
  cmdBack=new Command("返回",Command.BACK,1);
  this.addCommand(cmdSend);
  this.addCommand(cmdBack);
  this.backfrm=(Form) Display.getDisplay(let).getCurrent();
  this.setCommandListener(this);
 
 
 }

 public void commandAction(Command c, Displayable d) {
  if(c==cmdSend)
  {
   try
   {
    String msg=((TextField)this.backfrm.get(0)).getString();//当跨几个Form时应该怎么办?
    this.append("信息:"+ msg+"已发送到:"+ num.getString());
  
   this.delete(0);
   this.setTitle("信息已发送成功");
   }
   catch(Exception e)
   {
    this.append("信息成功发送");
   }
  }
  else if(c==cmdBack)
  {
   Display.getDisplay(let).setCurrent(this.backfrm);
  }
 
 
 }
 
}
**/

 

posted @ 2008-11-28 13:06 张生工作室 阅读(373) | 评论 (1)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class MessageMIDlet extends MIDlet {

 
 private welcome wcfrm=null;
 
 public MessageMIDlet() {

 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {


 }

 protected void pauseApp() {
 

 }

 protected void startApp() throws MIDletStateChangeException {
 
  wcfrm=new welcome(this);
  Display.getDisplay(this).setCurrent(wcfrm);
 }

}

class welcome extends Form implements CommandListener
{

 
    private Command cmdExit=null;
    private Command cmdWrite=null;
    private writemsg wrfrm=null;
    private MIDlet let=null;
   
    public welcome(MIDlet mlet)
    {
     super("欢迎使用本程序");
     let=mlet;
 
     cmdExit=new Command("退出",Command.EXIT,1);
     cmdWrite=new Command("写短信",Command.SCREEN,1);
     this.addCommand(cmdExit);
     this.addCommand(cmdWrite);
     this.setCommandListener(this);
     
    }
 public void commandAction(Command c, Displayable d) {
 
   if(c==cmdExit)
   {
  
    let.notifyDestroyed();
   }
   else
    if(c==cmdWrite)
    {
     wrfrm=new writemsg(let);
     Display.getDisplay(let).setCurrent(wrfrm);
   
    
    }
 
 }

}
class writemsg extends javax.microedition.lcdui.Form implements CommandListener,ItemStateListener
{
 

 private Command cmdBack=null;
 private Command cmdwrNum=null;
 private MIDlet let=null;
 private TextField tf=null;
 private Command cmdDel=null;
 private writeNum wrnum=null;
 
 

 public writemsg(MIDlet mlet)
 {
 
  super("请输入短信内容");
  let=mlet;
  cmdBack=new Command("返回",Command.EXIT,1);
  cmdwrNum=new Command("发送",Command.SCREEN,1);
  cmdDel=new Command("删除",Command.EXIT,1);
  this.addCommand(cmdBack);
  this.addCommand(cmdwrNum);
 
  tf= new  TextField("","",255,TextField.ANY);
  //tf.addCommand(cmdDel);
  this.append(tf);
  this.setItemStateListener(this);
  this.setCommandListener(this);
 
 }
 
 public void commandAction(Command c, Displayable d) {
 
  if(c==cmdBack)
  {
   Display.getDisplay(let).setCurrent(new welcome(let));
  
  }else if(c==cmdwrNum)
  {
   wrnum=new writeNum(let);
   Display.getDisplay(let).setCurrent(wrnum);
  
  }else if(c==cmdDel)
  {
   int p=tf.getCaretPosition();
   if(p>0)
   {
    tf.delete(p-1, 1);
   }
   if(tf.getString().length()==0)
   {
      this.removeCommand(cmdDel);
      this.addCommand(cmdBack);
   
   }
  
  }

 
 }

 public void itemStateChanged(Item i) {
 
  if(i==tf)
  {
    if( tf.getString().length()>0)
    {
    // this.addCommand(cmdDel);
     this.removeCommand(cmdBack);
     this.addCommand(cmdDel);
    }
    else
    {
     this.removeCommand(cmdDel);
     this.addCommand(cmdBack);
    }
  
  
  }
 
 
 }
 
 
}

class writeNum extends Form implements CommandListener
{

 private MIDlet let=null;
 private Command cmdSend=null;
 private Command cmdBack=null;
 private TextField num=null;
 private writemsg backfrm=null;
 public writeNum(MIDlet mlet) {
 
  super("请输入要发送的号码");
  let=mlet;
  num=new TextField("","",13,TextField.NUMERIC);
  this.append(num);
  cmdSend=new Command("发送",Command.OK,1);
  cmdBack=new Command("返回",Command.BACK,1);
  this.addCommand(cmdSend);
  this.addCommand(cmdBack);
  this.backfrm=(writemsg) Display.getDisplay(let).getCurrent();
  this.setCommandListener(this);
 
 
 }

 public void commandAction(Command c, Displayable d) {
  if(c==cmdSend)
  {
   try
   {
    String msg=((TextField)this.backfrm.get(0)).getString();//当跨几个Form时应该怎么办?
    this.append("信息:"+ msg+"已发送到:"+ num.getString());
  
   this.delete(0);
   this.setTitle("信息已发送成功");
   }
   catch(Exception e)
   {
    this.append("信息成功发送");
   }
  }
  else if(c==cmdBack)
  {
   Display.getDisplay(let).setCurrent(this.backfrm);
  }
 
 
 }
 
}

 

posted @ 2008-11-28 00:04 张生工作室 阅读(201) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MIDletItemCommmandListener extends MIDlet implements ItemCommandListener,CommandListener,ItemStateListener {
                                                              
 
 private Form frm=new Form("Item监听器");
 private TextField uid=new TextField("用户名","",20,TextField.ANY);
 private TextField pwd=new TextField("密码","",20,TextField.PASSWORD);
 private Display dis=Display.getDisplay(this);
 private Command Del=new Command("删除",Command.ITEM,1);
 
 public MIDletItemCommmandListener() {
  
 }

 protected void startApp() throws MIDletStateChangeException {
  
  
  
  frm.append(uid);
  uid.addCommand(Del);
  pwd.addCommand(Del);
  pwd.setItemCommandListener(this);
  uid.setItemCommandListener(this);
  frm.append(pwd);
  dis.setCurrent(frm);
  dis.setCurrentItem(pwd);
  frm.setItemStateListener(this);
  


 }
 
 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
 

 }

 protected void pauseApp() {
  

 }

 public void commandAction(Command c, Item i) {
  
  if(c==Del)
  {
   TextField tf=(TextField)i;
   
   int p=tf.getCaretPosition();
   if(p>0)
   {
   tf.delete(p-1, 1);
   }
  }
 
  
 }

 public void commandAction(Command c, Displayable d) {
  
  
 }

 public void itemStateChanged(Item i) {
  
    if(i==uid)
    {
     frm.setTitle("用户名"+uid.getString());
    } else if(i==pwd)
    {
     frm.setTitle("密码"+uid.getString());
    }
  
 }

 

}

posted @ 2008-11-27 08:49 张生工作室 阅读(399) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MIDletItemCommmandListener extends MIDlet implements ItemCommandListener,CommandListener {
                                                              
 
 private Form frm=new Form("Item监听器");
 private TextField uid=new TextField("用户名","",20,TextField.ANY);
 private TextField pwd=new TextField("密码","",20,TextField.PASSWORD);
 private Display dis=Display.getDisplay(this);
 private Command Del=new Command("删除",Command.ITEM,1);
 
 public MIDletItemCommmandListener() {
  // TODO Auto-generated constructor stub
 }

 protected void startApp() throws MIDletStateChangeException {
  
  
  
  frm.append(uid);
  uid.addCommand(Del);
  pwd.addCommand(Del);
  pwd.setItemCommandListener(this);
  uid.setItemCommandListener(this);
  frm.append(pwd);
  dis.setCurrent(frm);
  dis.setCurrentItem(pwd);
  


 }
 
 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  

 }

 public void commandAction(Command c, Item i) {
  
  if(c==Del)
  {
   TextField tf=(TextField)i;
   
   int p=tf.getCaretPosition();
   if(p>0)
   {
   tf.delete(p-1, 1);
   }
  }
 
  
 }

 public void commandAction(Command c, Displayable d) {
  
  
 }

 

}

posted @ 2008-11-27 08:34 张生工作室 阅读(565) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class ListImage extends MIDlet {
 
 
 private List list;
 private Display dis;

 public ListImage() {
  // TODO Auto-generated constructor stub
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  
  
  list=new List("列表",List.MULTIPLE);
  Image img=null;
  try
  {
   
  img=Image.createImage("/mlogo.PNG");
  
  
  }
  catch(Exception e)
  {
   System.out.println("Error");
  }
  list.append("图片", img);
  Font f=null;
  f=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_UNDERLINED, Font.SIZE_LARGE);
  list.setFont(0, f);
  dis=Display.getDisplay(this);
  dis.setCurrent(list);
  // TODO Auto-generated method stub

 }

}

posted @ 2008-11-26 09:54 张生工作室 阅读(237) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class MIDlet3 extends MIDlet implements CommandListener  {
 
 private List list=null;
 
 private Command cmdOk=null;
 
 private Display dis=null;

 public MIDlet3() {
  // TODO Auto-generated constructor stub
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  
    cmdOk=new Command("确定",Command.OK,1);
   
    list=new List("请选择",List.MULTIPLE);
  
  for(int i=0;i<10;i++)
  {
   list.append("列表"+i, null);
   
  }
  list.addCommand(cmdOk);
  dis=Display.getDisplay(this);
  list.setCommandListener(new Operater());
  dis.setCurrent(list);
  // TODO Auto-generated method stub

 }

 public void commandAction(Command c, Displayable d) {
    //Method1
  int size=list.size();
  for(int i=0;i<size;i++)
  {
   if(list.isSelected(i))
   {
    System.out.print(list.getString(i));
   }
  }
  //Method 2
  /*
  boolean[] Flags=new boolean[list.size()];
     list.getSelectedFlags(Flags);
     for(int i=0;i<list.size();i++)
     {
      if(Flags[i])
      {
       System.out.print(list.getString(i));
      }
     }
     */
  
 }

}

 

 

posted @ 2008-11-26 09:35 张生工作室 阅读(175) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class MIDlet3 extends MIDlet implements CommandListener  {
 
 private List list=null;
 
 private Command cmdOk=null;
 
 private Display dis=null;

 public MIDlet3() {
  // TODO Auto-generated constructor stub
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  
    cmdOk=new Command("确定",Command.OK,1);
   
    list=new List("请选择",List.MULTIPLE);
  
  for(int i=0;i<10;i++)
  {
   list.append("列表"+i, null);
   
  }
  //list.addCommand(cmdOk);
  
  list.setCommandListener(new Operater());
  dis.setCurrent(list);
  // TODO Auto-generated method stub

 }

 public void commandAction(Command c, Displayable d) {
    //Method1
  int size=list.size();
  for(int i=0;i<size;i++)
  {
   if(list.isSelected(i))
   {
    System.out.print(list.getString(i));
   }
  }
  //Method 2
  boolean[] Flags=new boolean[list.size()];
     list.getSelectedFlags(Flags);
     for(int i=0;i<list.size();i++)
     {
      if(Flags[i])
      {
       System.out.print(list.getString(i));
      }
     }
  
 }

}

 

 

posted @ 2008-11-26 08:52 张生工作室 阅读(182) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class MIDlet2 extends MIDlet  {
 
 private List list;
 
 private Command cmdOk;
 
 private Display dis;

 public MIDlet2() {
  // TODO Auto-generated constructor stub
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  
    cmdOk=new Command("确定",Command.OK,1);
   
    list=new List("请选择",List.EXCLUSIVE);
  
  for(int i=0;i<10;i++)
  {
   list.append("列表"+i, null);
   
  }
  list.addCommand(cmdOk);
  dis=Display.getDisplay(this);
  list.setCommandListener(new Operater());
  dis.setCurrent(list);
  // TODO Auto-generated method stub

 }


  


}

class Operater implements javax.microedition.lcdui.CommandListener
{


 public void commandAction(Command c, Displayable d) {
  
  
  if(c.getLabel().equals("确定"))
  {
   List l=(List)d;
     l.setTitle( l.getString(l.getSelectedIndex())); 
  }
  
 }
 
 
}

posted @ 2008-11-26 08:40 张生工作室 阅读(115) | 评论 (0)编辑 收藏

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class MIDlet1 extends MIDlet implements javax.microedition.lcdui.CommandListener {

 
 private Display dis;
 private List list;

 
 public MIDlet1() {
  // TODO Auto-generated constructor stub
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  

  list=new List("列表",List.IMPLICIT);

 

  list.setCommandListener(this);
  for(int i=0;i<100;i++)
  {
   list.append("表列"+ i, null);
  }
  

  
 
  
  dis=Display.getDisplay(this);
  
  dis.setCurrent(list);
  
  // TODO Auto-generated method stub

 }

 public void commandAction(Command cmd, Displayable dis) {
  
  
 if(cmd==list.SELECT_COMMAND)
 {
  list.setTitle(list.getString(list.getSelectedIndex()));
 }
 
  
  // TODO Auto-generated method stub
  
 }

}

posted @ 2008-11-26 08:16 张生工作室 阅读(172) | 评论 (0)编辑 收藏

     摘要: 第四章 管理信息系统规划与开发方法   开发管理信息系 统是一个投资巨大、历时很长、涉及面很广的工程项目,如果没有进行规划或规划不合理,不仅造成开发过程的直接损失,由此而引起的企业运行不好的间接损失更 是难以估计。人们通常认为,假若一个操作错误可能损失几万元,那么一个设计错误就能损失几十万元,一个计划错误就能损失几百万元,而一个规划错误的损失则 能达到千万元,甚至上亿元。一个科学合理的系...  阅读全文
posted @ 2008-07-26 15:20 张生工作室 阅读(5983) | 评论 (0)编辑 收藏

     摘要: Struts2+spring2+hibernate3整合方案 最近闲来无事可做,于是开始学习struts2。Struts2和struts1、webwork2有什么区别我也不说了,网上有很多这方面的资料。以前在项目中从未使用过struts,一直使用spring+hibernate,现在既然学习了Struts,也不能浪费,于是乎开始琢磨着怎么整合这3个框架。整合原理以spring为容器,管理hibe...  阅读全文
posted @ 2008-05-13 12:20 张生工作室 阅读(315) | 评论 (0)编辑 收藏

Matlab6.5使用
第1章  Matlab6.5使用方法

1.Matlab6.5简介
1.1  21世纪的科学计算语言
☺功能强大
   数值计算、符号运算、图形可视化
☺语言简单
☺扩充能力强、可开发性好  
☺编程容易、效率高

1.2  Matlab6.5的新特点
☺开发环境
  
☺数值处理

☺程序及数据结构  
☺图形处理

☺用户图形界面

☺应用程序接口

1.3  Matlab网上资源

http://www.mathsworks.com

ftp.mathworks.com

……

2.Matlab6.5桌面平台
☺Matlab主窗口

☺命令窗口

☺历史窗口

☺当前目录窗口

☺发明说明书窗口

☺工作间管理窗口

3.Matlab6.5帮助系统
☺联机帮助系统
 选中Help下拉菜单的前四项中任何一项;
 在命令窗口中执行Helpwin、helpdesk、doc;
 直接按主窗口的?按钮.

☺命令窗口查询帮助
  help系列----help、help+函数(类)名、helpwin、helpdesk;
 lookfor函数;
 其他帮助命令
 exist—变量检验函数;
 what---目录中文件列表;
 who---内存变量列表;
 whos---内存变量详细信息;
 which---确定文件位置。

☺联机演示系统
1.基本介绍窗口
>> intro

2.演示界面
help--demos
>>demo

☺常用命令和技巧
1.一些通用命令
cd  显示或改变工作目录
dir, ls  显示目录文件
type  显示文件内容
clear  清理内存变量
clf    清除图形窗口
pack  收集内存碎片、扩大内存空间
clc   清除工作窗
echo  工作窗信息显示开关
hold  图形保持开关
disp  显示变量或文字内容
path  显示搜索目录
save  保存内存变量到指定文件
load  加载指定文件的变量
diary  日志文件命令
quit   退出Matlab
!     调用dos命令


2. 标点
: 多种应用功能
; 区分行,取消行显示等
, 区分列,函数参数分隔符等
()  指定运算过程中的先后次序等
[]  矩阵定义的标志
{}  用于构成单元数组等
.   小数点及域访问等
…  续行符
%  注释标记

=  赋值标记
’   字符串的标志符等

 

 

Help 程序(主题)名
>> help sinh
 SINH   Hyperbolic sine.
   SINH(X) is the hyperbolic sine of the elements of X.
 Overloaded methods
    help sym/sinh.m

>>lookfor complex
……

显示
>>who  %显示当前工作区中的所有变量名
>>whos  %显示当前工作区中的所有变量%名,变量的大小,字节数和类型。

>>disp(x)  %显示x的内容,矩阵或字符串

清除
>>clear (变量名)


存储
>>save (文件名)
调出
>> load (文件名)

>> save
Saving to: matlab.mat
>> load
Loading from: matlab.mat

>> save temp
-将当前系统中的所有变量存入temp.mat;
>> save temp x
-仅存入x变量到temp.mat;
>> save temp x y z
-仅存入x y z变量到temp.mat;
>> load temp
-重新从temp.mat中提出变量。

搜索
>>path %显示目前的搜索路径,可以用File菜单中的Set Path观察和修改路径
管理
what   返回目前目录下的M,MAT,MEX文件列表
dir、 ls  列出目前目录下的所有文件

cd path  改变目前目录为path

pwd、 cd、 chdir   显示目前的工作目录 
退出
>>quit


第2章 数值计算功能

2.1  Matlab的数据类型

1. 变量与表达式
Matlab命令的通常形式
  变量=表达式
>> A=[1,3.0,5.6,sin(2.)]
A =
  1.0000    3.0000    5.6000    0.9093

>> a=[1 3.0 5.6 sin(2.)]
a =
  1.0000    3.0000    5.6000    0.9093
>> sin(pi/2)/3
ans =
0. 3333
>> whos
  Name    Size    Bytes  Class
  A       1x4        32  double array
  a       1x4        32  double array
  ans     1x1         8  double array
Grand total is 9 elements using 70 bytes

2.预定义变量----常量
系统的特殊常量
特殊变量           取值
pi                  
eps                 计算机的最小正数
flops                浮点运算次数
i,j                   i=j=
Inf                  无穷大
NaN                 不定量
Realmin      最小的正浮点数 2^(-1022)
Realmax      最大的浮点数 2^(1023)


>> z1=3+4i
z1 =
   3.0000 + 4.0000i
>> z1=3+4j
z1 =
   3.0000 + 4.0000i

3.显示格式
计算以双精度计算;
数值的有效范围为10e-308~10e308;
显示可以不同的显示格式显示;
缺省情况为短格式(short)显示—若数据为整数,则以整型表示;若为实数,则保留小数点后4位的浮点数表示。
>> x=[3.0 2]
x =
3 2
>> x=[4/3 1.2345e-6]
x =
1.3333    0.0000

>> format long
>> x=[4/3 1.2345e-6]
x =
   1.33333333333333   0.00000123450000

 

>> format short e
>> x=[4/3 1.2345e-6]
x =
1. 3333e+000  1.2345e-006

>> format +
>> x=[4/3 1.2345e-6]
x =
++

short
long
hex
bank
+
short e
long e
short e
short g
long g
rational


4. 字符串
--所有字符串用单引号设定后输入或赋值
>> s='matrix laboratory'
s =
matrix laboratory

--字符串的每个字符(包括空格)均为字符数组的一个元素
>>size(s)   %size命令查看字符数组的维数
ans =
     1    17

--字符串和字符数组(或矩阵)基本上等价
>> s(3)
ans =
t

>> s2=['matlab']
s2 =
matlab

--字符数组的生成
>> s3=char('s','y','m','b','o','l','i','c');
>> s3'
ans =
symbolic

--字符串和数组之间的转换
A. 字符串转换为数值代码
>> double(s3)'
ans =
   115   121   109    98   111   108   105    99

B. 字符数组转换为字符串
 >> cellstr(s3)'
ans =
's'  'y'  'm'   'b'   'o'   'l'   'i'   'c'

C. 数值数组和字符串之间的转换
-num2str    数字转换为字符串
-int2str     整数转换为字符串
-mat2str    矩阵转换为字符串
-str2num   转换字符串为数字
-sprintf     将格式数据写为字符串
-sscanf     在格式控制下读字符串

>> a=[1:5];
>> b=num2str(a);
>> a*2
ans =
     2     4     6     8    10
>> b*2
ans =
  Columns 1 through 11
    98    64    64   100    64    64   102    64    64   104    64
  Columns 12 through 13
    64   106


>> str2num(b)*2
ans =
     2     4     6     8    10

D. 字符串操作
-strcat   链结串
-strvcat  垂直链结串
-strcmp  比较串
-strncmp  比较串的前n个字符
-findstr   在其他串中寻找此串
-strjust    证明字符数组
-strmatch  查找可能匹配的字符串
-strrep    以其他串代替此串
-strtok    寻找串中记号
-upper    转换为大写
-lower    转换为小写
-blanks   生成空串
-deblank  移去串内空串
  
E. 执行字符串
--函数eval实现

n=4;
t='1/(i+j-1)';
a=zeros(n);
for i=1:n
for j=1:n
a(i,j)=eval(t);
end
end
a
a =
   1.0000    0.5000    0.3333    0.2500
   0.5000    0.3333    0.2500    0.2000
   0.3333    0.2500    0.2000    0.1667
   0.2500    0.2000    0.1667    0.1429

>> d='cd';
>> eval(d)
C:\MATLAB6p1\work

F. 一些基本数字转换函数
-hex2num   十六进制转换为双精度数
-hex2dec    十六进制转换为十进制整数
-dec2hex    十进制整数转换为十六进制串
-bin2dec    二进制转换为十进制整数
-dec2bin    十进制整数转换为二进制串
-base2dec   转换B底字符串为十进制整数
-dec2base  转换十进制整数为B底串
-strings    strings函数的帮助


5. 矩阵

6. 单元型变量
一种以任意形式的数组为元素的多维数组
--定义
(1)赋值语句直接定义
(2)由cell函数预先分配存储空间,再对单元元素逐个赋值
>> A=[1, 2; 3, 4];
>> B={1:4, A, 'abcd'}
B =
   [1x4 double]    [2x2 double]    'abcd'
>> c{1,1}=1:4;
>> c{1,2}=A;
>> c{1,3}='abcd';
>> c
c =
    [1x4 double]    [2x2 double]    'abcd'
>> c{2}
ans =
     1     2
     3     4
>> c(2)
ans =
    [2x2 double]

注:
1)单元型变量的元素不是以指针的方式保存。改变其元素原变量矩阵A的值不等于改变变量B的第2个元素的值。
2)单元型变量自身可以嵌套。

>> D={1:4,A,B}
D =
[1x4 double]    [2x2 double]    {1x3 cell}

>> D{3}{3}
ans =
abcd

>> A(1,2)=-10
A =
     1   -10
     3     4

>> c{2}
ans =
     1     2
     3     4

--单元型变量的相关函数
-cell          生成单元型变量
-cellfun   对单元型变量中元素作用的函数
-celldisp   显示单元型变量的内容
-cellplot    图形显示单元型的内容
-num2cell   数值数组转换为单元型变量
-deal       输入输出处理
-cell2struct  单元型变量转换为结构型变量
-struct2cell  结构型变量转换为单元型变量-iscell      判断是否为单元型变量   
-reshape    改变单元数组的结构

>> cellfun('islogical', B)
% 其他函数isreal, isempty, length, ndims等
ans =
     0     0     0

>> celldisp(B)
B{1} =
     1     2     3     4
B{2} =
     1     2
     3     4
B{3} =
abcd

>> size(D)
ans =
     1     3
>> reshape(D,3,1)
ans =
    [1x4 double]
    [2x2 double]
    {1x3 cell  }
>> size(ans)
ans =
     3     1

7. 结构型变量
以指针方式传递数据,将不同数据类型组合在一起的数据类型。

--定义
(1)赋值语句直接定义,以指针操作符‘.’连接结构变量名和属性名;
(2)由struct函数定义
   结构变量名=struct(元素名1, 元素值1,元素名2, 元素值2, …)


>> A.a1='abcd';
>> A.a2=1;
>> A.a3=[1,2,3,4];
>> A
A =
    a1: 'abcd'
    a2: 1
    a3: [1 2 3 4]

>> B=[1,2;3,4];
>> A(2).a1='efgh';
>> A(2).a2=2;
>> A(2).a3=B;
>> A
A =
1x2 struct array with fields:
    a1
    a2
    a3

>> A(1)
ans =
    a1: 'abcd'
    a2: 1
    a3: [1 2 3 4]
>> A(2)
ans =
    a1: 'efgh'
    a2: 2
    a3: [2x2 double]

>> C=struct('c1',1,'c2',B, 'c3','abcd')
C =
    c1: 1
    c2: [2x2 double]
    c3: 'abcd'

>> C.c1=A
C =
    c1: [1x2 struct]
    c2: [2x2 double]
    c3: 'abcd'

>> C.c1(1).a1
ans =
abcd

--结构型变量的相关函数
-struct     创建或转换结构变量
-findnames  得到结构型变量的属性名
-getfield   得到结构型变量的属性值
-setfield   设定结构型变量的属性值
-rmfield   删除结构型变量的属性
-isfield    判断是否为结构型变量的属性
-isstruct   判断是否为结构型变量

>> fieldnames(C)
ans =
    'c1'
    'c2'
    'c3'
>> iscell(ans)
ans =
     1

>> D=getfield(C,'c1')
D =
1x2 struct array with fields:
    a1
    a2
    a3

>> C=setfield(C,'c1',2)
C =
    c1: 2
    c2: [2x2 double]
    c3: 'abcd'

>> C=rmfield(C,'c1')
C =
    c2: [2x2 double]
    c3: 'abcd'

>> isfield(C,'c2')
ans =
     1

>> isstruct(C)
ans =
     1

 


2.2 矩阵的基本运算

I.数和算术表达式
3 –90  0.0001  9.1234  1.6021e-20 
5.02252e23

数学运算符:
+  -  *  /  (右除)   \  (左除)   ^

II.数学函数

基本三角函数 sin cos sec csc tan cot
反三角函数 asin acos asec acsc atan acot
双曲函数 sinh cosh sech csch tanh coth
反双曲函数 asinh acosh asech acsch atanh acoth
指数和对数 exp log Log10 sqrt  
复数运算 abs angle conj real imag 
数值函数 fix floor ceil round rem 
整数函数 lcm gcd    
      


>> x=5.1
x =
    5.1000
>> fix(x)
ans =
5
>> floor(x)
ans =
5
>> ceil(x)
ans =
6
>> round(x)
ans =
5
>> rem(5,3)
ans =
2
>> sin(1+2i)
ans =
3.1658 + 1.9596i

III.矩阵及其元素

1.矩阵输入的基本方法
>> A=[1 2 3]
A =
     1     2     3
>> A=[1 2 3;4 5 6;7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> A=[1, 2, 3;
4,5,6;
7, 8,9]
A =
     1     2     3
     4     5     6
     7     8     9
>>  A=[1, 2, 3
4,5,6
7, 8,9]

A =
     1     2     3
     4     5     6
     7     8     9

2.矩阵元素的存取
Matlab的矩阵元素可以为任何数值表达式。
>> x=[-1.3 sqrt(3) (1+2+3)*4/5]
x =
   -1.3000    1.7321    4.8000

>> A=[1+5i 2+6i]
A =
   1.0000 + 5.0000i   2.0000 + 6.0000i

>> A=[1 2; 3 4]+i*[5 6;7 8]
A =
   1.0000 + 5.0000i   2.0000 + 6.0000i
   3.0000 + 7.0000i   4.0000 + 8.0000i


Matlab的矩阵元素的引用:

>> x=A(1,2)
x =
   2.0000 + 6.0000i

Matlab的矩阵的维数自动扩充:
>> x=[-1.3 sqrt(3) (1+2+3)*4/5]
x =
   -1.3000    1.7321    4.8000
>> x(5)=abs(x(1))
x =
   -1.3000  17321  4.8000   0   1.3000
>> A=[1 2;3 4]
A =
     1     2
     3     4
>> A(3,1)=-1
A =
     1     2
     3     4
-1     0


3.子矩阵的操作
大的矩阵可以通过小的矩阵扩充得到:
>> A=[A;2 1]
A =
     1     2
     3     4
    -1     0
     2     1
>> A=[A, [1 2 3 4]']
A =
     1     2     1
     3     4     2
    -1     0     3
     2     1     4

小的矩阵可以从大的矩阵抽取得到:
A(:)—A的所有元素;
A(:,J)—A的第J列所有元素;
A(J:K)—A(J),A(J+1),…,A(K);
A(:,J:K)—A(:,J),A(:,J+1),…A(:,K);

A(J,:)—A的第J行所有元素;
A(J:K,:)—A(J,:),A(J+1,:),…A(K.:);
A =
     1     2     1
     3     4     2
    -1     0     3
     2     1     4
>> y=A(1:3,:)
y =
     1     2     1
     3     4     2
    -1     0     3

>> x=A(:,1:2)
x =
     1     2
     3     4
    -1     0
     2     1

>> z=A(1:2,2:3)
z =
     2     1
     4     2
4. “:”运算符的用法
用来产生相同增量的向量的方法:
>> t=1:5
t =
     1     2     3     4     5

>> x=pi:-pi/3:0
x =
   3.1416    2.0944    1.0472    0

>> x=(0.0:0.2:1.0)';%‘'’表示转置
>> y=sin(x);  %计算函数值
>> [x y]     %组合出矩阵
ans =
         0         0
    0.2000    0.1987
    0.4000    0.3894
    0.6000    0.5646
    0.8000    0.7174
    1.0000    0.8415


5.生成特殊矩阵的函数
>> rand(1,3)
ans =
    0.9501    0.2311    0.6068

>> rand(3)
ans =
    0.4860    0.4565    0.4447
    0.8913    0.0185    0.6154
    0.7621    0.8214    0.7919

>> eye(2,3)
ans =
     1     0     0
     0     1     0

>> ones(3,2)
ans =
     1     1
     1     1
     1     1

>> randn(3,2)  %标准正态分布
ans =
   -0.4326    0.2877
   -1.6656   -1.1465
    0.1253    1.1909

IV. 矩阵操作
1.矩阵转置
>> A=[1,2,3;4,5,6]
A =
     1     2     3
     4     5     6
>> B=A'
B =
   1     4
     2     5
     3     6

>> C=[1+i,-i;2,1-i]
C =
   1.0000 + 1.0000i        0 - 1.0000i
   2.0000             1.0000 - 1.0000i
>> D=C'  %转置共扼
D =
   1.0000 - 1.0000i   2.0000         
0 + 1.0000i   1.0000 + 1.0000i


2.对角矩阵
diag函数用来生成一个对角矩阵
或提取一个矩阵的对角元素:
>> diag(2:4)
ans =
     2     0     0
     0     3     0
     0     0     4
>> A
A =
     1     2     3
     4     5     6
>> diag(A)
ans =
     1
     5
3.上/下三角矩阵
>> tril(A)
ans =
     1     0     0
     4     5     0

>> triu(A)
ans =
     1     2     3
     0     5     6

>> fliplr(A)
ans =
     3     2     1
     6     5     4

>> flipud(A)
ans =
     4     5     6
     1     2     3


V.矩阵运算
1.加和减
>> A
A =
     1     2     3
     4     5     6
>> B=[1 4 7;2 5 6]
B =
     1     4     7
     2     5     6
>> C=A+B
C =
     2     6    10
     6    10    12

>> D=A-1.0
D =
     0     1     2
     3     4     5

 

2.乘法
>> A
A =
     1     2     3
     4     5     6
>> A'
ans =
     1     4
     2     5
     3     6
>> A*A'
ans =
    14    32
    32    77

3.矩阵除法
标量运算时:
矩阵运算时:
 --inv(A)*B;
 --A*inv(B);

>> A=[1 2 3]
A =
     1     2     3
>> B=[1 2 -3; -2 5 6; 7 2 1]
B =
     1     2    -3
    -2     5     6
     7     2     1
>> A/B
ans =
   -0.1818    0.3636    0.2727

>> B\A'
ans =
    0.2929
    0.4444
    0.0606

 

 

4. 矩阵乘方
>> B
B =
     1     2    -3
    -2     5     6
     7     2     1
>> B^3
ans =
     6    -6   114
   258   309   150
   -98   134   118

5.数组运算
----向量或矩阵间对应元素的运算:
.+  .-   .*   ./   .\   .^

>> x=[1 2 3]
x =
     1     2     3
>> y=[4 5 6]
y =
     4     5     6
>> z=x.*y
z =
     4    10    18
>> z1=x.^y
z1 =
    1    32   729
>> z3=x.^2
z3 =
     1     4     9
>> z4=2.^x
z4 =
     2     4     8

>> [1 2; 3 4]./[2 2; 2 2]
ans =
    0.5000    1.0000
    1.5000    2.0000
>> [1 2; 3 4].\[2 2; 2 2]
ans =
    2.0000    1.0000
    0.6667    0.5000


常见数值问题介绍
一、 线性方程组求解
A*x=b
A为m*m阶矩阵, X和b为m阶向量。
 
>> A=[1,2,3;4,5,6;7,8,0];
>> b=[366;804;351];
>> det(A)
ans =
    27
>> x=inv(A)*b
x =
   25.0000
   22.0000
   99.0000

 

>> x=A\b
x =
   25.0000
   22.0000
   99.0000

广义情况:方程数与未知量数目不等时,线性方程组通常不存在唯一解,但最小二乘解x*是存在唯一。
  
>> A=[1 2 3; 4 5 6; 7 8 0; 2 5 8];
>> b=[366 804 351 514]';
>> x=A\b
x =
  247.9818
 -173.1091
  114.9273

 


二、矩阵函数
I.矩阵基本性质
1)行列式
>> A=rand(3)
A =
    0.9501    0.4860    0.4565
    0.2311    0.8913    0.0185
    0.6068    0.7621    0.8214
>> det(A)
ans =
    0.4289

2)秩
>> rank(A)
ans =
     3

3)迹
>> trace(A)
ans =
    2.6628

4)范数
>> A=[1 1 1;0 0 0;1 1 1]
A =
     1     1     1
     0     0     0
     1     1     1
>> norm(A)   %2-范数
ans =
    2.4495

>> norm(A,inf)   % inf-范数
ans =
     3

>> norm(A,1)    %1-范数
ans =
     2

 

 

II.特征值计算
>> A=[0 1;-1 0]
A =
     0     1
    -1     0
>> eig(A)
ans =
        0 + 1.0000i
        0 - 1.0000i

>> [x,D]=eig(A)
x =
   0.7071           0.7071         
   0 + 0.7071i       0 - 0.7071i

D =
        0 + 1.0000i        0         
        0                  0 - 1.0000i

---A*X=X*D


III.三角分解
>> A=[1 2 3;4 5 6; 7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> [L,U]=lu(A)
L =
    0.1429    1.0000         0
    0.5714    0.5000    1.0000
    1.0000         0         0
U =

    7.0000    8.0000    9.0000
         0    0.8571    1.7143
         0         0    0.0000

>> L*U
ans =
     1     2     3
     4     5     6
     7     8     9
>> [L,U,P]=lu(A)
L =
    1.0000         0         0
    0.1429    1.0000         0
    0.5714    0.5000    1.0000
U =
    7.0000    8.0000    9.0000
         0    0.8571    1.7143
         0         0    0.0000
P =
     0     0     1
     1     0     0
     0     1     0

>> P*A
ans =
     7     8     9
     1     2     3
     4     5     6

 

>> L*U
ans =
     7     8     9
     1     2     3
     4     5     6

IV.正交分解
>> A=[1 2 3; 4 5 6;7 8 9;10 11 12]
A =
     1     2     3
     4     5     6
     7     8     9
    10    11    12

>> [Q,R]=qr(A)
Q =
   -0.0776   -0.8331    0.5456   -0.0478
   -0.3105   -0.4512   -0.6919    0.4704
   -0.5433   -0.0694   -0.2531   -0.7975
   -0.7762    0.3124    0.3994    0.3748


R =
  -12.8841  -14.5916  -16.2992
       0   -1.0413   -2.0826
       0       0    -0.0000
       0       0         0

>> Q*R
ans =
    1.0000    2.0000    3.0000
    4.0000    5.0000    6.0000
    7.0000    8.0000    9.0000
   10.0000   11.0000   12.0000

-- QR分解可用来求超定方程的最小二乘解

>> b=[1;3; 5; 7]
b =
     1
     3
     5
     7

>> x=A\b
Warning: Rank deficient, rank = 2  tol =   1.4594e-014.
x =
    0.5000
         0
    0.1667

>> y=Q'*b
y =
   -9.1586
   -0.3471
    0.0000
   -0.0000
>> x=R\y
Warning: Rank deficient, rank = 2  tol =   1.4594e-014.
x =

    0.5000
         0
    0.1667
三、方程求根
 

>> p=[1 -12 0 25 116]
p =
     1   -12     0    25   116
>> r=roots(p)
r =
  11.7473         
   2.7028         
  -1.2251 + 1.4672i
  -1.2251 - 1.4672i

已知多项式的根,可用poly构造相应的多项式:

>> pp=poly(r)
pp =
    1.0000  -12.0000   -0.0000   25.0000  116.0000

四、曲线拟和
I.一维插值
>> h=1:12;
>> t=[5 8 9 15 25 29 31 30 22 25 27 24];
>> plot(h,t,h,t,'+')
 
interp1插值函数的格式:
Y1=interp1(X,Y,X1,’method’)
X,Y—原数据点;
X1—加细的数据点,或希望得到插值数据的数据点;
Method---‘linear’,  ‘spline’, ‘cubic’;

>> x1=1:0.2:12;
>> y1=interp1(h,t,x1,'spline');
>> plot(h,t,'k+',x1,y1,'k-')
 

II.曲线拟和
设有一组数据点
 
寻找一个多项式n次多项式P*(x):
 

>> x=0:0.1:1;
>> y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
>> p=polyfit(x,y,2)
p =
   -9.8108   20.1293   -0.0317

>> xi=linspace(0,1,100);
>> z=polyval(p,xi);
>> plot(x,y,'ko',xi,z,'r-')
 


>> p=polyfit(x,y,10);
>> xi=linspace(0,1,100);
>> z=polyval(p,xi);
>> plot(x,y,'ko',xi,z,'r-')
 

五、数值积分
sum(x)—输入数组x, 输出为x的和;

cumsum(x)—输入数组x, 输出为x的依次累加和;


trapz(x)—输入数组x, 输出为x按梯形求积公式计算的积分(单位步长);

trapz(x,y)—输入数组x,y, 输出y对x按梯形求积公式计算的积分(步长可以不相等);

quad(‘fun’,a,b)—用辛普森公式(2阶)计算以fun.m的函数在(a,b)上的积分,相对误差为0.001;

quad(‘fun’,a,b,tol)—用辛普森公式(2阶)计算以fun.m的函数在(a,b)上的积分,相对误差为tol;

quad8(‘fun’,a,b,tol)—用辛普森公式(8阶)计算以fun.m的函数在(a,b)上的积分,相对误差为tol;

rand(1,n)—产生n个(0,1)的随机数。

 

计算积分
1)矩形公式和梯形公式:将
>> h=pi/20;
>> x=0:h:pi/2;
>> y=sin(x);
>> z1=sum(y(1:10))*h
z1 =
    0.9194
>> z2=sum(y(2:11))*h
z2 =
    1.0765
>> z=cumsum(y);
>> z11=z(10)*h
z11 =
    0.9194
>> z12=(z(11)-z(1))*h
z12 =
    1.0765
>> z3=trapz(y)*h
z3 =
    0.9979
2)辛普森公式
>> z4=quad('sin',0,pi/2)
z4 =
    1.0000

3)蒙特卡罗方法
>> n=100000;
>> x=rand(1,n);
>> y=sin(x.*pi/2);
>> z=sum(y)*pi/(2*n)
z =
    1.0005

 

 

 

 


六、数据分析
max----最大值
min----最小值
mean----均值
media----中值
std----标准差
sum----元素总和
cumsum----累加和
prod----元素乘积
cumprod----累积
corrcoef----互相关系数矩阵
cov----协方差矩阵
……

>> a=[ 1 3 5 9 3 2 7 6];
>> mean(a)
ans =
    4.5000
>> median(a)
ans =
     4

>> std(a)
ans =
    2.7255
>> cumsum(a)
ans =

     1     4     9    18    21    23    30    36

>> b=[1 4 6 8 2 1 5 0];
>> corrcoef(a,b)
ans =
    1.0000    0.6771
    0.6771    1.0000
>> cov(a,b)
ans =
    7.4286    5.2143
    5.2143    7.9821

 

 

 

 

编程基础

一、 关系运算和IF语句
I. 关系运算和逻辑操作符
关系运算符
<   <=   >    >=   ==   ~=

逻辑操作符
&   |   ~

y=all(x)
若x 为向量,当所有元素非零时y=1,
否则y=0;
若x 为矩阵,all作用于列元素,y为行向量。

y=any(x)
若x 为向量,当有一个元素非零时y=1,
否则y=0;
若x 为矩阵,all作用于列元素,y为行向量。

 

>> A=[1 2; 0 1]
A =
     1     2
     0     1
>> any(A)    %any表示矩阵的每一列中%是否有非零元素
ans =
     1     1

>> all(A)  %all表示矩阵的每一列中
%是否全是非零元素
ans =
     0     1


IF语句:

1)
if <关系表达式>
<语句1>
end

2)
if <关系表达式>
<语句1>
else
<语句2>
end

3)
if <关系表达式1>
<语句1>
elseif <关系表达式1>
<语句2>
……
elseif <关系表达式n>
<语句n>
else
<语句n+1>
end

 


二、for 循环
for <循环参数>=<初值>:<步长>:<终值>
   <语句>
end

>> for i=1:3
for j=1:4
a(i,j)=1/(i+j-1);
end
end
>> format rat
>> a
a =
    1      1/2        1/3       1/4    
   1/2     1/3        1/4        1/5    
   1/3     1/4        1/5        1/6 

二、 while语句
while <关系表达式>
   <语句>
end

求出满足1+2+…+n<100的最大整数n:
>> sum=0;n=0;
>> while sum<100
n=n+1;
sum=sum+n;
end;
>> n=n-1;
>> n
n =
     13   

三、 switch语句
switch <表达式>
case  value1
  <语句1>
case  value2
  <语句2>

otherwise
  <语句n>
end

四、 M文件:文本文件及函数文件
I.文本文件: <M-文件名>.m
fibo.m:

%An M-file to calculate Fibonnacinumbers
f=[1 1]; i=1;
while i<15
  f(i+2)=f(i)+f(i+1);
  i=i+1;
end
plot(f, ‘*k’)

 
II.函数文件
M-文件的第一行包含function;
变量和运算都在文件内部,不在工作间;
文件名为函数名;

function <因变量>=<函数名>(<自变量>)

function a=randint(m,n)
%RANDINT Randomly generated integral %matrix
%randint(m,n) returns an m-by-n matrix %with entries between 0 and 9
a=floor(10*rand(m,n));

>>x=randint(2,3)
x=
  9  6  8
  2  3  5

 


stat.m:
function [mean,stdev]=stat(x)
% STAT Mean and standard deviation
% For a vector x, stat(x) returns the mean %and standard deviation of x
% For a matrix x, stat(x) returns two row %vectors containing, respectively,
% the mean and standard deviation of each %column.
[m,n]=size(x);
if m==1
    m=n;  % handle case of a row vector
end
mean=sum(x)/m;
stdev=sqrt(sum(x.^2)/m-mean.^2);

>> x=[2 4 -7 0 5 -1];
>> [xm,xd]=stat(x)
xm =
    0.5000
xd =
    3.9476

posted @ 2007-09-27 11:54 张生工作室 阅读(2192) | 评论 (3)编辑 收藏

Data for table (train)
RoadNoRoadLineRoadType
D01 S0567-S0042-S0025 D
D02 S1487 D
D03 S0303-S0302 D
D04 S0566 D
D05 S0436-S0438-S0437-S0435 D
D06 S0392-S0394-S0393-S0391 D
D07 S0386-S0388-S0387-S0385 D
D08 S3068-S0617-S0619-S0618-S0616 D
D09 S1279 D
D10 S2057-S0721-S0722-S0720 D
D11 S0070-S2361-S3721 D
D12 S0609-S0608 D
D13 S2633-S0399-S0401-S0400 D
D14 S3321-S2535-S2464 D
D15 S3329-S2534 D
D16 S3506-S0167-S0168 D
D17 S0237-S0239-S0238-S0236-S0540 D
D18 S0668 D
D19 S0180-S0181 D
D20 S2079-S2933-S1919-S1921-S1920 D
D21 S0465-S0467-S0466-S0464 D
D22 S3457 D
D23 S2512 D
D24 S0537-S3580 D
D25 S0526-S0528-S0527-S0525 D
D26 S3045-S0605-S0607 D
D27 S0087-S0088-S0086 D
D28 S0855-S0856-S0854-S0857 D
D29 S0631-S0632-S0630 D
D30 S3874-S1426-S1427 D
D31 S0211-S0539-S0541-S0540 D
D32 S0978-S0497-S0498 D
D33 S1894-S1896-S1895 D
D34 S1104-S0576-S0578-S0577 D
D35 S3010-S0583-S0582 D
D36 S3676-S0427-S0061-S0060 D
D37 S1961-S2817-S0455-S0456 D
D38 S3262-S0622 D
D39 S1956-S0289-S0291 D

query result ( 39 records )

posted @ 2007-09-24 16:29 张生工作室 阅读(942) | 评论 (2)编辑 收藏

     摘要: Data for table (station) StationRoadNo S0001 L421A-L421B- S0002 L027C-L152C-L365C-L395A-L395B-L485C- S0003 L268A-L268B- S0004 L002A-L002B-L018A-L018B-L027C-L038A-L038B...  阅读全文
posted @ 2007-09-24 16:21 张生工作室 阅读(961) | 评论 (1)编辑 收藏

     摘要: Data for table (roadno) RoadNoRoadLineRoadType L001A S0619-S1914-S0388-S0348-S0392-S0429-S0436-S3885-S3612-S0819-S3524-S0820-S3914-S0128-S0710 A L002A S3748-S2160-S1223-S1404-S23...  阅读全文
posted @ 2007-09-24 16:16 张生工作室 阅读(1595) | 评论 (3)编辑 收藏

pointbase - CSDN tag

         
pointbase - CSDN tag

       

     

     
Tomcat5.5下的JNDI的配置
<resource-ref>    <descrtiption>引用资源说明</descrtiption>  <res-ref-name>引用资源的JNDI名</res-ref-name>  <res-type>引用资源的类名</res-type>  <res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web应用管理-->  </resource-ref>注意,要把你的驱动拷到common/lib下,我用的是pointbase因此我拷的是pbclient44.jar到了common/lib下(对pointbase感兴趣的读者可以看我的另一篇文章pointbase数据库学习,里面也提到了我为什么是用pointbase数据库作为讲解)。
环境变量---为自己备份
@rem Set BEA Homeset  BEA_HOME=C:\beaFOR %%i IN ("%BEA_HOME%") DO SET BEA_HOME=%%~fsi@rem Set WebLogic Homeset  WL_HOME=C:\bea\weblogic81FOR %%i IN ("%WL_HOME%") DO SET WL_HOME=%%~fsi.@rem set up WebLogic Server‘s class pathset WEBLOGIC_CLASSPATH=%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar;%WL_HOME%\server\lib\ojdbc14.jar;%WL_HOME%\common\lib\msbase.jar;%WL_HOME%\common\lib\mssqlserver.jar;%WL_HOME%\common\lib\msutil.jar;
J2EE/RI Pointbase数据库远程命令执行漏洞
信息提供:安全公告(或线索)提供热线:51cto.editor@gmail.com漏洞类别:设计错误攻击类型:嵌入恶意代码发布日期:2003-12-16更新日期:2003-12-23受影响系统:Sun JDK 1.4.2_02安全系统:无漏洞报告人:Marc Schoenefeld (marc.schoenefeld@uni-muenster.de)漏洞描述:BUGTRAQ ID: 9230J2EE/RI Pointbase是一个纯JAVA数据库,可以方便的开发JAVA产品。J2EE/RI (Reference Implementation) Pointbase数据库存在安全问题,远程攻击者可以利用这个漏洞通过jdbc插入任意代码或对数据库进行拒绝服务攻击。
Java数据库PointBase 5.5发布
PointBase是一个100%纯用java编写的小型数据库,其体积小(数据库服务器引擎仅1M),客户端文件加起来不到1M,因此经常可以用来作为项目演示。PointBase Micro数据库能运行在FP/PP/PersonalJava和MIDP平台上。PointBase Micro数据库通过UniSync同步服务器能容易地同服务器端PointBase嵌入式数据库和Oracle数据库同步。
配置PointBase
主要文件:只有三个PBclient.jar,pbembedded.jar 和 pbtools.jar 设置pointBase环境变量:setPBEnv.batset PB_HOME=D:\Devs\pointbaseset OLDCP=%CLASSPATH%set CLASSPATH=%PB_HOME%/lib/pbclient.jarset CLASSPATH=%CLASSPATH%;%PB_HOME%/lib/pbembedded.jarset CLASSPATH=%CLASSPATH%;%PB_HOME%/lib/pbtools.jarset CLASSPATH=%CLASSPATH%;%OLDCP% 启动PointBase server:Java com.pointbase.net.netServer参数:/win :窗口模式启动/d :0-3 JDBC显示信息的详细程度。
Workshop8.1中使用ANT自动执行Sql
Tomcat5.5下的jndi的配置
在基于MIDP的应用程序上使用JDBC
本文将讨论如何在MIDP应用程序中使用JDBC,我们使用的产品是DataMirror的PointBase。使用PointBase的UniSync你可以轻松的把本地数据库上的数据和企业数据库的数据进行同步,企业数据库可以是Oracle,SQL Server等。接下来你就可以使用标准的JDBC代码了,首先需要建立数据库连接: Connection con = DriverManager.getConnection("jdbc:pointbase:micro:sample", "PBPUBLIC", "PBPUBLIC"); Con变量代表了数据库连接,使用它我们可以进行数据库的读写操作了。
BEA WebLogic Workshop 8.1学习笔记之一 - 准备篇
<img src=http://dev2dev.bea.com.cn/images/dot6B6B6B.gif width="100%" height="1" alt="" />

 前言

 本文作者用BEA WebLogic Workshop做了一个简单的EJB的开发的例子,并对该例子做了一些Web应用方面的拓展,力图通过这些使用流程教会读者能够上手使用BEA
 WebLogic Workshop。
 

WebLogic Workshop 8.1产品概述

 BEA WebLogic Workshop是一个统一、简化、可扩展的开发环境,能够使所有开发人员(不仅仅是J2EE专家)都能够在
 BEA WebLogic Platform 8.1 上,迅速构建、测试和部署面向服务的企业级应用。
 

WebLogic Workshop 8.1 的独特性表现在:

 · 统一性-- 它是构建所有平台应用的一个IDE,一个框架和一种面向服务的方法,无论是构建
 Web 应用、Web 服务,还是构建门户和集成应用全都适用。

 · 简便性-- 它使所有的开发人员都能够使用 J2EE,而且
WebLogic Workshop
<img src=http://dev2dev.bea.com.cn/images/dot6B6B6B.gif width="100%" height="1" alt="" />

 前言

 本文作者用BEA WebLogic Workshop做了一个简单的EJB的开发的例子,并对该例子做了一些Web应用方面的拓展,力图通过这些使用流程教会读者能够上手使用BEA
 WebLogic Workshop。
 

WebLogic Workshop 8.1产品概述

 BEA WebLogic Workshop是一个统一、简化、可扩展的开发环境,能够使所有开发人员(不仅仅是J2EE专家)都能够在
 BEA WebLogic Platform 8.1 上,迅速构建、测试和部署面向服务的企业级应用。
 

WebLogic Workshop 8.1 的独特性表现在:

 · 统一性-- 它是构建所有平台应用的一个IDE,一个框架和一种面向服务的方法,无论是构建
 Web 应用、Web 服务,还是构建门户和集成应用全都适用。

 · 简便性-- 它使所有的开发人员都能够使用 J2EE,而且
高可靠性移动应用程序-移动数据库和J2ME工具(3)
翻译作者:jungleguo 2003-11-15原文: http://www.javaworld.com/javaworld/jw-06-2003/jw-0606-wireless-p3.htmlJ2ME移动数据库的选择当然PointBase并不是J2ME移动数据库产品的唯一选择。JDBC数据库对于程序来说是最容易的数据库类型。在FP/PP/PersonalJava平台上PointBase Micro 数据库仅用91 KB 存储器足迹就能支持大多数JDBC和SQL功能。PointBase Micro 数据库的MIDP版本提供了一个用浏览器打开的MIDlet数据库控制台。PointBase Micro 数据库通过UniSync 同步服务器能容易地同服务器端PointBase嵌入式数据库和Oracle 数据库同步。

posted @ 2007-09-14 09:25 张生工作室 阅读(503) | 评论 (1)编辑 收藏