隨筆-109  評(píng)論-187  文章-25  trackbacks-0
           
           

          最近測試OMADM1.2的時(shí)候,039040兩個(gè)case是關(guān)于TLS SSL的,搞的很迷惑,最近看了一下原來TLS幾乎就是SSL,基本上一摸一樣而已。

          Sun.com上面看到

          SSL was developed by Netscape in 1994, and with input from the Internet community, has evolved to become a standard. It is now under the control of the international standards organization, the Internet Engineering Task Force (IETF). The IETF has renamed SSL to Transport Layer Security (TLS), and released the first specification, version 1.0, in January 1999. TLS 1.0 is a modest upgrade to the most recent version of SSL, version 3.0. The differences between SSL 3.0 and TLS 1.0 are minor.

           

          所以這2個(gè)case基本上測試一個(gè)就足夠了。

          另外tls本來就是傳輸層上的一個(gè)協(xié)議,所以要是用HTTPS的話,如果你用應(yīng)用服務(wù)器,比如TOMCAT WBLOGIC,他們都支持SSL,根本不需要程序?qū)崿F(xiàn)任何東西,只要你會(huì)使用keytool生成證書就可以了。

           

          這塊只是牽扯到JSSE,具體可以到http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html#Introduction

          Keytool其實(shí)再JRE/LIB/SECUTITY下面的包里面,

          C:\j2sdk1.4.2_05\jre\lib\security>keytool

          keytool 用法:

           

          -certreq     [-v] [-alias <alias>] [-sigalg <sigalg>]

                       [-file <csr_file>] [-keypass <keypass>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -delete      [-v] -alias <alias>

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -export      [-v] [-rfc] [-alias <alias>] [-file <cert_file>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -genkey      [-v] [-alias <alias>] [-keyalg <keyalg>]

                       [-keysize <keysize>] [-sigalg <sigalg>]

                       [-dname <dname>] [-validity <valDays>]

                       [-keypass <keypass>] [-keystore <keystore>]

                       [-storepass <storepass>] [-storetype <storetype>]

                       [-provider <provider_class_name>] ...

           

          -help

           

          -identitydb [-v] [-file <idb_file>] [-keystore <keystore>]

                       [-storepass <storepass>] [-storetype <storetype>]

                       [-provider <provider_class_name>] ...

           

          -import      [-v] [-noprompt] [-trustcacerts] [-alias <alias>]

                       [-file <cert_file>] [-keypass <keypass>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -keyclone    [-v] [-alias <alias>] -dest <dest_alias>

                       [-keypass <keypass>] [-new <new_keypass>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -keypasswd   [-v] [-alias <alias>]

                       [-keypass <old_keypass>] [-new <new_keypass>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -list        [-v | -rfc] [-alias <alias>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

          -printcert   [-v] [-file <cert_file>]

           

          -selfcert    [-v] [-alias <alias>] [-sigalg <sigalg>]

                       [-dname <dname>] [-validity <valDays>]

                       [-keypass <keypass>] [-keystore <keystore>]

                       [-storepass <storepass>] [-storetype <storetype>]

                       [-provider <provider_class_name>] ...

           

          -storepasswd [-v] [-new <new_storepass>]

                       [-keystore <keystore>] [-storepass <storepass>]

                       [-storetype <storetype>] [-provider <provider_class_name>] ...

           

           

          1:生成一個(gè)

          C:\j2sdk1.4.2_05\jre\lib\security>keytool -genkey -alias duke -keyalg RSA   -val

          idity 10 -storetype jks -keystore trust1.jks

          2:查看你剛才生成的證書

          C:\j2sdk1.4.2_05\jre\lib\security>keytool -list -v -keystore trust1.jks

          當(dāng)然要輸入密碼了。

          但是我不太明白服務(wù)器需要2個(gè)證書1個(gè)是custom identity keystore 一個(gè)是custom trust keystore為什么2個(gè) 的輸入類型不一樣,一個(gè)是KeyEntry另外一個(gè)是trustedCertEntry,這個(gè)流程到底是怎樣的?申請(qǐng)證書->導(dǎo)入證書 還是不明白,請(qǐng)指教。

          posted @ 2007-07-04 17:43 小小程序程序員混口飯吃 閱讀(1988) | 評(píng)論 (1)編輯 收藏
               摘要: 最近復(fù)習(xí)了一下AXIS,寫了2個(gè)小例子1:  bean  1package test.soap.vo; 2 3import java.io.Serializable; 4 5public class User implements Serializable {&nbs...  閱讀全文
          posted @ 2007-06-15 15:48 小小程序程序員混口飯吃| 編輯 收藏

          Java對(duì)象序列化學(xué)習(xí)筆記- -

                                                

          beejoy 原創(chuàng)  來源:java研究組織


          目前網(wǎng)絡(luò)上關(guān)于對(duì)象序列化的文章不少,但是我發(fā)現(xiàn)詳細(xì)敘述用法和原理的文章太少。本人
          把自己經(jīng)過經(jīng)驗(yàn)總結(jié)和實(shí)際運(yùn)用中的體會(huì)寫成的學(xué)習(xí)筆記貢獻(xiàn)給大家。希望能為整個(gè)java社
          區(qū)的繁榮做一點(diǎn)事情。
           
          序列化的過程就是對(duì)象寫入字節(jié)流和從字節(jié)流中讀取對(duì)象。將對(duì)象狀態(tài)轉(zhuǎn)換成字節(jié)流之后,
          可以用java.io包中的各種字節(jié)流類將其保存到文件中,管道到另一線程中或通過網(wǎng)絡(luò)連接
          將對(duì)象數(shù)據(jù)發(fā)送到另一主機(jī)。對(duì)象序列化功能非常簡單、強(qiáng)大,在RMI、Socket、JMS、EJB
          都有應(yīng)用。對(duì)象序列化問題在網(wǎng)絡(luò)編程中并不是最激動(dòng)人心的課題,但卻相當(dāng)重要,具有
          許多實(shí)用意義。
          一:對(duì)象序列化可以實(shí)現(xiàn)分布式對(duì)象。主要應(yīng)用例如:RMI要利用對(duì)象序列化運(yùn)行遠(yuǎn)程主機(jī)
          上的服務(wù),就像在本地機(jī)上運(yùn)行對(duì)象時(shí)一樣。
          二:java對(duì)象序列化不僅保留一個(gè)對(duì)象的數(shù)據(jù),而且遞歸保存對(duì)象引用的每個(gè)對(duì)象的數(shù)據(jù)。
          可以將整個(gè)對(duì)象層次寫入字節(jié)流中,可以保存在文件中或在網(wǎng)絡(luò)連接上傳遞。利用對(duì)象序
          列化可以進(jìn)行對(duì)象的"深復(fù)制",即復(fù)制對(duì)象本身及引用的對(duì)象本身。序列化一個(gè)對(duì)象可能
          得到整個(gè)對(duì)象序列。
           
          從上面的敘述中,我們知道了對(duì)象序列化是java編程中的必備武器,那么讓我們從基礎(chǔ)開始
          ,好好學(xué)習(xí)一下它的機(jī)制和用法。


          java序列化比較簡單,通常不需要編寫保存和恢復(fù)對(duì)象狀態(tài)的定制代碼。實(shí)現(xiàn)java.io.Seri
          alizable接口的類對(duì)象可以轉(zhuǎn)換成字節(jié)流或從字節(jié)流恢復(fù),不需要在類中增加任何代碼。只
          有極少數(shù)情況下才需要定制代碼保存或恢復(fù)對(duì)象狀態(tài)。這里要注意:不是每個(gè)類都可序列化,
          有些類是不能序列化的,例如涉及線程的類與特定JVM有非常復(fù)雜的關(guān)系。

          序列化機(jī)制:

          序列化分為兩大部分:序列化和反序列化。序列化是這個(gè)過程的第一部分,將數(shù)據(jù)分解成字
          節(jié)流,以便存儲(chǔ)在文件中或在網(wǎng)絡(luò)上傳輸。反序列化就是打開字節(jié)流并重構(gòu)對(duì)象。對(duì)象序列
          化不僅要將基本數(shù)據(jù)類型轉(zhuǎn)換成字節(jié)表示,有時(shí)還要恢復(fù)數(shù)據(jù)。恢復(fù)數(shù)據(jù)要求有恢復(fù)數(shù)據(jù)的
          對(duì)象實(shí)例。ObjectOutputStream中的序列化過程與字節(jié)流連接,包括對(duì)象類型和版本信息。
          反序列化時(shí),JVM用頭信息生成對(duì)象實(shí)例,然后將對(duì)象字節(jié)流中的數(shù)據(jù)復(fù)制到對(duì)象數(shù)據(jù)成員中。
          下面我們分兩大部分來闡述:


          處理對(duì)象流:
          (序列化過程和反序列化過程)


          java.io包有兩個(gè)序列化對(duì)象的類。ObjectOutputStream負(fù)責(zé)將對(duì)象寫入字節(jié)流,ObjectInp
          utStream從字節(jié)流重構(gòu)對(duì)象。
              我們先了解ObjectOutputStream類吧。ObjectOutputStream類擴(kuò)展DataOutput接口。
          writeObject()方法是最重要的方法,用于對(duì)象序列化。如果對(duì)象包含其他對(duì)象的引用,則
          writeObject()方法遞歸序列化這些對(duì)象。每個(gè)ObjectOutputStream維護(hù)序列化的對(duì)象引用表,
          防止發(fā)送同一對(duì)象的多個(gè)拷貝。(這點(diǎn)很重要)由于writeObject()可以序列化整組交叉引用的
          對(duì)象,因此同一ObjectOutputStream實(shí)例可能不小心被請(qǐng)求序列化同一對(duì)象。這時(shí),進(jìn)行反引用
          序列化,而不是再次寫入對(duì)象字節(jié)流。
          下面,讓我們從例子中來了解ObjectOutputStream這個(gè)類吧。

          // 序列化 today's date 到一個(gè)文件中.
              FileOutputStream f = new FileOutputStream("tmp");
              ObjectOutputStream s = new ObjectOutputStream(f);
              s.writeObject("Today");
              s.writeObject(new Date());
              s.flush();


           
          現(xiàn)在,讓我們來了解ObjectInputStream這個(gè)類。它與ObjectOutputStream相似。它擴(kuò)展Dat
          aInput接口。ObjectInputStream中的方法鏡像DataInputStream中讀取Java基本數(shù)據(jù)類型的
          公開方法。readObject()方法從字節(jié)流中反序列化對(duì)象。每次調(diào)用readObject()方法都返回
          流中下一個(gè)Object。對(duì)象字節(jié)流并不傳輸類的字節(jié)碼,而是包括類名及其簽名。readObject()
          收到對(duì)象時(shí),JVM裝入頭中指定的類。如果找不到這個(gè)類,則readObject()拋出
          ClassNotFoundException,如果需要傳輸對(duì)象數(shù)據(jù)和字節(jié)碼,則可以用RMI框架。
          ObjectInputStream的其余方法用于定制反序列化過程。
          例子如下:

          //從文件中反序列化 string 對(duì)象和 date 對(duì)象
              FileInputStream in = new FileInputStream("tmp");
              ObjectInputStream s = new ObjectInputStream(in);
              String today = (String)s.readObject();
              Date date = (Date)s.readObject();

           

          定制序列化過程:


          序列化通常可以自動(dòng)完成,但有時(shí)可能要對(duì)這個(gè)過程進(jìn)行控制。java可以將類聲明為serial
          izable,但仍可手工控制聲明為static或transient的數(shù)據(jù)成員。
          例子:一個(gè)非常簡單的序列化類。

          public class simpleSerializableClass implements Serializable{
              String sToday="Today:";
              transient Date dtToday=new Date();
          }


          序列化時(shí),類的所有數(shù)據(jù)成員應(yīng)可序列化除了聲明為transient或static的成員。將變量聲
          明為transient告訴JVM我們會(huì)負(fù)責(zé)將變?cè)蛄谢?shù)據(jù)成員聲明為transient后,序列化
          過程就無法將其加進(jìn)對(duì)象字節(jié)流中,沒有從transient數(shù)據(jù)成員發(fā)送的數(shù)據(jù)。后面數(shù)據(jù)反序
          列化時(shí),要重建數(shù)據(jù)成員(因?yàn)樗穷惗x的一部分),但不包含任何數(shù)據(jù),因?yàn)檫@個(gè)數(shù)據(jù)
          成員不向流中寫入任何數(shù)據(jù)。記住,對(duì)象流不序列化static或transient。我們的類要用
          writeObject()與readObject()方法以處理這些數(shù)據(jù)成員。使用writeObject()與readObject()
          方法時(shí),還要注意按寫入的順序讀取這些數(shù)據(jù)成員。
          關(guān)于如何使用定制序列化的部分代碼如下:

          //重寫writeObject()方法以便處理transient的成員。
          public void writeObject(ObjectOutputStream outputStream) throws IOException{
              outputStream.defaultWriteObject();//使定制的writeObject()方法可以
                                  利用自動(dòng)序列化中內(nèi)置的邏輯。
              outputStream.writeObject(oSocket.getInetAddress());
              outputStream.writeInt(oSocket.getPort());
          }
          //重寫readObject()方法以便接收transient的成員。
          private void readObject(ObjectInputStream inputStream) throws
          IOException,ClassNotFoundException{
              inputStream.defaultReadObject();//defaultReadObject()補(bǔ)充自動(dòng)序列化
              InetAddress oAddress=(InetAddress)inputStream.readObject();
              int iPort =inputStream.readInt();
              oSocket = new Socket(oAddress,iPort);
              iID=getID();
              dtToday =new Date();
          }

           

          完全定制序列化過程:

          如果一個(gè)類要完全負(fù)責(zé)自己的序列化,則實(shí)現(xiàn)Externalizable接口而不是Serializable接口
          。Externalizable接口定義包括兩個(gè)方法writeExternal()與readExternal()。利用這些方
          法可以控制對(duì)象數(shù)據(jù)成員如何寫入字節(jié)流.類實(shí)現(xiàn)Externalizable時(shí),頭寫入對(duì)象流中,
          然后類完全負(fù)責(zé)序列化和恢復(fù)數(shù)據(jù)成員,除了頭以外,根本沒有自動(dòng)序列化。這里要注意了。
          聲明類實(shí)現(xiàn)Externalizable接口會(huì)有重大的安全風(fēng)險(xiǎn)。writeExternal()與readExternal()
          方法聲明為public,惡意類可以用這些方法讀取和寫入對(duì)象數(shù)據(jù)。如果對(duì)象包含敏感信息,
          則要格外小心。這包括使用安全套接或加密整個(gè)字節(jié)流。到此為至,我們學(xué)習(xí)了序列化的
          基礎(chǔ)部分知識(shí)。關(guān)于序列化的高級(jí)教程,以后再述。

          posted @ 2007-06-08 13:39 小小程序程序員混口飯吃 閱讀(974) | 評(píng)論 (1)編輯 收藏
          CMWAP 和 CMNET 只是中國移動(dòng)人
          為劃分的兩個(gè)GPRS接入方式。前者是為手機(jī)WAP上網(wǎng)而設(shè)立的,后者則主要是為PC、筆記
          本電腦、PDA等利用GPRS上網(wǎng)服務(wù)。它們?cè)趯?shí)現(xiàn)方式上并沒有任何差別,但因?yàn)槎ㄎ徊煌?
          ,所以和CMNET相比,CMWAP便有了部分限制,資費(fèi)上也存在差別。

          WAP只是一種GPRS應(yīng)用模式,它與GRPS的接入方式是無關(guān)的。WAP應(yīng)用采用的實(shí)現(xiàn)方
          式是“終端+WAP網(wǎng)關(guān)+WAP服務(wù)器”的模式,不同于一般Internet的“終端+服務(wù)器”
          的工作模式。主要的目的是通過WAP網(wǎng)關(guān)完成WAP-WEB的協(xié)議轉(zhuǎn)換以達(dá)到節(jié)省網(wǎng)絡(luò)流量和
          兼容現(xiàn)有WEB應(yīng)用的目的。WAP網(wǎng)關(guān)從技術(shù)的角度講,只是一個(gè)提供代理服務(wù)的主機(jī),它
          不一定由網(wǎng)絡(luò)運(yùn)營商提供。但據(jù)我所知,中國移動(dòng)GPRS網(wǎng)絡(luò)目前只有唯一的一個(gè)WAP網(wǎng)關(guān)
          :10.0.0.172,有中國移動(dòng)提供,用于WAP瀏覽(HTTP)服務(wù)。有一點(diǎn)需要注意,WAP網(wǎng)
          關(guān)和一般意義上的局域網(wǎng)網(wǎng)關(guān)是有差別的,標(biāo)準(zhǔn)的WAP網(wǎng)關(guān)僅僅實(shí)現(xiàn)了HTTP代理的功能,
          并未完成路由、NAT等局域網(wǎng)網(wǎng)關(guān)的功能。這就決定了它在應(yīng)用上所受到的限制。

          為了從應(yīng)用中區(qū)別兩者的定位,中國移動(dòng)對(duì)CMWAP作了一定的限制,主要表現(xiàn)在CMW
          AP接入時(shí)只能訪問GPRS網(wǎng)絡(luò)內(nèi)的IP(10..*),而無法通過路由訪問Internet。我們
          用CMWAP瀏覽Internet上的網(wǎng)頁就是通過WAP網(wǎng)關(guān)協(xié)議或它提供的HTTP代理服務(wù)實(shí)現(xiàn)的。
          也就是需要通過中國移動(dòng)GPRS網(wǎng)絡(luò)唯一的一個(gè)WAP網(wǎng)關(guān):10.0.0.172。CMNET擁有完全的
          Internet訪問權(quán),這里就不多說了,主要讓我們來看看CMWAP。因?yàn)橛辛松厦嫣岬降南拗?
          ,CMWAP的適用范圍就要看WAP網(wǎng)關(guān)所提供的支持了。目前,中國移動(dòng)的WAP網(wǎng)關(guān)對(duì)外只提
          供HTTP代理協(xié)議(80和8080端口)和WAP網(wǎng)關(guān)協(xié)議(9201端口)。

          因此,只有滿足以下兩個(gè)條件的應(yīng)用才能在中國移動(dòng)的CMWAP接入方式下正常工作:
          1. 應(yīng)用程序的網(wǎng)絡(luò)請(qǐng)求基于HTTP協(xié)議。2. 應(yīng)用程序支持HTTP代理協(xié)議或WAP網(wǎng)關(guān)協(xié)議。
          而cmnet則不受任何的限制。

          說白了就是說通過cmwap的方式訪問,需要走中國移動(dòng)的網(wǎng)關(guān)通過http協(xié)議去連接,
          這樣的后果就是速度會(huì)變慢,相信很多朋友都用過代理服
          務(wù)器吧,對(duì),就是那個(gè)感覺,而通過cmnet來連接的,就是直接連接到無限乾坤在inter
          net上的服務(wù)器,速度會(huì)比cmwap的快一些。說完了速度,就該說價(jià)格了,如果玩家沒有
          采用套餐的話,那cmwap和cmnet都是一樣的,1kb三分錢,或者訂了一個(gè)xx元包xM的套餐
          ,超出部分1k一分錢,這種時(shí)候,同等價(jià)格都一樣,據(jù)我了解,cmwap版本流量會(huì)大一些
          ,所以還是用cmnet比較好,又快又省錢。但是對(duì)于很多地方的動(dòng)感地帶用戶而言,情況
          可能有些不同,相當(dāng)一些地方的動(dòng)感地帶只能訪問cmwap,不能訪問cmnet,所以沒地選
          擇了,還有一些地方有動(dòng)感地帶的包月上網(wǎng)卡,有10元、20元、50元的等等,具體的要
          看當(dāng)?shù)氐馁Y費(fèi)政策了,而這些包月卡通常只包c(diǎn)mwap的流量,這個(gè)時(shí)候如果用cmnet還要
          另外付費(fèi),所以建議這些用戶還是使用cmwap吧。最后總結(jié)一下,如果玩家的手機(jī)卡只能
          訪問cmwap或者有cmwap包月的套餐,那么您就使用cmwap連接來游戲,否則使用cmnet連
          接是更好的選擇


          所以,一句話,有wap包月的地區(qū)就使用wap包月上網(wǎng),沒有包月業(yè)務(wù)的就用cmnet,反正都是按流量算錢,為什么不選擇快一點(diǎn)的呢(但還是要提醒大家,按流量計(jì)費(fèi)產(chǎn)生的費(fèi)用是巨大的,要
          多多注意)
          posted @ 2007-05-17 10:50 小小程序程序員混口飯吃 閱讀(1983) | 評(píng)論 (0)編輯 收藏
          import java.io.BufferedReader;
          import java.io.DataOutputStream;
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.MalformedURLException;
          import java.net.URL;

          public class TestConn {

              
          public TestConn() {
                  
          super();
              }


              
          public static void main(String[] args) throws Exception {
                  String url 
          = null;
                  getHttpText(url);
                  System.out.println(
          "abc");
              }


              
          public static String getHttpText(String str) {
                  URL url 
          = null;
                  
          try {
                      url 
          = new URL(str);
                  }
           catch (MalformedURLException e) {
                      e.printStackTrace();
                  }

                  HttpURLConnection huc 
          = null;
                  
          try {

                      huc 
          = (HttpURLConnection) url.openConnection();
                      huc.setRequestMethod(
          "GET");
                      huc.setRequestProperty(
          "Content-Type",
                              
          "application/vnd.syncml.dm+xml");
                      
          // application/x-www-form-urlencoded
                      
          // application/vnd.syncml.dm+xml
                      huc.setDoOutput(true);
                      huc.setRequestProperty(
          "Cache-Control""private");
                      huc.setRequestProperty(
          "Accept-Charset""utf-8");
                      huc.setRequestProperty(
          "Accept""application/vnd.syncml.dm+xml");
                      huc.setRequestProperty(
          "Content-Length""3");
                      DataOutputStream printout;
                      printout 
          = new DataOutputStream(huc.getOutputStream());
                      printout.writeBytes(
          "abc");
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  InputStream is 
          = null;
                  
          try {
                      is 
          = huc.getInputStream();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  BufferedReader br 
          = new BufferedReader(new InputStreamReader(is));
                  StringBuffer sb 
          = new StringBuffer();
                  String line 
          = "";
                  
          try {
                      
          while ((line = br.readLine()) != null{
                          sb.append(line).append(
          "\n");
                      }

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

                  
          return sb.toString();
              }


          }

          posted @ 2007-05-14 09:16 小小程序程序員混口飯吃 閱讀(4071) | 評(píng)論 (0)編輯 收藏
          記事本=notepad
          計(jì)算器=calc
          注冊(cè)表=regedit
          系統(tǒng)檢測=dxdiag
          畫圖=mspaint
          遠(yuǎn)程桌面=mstsc
          posted @ 2007-04-29 17:27 小小程序程序員混口飯吃 閱讀(493) | 評(píng)論 (1)編輯 收藏
           其實(shí)這個(gè)問題不是程序的問題,主要是property中文問題,這個(gè)問題可以通過build解決掉

           <native2ascii src="." dest="build" includes="*Props.txt" />
          把配置文件編碼 windows下默認(rèn)GBK編碼,linux 要加encoding
          代碼一行不用改,放心漢化吧~~
          posted @ 2007-04-24 15:21 小小程序程序員混口飯吃 閱讀(1933) | 評(píng)論 (3)編輯 收藏
          如題,有沒有朋友知道開源的在線圖片處理的程序,在頁面上直接處理圖片,有點(diǎn)象iephotoshop,功能即使不如imageJ,也要有一些基本的功能.
          posted @ 2007-04-19 09:20 小小程序程序員混口飯吃 閱讀(2092) | 評(píng)論 (2)編輯 收藏
          話說“你不理財(cái),財(cái)不理你”

          那么什么是理財(cái)呢???

          很多人都很知道“理財(cái)”,也都無時(shí)無刻不在理財(cái),但把理財(cái)說清楚的人卻不多...

          很多人說到理財(cái)想到的就是投資,就是開源節(jié)流,就是合理分配財(cái)產(chǎn),等等… …

          其實(shí),
          ---------------------------------------------------------
          理財(cái)就是對(duì)財(cái)富的有效管理。

          理財(cái)?shù)膬?nèi)涵很廣,包括開源節(jié)流,包括合理分配財(cái)產(chǎn),包括投資增值等,但又不止于這些。從理財(cái)?shù)幕A(chǔ)理論來講,主要包括:現(xiàn)金管理、資產(chǎn)管理、債務(wù)管理、風(fēng)險(xiǎn)管理、投資管理等等。
          ---------------------------------------------------------
          現(xiàn)金管理是理財(cái)?shù)幕A(chǔ)。包括各項(xiàng)收入的籌劃和管理,包括各項(xiàng)稅費(fèi)的管理,包括各項(xiàng)日常支出的管理,包括現(xiàn)金的積累和短期儲(chǔ)蓄等等。具體的管理工具和形式有各式各樣的銀行卡片,各式各樣的儲(chǔ)蓄方式,各種各樣的支出方式,包括各種各樣的節(jié)儉手段等等。

          資產(chǎn)管理是理財(cái)?shù)闹匦摹YY產(chǎn)具體包括固定資產(chǎn)、流動(dòng)資產(chǎn)等。固定資產(chǎn)比如房產(chǎn)、鋪面等等,流動(dòng)資產(chǎn)包括儲(chǔ)蓄資產(chǎn)、投資資產(chǎn)、保險(xiǎn)資產(chǎn)等。資產(chǎn)管理是家庭理財(cái)?shù)闹攸c(diǎn),合理有效的管理需要。

          債務(wù)管理是理財(cái)?shù)年P(guān)鍵。債務(wù)并非完全的壞事,合理的管理債務(wù)是迅速達(dá)到理財(cái)目標(biāo)的捷徑,只要把債務(wù)控制在一定的合理的范圍之內(nèi),對(duì)優(yōu)化財(cái)務(wù)結(jié)構(gòu)有很好的作用。比如在財(cái)力許可的情況下可以通過按揭提前實(shí)現(xiàn)高品質(zhì)的家庭生活,通過金融信用延遲支付貨款往來等,從而更快實(shí)現(xiàn)財(cái)務(wù)目標(biāo)。

          風(fēng)險(xiǎn)管理是理財(cái)?shù)年P(guān)鍵。有效的風(fēng)險(xiǎn)管理是現(xiàn)代社會(huì)先進(jìn)的標(biāo)志,沒有對(duì)風(fēng)險(xiǎn)的管理交通工具不能上路運(yùn)營,貿(mào)易貨運(yùn)不能出門出海流通,商場大廈無法入住營業(yè),流動(dòng)性和小家化也決定個(gè)人進(jìn)行風(fēng)險(xiǎn)管理是大勢所趨。

          投資管理是理財(cái)?shù)囊c(diǎn)。現(xiàn)在很多對(duì)投資理財(cái)非常渴望,一提到投資賺錢眼睛就發(fā)亮,主要是因?yàn)槟壳拔覈鹑诃h(huán)境不夠完善,安全穩(wěn)健的大眾投資品種非常匱乏,很多人的收益局限于2個(gè)點(diǎn)以內(nèi),相較于去年初高達(dá)5個(gè)點(diǎn)的通貨膨脹顯然是一個(gè)很大的威脅。而國內(nèi)居民的投資信息和能力先天不足,稍有異動(dòng)即可能遭遇陷阱的現(xiàn)狀導(dǎo)致國民儲(chǔ)蓄逐年逼高。在理財(cái)范疇內(nèi)投資增值是最需要專業(yè)知識(shí)的,也是實(shí)現(xiàn)家庭理財(cái)目標(biāo)最關(guān)鍵的步驟。所以如何實(shí)現(xiàn)投資的有效管理就很重要。


          總之,理財(cái)就是所有與財(cái)富有關(guān)的活動(dòng)的總稱,是現(xiàn)代社會(huì)重要的組成要素,是現(xiàn)代人過上幸福快樂生活必備的基本素質(zhì)。

          而且,五個(gè)理財(cái)?shù)幕痉矫嬉彩腔ハ嚓P(guān)聯(lián),互為制約,相互促進(jìn)的。

          posted @ 2007-02-13 11:07 小小程序程序員混口飯吃 閱讀(358) | 評(píng)論 (0)編輯 收藏

          ???????????

          做為新一代 3G 及移動(dòng)終端浪潮的設(shè)備管理平臺(tái), OMA DM 技術(shù)獲得了眾多設(shè)備廠商和運(yùn)營商的追捧,也為軟件開發(fā)商提供新的崛起機(jī)會(huì)。業(yè)內(nèi)目前也有不少工作在做這方面的軟件。好多公司這方面的產(chǎn)品都是基于Sync4J開發(fā)的。

          Sync4J 開源項(xiàng)目為我們提供了完整的 OMA DM 1.1.2 規(guī)范的 Java 實(shí)現(xiàn)。本文記錄了 Sync4J DM Server 安裝以及使用SCTS模擬器來模擬手機(jī)做一個(gè)DM業(yè)務(wù),本文沒有用PPG來通過短信方式來用真手機(jī)來做,只是用模擬器來做的。SCTSOMA官方提供的一個(gè)測試工具,主要用來測試DMserver的,這里我們用來測試Sync4JSync4JSCTS的集合是我們學(xué)習(xí)OMA的一個(gè)很好的方式。

          1 :用到以下工具。

          ? Oracle9i

          ? jboss-3.2.3

          ? sync4j-server-dm-1.4.9?? sync4j 官方有下載

          ? SCTS_DeviceManagement_v1.12.zip? OMA 官方網(wǎng)站有下載。

          ?

          ?

          2 :安裝調(diào)試

          ? 2.1 解壓文件:

          ?? jboss-3.2.3 解壓到 C:\jboss-3.2.3

          sync4j-server-dm-1.4.9 解壓到 D:\sync4j\all\server-dm .

          直接安裝 SCTS.

          ? 2.2 配置環(huán)境變量

          ? JAVA_HOME=

          ? J2EE_HOME= C:\jboss-3.2.3

          ? SYNCSERVER_HOME= D:\sync4j\all\server-dm

          2.3 修改SYNCSERVER_HOME下的幾個(gè)配置文件

          ? ?SYNCSERVER_HOME\ default\config\common\properties\ Sync4j.properties

          把第一行改為 server.uri=http://your IP:8080/sync4j-dm/dm

          ? SYNCSERVER_HOME\ install.properties 改為

          (1)server-name=http://10.150.4.7:8080/sync4j-dm/dm

          ?(2) oracle 的數(shù)據(jù)庫,以下是用來連接數(shù)據(jù)庫的,所以一定要配置正確。

          jdbc.classpath=C:\\jboss-3.2.3\\server\\all\\lib\\ojdbc14.jar

          jdbc.driver=oracle.jdbc.driver.OracleDriver

          jdbc.url=jdbc:oracle:thin:@11.11.11.11:1521:abc

          jdbc.user=sync4j

          jdbc.password=sync4j

          2 4以上都做完后用Sync4j自己帶的安裝腳本安裝sync4j dm server

          SYNCSERVER_HOME 下運(yùn)行 bin\install.cmd jboss32

          2 5由于這個(gè)版本存在了一個(gè)bug,所以在2.4做完后要修改

          SYNCSERVER_HOME\bin\start.cmd

          把倒數(shù)第三行 call\run.bat -c sync4j 改為

          call %J2EE_HOME%\bin\run.bat -c sync4j

          2 6 SYNCSERVER_HOME 運(yùn)行 bin\start.cmd安裝

          所有程序到安裝到了 jboss_home 下了,可以到 JBOSS_HOME\ server\sync4j 就可以看到了,看一下你的 oralce 庫里面也初始化了數(shù)據(jù),表也建好了。

          ?

          2 7 添加一個(gè)手機(jī)(我們其實(shí)是個(gè)模擬器)上來

          http://your ip:8080/dmdemo/jsp/addDevice.jsp 填寫一個(gè) IMEI:111111111111111,

          ?

          2 8 配置scts

          Add device : IMEI:111111111111111 然后點(diǎn) apply

          點(diǎn)擊 DM Account

          Name sync4j

          Server:sync4j

          Con : 不用填寫

          Address http://your ip /sync4j-dm/dm

          Port :8080

          Server authentication:

          ? Digest : 找數(shù)據(jù)庫用 sync4j 的數(shù)據(jù)庫中, sycn4j_device 表中 :IMEI:111111111111111 server password 為: srvpwd, 把這個(gè) password 填寫到 password 中。

          Client authentication

          ?? DIGEST: USER NAME: sync4j PASSWORD: sync4j

          Add 就可以了

          然后點(diǎn) connect 連一下 DM SERVER 看看能否連上。 第一次一般會(huì)出現(xiàn)認(rèn)證錯(cuò)我,接著再聯(lián)一次就可以了, SCTS 有日志可以查看。

          ?

          如果連通了那下面就來做一個(gè)采集模擬器上的一個(gè)節(jié)點(diǎn)吧。

          ?

          http://your ip:8080/dmdemo/index.html

          device id IMEI:111111111111111 login

          1.JPG

          ?

          ? 然后點(diǎn)擊 add to operation list

          2.JPG

          然后用 SCTS 主動(dòng)回聯(lián)一下,看看 server 能夠拿到這個(gè)節(jié)點(diǎn)的值

          3.JPG

          你會(huì)看到 6 個(gè) message !!!

          詳細(xì)看一下這 6 個(gè) message 你會(huì)發(fā)現(xiàn),這個(gè)節(jié)點(diǎn)的采集已經(jīng)成功了!

          ?

          ?

          ?

          ?

          posted @ 2007-02-05 10:02 小小程序程序員混口飯吃 閱讀(9295) | 評(píng)論 (11)編輯 收藏
          僅列出標(biāo)題
          共11頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 防城港市| 荃湾区| 佛冈县| 夏津县| 麟游县| 鄂托克旗| 龙里县| 仁化县| 柘城县| 安达市| 如东县| 石河子市| 海晏县| 九江市| 页游| 蓬安县| 垣曲县| 从江县| 石台县| 瓮安县| 来安县| 个旧市| 东港市| 遂宁市| 三原县| 桃园县| 清河县| 建宁县| 北碚区| 瑞丽市| 织金县| 札达县| 靖边县| 昌江| 荥经县| 沐川县| 资溪县| 绥芬河市| 平谷区| 开远市| 来宾市|