网络即时通信系统心得

来源:互联网 发布:js禁止点击事件 编辑:程序博客网 时间:2024/05/04 17:12
1 什么是ICQ
ICQ是I Seek You(我找你)的连音缩写,是一家以色列公司开发出来的免费软件。一种即时聊天工具。

2 什么是QQ
来源Oh! I Seek You。ICQ变形

3 什么是I/O吞吐量
  ???

4 第一次连接Sql Server遇到的问题
 不能使用sa 及我建立的用户登录数据库。显示如:用户'sa'登录失败。原因:未与信任 SQL Server 连接相关联。
原因:该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行 连接。
   编写Java程序,测试与数据库的连接.
     存在问题:没有下载SQL Server 2000 Driver For JDBC.
     解决:下载驱动程序,有安装版setup.exe和免安装版mssqlserver.tar之分。
     安装完成后,将lib包下的3个.jar文件添加到classpath中。
   没能正确写出测试程序,下面的是网络上一个参考程序。
// 导入Java SQL包,连接数据库必需;
import java.sql.*;
public class TestDB {
   public static void main(String[] args) {
       String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";//驱动程序名
       String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=pubs";
       String userName = "sa";
       String userPwd = "";
       Connection dbConn;
       try {
           Class.forName(driverName);
           dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
           System.out.println("Connection Successful!";
       }
       catch (Exception e) {
           e.printStackTrace();
       }
   }
}
连接成功了,可是按我想的访问方式,不能成功?sql=select * from Northwind

import java.sql.*;

public class TestDB2 {
public static void main(String[] args) {
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://127.0.0.1:1433;                       
               DatabaseName=Northwind";
String userName = "hlonger";
String userPwd = "141421";
Connection dbConn;

try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!";
Statement stmt=dbConn.createStatement();
String sql="select * from dbo.Employees";
ResultSet rs=stmt.executeQuery(sql);

if(rs!=null){
while(rs.next()){
System.out.print(rs.getString(1)+" ";
System.out.println(rs.getString(2));
}
}
else
System.out.println("没有返回结果.";
}
catch (Exception e) {
e.printStackTrace();
}
}
}
成功的重数据库中取出数据!!! Jump。

Jcreator中的细节:
1)快捷键:(发现快捷命令在Configuration中customize的keyborad)
 JDK Help:ctrl+F1
2) 在菜单栏上的编译按钮
  原来它是对整个工程编译的。快捷键为f5
  对单个文件的在Build中有,我设置快捷键为f6
3)中文显示乱码问题。
   "
   '


5  X Y 定位设计界面。
a)先用getContentPane的得到界面的内容面板对象.
取消默认的布局管理器setLayout(null);
b)以JPanel为界面分区。大小通过JPanel的对象p,通过
p.setBounds(new Rectangle(int x,int y,int width,int height));设定Panel的大小、
位置.
c)对多个Panel可以使用对象.setBorder(new LineBorder(Color.BLACK));给其边界
色有利于各个Panel之间的位置协调。
d)对于在每个Panel中定位其他组件时,注意,组件位置参数是使相对的。
e)X Y 始于0 0。当下一个参数要参考上一个参数时要个别注意。
例如:new Rectangle(2,3,10,20);要接上它(同宽,同高),则应 new Rectanble(2,22,10,20);从3开始的20个像素包括3,所以结束,应该是22像素,因此,下面的开始Y应该是22。同理X;

6  关于自定义JDialog对话框。
JDialog以重写了SetDefaultCloseOperatrion()方法,参数没有JFrame.EXIT_ON_CLOSE;
a  DO_NOTHING_ON_CLOSE 什么也不做。
b  HIDE_ON_CLOSE。只是隐藏并没有真的关掉窗口,或者说逻辑关掉了窗口。
c  DISPOSE_ON_CLOSE。物理关掉窗口
这些参数在WindowConstants接口中定义。

7  关于JRadioButton。
   a 首先得到一个ButtonGroup对象,只是一个标记作用,那些RadioButton属于它.
   b 建立一系列JRadioButton,将他们加入ButtonGroup中。在建立JRadioButton过程
     中,也要给他设计标记,相当于key,使用ButtonGroup中的方法getSelection()得到
     一个实现ButtonModel接口的对象,在通过getMnemonic()方法得到当前所
选项JRadioButton的标识。

8  关于JComboBox
a)对于Picture比较复杂。
picture=new JComboBox();
picture.setModel(new HeadPicComboBoxModel(picArr));//picture的名字数组
picture.setRenderer(new HeadpicCellRenderer());

class HeadPicComboBoxModel extends DefaultComboBoxModel {
public HeadPicComboBoxModel(String[] pics) {
for(int i=0; i < pics.length; ++i) {
addElement(new Object[] { new ImageIcon(pics[i]) } ;
}
}

public Icon getIcon(Object object) {
Object[] array = (Object[])object;
return (Icon)array[0];
}
}

class HeadpicCellRenderer extends JLabel implements ListCellRenderer {
private Border
lineBorder = BorderFactory.createLineBorder(Color.red, 2),
emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);

public HeadpicCellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) {
HeadPicComboBoxModel model =(HeadPicComboBoxModel)list.getModel();

setIcon(model.getIcon(value));

if(isSelected) {
setForeground(list.getSelectionForeground());
setBackground(list.getSelectionBackground());
}
else {
setForeground(list.getForeground());
setBackground(list.getBackground());
}

if(cellHasFocus) setBorder(lineBorder);
else  setBorder(emptyBorder);

return this;
}
}

b)Word的加入字符串是很简单的,直接,addItem(“str”);类比数组,开始下标为0;
默认方式,可参看defaultComboBoxModel

9  “”与‘’
目前对于向SQl server 2000中写字符串,只知道,使用 PrepareStatement方式
直接使用SQL语句,对于数据库,不识“”

10  Sql server数据库中用户名与登陆名区别。

11  在Java源代码中与数据库交互。
注意驱动程序名,连接字符串,正确的用户名,密码
使用PreparedStatement格式访问,数据库。

12  trim()的作用。
    剪掉前导,后导空格

13  单元测试
    在每一个类中,有main()函数。有待学习JUnit

14  界面美观
    RGB颜色 可以通过Photoshop获得某一图片中的颜色的RGB值。

16  与数据库交互成功,细节总结

17  窗口关系,dipose()
    关掉当前子窗口。

15  匿名内部类参数
    在实现监听器类要特别注意。
Final类型的

16  流操作要特别注意的
Flush()操作。

17  当前路径是指放class的目录所指的目录。

18 日期
Date date=new java.util.Date(); System.out.println(date);
输出格式为:week month day hour:minute:second  timezone  year

DateFormat 在java.text包中
myString = DateFormat.getDateInstance().format(myDate);
myString = DateFormat.getDateInstance().format(DateFormat.? ,DateFormat.locale);
DateFormat.? 输出的精度 SHORT MEDIEM LONG FULL
DateFormat.locale  对应时区


Date date=new java.sql.Date(long times); System.out.println(date);
输出格式:yyyy-mm-dd

具体问题查看 SimpleDateFormat。

19 图片过滤

将彩色过滤成灰色。

ImageIcon icon=new ImageIcon("images//pic"+pic+".jpg";
Image image=(icon.getImage());
ImageFilter colorFilter=new GrayFilter();
Image imagec=createImage(new FilteredImageSource(image.getSource(),colorFilter));
icon.setImage(imagec);
picLabel.setIcon(icon);

class GrayFilter extends RGBImageFilter
{
public GrayFilter()
{
this.canFilterIndexColorModel=true;
}

public int filterRGB(int x,int y,int rgb)
{
int alpha,r,g,b;
int gray;
alpha =rgb&(0xFF<<24);
r=(rgb>>16)&0xFF;
g=(rgb>>8)&0xFF;
b=(rgb>>0)&0xFF;
gray=(r+g+b)/3;
return alpha|gray<<16|gray<<8|gray;
}
}


20  JFrame中动态更新
就是它的组件继承Thread()。

21  JPopupMenu弹出位置的设定

22 鼠标事件 左键 右键
  A  MouseEvent.Button1
  B  MouseEvent.Button2
  MouseEvent.getButtton()
23 java源文件丢失
  目前反编译java源文件的工具,还没有支持1.5以上版本的。
  不过在网上找个一个方法,用UltraEdit打开文件,将文件的
  开头CA FE BA BE 00 00 00 30(1.5) CA FE BA BE 00 00 00 32(1.6)
  改为CA FE BA BE 00 00 00 2E,就可以基本解决!
24  JLabel 背景设置无效问题
25  关于两个组件之间的动态通信。
开始我用线程的方式,由于太占资源,很苦闷,最后,想出用事件监听器的方案
其实这很普通的,只是不熟悉而已。
26  数据对象。
27  equals “” 和 null 不同
28  编译通过,运行异常怎么处理。
29  今天我建立一个类,picandno 里面要用到JComponent中的一个方法。可是我当时
建立它,是从别处copy过来。而它原来所在的类实现了它的一个子类。此地我建立
的类是独立的,所以怎么找不出错误的原因。
30  输入输出流有顺序之分。