2006年7月25日
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);??
if(!checkDateEarlier(editForm.startTime.value,editForm.endTime.value,0))
??{
???alert("起始日期不能大于結束日期");
???return false;
??}
配置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是寫在一個里.
法則一:如果你創建了他,那么就要釋放他
在本章節的前一部分,你知道了創建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?
? /*讀*/
? 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) {
??}
? /*讀*/?
? 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();
??}
??????在windows2000的服務里面啟動mysql服務可是總是彈出“錯誤 1067: 進程意外終止”!?
???????我感覺問題在配置文件,于是就重新寫了my.ini,啟動還是一樣的效果,我在google上查找無果,崩潰狀態!就在此時眼前一亮,一位高人的指點是我豁然開朗,你的ini文件有否放到windows目錄下,我從個人目錄的windows目錄下,將其拷貝到系統windows目錄下,啟動服務,ok!!!
將Mysql添加到Windows系統服務中:
1.、 安裝服務。
在Windows2000下,安裝完成后,并沒有把MySQL安裝成服務,我們必須執
行下面的語句把MySQL注冊為服務:installdir\\mysql\\bin\\mysqld-nt –
-install。
Windows98下沒有服務的概念,所以不用安裝服務。
2.、 啟動服務
在Windows2000下,安裝服務后可以啟動MySQL服務:net start mysql。
在Windows98下,可以用下面的命令啟動服務:c:\\mysql\\bin\\mysqld,服
務啟動后在后臺運行,并沒有界面。
3.、 停止服務
在Windows2000下,可以通過下面的命令停止MySQL服務:net stop mysql
。
在Windows98下,可以通過下面命令停止服務:C:\\>
C:\\mysql\\bin\\mysqladmin -u root shutdown
4、 卸載服務
可以通過下面的命令卸載MySQL服務:installdir\\mysql\\bin\\mysqld-nt
–-remove。