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

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

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

    隨筆-12  評論-0  文章-1  trackbacks-0
      2012年12月31日
    the super keyword in java generic programming is used to declare a template of a specific type. e.g.
    List<? super MyClass> list = new LinkedList<AnyTypeDerivedByMyClass>();
    posted @ 2012-12-31 15:35 Sam Zheng 閱讀(245) | 評論 (0)編輯 收藏
      2012年9月20日
    int (*test(char *(*)(void)) (int); declares a function named "test" which accepts a pointer to a function accepting no parameter and returning a char pointer, the function "test" returns a pointer to a function which accepts a integer parameter and returns a integer.
    Note: a declaration declares either a variable(pointer) or function(pointer), if its name is followed by left parentheses, it is a function, otherwise it is a variable(pointer).
    posted @ 2012-09-20 14:38 Sam Zheng 閱讀(129) | 評論 (0)編輯 收藏
      2012年8月31日
    if you don't feel comfortable with your code, it's time to refactor/re-think about it.
    posted @ 2012-08-31 11:36 Sam Zheng 閱讀(161) | 評論 (0)編輯 收藏
      2012年8月15日
    don't get trapped when reading source code of a complex module, first figure out what the module does/its main functionality and its interfaces, once you get into details, you cannot see the module as a whole and forget its main functionality, if you recognize you are trapped in details, try to come out and focus on interfaces, top->down->top->down
    posted @ 2012-08-15 16:07 Sam Zheng 閱讀(156) | 評論 (0)編輯 收藏
      2012年4月18日
    The crucial part in design/programming, is to break down complex things, anything should be easy when broken down to manageable pieces, and, only when broken down, can it be easy. when doing so, the most important thing is to think about the granularity and the relationship between every pieces/modules, again, reasonability.
    posted @ 2012-04-18 12:10 Sam Zheng 閱讀(147) | 評論 (0)編輯 收藏
      2012年4月17日
    when analyzing/programming, think about reasonability against requirements
    posted @ 2012-04-17 12:55 Sam Zheng 閱讀(315) | 評論 (0)編輯 收藏
      2012年3月9日
    1. what does the program/module/class/method do?
    2. what is its input, if any?
    3. what is its output, if any?
    for a class, understanding its lifecycle is crucial:
    1. how is it created? by who? from a factory? what are the parameters required to create it?
    2. does it have any enforced lifecycle methods? e.g. initialize, dispose..., who is responsible to call these methods, in which order?
    3. what it can do at each stage of its lifecycle?
    4. who is going to use it/what is its client?

    posted @ 2012-03-09 10:52 Sam Zheng 閱讀(238) | 評論 (0)編輯 收藏
      2012年2月27日
    An interface or a class should only do things that it knows, never do things it is not sure about. to define the responsibility of an interface/class clearly and precisely is critical.
    posted @ 2012-02-27 14:12 Sam Zheng 閱讀(171) | 評論 (0)編輯 收藏
      2012年1月8日
    The main difference between SoftReference and WeakReference is that GC uses different algorithm to determine when to reclaim the objects they refer to, they can be used interchangablely in most situation.

           
            // soft reference
            o = new Object();
            ReferenceQueue
    <Object> sq = new ReferenceQueue<Object>();
            SoftReference
    <Object> sf = new SoftReference<Object>(o, sq);
            System.out.println(sf.get());
            o 
    = null;
            
            System.gc();
            r 
    = (Reference) sq.poll();
            
    if (r != null) {
                System.out.println(r.get());
            }

            // weak reference
            Object o = new Object();
            ReferenceQueue
    <Object> q = new ReferenceQueue<Object>();
            WeakReference
    <Object> w = new WeakReference<Object>(o, q);
            System.out.println(w.get());
            o 
    = null;
            System.gc();
            
            Reference r 
    = (Reference) q.poll();
            
    if (r != null) {
                System.out.println(r.get());
            }

            
    // phantom reference
            o = new Object();
            ReferenceQueue
    <Object> pq = new ReferenceQueue<Object>();
            PhantomReference
    <Object> pf = new PhantomReference<Object>(o, sq);
            System.out.println(pf.get());
            o 
    = null;
            
            System.gc();
            r 
    = (Reference) pq.poll();
            
    if (r != null) {
                System.out.println(r.get());
            }
           


    from http://www.ibm.com/developerworks/library/j-refs/

    The SoftReference class

    A typical use of the SoftReference class is for a memory-sensitive cache. The idea of a SoftReference is that you hold a reference to an object with the guarantee that all of your soft references will be cleared before the JVM reports an out-of-memory condition. The key point is that when the garbage collector runs, it may or may not free an object that is softly reachable. Whether the object is freed depends on the algorithm of the garbage collector as well as the amount of memory available while the collector is running.

    The WeakReference class

    A typical use of the WeakReference class is for canonicalized mappings. In addition, weak references are useful for objects that would otherwise live for a long time and are also inexpensive to re-create. The key point is that when the garbage collector runs, if it encounters a weakly reachable object, it will free the object the WeakReference refers to. Note, however, that it may take multiple runs of the garbage collector before it finds and frees a weakly reachable object.

    The PhantomReference class

    The PhantomReference class is useful only to track the impending collection of the referring object. As such, it can be used to perform pre-mortem cleanup operations. A PhantomReference must be used with the ReferenceQueue class. The ReferenceQueue is required because it serves as the mechanism of notification. When the garbage collector determines an object is phantomly reachable, the PhantomReference object is placed on its ReferenceQueue. The placing of the PhantomReference object on the ReferenceQueue is your notification that the object the PhantomReference object referred to has been finalized and is ready to be collected. This allows you to take action just prior to the object memory being reclaimed.

    posted @ 2012-01-08 13:06 Sam Zheng 閱讀(129) | 評論 (0)編輯 收藏
      2012年1月7日
    Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.
    posted @ 2012-01-07 22:06 Sam Zheng 閱讀(377) | 評論 (0)編輯 收藏
    僅列出標(biāo)題  下一頁
    主站蜘蛛池模板: 无遮挡免费一区二区三区| 野花香在线视频免费观看大全| 亚欧免费视频一区二区三区| 亚洲国产精品丝袜在线观看| 亚洲AV无码成人专区| 最近2019中文免费字幕在线观看| 国产zzjjzzjj视频全免费| 亚洲蜜芽在线精品一区| 国产特黄特色的大片观看免费视频| 免费观看的a级毛片的网站| 亚洲黄色免费网站| 韩日电影在线播放免费版| 四虎影视精品永久免费| 亚洲av午夜精品无码专区| 久久久久免费精品国产小说| 中文亚洲成a人片在线观看| 亚洲Aⅴ在线无码播放毛片一线天| 在线永久看片免费的视频| 久久久久亚洲AV成人无码 | 99久久国产热无码精品免费| 亚洲精品无码永久在线观看你懂的| 国产亚洲精品成人久久网站| 97无码免费人妻超级碰碰夜夜| 亚洲色欲www综合网| 免费人成在线观看网站品爱网| 亚洲男人的天堂www| 四虎精品免费永久免费视频| 国产一级理论免费版| 亚洲欧洲国产综合AV无码久久| 嫖丰满老熟妇AAAA片免费看| 老色鬼久久亚洲AV综合| 久久久久国产精品免费网站| 亚洲国产精彩中文乱码AV| 香蕉视频在线免费看| 亚洲综合色视频在线观看| 四虎国产精品永免费| 亚洲国产主播精品极品网红| 国产成人 亚洲欧洲| 免费看一级做a爰片久久| 亚洲av永久中文无码精品| 免费爱爱的视频太爽了|