java 懶漢式--初步解決安全問題

来源:http://www.cnblogs.com/ljsds/archive/2016/07/28/5713195.html
-Advertisement-
Play Games

2016-07-28 00:10:14 懶漢式: class text { public String k; private static text t=null;//右邊代碼結構比上邊餓漢式繁瑣,可能出現安全問題 private test(){} //安全問題無疑是違背這個程式的初衷就是可以創建多 ...


2016-07-28 00:10:14  

懶漢式:

    class text
    {     public String k;      
       private static text t=null;//右邊代碼結構比上邊餓漢式繁瑣,可能出現安全問題

       private test(){} //安全問題無疑是違背這個程式的初衷就是可以創建多個實例

       public static text getObject()

      {   //多線程的時候,運行狀態到就緒狀態(簡單的說就是線程失去了CPU的執行權)
       if (t==null)
       {   //---------->到就緒區 Tread1,Tread2依次卧倒(線程失去了CPU的執行權)         
        t=new text(); //顯而易見以上兩個線程創建了兩個實例
        return t; //在cup負荷時候進程多而線程為進程的執行單位在切換時可能出現以上情況
              }      
        return t;
      }
    }

 //那麼如何解決以上問題

代碼如下:

 class test
    {     public String k;      
       private static text t=null;        

       private test(){}           

       public static text getObject()

      {                     
       if (t==null)

                  //外面新增一個判斷為一旦生成一個對象後就不在判斷鎖的問題

                  //  來優化代碼(節省時間)   

       {   synchronized(test.class){   //在此有鎖,只能進入一個線程就不會出現 多個線程創建多個實例 

          if(t==null){

                 t=new text();  // 補充:因為此時方法為靜態不能調用this,

                 return t;     //所以調用已經生成的類名.class 位元組碼對象;

                          //下麵有更詳細對test.class補充
                      
                      
                   }

                          }

                   }      
        return t;
      }
    

 

-------------------------------------------------------我是分隔符---------------------------------------------------

 

補充:

單例模式:

  餓漢式 

    /*餓漢式*/
    /*class test
    {   public String k;
      private static final text t=new text();//正規寫法把final 寫上 成為一個不可以改變的常量
      private text(){}
      public static text getObject(){ 
      return t;     //在載入的類的時候就生成了對象,代碼結構簡單基本不存在安全問題

           //在載入類時要比懶漢式要費時長,調用對象時比懶漢式時間段
    }

獲取位元組碼對象的方式其一:

        類名.class,你可以理解為位元組碼本身就是靜態的,類載入的時位元組碼就進JVM了。所以類.class好比類調用靜態方法似得調用位元組碼對象。

  
------------------------------------說明----------------------------------------------------------------------------------------------------------------

                本人不過大一學生,第一次寫學習感悟.以上如果程式有問題或者描述不清請留言謝謝.

                      如果大家有更好的方法希望互相學習共同進步.ljs.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 主要封裝了關於數據載入時的彈框提示,以及自動彈框提示後關閉功能和右下角動態彈出後緩慢退出功能(有點想網吧提示餘額不足的情況),方便以後直接使用。這個不解釋,只要用winform開發,絕對會用到。節約開發時間 ...
  • 由於業務需求,最近將項目部分模塊修改為偽靜態,使用到了Intelligencia.UrlRewriter.dll組件。 網上對使用Intelligencia.UrlRewriter.dll的配置講解很多,在此就不多說了,(如:http://www.cnblogs.com/naoguazi/p/URL ...
  • 一、前言 說來慚愧,做了幾年ASP.NET最近才有機會使用MVC開發生產項目。項目中新增、編輯表單提交存在大量服務端數據格式校驗,各種if else顯得代碼過於繁瑣,特別是表單數據比較多的時候尤為噁心,正好今天比較閑就寫了一個Demo,統一驗證Model層中的數據格式。在此說明一下,MVC自帶數據檢 ...
  • myeclipse老版本不分32位和64位,歡迎大家下載使用! 鏈接:http://pan.baidu.com/s/1dEJCxcl 密碼:z1ga ...
  • 靜態代碼塊:用staitc聲明,jvm載入類時執行,僅執行一次構造代碼塊:類中直接用{}定義,每一次創建對象時執行。執行順序優先順序:靜態塊,main(),構造塊,構造方法。 構造函數 關於構造函數,以下幾點要註意:1.對象一建立,就會調用與之相應的構造函數,也就是說,不建立對象,構造函數時不會運行的 ...
  • IntelliJ Idea 常用快捷鍵列表 Alt+回車 導入包,自動修正 Ctrl+N 查找類 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代碼 Ctrl+Alt+O 優化導入的類和包 Alt+Insert 生成代碼(如get,set方法,構造函數等) Ctrl+E或者Alt+ ...
  • tornado簡介 1、tornado概述 Tornado就是我們在 FriendFeed 的 Web 伺服器及其常用工具的開源版本。Tornado 和現在的主流 Web 伺服器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式伺服器,而且速度相當快。得利於其 非阻塞的方式和對ep ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...