初學源碼如何越學越香 ?

åå­¦æºç å¦ä½è¶å­¦è¶é¦ ?

爲什麼學習源碼 ?

  • 告別碼農, 追求技術的本質, 不被框架花裏胡哨的封裝嚇倒.

  • 當感覺到自己對現在工作已經得心應手時, 想更進一層樓.真正讀懂業務代碼底層,

  • 面試時能更好的吊打面試官,讓企業對你垂涎三尺.

 

阿里雲SDK 是什麼?

阿里雲SDK允許您通過編程訪問阿里雲服務,例如彈性計算服務(ECS),服務器負載平衡器(SLB)和CloudMonitor。您可以訪問阿里雲服務,而無需處理與API相關的任務,例如簽名和構造請求。

 

爲什麼要學阿里雲 SDK Core ?

  • 阿里雲 SDK Core 最低兼容 JDK1.6 , 項目中沒有使用高版本語法糖, 代碼邏輯相對簡單, 學習門檻低.

  • 阿里雲SDK Core 包含了基礎的設計模式, 以及 動態代理, 網絡通訊, 日誌集成等多項Java編程技巧.

  • 阿里雲在中國雲服務器市場的份額最大, 所有的阿里雲服務SDK 都依賴SDK Core, 源碼含金量高.

  • 阿里巴巴將制定了符合中國特色的Java開發規範, 學習它的源碼等同於學習阿里Java開發規範.

 

學習SDK Core 第一步

阿里雲SDK 基於 Maven 管理, 只需要你的電腦裝有 Maven 並且 JDK 1.6 以上就可以運行所有阿里雲 SDK項目.現在要做的是下載源碼 (本文SDK基於 4.4.2).

https://developer.aliyun.com/tools/sdk?spm=a2c6h.13066369.0.0.7e254204vNmPv3#/java

看個 SDK Core Demo

以下代碼示例顯示了使用阿里雲SDK for Java的三個主要步驟 (阿里雲短信Demo) :

  1. 創建並初始化DefaultAcsClient實例。

  2. 創建一個API請求並設置參數。

  3. 發起請求並處理響應或異常。

 package com.testprogram;
 import com.aliyuncs.CommonRequest;
 import com.aliyuncs.CommonResponse;
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
 import com.aliyuncs.http.HttpUtil;
 import com.aliyuncs.profile.DefaultProfile;
 public class Main {
     public static void main(String[] args) {

        // 1.創建並初始化`DefaultAcsClient`實例。
        DefaultProfile profile = DefaultProfile.getProfile(
            "<your-region-id>",          // The region ID
            "<your-access-key-id>",      // The AccessKey ID of the RAM account
            "<your-access-key-secret>"); // The AccessKey Secret of the RAM account
        IAcsClient client = new DefaultAcsClient(profile);

        // 2.創建一個API請求並設置參數。
        CommonRequest request = new CommonRequest();
        request.setSysProtocol(ProtocolType.HTTPS);
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("SignName", "xxxx告訴");
        request.putQueryParameter("PhoneNumbers", 1329695482131);
        request.putQueryParameter("TemplateCode", "SMS_1754303333");

    /*
      尊敬的${named},(先生/女士): 您好!感謝您使用XXXXX 平臺的服務.
      您的 ${orderId} 訂單已完成. 爲了提高我司的後續服務體驗.誠邀您在閒暇時進入我司App 對本訂單進行追評,
     */
        request.putQueryParameter("TemplateParam", "     {\"named\":\""+named+"\",\"orderId\":\""+orderId+"\"}");

        // 3.發起請求並處理響應或異常。
        try {
            CommonResponse response = client.getCommonResponse(request);
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

 

開啓SDK Core Debug 開關 的兩種方式

  • // 在最開始代碼顯示聲明 HttpUtil.setIsHttpContentDebug(true); HttpUtil.setIsHttpDebug(true);

  • 設置 環境變量 K = DEBUG V = sdk 具體原因爲

彩蛋

請查看彩蛋第 30行.

 

查看SDK Core 核心DefaultAcsClient類UML圖

Core Demo 前兩步是 構建憑證對象, 填充請求對象, 第三步爲 SDK 客戶端 與 阿里雲API資源交互, 爲核心邏輯,讓我們點進 DefaultAcsClient.getCommonResponse 源碼一探究竟,

doAction 方法的參數列表, 請求對象, 請求失敗是否重試, 最多重試次數, 客戶端憑證.

組裝關鍵參數ing,完事進入重頭戲!

集合一切客戶端的參數,並完成對稱加密 Boby, 重頭戲!

代理模式獲取最終的RPC客戶端來發送封裝的信息,拋磚引玉到這. 最後一個彩蛋自己研究, 防止讀者成爲博客大神….

使用CommonRequest進行調用_使用手冊_Java SDK-阿里雲​helpcdn.aliyun.com

微信掃描二維碼,關注我的公衆號

深入淺出分享 Java 乾貨 , 找回對代碼的 Passion , 助力月入 20K+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章