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

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

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

    posts - 11,  comments - 0,  trackbacks - 0

     

    在java程序中每一個(gè)類都有一個(gè)Class對(duì)象,被保存在同名的.Class對(duì)象當(dāng)中,JVM會(huì)使用類加載器加載Class文件生成類的對(duì)象信息.

    當(dāng)我們創(chuàng)建一個(gè)類的對(duì)象或者調(diào)用這個(gè)對(duì)象的靜態(tài)方法,jvm會(huì)自動(dòng)加載類的對(duì)象信息

    獲得類的對(duì)象信息

    我們一般常用用兩種方式獲得類的對(duì)象信息.

    1. 我們可以用Class.forName()方法動(dòng)態(tài)的根據(jù)類名獲得一個(gè)類的Class對(duì)象.

      1:     /**
      2:      * 使用此方法為自動(dòng)初始化靜態(tài)變量和執(zhí)行static塊的代碼
      3:      * 如果找不到對(duì)象會(huì)拋出一個(gè)ClassNotFoundException
      4:      */
      5:     Class second = Class.forName("classLoad.Second");

    2. 我們還可以用Class class = ClassName.class 來直接獲取一個(gè)類的類型信息,但用它和Class.forName()獲取類的對(duì)象

    引用信息在靜態(tài)塊時(shí)的執(zhí)行時(shí)間上不同,看下面的例子:

    一個(gè)普通類信息

      1: interface Interface{
      2:   public static String interFlag = "接口";
      3:   
      4: }
      5: 
      6: class Parent implements Interface{
      7:   public static String parntFLAG = "父類靜態(tài)變量";
      8:   static{
      9:     final  String flag2 = "flag2";//static 區(qū)中只能用final修飾
     10:     System.out.println("我在父類靜態(tài)區(qū)里面!"+parntFLAG);
     11:   }
     12:   
     13:   public  Parent(){
     14:     System.out.println("我在父類構(gòu)造函數(shù)里面!");
     15:   }
     16: }
     17: 
     18: 
     19: class Son extends  Parent{
     20:   public static String sonFLAG = "子類類靜態(tài)變量";
     21:   static{
     22:     System.out.println("我在子類靜態(tài)區(qū)里面!"+sonFLAG);
     23:   }
     24:   
     25:   public Son(){
     26:     System.out.println("我在子類構(gòu)造函數(shù)里面!");
     27:   }
     28: }
      1: interface Interface{
      2:   public static String interFlag = "接口";
      3:   
      4: }
      5: 
      6: class Parent implements Interface{
      7:   public static String parntFLAG = "父類靜態(tài)變量";
      8:   static{
      9:     final  String flag2 = "flag2";//static 區(qū)中只能用final修飾
     10:     System.out.println("我在父類靜態(tài)區(qū)里面!"+parntFLAG);
     11:   }
     12:   
     13:   public  Parent(){
     14:     System.out.println("我在父類構(gòu)造函數(shù)里面!");
     15:   }
     16: }
     17: 
     18: 
     19: class Son extends  Parent{
     20:   public static String sonFLAG = "子類類靜態(tài)變量";
     21:   static{
     22:     System.out.println("我在子類靜態(tài)區(qū)里面!"+sonFLAG);
     23:   }
     24:   
     25:   public Son(){
     26:     System.out.println("我在子類構(gòu)造函數(shù)里面!");
     27:   }
     28: }

    使用這種方法引用類的對(duì)象不會(huì)始化靜態(tài)變量和執(zhí)行靜態(tài)塊信息,這些代碼方法會(huì)在首次引用時(shí)執(zhí)行.

    如下引用父類的靜態(tài)變量,不會(huì)執(zhí)行子類的靜態(tài)塊.

      1: public class ClassLoad {
      2:   public static void main(String[] args) throws ClassNotFoundException  {
      3:     
      4:     //Son son = new Son();
      5:     /**
      6:      * 我們使用一個(gè)類的時(shí)候需要進(jìn)行以下3項(xiàng)工作.
      7:      * 1.加載,
      8:      * 2.鏈接
      9:      * 3.初始化,此步會(huì)初始化靜態(tài)變量和執(zhí)行靜態(tài)塊信息,但是這種方法會(huì)在
     10:      * 真正調(diào)用方法時(shí)執(zhí)行
     11:      */
     12:     Class son = Son.class;
     13:     System.out.println("靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!");
     14:     // parntFLAG 是父類的靜態(tài)變量 
     15:     // 此處只會(huì)執(zhí)行父類的靜態(tài)快
     16:     System.out.println(Son.parntFLAG);
     17: 
     18:     /**
     19:      * 運(yùn)行結(jié)果
     20:      *靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!
     21:      *我在父類靜態(tài)區(qū)里面!父類靜態(tài)變量
     22:      *父類靜態(tài)變量
     23:      */
     24:   }
     25: }

    打印子類的靜態(tài)變量,所有的代碼都會(huì)執(zhí)行

      1: 
      2: public class ClassLoad {
      3:   public static void main(String[] args) throws ClassNotFoundException  {
      4:     
      5:     //Son son = new Son();
      6:     /**
      7:      * 我們使用一個(gè)類的時(shí)候需要進(jìn)行以下3項(xiàng)工作.
      8:      * 1.加載,
      9:      * 2.鏈接
     10:      * 3.初始化,此步會(huì)初始化靜態(tài)變量和執(zhí)行靜態(tài)塊信息,但是這種方法會(huì)在
     11:      * 真正調(diào)用方法時(shí)執(zhí)行
     12:      */
     13:     Class son = Son.class;
     14:     System.out.println("靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!");
     15:     // parntFLAG 是父類的靜態(tài)變量 
     16:     // 此處只會(huì)執(zhí)行父類的靜態(tài)快
     17:     System.out.println(Son.sonFLAG);
     18: 
     19:     /**
     20:      * 運(yùn)行結(jié)果
     21:      * 靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!
     22:      * 我在父類靜態(tài)區(qū)里面!父類靜態(tài)變量
     23:      * 我在子類靜態(tài)區(qū)里面!子類類靜態(tài)變量
     24:      * 子類類靜態(tài)變量
     25:      */
     26:   }
     27: }

     

    但是使用Class.forName 類加載時(shí)就會(huì)完成初始化工作.

      1: public class ClassLoad {
      2:   public static void main(String[] args) throws Exception  {
      3:     /**
      4:      * 使用Class.forName會(huì)自動(dòng)加載所有靜態(tài)區(qū)的信息
      5:      */
      6:     Class son = Class.forName("classLoad.Son");
      7:     Son instance = (Son)son.newInstance();
      8:     /*
      9:      * 執(zhí)行結(jié)果
     10:      * 我在父類靜態(tài)區(qū)里面!父類靜態(tài)變量
     11:      * 我在子類靜態(tài)區(qū)里面!子類類靜態(tài)變量
     12:      * 我在父類構(gòu)造函數(shù)里面!
     13:      * 我在子類構(gòu)造函數(shù)里面!
     14:      */  
     15: 
     16:   }
     17: }
    posted @ 2011-03-13 18:41 小暉 閱讀(885) | 評(píng)論 (0)編輯 收藏

    該類提供了線程局部 (thread-local) 變量。這些變量不同于它們的普通對(duì)應(yīng)物,因?yàn)樵L問某個(gè)變量(通過其 get 或 set 方法)的每個(gè)線程都有自己的局部變量,它獨(dú)立于變量的初始化副本。ThreadLocal 實(shí)例通常是類中的 private static 字段,它們希望將狀態(tài)與某一個(gè)線程(例如,用戶 ID 或事務(wù) ID)相關(guān)聯(lián)。

    這個(gè)是什么,就是解決一個(gè)線程內(nèi)共享一個(gè)變量,這個(gè)變量只在這個(gè)線程內(nèi)部有效,在一個(gè)線程內(nèi)訪問的都一個(gè)同一個(gè)對(duì)象,而多個(gè)線程之間的這個(gè)對(duì)象卻是相互獨(dú)立的。說來就是每一個(gè)線程都有一個(gè)獨(dú)立的此線程副本。
    使用ThreadLocal一般都聲明為靜態(tài)的變量
    在我們的線程中有一個(gè)threadLocals的Hash表來存放這個(gè)對(duì)象,我們用ThreadLocal對(duì)象作為主鍵,因此我們的ThreadLocal對(duì)象聲明為靜態(tài)的

    我們可以使用多個(gè)TheadLocal,來使一個(gè)線程里有多個(gè)共享的變量
    這個(gè)就是要實(shí)現(xiàn)一個(gè)線程里面共享一個(gè)變量

    public void set(Object value) {        
    	  Thread t = Thread.currentThread();
            ThreadLocalMap map = getMap(t);
            if (map != null) 
                map.set(this, value);
            else
                createMap(t, value);
        }

     

        ThreadLocalMap getMap(Thread t) {
            return t.threadLocals;
        }
    posted @ 2009-05-14 21:03 小暉 閱讀(203) | 評(píng)論 (0)編輯 收藏

     

    1. 添加帶有數(shù)據(jù)值 (< 次數(shù)秒 >) ReceiveTimeout DWORD 值 *: 在以下注冊(cè)表項(xiàng)中

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    例如, 如果希望超時(shí)期間將 8 分鐘, ReceiveTimeout 數(shù)據(jù)值設(shè)置為 480000 (< 480 > 1000) 。

     
    2. 重新啟動(dòng)計(jì)算機(jī)。
    詳情

    posted @ 2009-05-14 20:56 小暉 閱讀(1080) | 評(píng)論 (0)編輯 收藏

    MICROSOFT         PB(16Bit)         PB(32Bit)

    Bool                    Boolean         Boolean

    Char*                 Ref string       Ref String

    Colorref               Uint             Ulong

    Dword                 Uint             Ulong

    Handle                Uint             Ulong

    Hdc                    Uint             Ulong

    Hfile                   Uint             Ulong

    Hinstance           Uint             Ulong

    Hwnd                 Uint             Ulong

    Int                     Int             Int

    Lparam               Uint             Ulong

    Lpbyte               Ref Int         Ref Long

    Lpdword             Ref Uint        Ref Ulong

    Lpfiletime           Ref Time        Ref Time

    Lpint                 Ref Int          Ref Long

    Lpstr,Lpststr       Ref String     Ref String

    Lpvoid               Ref Structstruct_inst         Ref Struct struct_inst

    Mcierror            Long             Long

    Lpstr,Lpststr       Ref String     Ref String

    Lpvoid              Ref Structstruct_inst         Ref Struct struct_inst

    Pbyte               Ref Int[#]     Ref Long[#]

    Short               Int         Int

    Structure         Ref Struct struct_inst       Ref Struct Struct_inst

    Uint                Uint              Uint

    Void**           SUBROUTINE    SUBROUTINE

    Word                         Int       Ulong

     

    LiveJournal Tags:

     

    Catch0 

    pb能使用的必須是標(biāo)準(zhǔn)winapi即pasical 壓棧順序

    1. 制作dll文件時(shí) 需要stdcal
    2. 在函數(shù)中加入winapi

    eg:

    DLLIMPORT WINAPI int CI_MACForPb(
                  long           nFunction,      
                  unsigned char  *pEntity,     
                  unsigned char  *pInData,
                  unsigned long  nInLength,
                  unsigned char  *pMAC,
                  unsigned long  *pnMACLength
                  )
    posted @ 2009-05-14 20:48 小暉 閱讀(1751) | 評(píng)論 (0)編輯 收藏

    <2009年5月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    相冊(cè)

    最新隨筆

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲热妇无码AV在线播放| 亚洲中字慕日产2020| 无码精品人妻一区二区三区免费看 | 亚洲中文字幕精品久久| 亚洲第一永久AV网站久久精品男人的天堂AV | 亚洲国产美女福利直播秀一区二区| 好男人看视频免费2019中文| 久久www免费人成精品香蕉| 亚洲电影唐人社一区二区| 国产18禁黄网站免费观看| 99在线热视频只有精品免费| 亚洲高清国产拍精品熟女| 亚洲av无码一区二区三区乱子伦 | 一道本不卡免费视频| 亚洲系列国产精品制服丝袜第| 国产精品色午夜免费视频| 国产精品免费观看调教网| 国产成人综合亚洲| 久久国产亚洲高清观看| 亚洲精品成人区在线观看| 99视频全部免费精品全部四虎 | 日本免费人成视频播放| 精品国产麻豆免费人成网站| 久久综合亚洲色hezyo| 久久久无码精品亚洲日韩京东传媒 | 亚洲成av人片在线天堂无| 亚洲国产一区二区a毛片| 亚洲高清无码专区视频| 日韩欧美一区二区三区免费观看| a毛片免费全部在线播放**| 亚洲国产av玩弄放荡人妇| 亚洲精品亚洲人成在线麻豆| 亚洲小说区图片区另类春色| 日本免费人成视频播放| 日韩欧美一区二区三区免费观看| 免费在线中文日本| 久久WWW免费人成—看片| 无码亚洲成a人在线观看| 中文字幕在线观看亚洲视频| 亚洲尹人九九大色香蕉网站| 亚洲综合av永久无码精品一区二区|