中国哲学CTO 之“五罗轻烟掌”

by admin on 2019年3月24日

中国哲学 1

1.点击获取验证码从前的体裁:

      他熟稔电商之道,从零营造 1
号店网站及供应链系统,以技术引领业务发展。他是欧电云创办者韩军,下边将由他分享完美
CTO “飞凤鞭”的经验之谈。

中国哲学 2

 

2.输入正确的手机号后点击获取验证码之后的样式:

率先,从对 CTO 的一个认识误区讲起。

中国哲学 3

不写代码的 CTO 不是一名好 CTO?

3.若是手提式有线电话机号已经被注册的体裁:

前几日国内的 CTO
很多都以技巧出身,那是中华风味。笔者在澳大瓦尔帕莱索待了两年,认识很多外国的
CTO,他们大部分以上都不是技巧出身。

中国哲学 4

那带给本身2个非常的大的思念,CTO 不是技巧出身,你怎么做 CTO
啊?因为在大家中华夏族的思想意识意识中,都是为 CTO 天然是技巧出身。

4.比方一个手提式有线电电话机号一天发送超越二回就提醒不能够发送:

可是外国技术人不这么看,他们以为 CTO 不自然完全要纯技术出身的人才能做。

中国哲学 5

如同近年来我们对 CTO 写不写程序的热议,那取决于你对 CTO
的概念是怎样。对于网络公司,假设 CTO
不写程序,好像是2个叛逆的事,当然这一个还要看您所在公司有多大范围而定。但是作为
CTO,笔者并未写过一行代码。

二:前台的注册页面包车型地铁代码:reg.jsp

对于五个五三个人拉起的创业集团,那这些 CTO
不懂技术,只怕不写代码,应该相比较难。那时谈完美的 CTO
能力模型,作者觉着大约是不大概。

[html] view
plain
 copy

在这几个时期,CTO
要表示如何吗?小编能大胆,小编能做事,所以你们跟着笔者干,没难点。在创业团队中,CTO
要有那种乐善好施的力量。

 

陆仟 人的技能共青团和少先队不要求二个技巧大腕做 CTO

 中国哲学 6中国哲学 7

咱俩做技术出身的,崇拜的是大家的师父,师父一定要比徒弟强,那只是礼仪之邦的历史观思想。在中国,叫匠气也好,工匠精神能够,那是华夏的一种价值观,大家做技术出身的也都以采用着那种一代一代传承的思想模型。

  1. <%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>  
  2. <%@taglib prefix=”s” uri=”/struts-tags”%>  
  3. <%@page import=”cn.gov.csrc.base.action.FindAllData”%>  
  4. <%  
  5.     String path = request.getContextPath();  
  6.     String basePath = request.getScheme() + “://”  
  7.             + request.getServerName() + “:” + request.getServerPort()  
  8.             + path + “/”;  
  9. %>  
  10. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>  
  11. <html>  
  12. <head>  
  13. <base href=”<%=basePath%>”>  
  14. <title>中中原人民共和国证券会证券期货不合法违法举报核心-注册</title>  
  15. <meta http-equiv=”pragma” content=”no-cache”>  
  16. <meta http-equiv=”cache-control” content=”no-cache”>  
  17. <meta http-equiv=”expires” content=”0″>  
  18. <meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>  
  19. <meta http-equiv=”description” content=”This is my page”>  
  20. <link rel=”shortcut icon” type=”image/x-icon” href=”<%=request.getContextPath()%>vicon.ico” />  
  21. <link rel=”stylesheet” type=”text/css”  
  22.     href=”<%=request.getContextPath()%>/css/main.css”>  
  23. <link  
  24.     href=”<%=request.getContextPath()%>/formValidator1/style/validator.css”  
  25.     rel=”stylesheet” type=”text/css” />  
  26. <style type=”text/css”>  
  27. button {  
  28.     background: #F0F0F0 repeat-x;  
  29.     padding-top: 3px;   
  30.     border-top : 1px solid #708090;  
  31.     border-right: 1px solid #708090;  
  32.     border-bottom: 1px solid #708090;  
  33.     border-left: 1px solid #708090;  
  34.     width: auto;  
  35.     line-height: 12pt;   
  36.     font-size : 10pt;  
  37.     cursor: hand;  
  38.     font-size: 10pt;  
  39.     border-top: 1px solid #708090;  
  40. }  
  41. </style>  
  42. <script src=”<%=request.getContextPath()%>/js/jquery-1.7.2.min.js”  
  43.     type=”text/javascript”></script>  
  44. <script src=”<%=request.getContextPath()%>/formValidator1/formValidator-4.0.1.js”  
  45.     type=”text/javascript”></script>  
  46. <script src=”<%=request.getContextPath()%>/formValidator1/formValidatorRegex.js”  
  47.     type=”text/javascript”></script>  
  48. <script src=”<%=request.getContextPath()%>/js/register.js”  
  49.     type=”text/javascript”></script>  
  50. <script src=”<%=request.getContextPath()%>/js/sms.js”  
  51.     type=”text/javascript”></script>  
  52. <script type=”text/javascript”>  
  53.     function changeCheckNum() {  
  54.         var checkNumImage_ = document.getElementById(“checkNumImage”);  
  55.         checkNumImage_.src = “${pageContext.request.contextPath}/image.jsp?timeStamp=”+ new Date().getTime();  
  56.     }  
  57. </script>  
  58. <script type=”text/javascript”>  
  59.     var msg = “${message}”;  
  60.     if (msg != “”) {  
  61.         alert(msg);  
  62.     }  
  63. </script>  
  64. </head>  
  65. <body>  
  66.     <%@include file=”/statics/top.jspf”%>  
  67.     <div class=”center_division”>  
  68.         <div class=”center_body”>  
  69.             <div class=”center_menu”>  
  70.                 <font color=”#000000″>当前岗位:</font>  
  71.                 <a href=”<%=request.getContextPath()%>/statics/reg.jsp”><font color=”#000000″>用户注册</font></a>  
  72.             </div>  
  73.         </div>  
  74.         <div class=”center_body_menu”>  
  75.             <s:form action=”RegisterAction_register” id=”form1″ name=”form1″ method=”post” namespace=”/”>  
  76.                 <table id=”tb”>  
  77.                     <tr>  
  78.                         <td colspan=”3″ align=”center” bgcolor=”#DDDFE1″>举报人基本消息</td>  
  79.                     </tr>  
  80.                     <tr>  
  81.                         <td align=”center” width=”30%”>    <img src=”images/new_reg_xing.gif”/>用户名:</td>  
  82.                         <td align=”center” width=”40%”>  
  83.                             <s:textfield name=”username” id=”username” cssStyle=”width:160px;height:24px;” onblur=”checkusername()”/>  
  84.                         </td>  
  85.                         <td align=”left” width=”30%”>  
  86.                             <span id=”usernameTip”>  
  87.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  88.                                     <s:param>username</s:param>  
  89.                                 </s:fielderror>  
  90.                             </span>  
  91.                         </td>  
  92.                     </tr>  
  93.                     <tr>  
  94.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>登录密码:</td>  
  95.                         <td align=”center” width=”40%”>  
  96.                             <s:password name=”password” id=”password” cssStyle=”width:160px;height:24px;” onblur=”checkpassword()”/>  
  97.                         </td>  
  98.                         <td align=”left” width=”30%”>  
  99.                             <span id=”passwordTip”>  
  100.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  101.                                     <s:param>password</s:param>  
  102.                                 </s:fielderror>  
  103.                             </span>  
  104.                         </td>  
  105.                     </tr>  
  106.                     <tr>  
  107.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>确认密码:</td>  
  108.                         <td align=”center” width=”40%”>  
  109.                             <s:password name=”passwordRepeat” id=”passwordRepeat” cssStyle=”width:160px;height:24px;” onblur=”checkpasswrodb()”/>  
  110.                         </td>  
  111.                         <td align=”left” width=”30%”>  
  112.                             <span id=”passwordRepeatTip”>  
  113.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  114.                                     <s:param>passwordRepeat</s:param>  
  115.                                 </s:fielderror>  
  116.                             </span>  
  117.                         </td>  
  118.                     </tr>  
  119.                     <tr>  
  120.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>姓        名:</td>  
  121.                         <td align=”center” width=”40%”>  
  122.                             <s:textfield name=”nickname” id=”nickname” cssStyle=”width:160px;height:24px;” onblur=”checknickname()”/>  
  123.                         </td>  
  124.                         <td align=”left” width=”30%”>  
  125.                             <span id=”nicknameTip”>  
  126.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  127.                                     <s:param>nickname</s:param>  
  128.                                 </s:fielderror>  
  129.                             </span>  
  130.                         </td>  
  131.                     </tr>  
  132.                     <tr>  
  133.                         <td align=”center” width=”30%”>性        别:</td>  
  134.                         <td align=”center” width=”40%”>  
  135.                             <s:radio list=”#application.dataMap.get(‘10001’)” name=”jbSex” cssStyle=”height:24px;”/>  
  136.                         </td>  
  137.                         <td align=”left” width=”30%”></td>  
  138.                     </tr>  
  139.                     <tr>  
  140.                         <td align=”center” width=”百分之三十”>联系地址:</td>  
  141.                         <td align=”center” width=”40%”>  
  142.                             <s:textfield name=”jbAddress” id=”jbAddress” cssStyle=”width:160px;height:24px;” />  
  143.                         </td>  
  144.                         <td align=”left” width=”30%”>  
  145.                             <span id=”jbAddressTip”>  
  146.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  147.                                     <s:param>jbAddress</s:param>  
  148.                                 </s:fielderror>  
  149.                             </span>  
  150.                         </td>  
  151.                     </tr>  
  152.                     <tr>  
  153.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>联系手提式有线电话机:</td>  
  154.                         <td align=”center” width=”40%”>  
  155.                             <s:textfield id=”jbPhone” name=”jbPhone” cssStyle=”width:160px;height:24px;” onblur=”checkjbPhone()”/>  
  156.                         </td>  
  157.                         <td align=”left” width=”30%”>  
  158.                             <span id=”jbPhoneTip”>  
  159.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  160.                                     <s:param>jbPhone</s:param>  
  161.                                 </s:fielderror>  
  162.                             </span>  
  163.                         </td>  
  164.                     </tr>  
  165.                     <tr>  
  166.                         <td align=”center”><img src=”images/new_reg_xing.gif”/>短信验证码:</td>  
  167.                         <td align=”left” colspan=”2″ style=”padding-left: 112px;”>  
  168.                             <s:textfield id=”SmsCheckCode” name=”SmsCheckCode” cssStyle=”width:80px;height:24px;” maxLength=”6″ />  
  169.                             <span><input type=”button” id=”btnSendCode” name=”btnSendCode” value=”免费获得验证码” onclick=”sendMessage()” /></span>  
  170.                             <span id=”SmsCheckCodeTip”>  
  171.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  172.                                     <s:param>SmsCheckCodeTip</s:param>  
  173.                                 </s:fielderror>  
  174.                             </span>  
  175.                         </td>  
  176.                     </tr>  
  177.                     <tr>  
  178.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>证件类型:</td>  
  179.                         <td align=”center” width=”40%”>  
  180.                         <s:select list=”#application.dataMap.get(‘10002’)” label=””  
  181.                                 headerKey=”” headerValue=”–请选择–” value=”1″ listValue=”value” onchange=”enableCredentialsCode(this)”  
  182.                                 name=”jbCredentialsName” id=”jbCredentialsName” cssStyle=”width:160px;height:24px;”/>  
  183.                         </td>  
  184.                         <td align=”left” width=”30%”>  
  185.                             <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  186.                                 <s:param>jbCredentialsName</s:param>  
  187.                             </s:fielderror>  
  188.                         </td>  
  189.                     </tr>  
  190.                     <tr>  
  191.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>证件号码:</td>  
  192.                         <td align=”center” width=”40%”>  
  193.                             <s:textfield name=”jbCredentialsCode” id=”jbCredentialsCode” cssStyle=”width:160px;height:24px;” onblur=”checkjbCredentialsCode()”/>  
  194.                         </td>  
  195.                         <td align=”left” width=”30%”>  
  196.                             <span id=”jbCredentialsCodeTip”>  
  197.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  198.                                     <s:param>jbCredentialsCode</s:param>  
  199.                                 </s:fielderror>  
  200.                             </span>  
  201.                         </td>  
  202.                     </tr>  
  203.                     <tr>  
  204.                         <td align=”center” width=”3/10″>单位名称:</td>  
  205.                         <td align=”center” width=”40%”>  
  206.                             <s:textfield name=”jbCompanyName” id=”jbCompanyName” cssStyle=”width:160px;height:24px;” />  
  207.                         </td>  
  208.                         <td align=”left” width=”30%”>  
  209.                             <span id=”jbCompanyNameTip”>  
  210.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  211.                                     <s:param>jbCompanyName</s:param>  
  212.                                 </s:fielderror>  
  213.                             </span>  
  214.                         </td>  
  215.                     </tr>  
  216.                     <tr>  
  217.                         <td align=”center” width=”30%”><img src=”images/new_reg_xing.gif”/>所在地区:</td>  
  218.                         <td align=”center” width=”40%”>  
  219.                         <s:select list=”#application.dataMap.get(‘10003’)” label=””  
  220.                                 headerKey=”” headerValue=”–请选择–” listKey=”key”  
  221.                                 cssStyle=”width:160px;height:24px;” listValue=”value” id=”jbSourceArea”  
  222.                                 name=”jbSourceArea” onblur=”checkjbSourceArea()”/>  
  223.                         </td>  
  224.                         <td align=”left” width=”30%”>  
  225.                             <span id=”jbSourceAreaTip”>  
  226.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  227.                                     <s:param>jbSourceArea</s:param>  
  228.                                 </s:fielderror>  
  229.                             </span>  
  230.                         </td>  
  231.                     </tr>  
  232.                     <tr>  
  233.                         <td align=”center” width=”30%”>    <img src=”images/new_reg_xing.gif”/>验证码:</td>  
  234.                         <td align=”center” width=”40%”>  
  235.                             <s:textfield id=”checkNum” name=”checkNum” cssStyle=”width:60px;height:24px;” onblur=”checkNumber()” maxLength=”4″/>  
  236.                             <img id=”checkNumImage” src=”${pageContext.request.contextPath}/image.jsp”>  
  237.                             <a onClick=”changeCheckNum()” title=”点击换一张” style=”cursor:hand;”> 换一张</a>  
  238.                         </td>  
  239.                         <td align=”left” width=”30%”>  
  240.                             <span id=”checkNumTip”>  
  241.                                 <s:fielderror cssStyle=”color:red;padding-left:10px;”>  
  242.                                     <s:param>checkNumTip</s:param>  
  243.                                 </s:fielderror>  
  244.                             </span>  
  245.                         </td>  
  246.                     </tr>  
  247.                     <tr>  
  248.                         <td colspan=”3″ style=”vertical-align: top; padding-top: 5px;padding-bottom: 5px;”>  
  249.                             <input type=”submit” value=”注册” style=”width:50px; height:24px;”/>  
  250.                                 
  251.                             <input type=”reset” value=”重置” style=”width:50px; height:24px;”/>  
  252.                         </td>  
  253.                     </tr>  
  254.                 </table>  
  255.             </s:form>  
  256.         </div>  
  257.     </div>  
  258.     <%@include file=”/common/buttom.jspf”%>  
  259. </body>  
  260. </html>  

一旦你在三个小企,或然说你处在某一个品级,此时可能对你的技术须要格外重要,那也是您要带着同伴们往前走的很关键的要素之一,可是到了别的一个时间和空间下,有恐怕这么些技能就变得不首要。

三:前台获取短信验证码的js:sms.js

比如您是二个带着 1000 人、陆仟 人技术团队的
CTO,你有没有写代码能力,其实是一些都不重庆大学。你将更加多的设想战略,包罗业务的战略性和技艺的韬略,你会设想很多商店怎么进步的标题。

 

中国哲学 8

 

就是你能力强、写出的代码很周详、明白大数据,然而即便您未曾完成以上那个,就很难交差。你带这么大的团队的时候,其实这么些力量反而并不是那么主要。

[javascript] view
plain
 copy

CEO 期待什么的 CTO?

 

骨子里正是大功告成以下几点:

 中国哲学 9中国哲学 10

给业主提供技术需要,用CEO听得懂的言语来维系。
对商厦发展的可行性给出提出,至少是有提议权。尽管你能够携带那几个公司应当怎么提升,你能走到其余人的前方,那你取得的推崇就会愈来愈多,老板也会认为你的职能非常的大,不仅仅只是多个技能工具。 当 老董想到业务的时候,技术团队已经办好准备了,那能够说是 CTO
的参天境界。想要做到那点,首先你要对技术有丰富的握住,你对行业和作业的握住要很精准,因为提前投入是有风险的。

  1. var InterValObj; //timer变量,控制时间  
  2. var count = 120; //间隔函数,1秒执行  
  3. var curCount;//当前剩余秒数  
  4. var code = “”; //验证码  
  5. var codeLength = 6;//验证码长度  
  6.   
  7. function sendMessage() {  
  8.     curCount = count;  
  9.     var jbPhone = $(“#jbPhone”).val();  
  10.     var jbPhoneTip = $(“#jbPhoneTip”).text();  
  11.     if (jbPhone != “”) {  
  12.         if(jbPhoneTip == “√ 该手提式有线话机号码能够登记,输入正确” || jbPhoneTip == “√ 短信验证码已发到您的手提式有线电话机,请查收”){  
  13.             // 发生验证码  
  14.             for ( var i = 0; i < codeLength; i++) {  
  15.                 code += parseInt(Math.random() * 9).toString();  
  16.             }  
  17.             // 设置button效果,开首计时  
  18.             $(“#btnSendCode”).attr(“disabled”, “true”);  
  19.             $(“#btnSendCode”).val(“请在” + curCount + “秒内输入验证码”);  
  20.             InterValObj = window.setInterval(SetRemainTime, 1000); // 运转计时器,1秒执行贰次  
  21.             // 向后台发送处理数据  
  22.             $.ajax({  
  23.                 type: “POST”, // 用POST方式传输  
  24.                 dataType: “text”, // 数据格式:JSON  
  25.                 url: “UserAction_sms.action”, // 指标地址  
  26.                 data: “jbPhone=” + jbPhone +”&code=” + code,  
  27.                 error: function (XMLHttpRequest, textStatus, errorThrown) {   
  28.                       
  29.                 },  
  30.                 success: function (data){   
  31.                     data = parseInt(data, 10);  
  32.                     if(data == 1){  
  33.                         $(“#jbPhoneTip”).html(“<font color=’#339933′>√ 短信验证码已发到您的手机,请查收</font>”);  
  34.                     }else if(data == 0){  
  35.                         $(“#jbPhoneTip”).html(“<font color=’red’>× 短信验证码发送失利,请重新发送</font>”);  
  36.                     }else if(data == 2){  
  37.                         $(“#jbPhoneTip”).html(“<font color=’red’>× 该手提式有线电话机号码明日出殡和埋葬验证码过多</font>”);  
  38.                     }  
  39.                 }  
  40.             });  
  41.         }  
  42.     }else{  
  43.         $(“#jbPhoneTip”).html(“<font color=’red’>× 手提式有线电话机号码不能为空</font>”);  
  44.     }  
  45. }  
  46.   
  47. //timer处理函数  
  48. function SetRemainTime() {  
  49.     if (curCount == 0) {                  
  50.         window.clearInterval(InterValObj);// 甘休计时器  
  51.         $(“#btnSendCode”).removeAttr(“disabled”);// 启用按钮  
  52.         $(“#btnSendCode”).val(“重新发送验证码”);  
  53.         code = “”; // 清除验证码。假使不免除,过时间后,输入收到的验证码还是有效  
  54.     }else {  
  55.         curCount–;  
  56.         $(“#btnSendCode”).val(“请在” + curCount + “秒内输入验证码”);  
  57.     }  
  58. }  
  59.   
  60. $(document).ready(function() {  
  61.     $(“#SmsCheckCode”).blur(function() {  
  62.         var SmsCheckCodeVal = $(“#SmsCheckCode”).val();  
  63.         // 向后台发送处理多少  
  64.         $.ajax({  
  65.             url : “UserAction_checkCode.action”,   
  66.             data : {SmsCheckCode : SmsCheckCodeVal},   
  67.             type : “POST”,   
  68.             dataType : “text”,   
  69.             success : function(data) {  
  70.                 data = parseInt(data, 10);  
  71.                 if (data == 1) {  
  72.                     $(“#SmsCheckCodeTip”).html(“<font color=’#339933′>√ 短信验证码正确,请继续</font>”);  
  73.                 } else {  
  74.                     $(“#SmsCheckCodeTip”).html(“<font color=’red’>× 短信验证码有误,请核实后再一次填写</font>”);  
  75.                 }  
  76.             }  
  77.         });  
  78.     });  
  79. });  

完善 CTO 的“一阳指心法”

四:验证码用户名和手机号码的js:register.js

装有周全 CTO 的“一阳指心法”。不管您是否技巧出身,都得以做技术
CTO。其它,不一样的集团形象和见仁见智的提高思路,对 CTO 的渴求不太一样。

[javascript] view
plain
 copy

中国哲学 11

 

中冲剑:公司背景决定 CTO 定位

 中国哲学 12中国哲学 13

天性:大开大阖,气势雄迈。

  1. //去掉前后空格  
  2. function trim(str) {  
  3.     var strnew = str.replace(/^\s*|\s*$/g, “”);  
  4.     return strnew;  
  5. }  
  6. //用户名  
  7. function checkusername() {  
  8.     var username = document.form1.username.value;  
  9.     if (username == “” || !isNaN(username.charAt(0))) {  
  10.         document.getElementById(“usernameTip”).innerHTML = “<font color=’red’>× 首字母不能够为数字仍然用户名无法为空</font>”;  
  11.         return false;  
  12.     } else if (username.length < 6 || username.length > 30) {  
  13.         document.getElementById(“usernameTip”).innerHTML = “<font color=’red’>× 用户名长度为6-三11位字符</font>”;  
  14.         return false;  
  15.     } else {  
  16.         document.getElementById(“usernameTip”).innerHTML = “<font color=’#339933′>√ 用户名合格</font>”;  
  17.         // 向后台发送处理数量  
  18.         $.ajax({  
  19.             url : “UserAction_checkUserName.action”,// 目的地址  
  20.             data : {username : username}, // 指标参数  
  21.             type : “POST”, // 用POST情势传输  
  22.             dataType : “text”, // 数据格式:text  
  23.             success : function(data) {  
  24.                 data = parseInt(data, 10);  
  25.                 if (data != 0) {  
  26.                     $(“#usernameTip”).html(“<font color=’red’>× 该用户名早已被登记,请重新输入</font>”);  
  27.                 } else {  
  28.                     $(“#usernameTip”).html(“<font color=’#339933′>√ 该用户名能够注册,输入正确</font>”);  
  29.                 }  
  30.             }  
  31.         });  
  32.         return true;  
  33.     }  
  34. }  
  35. // 登录密码  
  36. function checkpassword() {  
  37.     var password = document.form1.password.value;  
  38.     if (password.length < 6 || password.length > 30) {  
  39.         document.getElementById(“passwordTip”).innerHTML = “<font color=’red’>× 密码长度无法小于五个人,大于三十二位</font>”;  
  40.         return false;  
  41.     } else if (!isNaN(password)) {  
  42.         document.getElementById(“passwordTip”).innerHTML = “<font color=’red’>× 密码不能够全是数字</font>”;  
  43.         return false;  
  44.     } else {  
  45.         document.getElementById(“passwordTip”).innerHTML = “<font color=’#339933′>√ 密码合格</font>”;  
  46.         return true;  
  47.     }  
  48. }  
  49. // 确认密码  
  50. function checkpasswrodb() {  
  51.     var password = document.form1.password.value;  
  52.     var passwordRepeat = document.form1.passwordRepeat.value;  
  53.     if (trim(password) != trim(passwordRepeat)) {  
  54.         document.getElementById(“passwordRepeatTip”).innerHTML = “<font color=’red’>× 两回密码输入必须一律</font>”;  
  55.         return false;  
  56.     } else {  
  57.         document.getElementById(“passwordRepeatTip”).innerHTML = “<font color=’#339933′>√ 密码输入一致</font>”;  
  58.         return true;  
  59.     }  
  60. }  
  61. // 姓名  
  62. function checknickname() {  
  63.     var nickname = document.form1.nickname.value;  
  64.     if (trim(nickname) == “”) {  
  65.         document.getElementById(“nicknameTip”).innerHTML = “<font color=’red’>× 姓名无法为空</font>”;  
  66.         return false;  
  67.     } else {  
  68.         document.getElementById(“nicknameTip”).innerHTML = “<font color=’#339933′>√ 姓名输入正确</font>”;  
  69.         return true;  
  70.     }  
  71. }  
  72. // 联系手机(ajax验证手提式有线电话机号码是还是不是已经存在)  
  73. function checkjbPhone() {  
  74.     var jbPhone = document.form1.jbPhone.value;  
  75.     var re= /(^1[3|5|8][0-9]{9}$)/;  
  76.     if (trim(jbPhone) == “”) {  
  77.         document.getElementById(“jbPhoneTip”).innerHTML = “<font color=’red’>× 手提式有线电话机号码不能够为空</font>”;  
  78.         return false;  
  79.     } else if(trim(jbPhone) != “”){  
  80.         if(!re.test(jbPhone)){  
  81.             document.getElementById(“jbPhoneTip”).innerHTML = “<font color=’red’>× 请输入有效的手提式有线电话机号码</font>”;  
  82.             return false;  
  83.         }else{  
  84.             document.getElementById(“jbPhoneTip”).innerHTML = “<font color=’#339933′>√ 手提式有线电话机号码输入正确</font>”;  
  85.             // 向后台发送处理数据  
  86.             $.ajax({  
  87.                 url : “UserAction_checkPhone.action”,// 指标地方  
  88.                 data : {jbPhone : jbPhone}, // 目的参数  
  89.                 type : “POST”, // 用POST格局传输  
  90.                 dataType : “text”, // 数据格式:text  
  91.                 success : function(data) {  
  92.                     data = parseInt(data, 10);  
  93.                     if (data != 0) {  
  94.                         $(“#jbPhoneTip”).html(“<font color=’red’>× 该手提式有线电话机号码已经被注册,请重新输入</font>”);  
  95.                     } else {  
  96.                         $(“#jbPhoneTip”).html(“<font color=’#339933′>√ 该手机号码能够登记,输入正确</font>”);  
  97.                     }  
  98.                 }  
  99.             });  
  100.             return true;  
  101.         }  
  102.     }  
  103.       
  104. }  
  105. // 证件号码  
  106. function checkjbCredentialsCode() {  
  107.     var jbCredentialsCode = document.form1.jbCredentialsCode.value;  
  108.     var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;   
  109.     if (trim(jbCredentialsCode) == “”) {  
  110.         document.getElementById(“jbCredentialsCodeTip”).innerHTML = “<font color=’red’>× 证件号码不可能为空</font>”;  
  111.         return false;  
  112.     } else if(trim(jbCredentialsCode) != “”){  
  113.         if(!reg.test(jbCredentialsCode)){  
  114.             document.getElementById(“jbCredentialsCodeTip”).innerHTML = “<font color=’red’>× 请输入合法的证件号码</font>”;  
  115.             return false;  
  116.         }else{  
  117.             document.getElementById(“jbCredentialsCodeTip”).innerHTML = “<font color=’#339933′>√ 证件号码输入正确</font>”;  
  118.             // 向后台发送处理数量  
  119.             $.ajax({  
  120.                 url : “UserAction_checkCredentialsCode.action”,// 目的地址  
  121.                 data : {jbCredentialsCode : jbCredentialsCode}, // 指标参数  
  122.                 type : “POST”, // 用POST情势传输  
  123.                 dataType : “text”, // 数据格式:text  
  124.                 success : function(data) {  
  125.                     data = parseInt(data, 10);  
  126.                     if (data != 0) {  
  127.                         $(“#jbCredentialsCodeTip”).html(“<font color=’red’>× 该证件号码已经被登记,请重新输入</font>”);  
  128.                     } else {  
  129.                         $(“#jbCredentialsCodeTip”).html(“<font color=’#339933′>√ 该证件号码能够登记,输入正确</font>”);  
  130.                     }  
  131.                 }  
  132.             });  
  133.             return true;  
  134.         }  
  135.     }  
  136. }  
  137. // 所在地点  
  138. function checkjbSourceArea() {  
  139.     var jbSourceArea = document.form1.jbSourceArea.value;  
  140.     if (trim(jbSourceArea) == “”) {  
  141.         document.getElementById(“jbSourceAreaTip”).innerHTML = “<font color=’red’>× 请选择所在地区</font>”;  
  142.         return false;  
  143.     } else {  
  144.         document.getElementById(“jbSourceAreaTip”).innerHTML = “<font color=’#339933′>√ 所在地区采用正确</font>”;  
  145.         return true;  
  146.     }  
  147. }  
  148. // 验证码  
  149. function checkNumber() {  
  150.     var checkNum = document.form1.checkNum.value;  
  151.     if (trim(checkNum) == “”) {  
  152.         document.getElementById(“checkNumTip”).innerHTML = “<font color=’red’>× 验证码不能够为空</font>”;  
  153.         return false;  
  154.     } else {  
  155.         document.getElementById(“checkNumTip”).innerHTML = “<font color=’#339933′>√ 验证码合格</font>”;  
  156.         // 向后台发送处理多少  
  157.         $.ajax({  
  158.             url : “UserAction_checkNum.action”,// 指标地址  
  159.             data : {checkNum : checkNum}, // 指标参数  
  160.             type : “POST”, // 用POST方式传输  
  161.             dataType : “text”, // 数据格式:text  
  162.             success : function(data) {  
  163.                 data = parseInt(data, 10);  
  164.                 if (data != 0) {  
  165.                     $(“#checkNumTip”).html(“<font color=’red’>× 验证码错误</font>”);  
  166.                 } else {  
  167.                     $(“#checkNumTip”).html(“<font color=’#339933′>√ 验证码正确</font>”);  
  168.                 }  
  169.             }  
  170.         });  
  171.         return true;  
  172.     }  
  173. }  

CTO
的定势跟你所处公司的本行背景有关。假使您从事纯技术的缓解方案,比如说你是做大数量的
CTO,也许做网络安全的 CTO。

 

其实那种 CTO
在某种意义上来讲相对简单做,他正是这一个店铺的技巧大牌。因为他提供的是二个技术支持,对
CTO 的技术基础供给比较高。

五:后台action的代码:UserAction.Java(那里只是调用了我们的第2方给提供的客户端代码的发送短信的点子,如若是调用任何的短信平台,能够换到他们的出殡和埋葬短信的主意,那里只是给大家做个参考)

倘使作者去做互联网安全的
CTO,可能就做不佳,因为本人尽管精通网络安全,但是对总体的技艺和商讨没有产业界的片段大牌那么深入。

[java] view
plain
 copy

故而,那么些都要遵照商行领域和性质来看 CTO 的现实定位。

 

关冲剑:CTO 在店铺的中坚作用

 中国哲学 14中国哲学 15

特征:以拙滞古朴大败。

  1. package cn.gov.csrc.base.systemmanager.action;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import java.util.List;  
  6.   
  7. import javax.annotation.Resource;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. import org.apache.log4j.Logger;  
  11. import org.apache.struts2.convention.annotation.Action;  
  12. import org.apache.struts2.convention.annotation.Result;  
  13. import org.apache.struts2.convention.annotation.Results;  
  14. import org.springframework.context.annotation.Scope;  
  15. import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder;  
  16. import org.springframework.security.core.context.SecurityContextHolder;  
  17. import org.springframework.stereotype.Controller;  
  18.   
  19. import cn.gov.csrc.base.action.BaseAction;  
  20. import cn.gov.csrc.base.log.service.LogService;  
  21. import cn.gov.csrc.base.report.util.CommonUtil;  
  22. import cn.gov.csrc.base.report.util.Env;  
  23. import cn.gov.csrc.base.systemmanager.model.Count;  
  24. import cn.gov.csrc.base.systemmanager.model.User;  
  25. import cn.gov.csrc.base.systemmanager.service.CountService;  
  26. import cn.gov.csrc.base.systemmanager.service.UserService;  
  27. import cn.gov.csrc.base.util.WebContextUtil;  
  28.   
  29. import com.sms.webservice.client.SmsReturnObj;  
  30. import com.sms.webservice.client.SmsWebClient;  
  31. /** 
  32.  * File: UserAction.java  
  33.  * Author: jiangsai  
  34.  * Version: 1.1  
  35.  * Date: 04/17/2013  
  36.  * Modify: 
  37.  * Description:用户  
  38.  * Copyright csrc 
  39.  */  
  40. @Controller()  
  41. @Scope(“prototype”)  
  42. @Results({  
  43.         @Result(name = “success”, location = “/statics/report.jsp”),  
  44.         @Result(name = “modifyPassword”, location = “/statics/modifyPassword.jsp”)  
  45.         })  
  46. public class UserAction extends BaseAction<User> {  
  47.       
  48.     private static final long serialVersionUID = 1214696686677691191L;  
  49.     private static Logger log = Logger.getLogger(UserAction.class);  
  50.     private static final String url = Env.getInstance().getProperty(“url”);  
  51.     private static final String userName = Env.getInstance().getProperty(  
  52.             “username”);  
  53.     private static final String passWord = Env.getInstance().getProperty(  
  54.             “password”);  
  55.   
  56.     private Integer id;  
  57.   
  58.     private String username;// 用户名  
  59.   
  60.     private String password;// 密码  
  61.   
  62.     private String passwordRepeat;// 确认密码  
  63.       
  64.     private String jbPhone;//手提式有线话机号码  
  65.       
  66.     private String jbCredentialsCode;//身份证号码  
  67.       
  68.     private String checkNum;//图片验证码  
  69.   
  70.     private String newPassword;  
  71.   
  72.     private String confirmPassword;  
  73.   
  74.     private Integer[] ownRoleIds;  
  75.   
  76.     private UserService userService;  
  77.       
  78.     private CountService countService;  
  79.       
  80.     private LogService logService;  
  81.       
  82.     private Count count = new Count();  
  83.   
  84.     public Integer getId() {  
  85.         return id;  
  86.     }  
  87.   
  88.     public void setId(Integer id) {  
  89.         this.id = id;  
  90.     }  
  91.   
  92.     public String getUsername() {  
  93.         return username;  
  94.     }  
  95.   
  96.     public void setUsername(String username) {  
  97.         this.username = username;  
  98.     }  
  99.   
  100.     public String getPassword() {  
  101.         return password;  
  102.     }  
  103.   
  104.     public void setPassword(String password) {  
  105.         this.password = password;  
  106.     }  
  107.   
  108.     public String getPasswordRepeat() {  
  109.         return passwordRepeat;  
  110.     }  
  111.   
  112.     public void setPasswordRepeat(String passwordRepeat) {  
  113.         this.passwordRepeat = passwordRepeat;  
  114.     }  
  115.       
  116.     public String getJbPhone() {  
  117.         return jbPhone;  
  118.     }  
  119.   
  120.     public void setJbPhone(String jbPhone) {  
  121.         this.jbPhone = jbPhone;  
  122.     }  
  123.       
  124.     public String getJbCredentialsCode() {  
  125.         return jbCredentialsCode;  
  126.     }  
  127.   
  128.     public void setJbCredentialsCode(String jbCredentialsCode) {  
  129.         this.jbCredentialsCode = jbCredentialsCode;  
  130.     }  
  131.   
  132.     public String getCheckNum() {  
  133.         return checkNum;  
  134.     }  
  135.   
  136.     public void setCheckNum(String checkNum) {  
  137.         this.checkNum = checkNum;  
  138.     }  
  139.   
  140.     public Integer[] getOwnRoleIds() {  
  141.         return ownRoleIds;  
  142.     }  
  143.   
  144.     public void setOwnRoleIds(Integer[] ownRoleIds) {  
  145.         this.ownRoleIds = ownRoleIds;  
  146.     }  
  147.   
  148.     public String getNewPassword() {  
  149.         return newPassword;  
  150.     }  
  151.   
  152.     public void setNewPassword(String newPassword) {  
  153.         this.newPassword = newPassword;  
  154.     }  
  155.   
  156.     public String getConfirmPassword() {  
  157.         return confirmPassword;  
  158.     }  
  159.   
  160.     public void setConfirmPassword(String confirmPassword) {  
  161.         this.confirmPassword = confirmPassword;  
  162.     }  
  163.   
  164.     @Resource  
  165.     public void setUserService(UserService userService) {  
  166.         this.userService = userService;  
  167.     }  
  168.   
  169.     public UserService getUserService() {  
  170.         return userService;  
  171.     }  
  172.   
  173.     @Resource  
  174.     public void setCountService(CountService countService) {  
  175.         this.countService = countService;  
  176.     }  
  177.   
  178.     public CountService getCountService() {  
  179.         return countService;  
  180.     }  
  181.       
  182.     public LogService getLogService() {  
  183.         return logService;  
  184.     }  
  185.   
  186.     @Resource  
  187.     public void setLogService(LogService logService) {  
  188.         this.logService = logService;  
  189.     }  
  190.   
  191.     public Count getCount() {  
  192.         return count;  
  193.     }  
  194.   
  195.     public void setCount(Count count) {  
  196.         this.count = count;  
  197.     }  
  198.   
  199.     public void prepareToUpdatePage() {  
  200.         model = userService.getEntity(id);  
  201.     }  
  202.       
  203.     /** 
  204.      * 用户登录 
  205.      *  
  206.      * @return success 
  207.      */  
  208.     @Action(value = “UserAction_login”)  
  209.     public String login() {  
  210.         Object u = SecurityContextHolder.getContext().getAuthentication().getPrincipal();  
  211.         if (u instanceof User && u != null) {  
  212.             WebContextUtil.getSession().setAttribute(“user”, u);  
  213.             User user = (User)u;  
  214.             //使用数据库表TBL_BASE_LOG添加用户登录的日志信息  
  215.             logService.saveTblBaseLog(WebContextUtil.getRequest(),”当前操作人【”+user.getNickname()+”】登录系统”);  
  216.         } else {  
  217.             // 幸免绕过登陆页面一直执行Action  
  218.             return “login”;  
  219.         }  
  220.         return SUCCESS;  
  221.     }  
  222.       
  223.     /** 
  224.      * 用户密码更新 
  225.      */  
  226.     @Action(value = “UserAction_updateUser”)  
  227.     public String updateUser() {  
  228.         if (!newPassword.equals(confirmPassword)) {  
  229.             this.setMessage(“新密码与认可密码不平等!”);  
  230.             return “modifyPassword”;  
  231.         }  
  232.         User u = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();  
  233.         MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder(“md5”);  
  234.         String psw = encoder.encodePassword(newPassword, null);  
  235.         userService.modifyPassword(u, psw);  
  236.         this.setMessage(“保存成功!”);  
  237.         return “modifyPassword”;  
  238.     }  
  239.       
  240.     /** 
  241.      * 验证用户名是不是存在 
  242.      *  
  243.      * @throws Exception 
  244.      */  
  245.     @Action(value = “UserAction_checkUserName”)  
  246.     public void checkUserName(){  
  247.         String result = “0”;  
  248.         try {  
  249.             List<User> list = userService.findUserByUserName(username);  
  250.             if(list != null && list.size() > 0){  
  251.                 result = “1”;  
  252.             }else{  
  253.                 result = “0”;  
  254.             }  
  255.             HttpServletResponse response = WebContextUtil.getResponse();  
  256.             response.setContentType(“application/json;charset=UTF-8”);  
  257.             response.setHeader(“Cache-Control”, “no-cache”);  
  258.             PrintWriter out = response.getWriter();  
  259.             out.write(result.toString());  
  260.         } catch (IOException e) {  
  261.             throw new RuntimeException(“验证身份证编号出错”, e);  
  262.         }  
  263.     }  
  264.   
  265.     /** 
  266.      * 验证原始密码是或不是科学 
  267.      *  
  268.      * @throws Exception 
  269.      */  
  270.     @Action(value = “UserAction_checkPassWord”)  
  271.     public void checkPassWord() throws Exception {  
  272.         String result = “0”;  
  273.         MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder(“md5”);  
  274.         String pwd = encoder.encodePassword(password, null);  
  275.         List<User> user = userService.findUserByPassWord(pwd);  
  276.         if (user != null && user.size() > 0) {  
  277.             result = “1”;  
  278.         }else{  
  279.             result = “0”;  
  280.         }  
  281.         HttpServletResponse response = WebContextUtil.getResponse();  
  282.         response.setContentType(“application/json;charset=UTF-8”);  
  283.         response.setHeader(“Cache-Control”, “no-cache”);  
  284.         PrintWriter out = response.getWriter();  
  285.         out.write(result.toString());  
  286.     }  
  287.       
  288.     /** 
  289.      * 验证手提式无线电话机号码是还是不是存在 
  290.      */  
  291.     @Action(value = “UserAction_checkPhone”)  
  292.     public void checkPhone(){  
  293.         String result = “0”;  
  294.         try {  
  295.             List<User> list = userService.findUserByPhone(jbPhone);  
  296.             if(list != null && list.size() > 0){  
  297.                 result = “1”;  
  298.             }else{  
  299.                 result = “0”;  
  300.             }  
  301.             HttpServletResponse response = WebContextUtil.getResponse();  
  302.             response.setContentType(“application/json;charset=UTF-8”);  
  303.             response.setHeader(“Cache-Control”, “no-cache”);  
  304.             PrintWriter out = response.getWriter();  
  305.             out.write(result.toString());  
  306.         } catch (IOException e) {  
  307.             throw new RuntimeException(“验证手提式无线电话机号码出错”, e);  
  308.         }  
  309.     }  
  310.       
  311.     /** 
  312.      * 验证身份证编号是还是不是存在 
  313.      */  
  314.     @Action(value = “UserAction_checkCredentialsCode”)  
  315.     public void checkCredentialsCode(){  
  316.         String result = “0”;  
  317.         try {  
  318.             List<User> list = userService.findUserByCredentialsCode(jbCredentialsCode);  
  319.             if(list != null && list.size() > 0){  
  320.                 result = “1”;  
  321.             }else{  
  322.                 result = “0”;  
  323.             }  
  324.             HttpServletResponse response = WebContextUtil.getResponse();  
  325.             response.setContentType(“application/json;charset=UTF-8”);  
  326.             response.setHeader(“Cache-Control”, “no-cache”);  
  327.             PrintWriter out = response.getWriter();  
  328.             out.write(result.toString());  
  329.         } catch (IOException e) {  
  330.             throw new RuntimeException(“验证身份证号码出错”, e);  
  331.         }  
  332.     }  
  333.       
  334.     /** 
  335.      * 验证验证码是还是不是科学 
  336.      */  
  337.     @Action(value = “UserAction_checkNum”)  
  338.     public void checkNum(){  
  339.         try {  
  340.             String result = “0”;  
  341.             String check_number_key = (String)WebContextUtil.getSession().getAttribute(“CHECK_NUMBER_KEY”);  
  342.             if(checkNum != check_number_key && !checkNum.equals(check_number_key)){  
  343.                 result = “1”;  
  344.             }else{  
  345.                 result = “0”;  
  346.             }  
  347.             HttpServletResponse response = WebContextUtil.getResponse();  
  348.             response.setContentType(“application/json;charset=UTF-8”);  
  349.             response.setHeader(“Cache-Control”, “no-cache”);  
  350.             PrintWriter out = response.getWriter();  
  351.             out.write(result.toString());  
  352.         } catch (IOException e) {  
  353.             throw new RuntimeException(“验证验证码出错”, e);  
  354.         }  
  355.     }  
  356.       
  357.     /** 
  358.      * 验证短信验证码是或不是科学 
  359.      *  
  360.      * @throws Exception 
  361.      */  
  362.     @Action(value = “UserAction_checkCode”)  
  363.     public void checkCode() throws Exception{  
  364.         String result = “0”;  
  365.         /** 获取手动输入的无绳电话机短信验证码 */  
  366.         String SmsCheckCode = WebContextUtil.getRequest().getParameter(“SmsCheckCode”);  
  367.         /** 获取session中存放的无绳电话机短信验证码 */  
  368.         String code = (String) WebContextUtil.getSession().getAttribute(“code”);  
  369.         try {  
  370.             if(SmsCheckCode != code && !SmsCheckCode.equals(code)){  
  371.                 result = “0”;  
  372.             }else{  
  373.                 result = “1”;  
  374.             }  
  375.         } catch (Exception e) {  
  376.             throw new RuntimeException(“短信验证退步”, e);  
  377.         }  
  378.         HttpServletResponse response = WebContextUtil.getResponse();  
  379.         response.setContentType(“application/json;charset=UTF-8”);  
  380.         response.setHeader(“Cache-Control”, “no-cache”);  
  381.         PrintWriter out = response.getWriter();  
  382.         out.write(result.toString());  
  383.     }  
  384.       
  385.     /** 
  386.      * 验证手提式有线电话机短信是或不是发送成功 
  387.      *  
  388.      * @throws Exception 
  389.      */  
  390.     @Action(value = “UserAction_sms”)  
  391.     public void sms() throws Exception {  
  392.         String result = “0”;  
  393.         /** 手提式有线电话机号码 */  
  394.         String jbPhone = WebContextUtil.getRequest().getParameter(“jbPhone”);  
  395.         /** 短信验证码 */  
  396.         String code = WebContextUtil.getRequest().getParameter(“code”);  
  397.         /** 短信验证码存入session(session的暗许失效时间二十六秒钟) */  
  398.         WebContextUtil.getSession().setAttribute(“code”, code);  
  399.         /** 怎么着初阶化失利重回 */  
  400.         if(!initClient()) {  
  401.             return;  
  402.         }  
  403.         /** 单个手提式有线电话机号发送短信的点子的参数准备 */  
  404.         // 手提式有线电话机号码  
  405.         String mobilephone = jbPhone;  
  406.         // 短信内容+随机生成的6位短信验证码  
  407.         String content = “依照中中原人民共和国中国证券监督管理委员会举报中央委托,特向您发送此条短信。您的登记验证码为:” + code;  
  408.         // 操效率户的ID  
  409.         Integer operId = Integer.parseInt(Env.getInstance().getProperty(“operId”));  
  410.         // 定时发送的的出殡时间(缺省为空,假诺即时发送,填空)  
  411.         String tosend_time = “”;  
  412.         // 应用系列的短信ID,用户查询该短信的状态报告(缺省为0,即不需询问短信的情况报告)  
  413.         int sms_id = 0;  
  414.         // 黑名单过滤(0:不必要黑名单过滤,1:要求黑名单过滤,缺省为0)  
  415.         short backlist_filter = 0;  
  416.         // 禁止语过滤(0:不供给禁止语过滤,1:供给禁止语过滤,缺省为0)  
  417.         short fbdword_filter = 0;  
  418.         // 优先级(值越大优先级越高,0:普通,1,:优先,2:最高,缺省为0)  
  419.         short priority = 0;  
  420.         // 短信有效时间(格式为:YYYY-MM-DD HH:mm:ss如今为空)  
  421.         String valid_time = “”;  
  422.         /** 发送短信以前先总结一个早就发送的短信条数 */  
  423.         int messageCount = countService.findAllRecord(mobilephone);  
  424.         log.info(“已发短信条数为:” +messageCount);  
  425.         if(messageCount < 5){  
  426.             /** 单个手提式无线电话机号发送短信 */  
  427.             if (!sendMessage(mobilephone, content, operId, tosend_time, sms_id,  
  428.                     backlist_filter, fbdword_filter, priority, valid_time)) {  
  429.                 result = “0”;// 失败  
  430.             } else {  
  431.                 result = “1”;// 成功  
  432.                 /** 发送一条短信,记录一条短信记录,为了便于之后的总结短信发送次数 */  
  433.                 count.setPhone(mobilephone);// 手提式有线电话机号码  
  434.                 count.setCaptcha(code);// 短信验证码  
  435.                 count.setSendTime(CommonUtil.getNowDate());// 短信发送时间  
  436.                 if(count != null){  
  437.                     countService.saveEntity(count);  
  438.                     log.info(“短信验证码发送记录封存成功!”);  
  439.                 }  
  440.             }  
  441.         }else{  
  442.             result = “2”;//3个手提式有线电话机号码最多发送5条短信验证码  
  443.             log.info(“该手提式有线电电话机号码前几日出殡验证码过多”);  
  444.         }  
  445.         HttpServletResponse response = WebContextUtil.getResponse();  
  446.         response.setContentType(“application/json;charset=UTF-8”);  
  447.         response.setHeader(“Cache-Control”, “no-cache”);  
  448.         PrintWriter out = response.getWriter();  
  449.         out.write(result.toString());  
  450.     }  
  451.       
  452.     /** 
  453.      * WebService客户端初步化 
  454.      *  
  455.      */  
  456.     public static boolean initClient() {  
  457.         /** 
  458.          * 判断客户端是否早已初阶化 
  459.          */  
  460.         if (!SmsWebClient.enable()) {  
  461.             int ret = 0;  
  462.             try {  
  463.                 ret = SmsWebClient.init(url, userName, passWord);  
  464.                 if (ret == -1 || !SmsWebClient.enable()) {  
  465.                     log.info(“短信平台接口开始化退步!”);  
  466.                     return false;  
  467.                 }  
  468.                 log.info(“短信平台接口开始化成功!” + ret + “—–“);  
  469.             } catch (Exception ex) {  
  470.                 ex.printStackTrace();  
  471.                 log.info(“短信平台接口早先化进程中国和澳洲常!”);  
  472.             }  
  473.         }  
  474.         return true;  
  475.     }  
  476.       
  477.     /** 
  478.      * 单个手机号码发送 
  479.      *  
  480.      * @param mobilephone 
  481.      *            手机号 
  482.      * @param content 
  483.      *            短信内容 
  484.      * @param operId 
  485.      *            操成效户的ID 
  486.      * @param tosend_time 
  487.      *            定时发送的发送时间 
  488.      * @param sms_id 
  489.      *            应用系统的短信ID 
  490.      * @param backlist_filter 
  491.      *            黑名单过滤 
  492.      * @param fbdword_filter 
  493.      *            禁止语过滤 
  494.      * @param priority 
  495.      *            优先级 
  496.      * @param valid_time 
  497.      *            短信有效时间 
  498.      */  
  499.     public static boolean sendMessage(java.lang.String mobilephone,  
  500.             java.lang.String content, int operId, java.lang.String tosend_time,  
  501.             int sms_id, short backlist_filter, short fbdword_filter,  
  502.             short priority, java.lang.String valid_time) {  
  503.         // 单个手提式有线电话机号码发送  
  504.         try {  
  505.             SmsReturnObj retObj = SmsWebClient.webSendMessage(mobilephone,  
  506.                     content, operId, tosend_time, sms_id, backlist_filter,  
  507.                     fbdword_filter, priority, valid_time);  
  508.             if (retObj.getReturnCode() != 1) {  
  509.                 log.info(“短信发送战败,原因为:” + retObj.getReturnMsg());  
  510.                 return false;  
  511.             } else {  
  512.                 log.info(“短信发送成功!重返结果为:” + retObj.getReturnMsg());  
  513.                 return true;  
  514.             }  
  515.         } catch (Exception ex) {  
  516.             ex.printStackTrace();  
  517.             log.info(“短信发送进程发生尤其!”);  
  518.         }  
  519.         return true;  
  520.     }  
  521.       
  522.       
  523. }  

一般来讲,公司的 首席执行官 只怕是董事长对技术是不打听的,所以 CTO
不要期待她们知晓您。

六:具体的短信接口demo到那里下,那里你下载了也无法得逞的出殡短信,因为你须求求短信平台湾商人给你提供:url,userName,passWord,operId,以及短信平台湾商人还要绑定你的外网ip地址,那样才能确实的出殡短信。

自作者做过不少集团的 CTO,发现即便是技巧出身的
老总,随着时光的变化,他对你的明亮也会爆发变化。

Demo下载链接: http://pan.baidu.com/s/1qWt1Qdm

就如自个儿的角色变了,固然有时笔者能掌握技术,但是各样人都有协调的下压力。各自的下压力不均等,造成没有时间、没有生气去领会,那是很健康的。

用作业主来讲,他不自然想通晓你,可能说他有史以来没有时间去通晓您。

一旦您老董是职业人出身,那她对技术的了解就更差异了,他认为这几个技能上的工作正是随手拈来,他会想自个儿早就花了这么多钱请您来,你是大拿,你就应该帮本身把那个搞好。

那事实上是 CTO
格外关键的课题,因为在别的四个集团,某种程度上你在这些店铺里是表示技术集团去与业主调换。

说间接点就是首席营业官娘的视角就控制了你那些团体现在的走向,你团队的力量、团队获得的能源,大概说团队在店堂的地位是由
CTO 决定的。

CTO
的本来面目正是焚薮而田业主对技术的盼望。每一个业主对技术的期望是分裂的,当然首先个你早晚是要管理控制她的指望,不可能让这些期待无疆界。

其次个,你要缓解业主的难点。他把你招进来,就是要化解技术上的题材。

作为
CTO,你的做事骨干就是化解公司的技巧难点,要明了公司在技巧上边的最大难点是何等,老董对您的期待又是何许。

愿意有一部分是显性的,例如主任告诉你,你要求帮作者消除哪些难点,然则她告知你的标题不自然是真的的难点。

以此有点像Jobs所说的,顾客是不晓得他的急需的,你不用以为老总对她的技术需要很明亮,他或者并不清楚。

那就需求 CTO
去搞通晓老总的供给,去探听她最近的情景、公司的情景、客户的渴求、蒙受的劳碌等。

然后,你才能列出公司面临的有何难题,小编使用什么样方法来化解这个困难。

你优先解决的难点是怎么样?那正是近些年的题材。很多 CTO
犯了贰个不小的荒唐,便是只关切现在的技艺可行性,没有缓解集团最近的技术必要,那是没有用的。

因为有着的蜜月期都以极短的,你不要想着主管对您后天就是热爱,就是要给你财富,其实并不会。

你要想通晓在这些蜜月期快停止的时候,要交出一个什么的成绩单,来使你所在商户的业主和首席营业官团队来支撑您往前走,那是很关键的。

少冲剑:CTO 指点团队要因势而论

本性:轻灵飞快。

怎样的公司氛围是最佳的?是一团和气的空气最棒,依旧说有战争力的空气最棒?

相比较之下,当然是有战争力的氛围更好,不过如此会少一些人情味。

还有很要紧的一件业务,CTO
要一口咬住不放技术的方针和商业价值是还是不是相同。借使你在二个小商店,想花好多的基金去做高并发,大概双活乃至异地多活。

说句实话,真的是十二分费劲的事,技术资金非常大。借使您的裁定跟商业价值不均等,那你势必不会马到功成。

再有便是对技术可行性的把握了,对 CTO 的前途发展是有震慑的。

举三个很非凡的事例,国内广大工程师是程序员出身,笔者擅长什么,最后就把擅长的技巧带到了合营社,那种景观俯拾正是。

不过这种意况对合营社并不会带来最大的补益,甚至某种程度上,会阻拦公司运作和发展。

少泽剑:新时期的 CTO 要纯熟集团事情

特点:忽来忽去,变化精微。

一旦业主找的 CTO
都以不懂业务的,你有些懂一些,你就很有优势。借使我们都很懂业务,你或多或少都不懂,那你就很惊险。

从总体方一直看,以后对 CTO 在工作方面包车型大巴供给是越来越高的。

中国哲学 16

十几年前,作者记念当时商户招 CTO
的时候,基本是不关切她的政工能力,只关切他的技艺、管理过几个人的团体、做过什么的档次等。

但前日不是那种情景了,有的公司招聘了不懂业务的
CTO,最终都不太成功。为何吧?因为这几个 CTO
所关怀的点和全数公司关怀的点并未交集。

有一对铺面包车型地铁政工格外复杂,那么当您去做政工相对相比较复杂的3个合作社的 CTO
的时候,倘使你未曾章程在长期内去弥补短板的话,对您在铺子的地位,甚至对你一切集团生涯都万分不好。

作为技术的参天长官来讲,一定要深远认识到事情是决定一切的。所以每多个CTO
都要去增强自个儿的事体能力,假使这些业务是你的短板,那您最棒去一些政工绝对较简单的商号。

少商剑:CTO 要求必备技术前瞻性

特点:剑路雄劲,颇有天翻地覆,风雨大至之势。

后日最盛行的技巧不对等明天还会大行其道,技术永远地处一个变动的进度。对于技术的预感性,要求CTO 持续关切技术的提升,那是反映价值的加分项。

自作者对广大 CTO
的三个忠告是你要使用的某项技术,不自然是您欣赏的技艺,可能是你擅长的技术。

洋法国人喜欢用自个儿善于的技能,大概是爱护的技能,其实从店铺的角度和技巧发展的角度来看,适合您集团发展和眼下应用的技术就能够了。

中国哲学 17

本身认为 CTO
要能够把握行业的可行性,还有对这么些圈子展开深切钻研,达到专家级别。你对某三个技艺的知晓越深,把握行业的趋势才可能对工作更有帮衬。

感知业务就是 CTO
一定要感知你的主顾,要跟你的买主有直接的关联,至少一年一到一次,这点很重大。

商阳剑:CTO 的联手职责

特征:巧妙灵活,难以捉摸。

借使说 CTO
能够形成为运行、市集、销售、开发等化解难题,那开发公司就大致多了。

中国哲学 18

从运行层面来说,就是技术对事情的支撑,对系统的支撑,与运转的联合署名。与市面包车型大巴联合署名呈现在让集镇备感到您的技能盈解痉平是天经地义的,集团是有前景的,能够招揽更加多的人投入集团。

二个健全的 CTO,要是在工作上的盘算能够比 首席执行官提前7个月的话,那就一定成功了,不然对于 主任向你提出的过多题目,你从未缓解方案以来,怎么去管理 首席执行官?

得逞的 CTO 应该幸免的三大误区

不要做“农民”

实在,大家做技术的都乐于做“农民”,那是技术人士的个性。什么叫“农民”气质呢?就是怎么样事都甘愿自个儿干,“农民”就是自给自足嘛。

不过时间和空间在变更,原来洋洋奥秘的技艺,今后并不高深了,变成2个很宽泛的技术,你就从未有过必要去干了,而且你自身去干的基金非常高。

要去掉匠气

大家搞技术的人有时候欣赏比技巧,作者要比你牛,那几个实际是一种原始的好胜心,笔者觉着那是三个技术人士格外好的为人,但是你当作三个CTO 今后,就要从事商业店的总体运转来看那些难点。

您要勘验很多上边,例如你要考虑把资源位居哪一方面,哪一部分是笔者要主要投入的,哪部分是自个儿能够稍微放一放的,哪一部分是自家得以引入外界财富来促成的。

落得业务指标才是精神

神跡,大家走着走着就淡忘本人的初心了。作为 CTO
来讲,你的主干照旧高达业务目的,用技术的手段完结业务指标,用最低的资金财产、最快的快慢,持续带来新的功用。那才是你的骨干工作。

最后,小编觉着 CTO
要把想法提炼出来,形成本人的一套系统。有了这几个系统之后,在行使进程中再开始展览考订和调教,完善协调的那套系统,那是关键所在。

2018年,雄丁香园 CTO 离职,引发了行业热点商讨,CTO
到底应不该写代码?智者见智,各抒所见,欢迎各位网络朋友加入投票调查,并刊登本人的看法!

中国哲学 19

韩军

欧电云创办人

曾任1号店CTO、51job网站技术总管。在互连网技术领域拥有盛誉,是跨多个世界的消除方案专家,个人拥有众多创新技术专利。

 

 

中国哲学 20

 

发表评论

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

网站地图xml地图