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

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

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

    午后星期午

    2014年3月25日 #

    Java 單例模式詳解

         摘要: 概念:  java中單例模式是一種常見的設計模式,單例模式分三種:懶漢式單例、餓漢式單例、登記式單例三種。  單例模式有一下特點:  1、單例類只能有一個實例。  2、單例類必須自己自己創建自己的唯一實例。  3、單例類必須給所有其他對象提供這一實例。  單例模式確保某個類只有一個實例,而且自行實例化并向整個系統提供這個實例。在計算機系統中,線程池、緩存、日志對象、對話框、打印機、顯卡的驅動程序對...  閱讀全文

    posted @ 2014-03-27 01:20 午后星期午 閱讀(100) | 評論 (0)編輯 收藏

    值傳遞、引用傳遞的區別

    所謂值傳遞,就是說僅將對象的值傳遞給目標對象,就相當于copy;系統將為目標對象重新開辟一個完全相同的內存空間。
    所謂引用,就是說將對象在內存中的地址傳遞給目標對象,就相當于使目標對象和原始對象對應同一個內存存儲空間。此時,如果對目標對象進行修改,內存中的數據也會改變。
    值傳遞,例如:
    class TestT1 
    public static void main(String[] args) 
    int i = 5; 
    int j = 6; 
    System.out.println("before exchange i = "+i);//交換前
    exchange(i, j); 
    System.out.println("after exchange i = "+i);//交換后
    }
    public static void exchange(int a,int b) 
    int k;
    k = a;a = b; b = k; 
    程序的結果是5!!! 
    這說明,原始數據類型是按值傳遞的,這個按值傳遞也是指的是進行賦值時的行為。 
    Java語言明確說明取消了指針,因為指針往往是在帶來方便的同時也是導致代碼不安全的根源,同時也會使程序的變得非常復雜難以理解,但這只是在Java語言中沒有明確的指針定義,實質上每一個new語句返回的都是一個指針的引用。
    引用傳遞,例如:
    class TestT2
    public static void main(String[] args) 
    StringBuffer s= new StringBuffer("good"); 
    StringBuffer s2=s; 
    s2.append(" afternoon."); 
    System.out.println(s); 
    對象s和s2指向的是內存中的同一個地址因此指向的是同一個對象。 
    這里的意思是進行對象賦值操作是傳遞的是對象的引用,因此對象是按引用傳遞的。 
    程序運行的輸出是: 
    good afternoon. 
    這說明s2和s是同一個對象。
    總結: 
    大家都知道,在JAVA中變量有以下兩種:
    基本類型變量,包括boolean、byte、char、short、int、long、float、double。
    引用類型變量,包括類、接口、數組(基本類型數組和對象數組)。
    對于基本類型和基本類型變量被當作參數傳遞給方法時,是值傳遞。在方法實體中,無法給原變量重新賦值,也無法改變它的值。
    而對象作為參數,如果在方法中把對象作為參數,方法調用時,參數傳遞的是對象的引用,即在方法調用時,實際參數把對對象的引用傳遞給形式參數。這是實際參數與形式參數指向同一個地址,即同一個對象,方法執行時,對形式參數的改變實際上就是對實際參數的改變,這個結果在調用結束后被保留了下來。

    形參和實參有以下顯著的區別:
        1、形參不能離開方法。形參只有在方法內才會發生作用,也只有在方法中使用,不會在方法外可見。而實參可以再程序的任何地方都使用。
        2、形參代表一個合集,具有不確定性,而形參代表一個獨立事物,具有確定性(即使是為null)。也就是說,形參不能代表具體的對象,只能代表這些對象共同的屬性(比如超類、各種其他自定義屬性等等),而實參則是具體的對象(比如超類的實例)。
        3、形參的值在調用時根據調用者更改,實參則用自身的值更改形參的值(指針、引用皆在此列)

    posted @ 2014-03-26 22:29 午后星期午 閱讀(149) | 評論 (0)編輯 收藏

    使用Spring mvc 利用java的反射技術,來掃描對應包下的注解請求url 統一保存在數據庫中

    僅對  @requestMapping("/xxxx/其他參數")  的格式
     package cc.wshao.springmvc.util;
    import java.io.File;
    import java.lang.reflect.Method;
    import java.net.URL;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import cc.wshao.springmvc.service.RightService;
    public class RegRightUtils {
    private static final String rootUrl = "/spring";
    private static RightService rightService;
    public static void main(String[] args) throws Exception {
    ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
      rightService = context.getBean(RightService.class);
    ClassLoader classLoader = RegRightUtils.class.getClassLoader();
    URL url = classLoader.getResource("com/er07/book/springmvc/controller");
    String rootPath = url.getPath().toString();
    File rootFile = new File(rootPath);
    File [] files = rootFile.listFiles();
    for(File f: files) {
    System.err.println(f.getName());
    String className = f.getName().substring(0, f.getName().indexOf(".class"));
    Class clazz = Class.forName("com.er07.book.springmvc.controller."+className);
    parseClass(clazz);  //解析  出url
    }
     
    }
    public  static void parseClass(Class clazz) {
     
    if(clazz.isAnnotationPresent(Controller.class)) {   //是否為一個controller ? 
    String classUrl ="";
     if(clazz.isAnnotationPresent(RequestMapping.class)) {
     RequestMapping requestMapping_clazz = (RequestMapping) clazz.getAnnotation(RequestMapping.class);
      classUrl = requestMapping_clazz.value()[0];
      
      if(classUrl.equals("/")) {  //如果是"/" 的話  制空    
      classUrl ="";
      }
     }
     Method [] ms = clazz.getDeclaredMethods();
     
     for(Method m :ms) {
     
     if(m.isAnnotationPresent(RequestMapping.class)) {
     RequestMapping requestMapping_method = m.getAnnotation(RequestMapping.class);
     String methodUrl = requestMapping_method.value()[0];
     
       int  index = methodUrl.indexOf("/");
       index = methodUrl.indexOf("/",index+1);
       if(index!=-1) {  //如果存在 則進行截取前面的url 
       
        methodUrl = methodUrl.substring(0, index);
       }
     String resultUrl = rootUrl+classUrl+methodUrl;
     rightService.appendRightByUrl(resultUrl);
     }
     }
    }
    }
    }
    //實現方法: 
    public void appendRightByUrl(String url) {
    //查詢 此url 在數據庫中是否存在  此權限
    String hql = "from Right where rightUrl =?";
    Right r = (Right) this.rightDao.uniqueResult(hql, url);
    if(r==null) { //不存在 , 插入數據庫中
    Right newRight = new Right();
    newRight.setRightUrl(url);
    this.saveOrUpdateRight(newRight);
    }
    }

    posted @ 2014-03-25 14:54 午后星期午 閱讀(1253) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲三级电影网站| 免费萌白酱国产一区二区| 国产亚洲精品AA片在线观看不加载| 亚洲国产亚洲综合在线尤物| 永久看日本大片免费35分钟| 久久青青草原亚洲AV无码麻豆 | 国产精品亚洲αv天堂无码| 一级毛片免费视频网站| 亚洲欧洲精品成人久久奇米网 | 亚洲日韩精品无码专区| 在线观看免费毛片| 最新亚洲人成无码网站| 免费播放春色aⅴ视频| 一级视频免费观看| 国产亚洲一区二区手机在线观看 | 亚洲AV无码专区亚洲AV桃| 国产一区二区视频免费| 一级毛片视频免费| 亚洲va久久久噜噜噜久久天堂| 四虎影视在线影院在线观看免费视频| 亚洲电影免费在线观看| aa级一级天堂片免费观看| 亚洲欧美日韩中文高清www777 | 在线观看亚洲天天一三视| 国产精品免费无遮挡无码永久视频 | 黄桃AV无码免费一区二区三区| 亚洲精品无码午夜福利中文字幕 | 国产成人午夜精品免费视频| 亚洲欧美国产国产综合一区 | 亚洲精品无码Av人在线观看国产| 一区二区三区观看免费中文视频在线播放 | 一本色道久久综合亚洲精品高清| 日本视频在线观看永久免费| 亚洲图片校园春色| 亚洲成?Ⅴ人在线观看无码| a级毛片免费全部播放无码| 亚洲啪啪免费视频| 国产gav成人免费播放视频| 免费h视频在线观看| 亚洲高清国产拍精品熟女| 国产V亚洲V天堂无码|