博客
关于我
初学源码如何越学越香 ?
阅读量:320 次
发布时间:2019-03-04

本文共 2924 字,大约阅读时间需要 9 分钟。

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

为什么学习源码 ?

  • 告别码农, 追求技术的本质, 不被框架花里胡哨的封装吓倒.

  • 当感觉到自己对现在工作已经得心应手时, 想更进一层楼.真正读懂业务代码底层,

  • 面试时能更好的吊打面试官,让企业对你垂涎三尺.

 

阿里云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).

看个 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(            "
", // The region ID "
", // The AccessKey ID of the RAM account "
"); // 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+

转载地址:http://opjh.baihongyu.com/

你可能感兴趣的文章
2种解法 - 获取一条直线上最多的点数
查看>>
项目中常用的审计类型概述
查看>>
(九)实现页面底部购物车的样式
查看>>
python-day3 for语句完整使用
查看>>
(2.1)关系模型之关系结构和约束
查看>>
ButterKnife使用问题
查看>>
01 背包问题
查看>>
ILI9341几个重要的命令
查看>>
为什么讨厌所谓仿生AI的说法
查看>>
ORACLE 客户端工具
查看>>
Pyinstaller打包的exe文件过大的解决方法
查看>>
Linux的软链接跟Windows快捷方式一样?
查看>>
使用第三方sdk,微信wechat扫码登录
查看>>
mysql中的行转列
查看>>
ValueError: check_hostname requires server_hostname
查看>>
基于LabVIEW的入门指南
查看>>
PCB布局系列汇总
查看>>
2019CCPC女生专场赛_K - Tetris_打表/模拟_暴力之王
查看>>
“/”应用程序中的服务器错误。
查看>>
MUI之ajax获取后台接口数据
查看>>