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

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

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

    咖啡伴侶

    呆在上海
    posts - 163, comments - 156, trackbacks - 0, articles - 2

    如果兩個對象equal,那么它們的hashCode值一定要相同;2、如果兩個對象的hashCode相同,它們并不一定equal

    當Set要添加新的元素時,先調用這個元素的hashCode方法,就一下子能定位到它應該放置的物理位置上。如果這個位置上沒有元素,它就可以直接存儲在 這個位置上,不用再進行任何比較了;如果這個位置上已經有元素了,就調用它的equals方法與新元素進行比較,相同的話就不存了,不相同就散列其它的地址。

    所以兩個不equal的對象,有相同的hash,是可以存進Set的。

    class HashNode {
        int id;
       
        public HashNode(int id){
            this.id = id;
        }
       
        public int hashCode() {
            return id;
        }
       
        public boolean equals(Object obj) {
            return false;
        }
    }

    public class HashTest {

        public static void main(String[] args) {
            HashNode n1 = new HashNode(1);
            HashNode n2 = new HashNode(1);
           
            HashMap map = new HashMap();
            map.put(n1, "111");
            map.put(n2, "222");
           
            System.out.println(n1.equals(n2));
            System.out.println(n1.hashCode() == n2.hashCode());
            System.out.println(map.keySet().size());
        }

    }

    posted @ 2010-03-03 16:03 oathleo 閱讀(1681) | 評論 (4)編輯 收藏

    很長一段時間,對MVC和MVP區別很是模糊。
    一直忙碌于客戶不停的需求中,忽略了產品本身上這些最重要的東西。
    現在即將待業,放下自己為之工作近三年的產品,真的感覺猶如失去自己的孩子。
    好的一方面是空閑的時間多了,終于可以想想這些事情了。

    MVC算是個被人說爛掉的東西了,MVP也屢屢被人提及。
    最大的區別在哪里呢?為什么要再演變個MVP出來呢?

    就定義上來說最大的區別在于C和P,就構架上來說,是View層實現的方式不同。
    MVC:View層肩負很大任務,View關聯Model,View的渲染是直接通過Model層的數據來確定的。還是有很多業務邏輯在View上完成。
    MVP:View層的任務大大縮減,View不再知道Model,P層完成上面提到的View層完成的業務邏輯。
    總之一句話MVP里,View層絕對不能再訪問Model了,

    任何一種設計模式的出現絕對不是為了出現而出現的。總是為了解決現實中存在的某些老的模式無法或難以解決的問題才出現的。

    為什么會出現MVP呢?
    看看客戶拿到一個設計精良的MVC的產品,做二次開發的時候,如果他項目足夠大,肯定會發現MVC的好處。任務集中在Model層,設計好Model層數據的填充,簡單的實現就完成了。MVC的架構幫他解決了很多問題,大家很Happy!
    當然客戶的需求總是永無止境的,當簡單需求被滿足的時候,他又會往高層次發展,也許他就完全需要不同的View來做同樣的Model的展示(比如一個在JSP,一個在Swing或者Android上),在這個時候,稍微想下,他就發現他要做的任務開始變的很大了。Model層的數據縱使可以共享,事件控制(轉發)也能,而View層無論如何是逃不了了。于是Web程序員硬著頭皮也要學Swing,Swing的程序員郁悶的學JSP。
    試想這個時候如果有個人,能把陷在View上的上萬行code,拉到一個即能聯系到Model,又能聯系到View的層次上,那真的要感謝蒼天大地了。

    MVP我想應該就是在這個時候出現的。它處理所有View和Model之間的消息傳遞,數據更新,交互操作。比如從Swing的TextField里輸入個字段信息,和從JSP里的Form里輸入這個字段信息,處理的流程應該是可以共享這段代碼的。當然這個時候,為了解決不同View上的一些特殊情況,可以使用適配器模式,來處理多個View的程序設計問題。

    設計模式沒有好壞之分,只有合不合適。你的產品如果只需要輸入個A返回個B,沒有平臺建議,沒有系統升級,那就忘了所有的設計模式,走那條最快實現的路吧。

    posted @ 2010-02-28 15:38 oathleo 閱讀(2849) | 評論 (6)編輯 收藏




    posted @ 2010-02-22 18:03 oathleo 閱讀(1506) | 評論 (4)編輯 收藏

    Android線程安全問題:

          button2.setOnClickListener(new OnClickListener() {
               ......
         });
    加了個監聽,里面起Timer,定時修改數據。
    發現Log一直在打,View無變化。
    估計線程出了問題。類似Swing的線程安全問題。
    接著Google.....


    The best thing is to  use Handler with delayed messages.
    And Timer works fine, the problem is that a Timer runs in a separate thread,   and so you are trying to modify a view owned by another thread (the main   thread that originally created it).

    What I think is happening is you're falling off the UI thread. There is a single "looper" thread which handles all screen updates. If you attempt to call "invalidate()" and you're not on this thread nothing will happen.

    Try using "postInvalidate()" on your view instead. It'll let you update a view when you're not in the current UI thread.


    解決辦法和我預計的一樣:

    1.在Invalidate處調用 postInvalidate,命名上可以參數肯定是把當前的timer線程排隊到UI線程去。不過對于我不是很適用,畢竟UI不希望讓用戶自己去Invalidate

    2.既然不能去排隊,那就干脆把自己改造成UI線程吧。借助android.os.Handler

              final Handler handler = new Handler();
                    Timer timer = new Timer();
                    timer.schedule(new TimerTask() {
                        public void run() {
                            handler.post(new Runnable() {
                                public void run() {
                                     root.setName(new Date() + "Root+" );//不一定是顯式的調用修改UI的語句
                                }
                            });
                        }
                    },1000,3000);   


    OK!


     

    posted @ 2010-02-04 18:18 oathleo 閱讀(274) | 評論 (0)編輯 收藏

    1.AWT完全干掉了,看來又要學一遍Android的2D
    2.Layout變成一個很爽的東西,類似Swing里JPanel+ Layout的混合體,多好的創意!!當然嵌套啥的是必定支持了
    3.java.beans包還存在,又省事不少。
    4.sdk還打了一些常用公司包
       包括apache json w3cdom xml.sax等





    posted @ 2010-01-19 18:24 oathleo 閱讀(188) | 評論 (0)編輯 收藏

         摘要:   閱讀全文

    posted @ 2010-01-18 18:17 oathleo 閱讀(231) | 評論 (0)編輯 收藏

    1.BitMap to 數組
            int w = bitmapSrc.getWidth();
            int h = bitmapSrc.getHeight();
           
            int[] pixels = new int[w * h];
            bitmapSrc.getPixels(pixels, 0, w, 0, 0, w, h);

    2.RGB HSV互轉問題
    android.graphics.Color 修復了java.awt.Color 的bug
    RGBToHSV HSVToColor

    3.Config
           Bitmap bitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);//Config.ARGB_8888,Config.ARGB_4444透明效果


    Color 成了int,一下子感覺世界變得簡單了。

    4.文字的顯示長度
                Rect textBound = new Rect();
                paint.getTextBounds(name, 0, name.length(), textBound);

    5.文字渲染 x起始點在左下角
           canvas.drawText(name, x, y, paint);


    posted @ 2010-01-14 16:32 oathleo 閱讀(334) | 評論 (0)編輯 收藏

         摘要:   閱讀全文

    posted @ 2010-01-13 18:29 oathleo 閱讀(275) | 評論 (0)編輯 收藏

    1.eclipse 3.5(3.2不支持)
    2.模擬器插件
    3.Android SDK1.5

    3.源代碼引入:
    ADT是從SDK目錄下的“sources” 目錄來查找class對應的源代碼,這樣我們只要把源代碼放到sources目錄中ADT就可以自動找到對應的源代碼了。

     http://www.digginmobile.com/android.asp ,這里有android1.5的源代碼,下載源代碼后,

    在\android-sdk-windows-1.5_r2\platforms\android-1.5下新建一個sources目錄,

    將源文件放在sources目錄下,然后在編寫的android的class中就可以看到引用文件的源代碼了。

    4.不需要每次重啟模擬器,直接再跑程序,ADT會自動用當前的模擬器啟動程序。否則重啟模擬器本機需要60s以上




    posted @ 2010-01-12 17:49 oathleo 閱讀(243) | 評論 (0)編輯 收藏

         摘要: TWaver3.3 Blink Link Flowing Demo

    1.節點告警閃爍,附件的閃爍 增加了IE下 獨立的閃爍周期
    2.Link連線的流動效果 也增加了IE下 獨立的流動周期  閱讀全文

    posted @ 2009-11-30 16:05 oathleo 閱讀(1468) | 評論 (2)編輯 收藏

    僅列出標題
    共17頁: First 上一頁 8 9 10 11 12 13 14 15 16 下一頁 Last 
    主站蜘蛛池模板: 一级特黄录像视频免费| 亚洲av最新在线网址| 亚洲大成色www永久网址| 国产乱子精品免费视观看片| 久久久久亚洲精品美女| 日本人成在线视频免费播放| 国产日韩亚洲大尺度高清| 成人片黄网站色大片免费观看cn | 100000免费啪啪18免进| 亚洲黄色三级网站| 免费看污成人午夜网站| 亚洲综合校园春色| 成人永久免费福利视频网站| 亚洲AV无码之国产精品| 亚洲国产香蕉人人爽成AV片久久| sihu国产精品永久免费| 久久亚洲精品成人综合| aⅴ免费在线观看| 亚洲色成人网站WWW永久四虎 | 亚洲av成本人无码网站| 免费va人成视频网站全| 中文在线免费观看| 亚洲色大成网站www永久| 成人a视频片在线观看免费| 亚洲a∨无码一区二区| 色噜噜亚洲精品中文字幕 | 插B内射18免费视频| 边摸边吃奶边做爽免费视频网站 | 亚洲综合在线视频| 免费无码成人AV片在线在线播放| 日韩免费高清一级毛片| 亚洲男人的天堂在线播放| 国产福利在线观看免费第一福利| 男男gay做爽爽的视频免费| 亚洲熟妇无码乱子AV电影| 91九色精品国产免费| 麻豆亚洲AV成人无码久久精品| 亚洲中文字幕无码一区| 一个人免费观看视频www| 国产精品黄页免费高清在线观看| 久久99亚洲网美利坚合众国|