2006年10月17日

二进制

int   i=8;     //测试数据  
String   s   =   String.valueOf(Integer.toBinaryString(i));     //int   to   binary  
System.out.println(s);   
         
String   ss   =   "11";   
int   ii   =   Integer.parseInt(ss,2);  
//binary   to   int,parseInt中2代表2进制,可使用2,8,10,16不同参数   
System.out.println(ii);  

posted @ 2006-10-27 16:01 国强 阅读(315) | 评论 (0)编辑 收藏

js 日期验证

if(!checkDateEarlier(editForm.startTime.value,editForm.endTime.value,0))
  {
   alert("起始日期不能大于结束日期");
   return false;
  }

posted @ 2006-10-25 16:25 国强 阅读(859) | 评论 (1)编辑 收藏

tomcat配置c390

配置oracle10g(要下载ojdbc14包--是jdbc for oracle10g)

连接池(c3p0)的包的下载地址:

http://sourceforge.net/projects/c3p0

上下文路径的xml文件内容如下:

<Context path="/test" reloadable="true" docBase="E:\project\test" workDir="E:\project\test\work" >
<Resource auth="Container" description="DB Connection" driverClass="oracle.jdbc.driver.OracleDriver"
 maxPoolSize="10" minPoolSize="1" acquireIncrement="1" name="jdbc/oracle10g" user="test" password="test"
 factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource"
 jdbcUrl="jdbc:oracle:thin:@192.168.1.86:1521:orcl" />
</Context> 

注意:tomcat5.0和tomcat5.5系列的差别:

参数都相同;只是xml的格式不一样;

5.0是分开写;5.5是写在一个里.

posted @ 2006-10-19 15:03 国强 阅读(568) | 评论 (2)编辑 收藏

SWT中的Dispose操作法则

法则一:如果你创建了他,那么就要释放他
在本章节的前一部分,你知道了创建SWT控件,相应的本地控件也被创建了。也就是说,调用了SWT的构造函数,底层的本地资源也被创建了。所以如果你写下如下代码,那么你就创建了一个SWT颜色对象,那么也就在系统的底层资源里分配了一个颜色资源:
Color color = new Color(display, 255, 0, 0); // Create a red Color
法则一说明了如果你创建了他,那么你就要在使用完时释放他,像下面一样:
color.dispose(); // I create it, so I dispose it
但是,如果你没有使用构造函数来申请资源,你就不能显式的释放他。比如,考虑下面的代码:
Color color = display.getSystemColor(SWT.COLOR_RED); // Create a red Color
再一次,获得了底层平台的颜色资源,但是没有分配他。法则一就说不能释放他。为什么不呢?因为这个不属于你-你只是借用了这个资源,其他的对象有可能正在使用它或者将要使用它。释放这个资源会变得非常严重的。


法则二:释放了父控件,子控件也被释放
对每一个使用new创建的控件都使用dispose()会变得非常繁琐,会使得SWT很快被抛弃。但是,SWT的设计者意识到了这一点,创建了一种逻辑上层叠的自动释放机制。这意味着,当一个Shell被释放了,所有与Shell有关的控件都被自动释放了。你会发现,永远也不会使用label.dispose()在“Hello World”程序里,甚至你使用了new来创建一个Label对象。当用户关闭了Shell,Label控件自动的释放了。
也许你在想,你永远不需要调用dispose(),这部分代码只是在浪费空间。实际上,有可能写一些程序,所有的资源都只有一个父类,并且这些资源都会自动释放。但是,考虑一下下面的改变Text中字体的代码。如下:
Text text = new Text(shell, SWT.BORDER); //Create the text field
Font font = new Font(display, ”Arial”, 4, SWT.BOLD); //Create the new font
text.setFont(font); //Set the font into the text field
这个字体对象创建时没有父类,所以不会被自动释放,甚至当Shell被关闭了,Text对象调用了dispose()。也许你会对使用font这个负担而发怒,但是考虑到text没有理由要对font负责-font不属于他。实际上,你也许会使用这个Font对象在各种各样的控件上,自动释放会引发一系列的问题。

另外:
如果Java包裹的本地控件依然在活动,而他所属于的Shell被释放了,将发生什么情况呢?或者手动调用控件的dispose方法会怎么样呢?本地控件会被释放吗?我们是否可以调用java对象而他的底层本地控件不存在?
答案当然是:可以!如果你调用一个对象而他的本地控件已经释放,会引出一些麻烦。一旦一个控件被释放了,甚至他依然在活动,对他做什么都没有用。是的,Java对象依然可用,但是底层的对应点已经释放了。那么就会得到一个SWTException,显示为“Widget has been disposed”。考虑Listing 3-2的代码。
Listing 3-2:Broken.java
CODE:
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class Broken
{
public static void main(String[] args)
{
  Display display = new Display();
  Shell shell = new Shell(display);
  shell.setLayout(new RowLayout());
  Text text = new Text(shell, SWT.BORDER);
  shell.open();
  while (!shell.isDisposed())
  {
  if (!display.readAndDispatch())
  {
    display.sleep();
  }
  }
  System.out.println(text.getText()); // PROBLEM!
  display.dispose();
  }
}

代码可以编译和运行,但是在关闭了主窗口后控制台会打印出以下的错误:
Org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:2332)
at org.eclipse.swt.SWT.error(SWT.java:2262)
at org.eclipse.swt.widgets.Widget.error(Widget.java:385)
at org.eclipse.swt.widgets.Control.getDisplay(Control.java:735)
at org.eclipse.swt.widgets.Widget.isValidThread(Widget.java:593)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:315)
at org.eclipse.swt.widgets.Text.getText(Text.java:705)
at Broken.main(Verison.java:24)

需要注意的,当你在Windows XP上运行这个程序,你会得到一个对话框显示javaw.exe出现了问题,需要关闭,你是否愿意发送错误报告到Microsoft?

posted @ 2006-10-17 16:51 国强 阅读(3606) | 评论 (0)编辑 收藏

Jdom

  /*读*/
  SAXBuilder builder = new SAXBuilder();
  Document doc = null;
  try {
      doc = builder.build("config.xml");
  } catch (Exception e) {
      e.printStackTrace();
      return;
  }
  //获得这个文档的根元素
  Element printer = doc.getRootElement();
  Element name = printer.getChild("name");
  this.name = name.getText();

  /*写*/
  SAXBuilder builder = new SAXBuilder();
  Document doc;
  try {
      doc = builder.build("config.xml");
  } catch (Exception e) {
        return;
  }
  Element printer = doc.getRootElement();
  Element name = printer.getChild("name");
  name.setText( PrintParameter.getInstance().getName() );
        
  XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("utf-8"));
 try {
      outputter.output(doc, new java.io.FileOutputStream("config.xml"));
  } catch (Exception e) {
  }

posted @ 2006-10-17 16:13 国强 阅读(283) | 评论 (0)编辑 收藏

Properties类

  /*读*/ 
  Properties settings = new Properties();
  String name = "printConfig";
  try {
      FileInputStream in = new FileInputStream(name + ".properties"); 
      settings.load(in);
      String value = Integer.parseInt( (String) settings.get("name") ;

  } catch (IOException e) {e.printStackTrace();}

  /*写*/
  Properties settings = new Properties();
  String name = "printConfig";
  FileOutputStream out = null;
  try {
      out = new FileOutputStream( name + ".properties" );
      settings.store(out,"");
  } catch (Exception e1) {
      e1.printStackTrace();
  }

posted @ 2006-10-17 16:07 国强 阅读(279) | 评论 (0)编辑 收藏

<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

java

搜索

最新评论

阅读排行榜

评论排行榜