阿里云短信支持先使用后支付的原则,价格为4分半1条。

性能优化

JVM调优

Java程序性能优化

Tomcat

Mysql

Spring IOC

Spring AOP

Spring MVC

Spring 5新特性

Mybatis

图片 1

1.0 TimeSpan

图片 2

分布式架构

架构核心服务层技术

架构关键技术设施

分布式消息通讯 异步于MQ

分布式缓存

Redis

Memcached

MongoDB

数据存储

高并发分流技术Nginx

分布式解决方案

图片 3

 TimeSpan passTime = (DateTime.Now - curUser.refuseTime); if (passTime.Days * 24 + passTime.Hours < 24) {     string cs = string.Format("您撤单过后,24小时内不能接单,还要等{0}小时.", 24 - passTime.Hours);     return WriteError; }

通过SDK可以与网站功能的绑定,实现响应的短信发送功能

应用框架源码解读

图片 4

  

图片 5

微服务专题

你还不知道微服务?怎么加薪

2.0timestamp 时间戳

现已统一合并升级为:消息服务。

SpringBoot

与微服务的区别于联系

快速构建SpringBoot工程

SpringBoot核心组件剖析

快速集成mybatis实战

快速集成Dubbo及案例实战

构建集成 redis及案例实战

构建Swagger插件实现API

管理及接口测试体系

        public static int ConvertDateTimeInt(System.DateTime time)        {            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));            return (time - startTime).TotalSeconds;        }        public static int GetTimestamp()        {            return ConvertDateTimeInt(DateTime.Now);        }

图片 6

SpringCloud

Zuul路由网关详解源码探析

Ribbon客户端负载均衡原理

Feign声明式服务调用方式

Eureka注册中心构件

Config配置服务中心

svn、git快速集成

Sleuth调用链路跟踪

BUS消息总线技术

3.0 缓存

消息服务

阿里云消息服务(Message Service,简称
MNS)是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。MNS能够帮助应用开发者在他们应用的分布式组件上自由的传递数据、通知消息,构建松耦合系统。

新的SDK下载地址:

Java SDK:
PythonSDK:
C# SDK:
PHP SDK:

如果你像我一样是以前申请的短信服务升级过来的,那么旧的接口与API仍然能使用,新申请的只能使用新的SDK了。

Docker虚拟化技术

介绍、安装与使用

compose部署脚本

service服务编排

redis分布式集群部署

docker file构建

通过maven插件打包镜像

部署及运行应用程序kubernetes编配

构建Mysql集群实战

高可用SpringCloud微服务与docker集成实现动态扩容实战

图片 7

if (HttpRuntime.Cache["access_token"] == null){HttpRuntime.Cache.Insert("access_token", access_token, null, DateTime.Now.AddSeconds(expires_in - 60), System.Web.Caching.Cache.NoSlidingExpiration);  //这里给数据加缓存,设置缓存时间//"key"为缓存的键,access_token为缓存起来的值,null为缓存依赖项,这里没有使用缓存依赖项,所以为null,//null后面为缓存的时间为7168秒 最后一个参数为设置时间的格式,ASP.NET允许你设置一个绝对过期时间或滑动过期时间,但不能同时使用,//我们这里设置的为绝对过期时间,也就是刷新一次页面后缓存数据为7168秒,7168秒后会从数据库中重新获取。}

本文旨在通过PHP实现阿里云短信接口,摆脱繁琐的SDK。

短信界面通过表单方式实现。

<div style="width:90%;margin:auto;margin-top:100px;text-align:center;font-size:12px;color:#192E32;"><form method="post" action="">    <b>模板CODE:</b>&nbsp;&nbsp;<input type="text" name="tcode" id="tcode" required="required" value="SMS_12345678" 
onFocus="if(value==defaultValue){value='';this.style.color='#000'}" onBlur="if{value=defaultValue;this.style.color='#999'}" 
oninput="myinput()" onpropertychange="myclick()" style="color:#999999;height:26px; width:150px;  line-height:26px;" />   &nbsp;&nbsp;阿里云短信模板编号   <br><br>     <b>用户类型:</b>   <input type="radio" name="tuser" id="tuser" value="suppliers" checked="checked"; />供应商   <input type="radio" name="tuser" id="tuser"  value="users" />全部用户   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <br><br>   <input type="submit" name="sub" id="sub" value="发送短信" disabled="true" />   </form></div><script type="text/javascript">function myinput(){    if(document.getElementById("tcode").value){        document.getElementById("sub").removeAttribute("disabled");     }    else{        document.getElementById("sub").setAttribute("disabled",disabled);    }};function myclick(){    if(document.getElementById("tcode").value){        document.getElementById("sub").setAttribute("disabled",false);    }    else{        document.getElementById("sub").setAttribute("disabled",true);    }};</script>  

注意:阿里云短信模板编号为SMS_形式,通过JS控制输入提交按钮是否可用。

图片 8

<?phpdefine('IN_ECS', true);require(dirname(__FILE__) . '/includes/init.php');//ECShop初始化页面文件      function https_request($url)          {          $curl = curl_init();          curl_setopt($curl, CURLOPT_URL, $url);          curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);          curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);          curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);          $data = curl_exec($curl);          if (curl_errno($curl)) {return 'ERROR '.curl_error($curl);}          curl_close($curl);          return $data;          }  function xml_to_array($xml){          $reg = "/<[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";          if(preg_match_all($reg, $xml, $matches)){              $count = count($matches[0]);              for($i = 0; $i < $count; $i++){              $subxml= $matches[2][$i];              $key = $matches[1][$i];                  if(preg_match( $reg, $subxml )){                      $arr[$key] = xml_to_array( $subxml );                  }else{                      $arr[$key] = $subxml;                  }              }          }          return @$arr;      }  function random($length = 6 , $numeric = 0) {          PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);          if($numeric) {              $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));          } else {              $hash = '';              $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';              $max = strlen($chars) - 1;              for($i = 0; $i < $length; $i++) {                  $hash .= $chars[mt_rand(0, $max)];              }          }          return $hash;      }      $target = "https://sms.aliyuncs.com/?";      //阿里云短信请求地址头        $mobile_code = random(6,1);    function percentEncode($str)      {          // 使用urlencode编码后,将"+","*","%7E"做替换即满足ECS API规定的编码规范          $res = urlencode($str);          $res = preg_replace('/\+/', '%20', $res);          $res = preg_replace('/\*/', '%2A', $res);          $res = preg_replace('/%7E/', '~', $res);          return $res;      }  function computeSignature($parameters, $accessKeySecret)      {          // 将参数Key按字典顺序排序          ksort($parameters);          // 生成规范化请求字符串          $canonicalizedQueryString = '';          foreach($parameters as $key => $value)          {          $canonicalizedQueryString .= '&' . percentEncode($key)              . '=' . percentEncode($value);          }          // 生成用于计算签名的字符串 stringToSign          $stringToSign = 'GET&%2F&' . percentencode(substr($canonicalizedQueryString, 1));          //echo "<br>".$stringToSign."<br>";          // 计算签名,注意accessKeySecret后面要加上字符'&'          $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));          return $signature;      }      // 注意使用GMT时间      date_default_timezone_set("GMT");      $dateTimeFormat = 'Y-m-d\TH:i:s\Z'; // ISO8601规范      $accessKeyId = '根据实际修改';      // 这里填写您的Access Key ID      $accessKeySecret = '根据实际修改';  // 这里填写您的Access Key Secret      $ParamString="{\"code\":\"".strval($mobile_code)."\"}";      // 发送请求     if($_REQUEST['act'] == 'aliyun_mns'){// POST表单提交请求页面动作?act=aliyun_mns        /* 显示模板 */        if (isset($_POST['tcode']) && isset($_POST['tuser'])) {        $tcode=$_POST["tcode"];// 表单提交SMS短信模板        $tuser=$_POST["tuser"]; //表单提交用户组               $sql = "SELECT DISTINCT mobile_phone FROM " .$ecs->table($tuser);        $phoneNO = $db->getCol($sql);        $ii=0;        foreach($phoneNO as $key=>$pn)        {            if(preg_match("/^1[34578]\d{9}$/",$pn)){                $data = array(                  // 公共参数                  'SignName'=>'根据实际修改',                  'Format' => 'XML',                  'Version' => '2016-09-27',                  'AccessKeyId' => $accessKeyId,                  'SignatureVersion' => '1.0',                  'SignatureMethod' => 'HMAC-SHA1',                  'SignatureNonce'=> uniqid(),                  'Timestamp' => date($dateTimeFormat),                  // 接口参数                  'Action' => 'SingleSendSms',                  'TemplateCode' =>$tcode,                  'RecNum' => $pn,                  'ParamString' => $ParamString                  );                  $data['Signature'] = computeSignature($data, $accessKeySecret);                //给每一位用户发短信                                $result = xml_to_array(https_request($target.http_build_query($data)));             }        }    }                /* 显示Smarty模板 */        assign_query_info();        $smarty->display('aliyun_mns.htm');      }     ?>

团队协作开发

Git

Maven

Jenkins

Sonar

图片 9

  

创建和查看Access Key

YourSignName 和YourSMSTemplateCode
获取在阿里云控制台消息服务。

图片 10

B2C商城项目实战

撸起袖子干实事,项目经验那点事

发表评论

电子邮件地址不会被公开。 必填项已用*标注