<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 31,  comments - 31,  trackbacks - 0
           這幾天做項目,需要做一個類似于控制臺的界面,可以將日志回顯到一個文本區(qū)域里,幾經查找,反復測試寫了以下測試代碼。
    這是log4j.properties的配置內容
        log4j.rootCategory= ,WriterAppender

    log4j.appender.WriterAppender
    =org.apache.log4j.WriterAppender
    log4j.appender.WriterAppender.Threshold
    =debug
    log4j.appender.WriterAppender.layout
    =org.apache.log4j.PatternLayout
    log4j.appender.WriterAppender.layout.ConversionPattern
    =%d{ISO8601} - %- %m%n
    主程序
    import java.io.PipedReader;
    import java.io.PipedWriter;
    import java.io.Writer;

    import org.apache.log4j.Appender;
    import org.apache.log4j.Logger;
    import org.apache.log4j.WriterAppender;

    public class Log4jMain {
        
    static public Logger logger = Logger.getLogger(Log4jMain.class);

        
    public static void main(String[] arg) {
            
            
            Logger root 
    = Logger.getRootLogger();
            
    try {
                Appender appender 
    = root.getAppender("WriterAppender");
                PipedReader reader 
    = new PipedReader();
                Writer writer 
    = new PipedWriter( reader) ;
            
                ((WriterAppender) appender).setWriter(writer);
                
                Thread t 
    = new AaaThread(reader);
                t.start();
                Logger logger 
    = Logger.getLogger(Log4jMain.class);
                logger.error(
    "asdf");
                logger.info(
    "asdf");
                logger.debug(
    "asdf");
                logger.fatal(
    "asdf");
                    //hh是一個class,test方法里只有幾個logger.info("aaa"),用于測試用,這東西可以去掉
                
    new HH().test();

            }
     catch (Exception e) {
            }


        }

        
    }
    因為log4j提供的是 Writer,所以通過使用PipedWriter連接到PipedReader,并通過一個thread來處理PipedReader的數(shù)據(jù)就可以回顯了。如果你需要的話可以將下面的System.out.println(scanner.nextLine());改成你需要顯示的地方就行了。
    import java.io.PipedReader;
    import java.util.Scanner;

    public class AaaThread extends Thread {
        PipedReader reader;

        
    public AaaThread(PipedReader reader) {
            
    this.reader = reader;
        }


        
    public void run() {
            Scanner scanner 
    = new Scanner(reader);
            
    while (scanner.hasNext()) {
                System.out.println(scanner.nextLine());
            }

        }

    }
    posted @ 2008-06-06 09:31 小平 閱讀(1224) | 評論 (0)編輯 收藏
    這里制作一個引子,具體內容比較多,而且hibernate文檔里的hql篇寫的很詳細
    可以這么用:
    List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");
    這樣的話list里的每個元素都是一個map,每個map里包含兩個元素
    注意:這里的table1和table2都是class名并不是真的表名,畢竟這是hql。除了可以用map還還支持list和自定義的bean。


    posted @ 2008-04-17 17:05 小平 閱讀(1893) | 評論 (0)編輯 收藏
    DB2的Type-4驅動真的很詭異,配了兩天沒配上,發(fā)現(xiàn)是多引了一個包。就是他----“db2java.zip(db2java.jar)”只要有了他就算你已經引入了db2jcc.jar、db2jcc_license_cisuz.jar、db2jcc_license_cu.jar也沒用。
    不知道怎么回事,本以為多引就沒錯,沒想到載這了。
    順便吧db2 type-4的配置方法貼下面:
    jdbc:db2://ip:port/數(shù)據(jù)庫
    驅動名:com.ibm.db2.jcc.DB2Driver

    我日他IBM!該死的IBM,我算是服了,配好的type-4驅動中文數(shù)據(jù)顯示的全是亂碼,準備切到type-2上試試,結構還是不行,查來查去是數(shù)據(jù)庫pagecode的事,數(shù)據(jù)庫的字符集改成gbk,客戶端的pagecode也改成跟數(shù)據(jù)庫一樣的,ODBC算是能用了,type-2也能用了,然后又用type-4一試!連不上了!說字符集不匹配,上網(wǎng)一查說要使用IBM專用的JDK,我日了,換了IBM的JDK,配好環(huán)境變量eclipse又不能用了!我算是被IBM搞死了,一氣之下也不準備再嘗試type-4了。
    我這里用的IBM JDK1.4,db2 V8
    posted @ 2008-04-17 16:51 小平 閱讀(2525) | 評論 (3)編輯 收藏

    近日抽風,想了解以下java與串口并口通訊的問題,上網(wǎng)查了半天,找到了sun幾年前的一個破包,comm.jar

    2.0版的,遇到一個比較奇怪的問題,這個包里的demo程序用cmd可以運行,但是用eclipse編譯就不能運行,一直以為是dll庫和配置文件的問題,幾乎將兩個文件copy到了系統(tǒng)中全部可能出現(xiàn)的地方都沒有解決。百般無奈之下,找到了http://blog.csdn.net/djsl6071/archive/2007/04/25/1583979.aspx這個博客,下載了rxtx把問題搞定了。
    posted @ 2008-04-17 16:40 小平 閱讀(574) | 評論 (0)編輯 收藏
    如果RMI客戶端鏈接補上服務器可能是以下情況導致的:
    1、網(wǎng)絡不通
    2、端口占用
    3、防火墻(客戶端機器的防火墻和服務器端的防火墻都有可能)
    4、服務器端所在機器安裝了linux虛擬機,或者使用的linux或者unix系統(tǒng)
    排除辦法:
    前三種情況都很好解決,主要是最后一個,需要在rmi服務啟動時加上一句
    java  -Djava.rmi.server.hostname=localhost ……
    其中l(wèi)ocalhost可以強制定義為機器的IP地址 
    posted @ 2008-02-15 14:11 小平 閱讀(886) | 評論 (0)編輯 收藏
           為了滿足將plugin工程打成jar包,但是spring的配置文件不打進jar包的需求。很多時候我們?yōu)榱丝梢苑奖闶止づ渲胹pring的一些信息,而不用將jar解壓而從新壓縮,我們需要把Spring的配置文件放在plugin的jar包外這時,如果沒有正確的使用spring的Resource就不能加載spring的配置文件,經過多次嘗試終于找到一個比較合適的方法,與大家交流。
    public static BeanFactory getFactory() {
            
    if (factory == null{
                FileSystemResource resource 
    = new FileSystemResource("appcontextclient.xml");
                factory 
    = new XmlBeanFactory(resource);
            }

            
    return factory;

        }

            將appcontextclient.xml文件放到工程根目錄下,發(fā)布時將appcontextclient.xml放入到你的eclipse的安裝目錄即可(與eclipse的exe執(zhí)行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相關的路徑來更改你的目錄(但是有可能在調試過程中必須要把appcontextclient.xml文件放到你的eclipse IDE的安裝目錄里,因為大部分時間我們的eclipse IDE是何 workspace分開存放的,這樣我們在調試的時候非常別扭,要到IDE里去修改配置文件)。
            以上方法并不是唯一的,只是我感覺用起來比較合適的,這樣在調試時既可以保證appcontextclient.xml文件在工程目錄范圍內,有可以在發(fā)布時使文件保持在安裝目錄而不是運行環(huán)境的workspace的臨時目錄里。
            同時介紹幾個方法可以eclipse方法獲得eclipse工具的幾個重要路徑(注:"IDE"為我的plugin工程的PLUGIN_ID)
            Platform.getInstallLocation().getURL()                                                 
            file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/             
            這是我的eclipse IDE的安裝目錄
                
            Platform.getLocation()                                                                        
            D:/runtime-IDE.product                                                               
            這是我調試插件時生成的臨時運行環(huán)境目錄,是在調試IDE工程時生成的,就是發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄
                 
            Platform.getInstanceLocation().getURL()                                             
            file:/D:/runtime-IDE.product/                                                       
             這個跟上面的一樣
                 
            Platform.getLocation()                                                                        
            D:/runtime-IDE.product                                                              
             這個跟上面的也一樣
            
            Platform.getLogFileLocation()                                                             
            D:/runtime-IDE.product/.metadata/.log                                         
            運行環(huán)境的日志文件路徑,發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄下的/.metadata/.log 
             
            Platform.getStateLocation(Platform.getBundle("IDE"))               
            D:/runtime-IDE.product/.metadata/.plugins/IDE                           
            運行環(huán)境中IDE的一個臨時目錄,發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄下/.metadata/.plugins/IDE
                 
            Platform.getUserLocation()                                                       
            file:/C:/Documents and Settings/XX/user                                     
             這是我的文檔的路徑(把用戶名X掉,哈哈)

            Platform.getBundle("IDE").getLocation()                                    
            update@D:/WorkSpace/IDE/                                                     
            我的IDE工程的路徑,對應發(fā)布時插件的jar本身,在這個目錄下的文件將全部包含在發(fā)不得jar里。

            Platform.getConfigurationLocation().getURL()       
            file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/  
            eclipse IDE 自己建的目錄

            eclipse 本身也有很多加載資源文件的方法可以在org.eclipse.core.runtime.Platform這個類里找到,具體的就請大家找找API吧
    posted @ 2008-01-05 21:35 小平 閱讀(2013) | 評論 (0)編輯 收藏
    應要求在此提供ibatis批量插入demo下載,謝謝大家的關注,不過對于一些人的不禮貌行為我非常痛心。由于工作地點不能上網(wǎng),不能上網(wǎng),不能及時回復大家的留言我深表道歉。下載
    posted @ 2007-12-27 19:52 小平 閱讀(3421) | 評論 (9)編輯 收藏
    此問題網(wǎng)上大部分解決方法是這樣的:
    1.網(wǎng)上鄰居->本地連接->屬性->internet協(xié)議(TCP/IP)->屬性->高級->wins標簽->去掉啟用LMhosts查詢前的勾.
    2.控制面版->windows防火墻->高級標簽->本地連接設置->服務的標簽里勾選安全Web服務器(HTTPS)即可
    但是我的機器按照上面操作apache服務仍然不可以使用,于是索性將服務中的Windows Firewall/Internet Connection Sharing (ICS的服務關掉了,發(fā)現(xiàn)問題解決了,apache可以用了。對于安全問題可以選擇第3方的防火墻來解決。
    注意:費爾防火墻好像和apache沖突,也會導致WSASocket failed to open the inherited socket
    posted @ 2007-10-21 14:53 小平 閱讀(1462) | 評論 (1)編輯 收藏
          今天用sun的jdk調的沒有一點問題的數(shù)據(jù)抽取程序,方放到AIX上后不能用了,oralce報出向一個字段中插入了過長的數(shù)據(jù),可是程序在幾天前還是沒有問題的,后來分析可能是字符集導致的,因為前幾天修改過informix數(shù)據(jù)庫的字符集由8859-1轉為了zh_cn.gb18030-2000,但解決過程異常艱難,后來吧informix的url改為<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原為zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后來猜測了一下原因:
    1、oracle數(shù)據(jù)庫的jdbc驅動是是自動將數(shù)據(jù)庫的數(shù)據(jù)轉為unicode格式,這可能跟java的String默認為unicode有關,為了讓大家方便操作,
    2、sun jdk的String在初始時用的是Unicode格式,ibm的jdk應該也是,但是有一點,sun的jdk在通過informix jdbc驅動取數(shù)據(jù)時不會將數(shù)據(jù)轉成其他字符集,而是仍然使用Unicode,而IBM的則是通過CLIENT_LOCALE=zh_cn.gb18030-2000配置將數(shù)據(jù)格式轉為了zh_cn.gb18030-2000。
    所以在oracle作insert的時候就會由于字符集不匹配而報錯
    posted @ 2007-07-18 19:23 小平 閱讀(998) | 評論 (2)編輯 收藏

           前兩天遇到為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能這個問題,搜遍了國內網(wǎng)站,也沒有個好結果,終于多天后在一個國外的svn服務器上找到了一段代碼,解決了問題
    1、為TextViewer添加TextViewerUndoManager來管理記錄

    protected TextViewer textViewer;
         
    protected TextViewerUndoManager undoManager;
         
          
    //20是保存記錄的數(shù)量。
         undoManager = new TextViewerUndoManager(20);
         
         
    //綁定對textViewer控件的數(shù)據(jù)進行管理
         undoManager.connect(textViewer);
         textViewer.setUndoManager(undoManager);


    2、添加Ctrl+z,與Ctrl+y事件

    StyledText styledText = textViewer.getTextWidget();
    styledText.addKeyListener(
    new KeyListener( ) {
                
    public void keyPressed( KeyEvent e )
                
    {
                    
    if ( isUndoKeyPress( e ) )
                    
    {
                        textViewer.doOperation( ITextOperationTarget.UNDO );
                    }

                    
    else if ( isRedoKeyPress( e ) )
                    
    {
                        textViewer.doOperation( ITextOperationTarget.REDO );
                    }

                }

                
    private boolean isUndoKeyPress( KeyEvent e )
                
    {
                    
    // CTRL + z
                    return ( ( e.stateMask & SWT.CONTROL ) > 0 )
                    
    && ( ( e.keyCode == 'z' ) || ( e.keyCode == 'Z' ) );
                }

                
    private boolean isRedoKeyPress( KeyEvent e )
                
    {
                    
    // CTRL + y
                    return ( ( e.stateMask & SWT.CONTROL ) > 0 )
                    
    && ( ( e.keyCode == 'y' ) || ( e.keyCode == 'Y' ) );
                }

                
    public void keyReleased( KeyEvent e )
                
    {
                    
    // do nothing
                }

            }
    );
    posted @ 2007-07-16 10:49 小平 閱讀(1870) | 評論 (3)編輯 收藏
            到一個這東西都寫到3了,針對上回說到30000條數(shù)據(jù)的批量插入工作。30000條數(shù)據(jù)的批量插入在一個事務里處理固然是快,但是這只是測試環(huán)境,30000條數(shù)據(jù)在數(shù)據(jù)庫的緩存里必然對數(shù)數(shù)據(jù)庫的緩存和鎖數(shù)量都是一個大的挑戰(zhàn),固在新的程序中我們使用了分批事務提交的方式,這樣為了保持數(shù)據(jù)的正確行就只能人為控制數(shù)據(jù)庫中已被插入的數(shù)據(jù)是否delete掉。另外,使用Batch塊提交會引發(fā)一個問題就是,如果batch塊中發(fā)生了異常,我們得不到異常數(shù)據(jù)的行號即任何信息,所以只能是魚和熊掌不可兼得(我已關注過insert方法中返回pk的方法了,但好像在batch中他反回不了出錯的行號,也許是我沒有找到方法,如有人有好方法請共享一下,在這里表示感謝),大家酌情考慮吧,只能到到自己需要的平衡點了。
          建議:如果對數(shù)據(jù)的準確性毋庸置疑的話就是用batch處理。如果不能確定準確性的話,如果對那條數(shù)據(jù)出錯無所謂的話就也可以用batch,但是非要返回出錯行號的話就不要用batch了,直接在外面套用一個事務,然后try catch一下,處理一下行號。
    posted @ 2007-06-28 21:32 小平 閱讀(3290) | 評論 (4)編輯 收藏
    <2007年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    framework

    j2me

    java

    linux

    web

    其他

    友情鏈接

    素材

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩在线一区二区三区免费视频| 在线人成免费视频69国产 | 亚洲精品白浆高清久久久久久| 久久免费看少妇高潮V片特黄| 亚洲av无码国产综合专区| 又粗又硬又黄又爽的免费视频| 国产日韩一区二区三免费高清| 亚洲久悠悠色悠在线播放| 亚洲中文字幕无码爆乳av中文| 国产成人免费在线| 特级aaaaaaaaa毛片免费视频| 亚洲综合成人网在线观看| 国产又大又黑又粗免费视频 | 免费亚洲视频在线观看| 久久久久亚洲AV成人无码网站 | 亚洲精品无码久久久影院相关影片| 亚洲视频免费观看| 无码精品人妻一区二区三区免费| 老汉色老汉首页a亚洲| 免费v片在线观看无遮挡| 亚洲一区免费视频| 中国人免费观看高清在线观看二区| 亚洲av专区无码观看精品天堂| 久久精品国产精品亚洲精品 | 日韩亚洲Av人人夜夜澡人人爽| 免费人成视频在线观看不卡| 免费观看无遮挡www的视频| eeuss草民免费| 亚洲AV成人精品日韩一区| 久久亚洲精品无码VA大香大香| 亚洲一级黄色视频| 国产又黄又爽又猛的免费视频播放 | 成人精品综合免费视频| 中中文字幕亚洲无线码| 亚洲一区二区三区首页| 亚洲日韩av无码| 亚洲国产成人精品无码久久久久久综合 | 无码国产精品一区二区免费 | 国产h视频在线观看网站免费| 日本高清免费观看| 免费毛片在线看不用播放器 |