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

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

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

    Ordinary hut

    人間一福地,勝似天仙宮
    posts - 61, comments - 50, trackbacks - 0, articles - 1

    2009年7月3日

    java中wait和notify的簡單理解
    1 它們都是Object的屬性;
    2 wait:釋放對象鎖;由于把鎖釋放了,當前線程就會卡住,繼續再等待獲取鎖的機會(也許是干了一半的活后,就把活交出去了,然后等待繼續干活的機會);
    3 notify:告訴其中一個等待的線程(具體哪一個不知道),我已經用完這個對象,你可以繼續用了
    4 它們都要包含在synchronized塊里,只有先鎖住這個對象,才能進行wait、notify操作;

    例子:
    1 定義一個普通對象
    public class MyObj {
        public String name;
    }
    2 主線程類,定義MyObj對象,new兩個線程
    public class TestMain {

        public static MyObj obj = new MyObj();
        
        /**
         * 
    @param args
         
    */
        public static void main(String[] args) throws Throwable {
            new TestMain().myTest();
        }
        
        public void myTest() throws Throwable{
            Test1 test1 = new Test1();
            Test2 test2 = new Test2();
            
            Thread t1 = new Thread(test1); 
            Thread t2 = new Thread(test2); 
            
            t1.start();
            Thread.sleep(1000);//啟動線程1,然后主線程睡眠1秒鐘,再啟動2
            t2.start();
            
        }

    }
    3 定義線程1,:
    public class Test1 implements Runnable{

        @Override
        public void run() {
            synchronized (TestMain.obj) {//占有對象鎖
                try {
                    TestMain.obj.name="1";
                    System.out.println(TestMain.obj.name); //打印出1
                    TestMain.obj.wait();  //釋放對TestMain.obj對象的鎖,同時當前線程立即卡住,陷入等待
                    System.out.println(TestMain.obj.name);//只有線程再次搶到TestMain.obj的鎖后,才會運行
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    }
    4 線程2:
    public class Test2 implements Runnable{

        @Override
        public void run() {
            
            synchronized (TestMain.obj) { //當線程1釋放這個對象的鎖時,本線程立即得到
                TestMain.obj.name = "2"; //改值
                TestMain.obj.notify();//通知占用了TestMain.obj且當前是等待的線程(線程1)可以繼續,但是必須等到本synchronized塊執行完畢。
                TestMain.obj.name = "3";
                TestMain.obj.name = "4";
                
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                TestMain.obj.name = "7";//執行完畢,此時線程1被喚醒,會打印出7
            }
        }

    }
    結果顯示1和7


    posted @ 2013-04-27 15:23 landor 閱讀(365) | 評論 (0)編輯 收藏

    轉載 http://supertoffy.blog.163.com/blog/static/16447681820116150115743/


    每個地區都有自己的本地時間,在網上以及無線電通信中時間轉換的問題就顯得格外突出。我自己就經常混淆于此,特地研究了一下,記錄在此以備忘。
    整個地球分為二十四時區,每個時區都有自己的本地時間。在國際無線電通信場合,為了統一起見,使用一個統一的時間,稱為通用協調時(UTC, Universal Time Coordinated)。UTC與格林尼治平均時(GMT, Greenwich Mean Time)一樣,都與英國倫敦的本地時相同。在本文中,UTC與GMT含義完全相同。
    北京時區是東八區,領先UTC八個小時,在電子郵件信頭的Date域記為+0800。如果在電子郵件的信頭中有這么一行:
    Date: Fri, 08 Nov 2002 09:42:22 +0800
    說明信件的發送地的地方時間是二○○二年十一月八號,星期五,早上九點四十二分(二十二秒),這個地方的本地時領先UTC八個小時(+0800,就是東八區時間)。電子郵件信頭的Date域使用二十四小時的時鐘,而不使用AM和PM來標記上下午。
    以這個電子郵件的發送時間為例,如果要把這個時間轉化為UTC,可以使用一下公式:
    UTC + 時區差 = 本地時間
    時區差東為正,西為負。在此,把東八區時區差記為 +0800,
    UTC + (+0800) = 本地(北京)時間 (1)
    那么,UTC = 本地時間(北京時間))- 0800 (2)
    0942 - 0800 = 0142
    即UTC是當天凌晨一點四十二分二十二秒。如果結果是負數就意味著是UTC前一天,把這個負數加上2400就是UTC在前一天的時間。例如,本地(北京)時間是 0432 (凌晨四點三十二分),那么,UTC就是 0432 - 0800 = -0368,負號意味著是前一天, -0368 + 2400 = 2032,既前一天的晚上八點三十二分。
    紐約的時區是西五區,比UTC落后五個小時,記為 -0500:
    UTC + (-0500) = 紐約時間 (3)
    UTC = 紐約時間 + 0500 (4)

    posted @ 2013-04-22 17:04 landor 閱讀(295) | 評論 (0)編輯 收藏

         摘要: struts2單獨使用沒有任何問題,加入spring后,發現頁面表單可以傳到struts2的action中,但是返回到頁面后,數據丟失,  閱讀全文

    posted @ 2012-08-19 23:06 landor 閱讀(1077) | 評論 (0)編輯 收藏

         摘要: Camel與cxf  閱讀全文

    posted @ 2011-09-29 13:50 landor 閱讀(2347) | 評論 (2)編輯 收藏

         摘要: XPath記錄  閱讀全文

    posted @ 2011-09-15 14:49 landor 閱讀(348) | 評論 (0)編輯 收藏

         摘要: JAXB2完成java bean到xml的相互轉換  閱讀全文

    posted @ 2011-06-03 12:04 landor 閱讀(7886) | 評論 (1)編輯 收藏

         摘要: Could not parse date - Class: java.text.DateFormat
    Caused by: java.text.ParseException: Unparseable date:  閱讀全文

    posted @ 2011-05-23 15:54 landor 閱讀(1078) | 評論 (0)編輯 收藏

         摘要: 轉載 - spring 動態數據源切換  閱讀全文

    posted @ 2011-03-30 21:30 landor 閱讀(355) | 評論 (0)編輯 收藏

         摘要: maven一些說明  閱讀全文

    posted @ 2011-03-04 16:29 landor 閱讀(757) | 評論 (0)編輯 收藏

    1 分組的時候,?可以不記錄一些組,比如:
    var str="abc";
    var reg=/(?:a)b(c)/g
    reg.test(str);
    alert(RegExp.$1);//結果為c
    此時雖然第一個小括號也滿足,但是如果用?:標注之后,它不會被存入正則表達式的緩存中。

    2 遇見功能,"?=",意識說目標串中肯定存在什么,比如:
    var str="ab4";
    var reg
    =/ab(?=\d)/g
    alert(reg.test(str));//結果為true
    意思是第三位肯定是數字;
    "?!",意思說目標串中不應該存在什么
    var str="ab1";
    var reg
    =/ab(?!\d)/g
    alert(reg.test(str));//結果為false
    意思是目標串中的第三位不應該是數字。

    posted @ 2011-03-02 16:29 landor 閱讀(1770) | 評論 (0)編輯 收藏

    1 瀏覽器會根據content="text/html; charset=gbk"來解析該用什么編碼來把這些字節流decode成字符串,并顯示;
    2 當客戶端提交表單的時候,比如以post方式提交,瀏覽器同樣會根據上面的編碼,把這些字符串encode成字節流,發送到服務端;
    3 在服務端,默認就會認為傳過來的東西就是ASCii碼,沒別的,也就是ISO-8859-1,所以它就去decode,ISO-8859-1中根本沒有中文漢字對應的二進制碼,沒找到,就亂了應該是一堆口吧;
    4 解決辦法是加一個過濾器,比如gbk,那就設置成request.setCharacterEncoding("GBK");這樣服務端在獲取字符串的時候,就用GBK去decode這個二進制流了;
    5 如果是ajax,問題又來了,因為ajax只支持utf-8編碼格式,過程應該是這樣:
        a 瀏覽器通過ajax像server端post數據時,ajax自動將瀏覽器中的文字用utf-8 encode成二進制流,然后發送到server端;
        b server端如果配置的filter是gbk,那么會用gbk去decode這個二進制流,顯然亂麻;但是不應該是一堆口,因為他應該根據二進制流的每兩位字節,在GBK編碼表中能找到對應的內容,具體的內容是簡體文字還是繁體文字還是其他的,就不一定了;
            此時要是偶數個漢字還好(可以把它用gbk進行encode,然后用utf-8進行decode,這樣就還原回來了),
            如果是奇數個漢字就出現丟失了(因為一個字符用UTF-8 encode后為3個字節,如果三個字符被encode之后,就是9個字節,當用gbk進行decode 的時候,gbk是用2個字節,結果剩下了一個字節,這個字節在gbk的編碼表中不存在(因為gbk編碼表都是2個字節的),所以就用?號填充了)。
        c 所以必須在服務端的fiter中對ajax請求進行判斷,用jquery為例:
    $.ajax({
        
        contentType:
    "application/x-www-form-urlencoded;charset=utf-8",

    在server端的filter中,可以判斷charset是不是空,如果加上上面的代碼,那么charset就是utf-8,代碼如下:
    if (request.getCharacterEncoding() == null) {
        request.setCharacterEncoding(this.encoding);//正常提交請求時候,charset是空的,也就是說request.getCharacterEncoding()是空的;
    }

    posted @ 2011-03-02 15:51 landor 閱讀(571) | 評論 (0)編輯 收藏

         摘要: 用itext生成word  閱讀全文

    posted @ 2010-04-21 15:00 landor 閱讀(3296) | 評論 (2)編輯 收藏

         摘要: oracle的鎖和事務的記錄  閱讀全文

    posted @ 2010-02-19 22:23 landor 閱讀(1528) | 評論 (0)編輯 收藏

         摘要: weblogic集群中獲取jndi的方式  閱讀全文

    posted @ 2010-01-20 21:25 landor 閱讀(1076) | 評論 (0)編輯 收藏

         摘要: 關于用spring的JtaTransactionManager,配置分布式事務  閱讀全文

    posted @ 2010-01-09 13:22 landor 閱讀(17364) | 評論 (1)編輯 收藏

         摘要: java ee規范并沒有實現事務的隔離級別,所以要依靠不同的服務器廠商來實現,拿weblogic為例,具體的設置可以參考官方文檔  閱讀全文

    posted @ 2010-01-07 18:20 landor 閱讀(850) | 評論 (0)編輯 收藏

         摘要: oracle行列轉換  閱讀全文

    posted @ 2010-01-07 11:08 landor 閱讀(600) | 評論 (0)編輯 收藏

         摘要: classInfoCacheEnabled forceMultipleResultSetSupport errorTracingEnabled defaultStatementTimeout
    statementCachingEnabled  閱讀全文

    posted @ 2009-12-31 13:08 landor 閱讀(1157) | 評論 (4)編輯 收藏

         摘要: 折線圖的一些詳細設置  閱讀全文

    posted @ 2009-12-30 16:48 landor 閱讀(581) | 評論 (0)編輯 收藏

         摘要: stage nostage external_stage   閱讀全文

    posted @ 2009-12-29 22:39 landor 閱讀(3793) | 評論 (0)編輯 收藏

         摘要: 通過javascript的image對象判斷上傳文件大小  閱讀全文

    posted @ 2009-12-29 08:48 landor 閱讀(1217) | 評論 (1)編輯 收藏

         摘要: 折線圖-按日期統計數據(處理中文亂碼)  閱讀全文

    posted @ 2009-12-28 14:31 landor 閱讀(1396) | 評論 (0)編輯 收藏

         摘要: jdbc驅動列表  閱讀全文

    posted @ 2009-12-21 10:25 landor 閱讀(270) | 評論 (0)編輯 收藏

         摘要: spring中各種切入點指示符
    轉:http://www.busfly.cn/csdn/post/700.html  閱讀全文

    posted @ 2009-12-04 10:57 landor 閱讀(276) | 評論 (0)編輯 收藏

         摘要: weblogic啟動全局域信任(Enable global trust between domains)和兩個域的跨域信任(Enable Cross Domain Security between domains),weblogic下載地址  閱讀全文

    posted @ 2009-12-02 10:24 landor 閱讀(1471) | 評論 (0)編輯 收藏

         摘要: org.springframework.web.util.IntrospectorCleanupListener  閱讀全文

    posted @ 2009-11-26 16:29 landor 閱讀(3187) | 評論 (0)編輯 收藏

         摘要: spring、hibernate的FlushMode的AUTO、COMMIT、ALWAYS、NEVEL、MANUAL 的區別,以及和readonly的聯系  閱讀全文

    posted @ 2009-11-25 22:55 landor 閱讀(5034) | 評論 (0)編輯 收藏

         摘要: 閱讀全文

    posted @ 2009-11-18 12:40 landor 閱讀(2366) | 評論 (0)編輯 收藏

         摘要: java.rmi.RemoteException: Transaction Rolledback.; nested exception is:
    weblogic.transaction.internal.TimedOutException: Transaction timed out after * seconds
    BEA1-0015257A156225A3A3CE  閱讀全文

    posted @ 2009-11-06 14:51 landor 閱讀(4946) | 評論 (0)編輯 收藏

         摘要: 正則表達式中有三個量詞:貪婪、惰性、支配,記錄一下我對貪婪和惰性的理解  閱讀全文

    posted @ 2009-10-30 16:13 landor 閱讀(512) | 評論 (0)編輯 收藏

         摘要: 在網頁中嵌入word、excel、pdf的注意事項  閱讀全文

    posted @ 2009-08-21 14:26 landor 閱讀(9934) | 評論 (1)編輯 收藏

         摘要: 最常用的索引包括:B*樹索引、位圖索引、位圖聯合索引、基于函數索引、應用域索引  閱讀全文

    posted @ 2009-08-11 16:51 landor 閱讀(2790) | 評論 (0)編輯 收藏

         摘要: jdbc關于對clob字段的方法setCharacterStream的說明
    java.lang.AbstractMethodError: com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V at...  閱讀全文

    posted @ 2009-07-03 15:43 landor 閱讀(3546) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲av无码成人精品区一本二本| 亚洲香蕉成人AV网站在线观看| 亚洲综合日韩中文字幕v在线| 美女羞羞视频免费网站| 成年大片免费视频| 亚洲人成在线播放| 曰批全过程免费视频播放网站 | 久久久久久久国产免费看| 国产免费怕怕免费视频观看| 天堂亚洲国产中文在线| 成人女人A级毛片免费软件| 亚洲国产精品综合一区在线| 国产精彩免费视频| 亚洲最大成人网色香蕉| 成人网站免费观看| 亚洲精品无码久久久久牙蜜区| 国内大片在线免费看| 亚洲国产精品成人AV在线| 日本一道一区二区免费看 | 免费国产在线观看不卡| 美国免费高清一级毛片| 亚洲午夜精品久久久久久浪潮| 亚洲日韩在线观看免费视频| 亚洲熟女少妇一区二区| 国产白丝无码免费视频| 亚洲videos| 老司机永久免费网站在线观看| 国产成人精品久久亚洲高清不卡| 全部免费a级毛片| 成人毛片100免费观看| 亚洲最大福利视频网站| 免费看国产成年无码AV片| 在线观看亚洲精品专区| 久久精品国产精品亚洲艾草网美妙| a级特黄毛片免费观看| 亚洲国产精品成人精品软件| 国产麻豆剧传媒精品国产免费| 亚州**色毛片免费观看| 久久久久久亚洲精品| 美女视频黄是免费的网址| 亚洲国产成人AV网站|