<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6264b2674c65f41259ef6cc7/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6264b2674c65f41259ef6cc7/bg1.jpg"></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6264b2674c65f41259ef6cc7/bg2.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">前言<span class="ff2"> </span></div><div class="t m0 x2 h3 y3 ff1 fs1 fc1 sc0 ls0 ws0">《<span class="ff2">Java<span class="_ _0"> </span></span>开发手册》<span class="_ _1"></span>是阿里巴巴集团技术团队的集<span class="_ _2"></span>体智慧结晶和经验总结,<span class="_ _1"></span>经历了多次大规模一</div><div class="t m0 x3 h3 y4 ff1 fs1 fc1 sc0 ls0 ws0">线实战的检验及不断完善,<span class="_ _3"></span>公开到业界后,<span class="_ _3"></span>众多社区开发者踊跃参与,<span class="_ _3"></span>共同打磨完善,<span class="_ _3"></span>系统化地整理</div><div class="t m0 x3 h3 y5 ff1 fs1 fc1 sc0 ls0 ws0">成册,<span class="_ _4"></span>当前的版本是泰山版。<span class="_ _4"></span>现代软件行业的高速发展对开发者的综合素质要求越来越高,<span class="_ _4"></span>因为不仅</div><div class="t m0 x3 h3 y6 ff1 fs1 fc1 sc0 ls0 ws0">是编程知识点,<span class="_ _4"></span>其它维度的知识点也会影响到软件的最终交付质量。<span class="_ _4"></span>比如:<span class="_ _4"></span>数据库的表结构和索引设</div><div class="t m0 x3 h3 y7 ff1 fs1 fc1 sc0 ls0 ws0">计缺陷可能带来软件上的架构缺陷或性能风险;<span class="_ _5"></span>工程结构混乱导致后续维护艰难;<span class="_ _5"></span>没有鉴权的漏洞代</div><div class="t m0 x3 h3 y8 ff1 fs1 fc1 sc0 ls0 ws0">码易被黑客攻击等等。所以本手册以<span class="_"> </span><span class="ff2">Ja<span class="_ _6"></span>va<span class="_ _0"> </span></span>开发<span class="_ _1"></span>者为中心视角,划分为<span class="ff3">编程规约、异常日志<span class="_ _6"></span>、单元测</span></div><div class="t m0 x3 h3 y9 ff3 fs1 fc1 sc0 ls0 ws0">试、<span class="_ _2"></span>安全规约、<span class="ff4">M<span class="_ _1"></span>y<span class="_ _6"></span>SQL<span class="_ _0"> </span><span class="ff3">数据库、<span class="_ _1"></span>工程结构、设计规约<span class="ff1">七个维度,<span class="_ _1"></span>再根据内容特征,细分成若干二级</span></span></span></div><div class="t m0 x3 h3 ya ff1 fs1 fc1 sc0 ls0 ws0">子目录。<span class="_ _3"></span>另外,<span class="_ _1"></span>依据约束力强弱及故障敏感性,<span class="_ _1"></span>规约依次分为强制、<span class="_ _3"></span>推荐、<span class="_ _1"></span>参考三大类。<span class="_ _1"></span>在延伸信息</div><div class="t m0 x3 h3 yb ff1 fs1 fc1 sc0 ls0 ws0">中<span class="ls1">,“<span class="_ _7"></span></span><span class="fc2">说明</span>”<span class="_ _1"></span>对规约做了适当扩展和解释;<span class="_ _3"></span>“<span class="fc3 ls2">正例</span>”<span class="_ _3"></span>提倡<span class="_ _6"></span>什么样的编码和实现方式;<span class="_ _3"></span>“<span class="fc4">反例</span>”<span class="_ _1"></span>说明<span class="_ _6"></span>需</div><div class="t m0 x3 h3 yc ff1 fs1 fc1 sc0 ls0 ws0">要提防的雷区,以及真实的错误案例。<span class="ff2"> </span></div><div class="t m0 x4 h3 yd ff1 fs1 fc1 sc0 ls0 ws0">手册的愿景是<span class="ff3">码出高效,码出质量</span>。现代软件架构的复杂性需要协同开发完成,如何高效地协</div><div class="t m0 x3 h3 ye ff1 fs1 fc1 sc0 ls0 ws0">同呢?无规矩不成方圆,<span class="_ _3"></span>无规范难以协同,<span class="_ _3"></span>比如,<span class="_ _4"></span>制订交通法规表面上是要限制行车权,<span class="_ _1"></span>实际上是保</div><div class="t m0 x3 h3 yf ff1 fs1 fc1 sc0 ls0 ws0">障公众的人身安全,<span class="_ _3"></span>试想如果没有限速,<span class="_ _3"></span>没有红绿灯,<span class="_ _4"></span>谁还敢上路行驶<span class="_ _6"></span>?对软件来说,<span class="_ _3"></span>适当的规范和</div><div class="t m0 x3 h3 y10 ff1 fs1 fc1 sc0 ls0 ws0">标准绝不是消灭代码内容的创造性、<span class="_ _4"></span>优雅性,<span class="_ _4"></span>而是限制过度个性化,<span class="_ _4"></span>以一种普遍认可的统一方式一起</div><div class="t m0 x3 h3 y11 ff1 fs1 fc1 sc0 ls0 ws0">做事,<span class="_ _3"></span>提升协作效率,<span class="_ _4"></span>降低沟通成本<span class="_ _6"></span>。<span class="_ _4"></span>代码的字里行间<span class="_ _6"></span>流淌的是软件系统的血液,<span class="_ _3"></span>质量的提升是尽可</div><div class="t m0 x3 h3 y12 ff1 fs1 fc1 sc0 ls0 ws0">能少踩坑,杜绝踩重复的坑,切实提升系统稳定性,码出质量。<span class="ff2"> </span></div><div class="t m0 x4 h3 y13 ff1 fs1 fc1 sc0 ls0 ws0">我们已经在<span class="_"> </span><span class="ff2 ls3">2017<span class="_ _0"> </span></span>杭州云栖大会上发布了配套的<span class="_ _0"> </span><span class="ff2 fc5">Java<span class="_ _0"> </span><span class="ff1">开发规约<span class="_"> </span></span>I<span class="ls4">DE<span class="_ _0"> </span></span><span class="ff1">插件<span class="fc6">,<span class="_ _8"></span>下载量达到<span class="_"> </span><span class="ff2">152<span class="_ _0"> </span></span>万人</span></span></span></div><div class="t m0 x3 h3 y14 ff1 fs1 fc6 sc0 ls0 ws0">次,<span class="fc1">阿里云效也集成了代码规约扫描引擎。次年,发布<span class="_"> </span><span class="ff2">36<span class="_ _0"> </span></span>万字的配套详解图书</span>《码出高效》,本书</div><div class="t m0 x3 h3 y15 ff1 fs1 fc6 sc0 ls0 ws0">秉持“图胜于表,表胜于言”的理念,深入浅出地将计算机基础、面向对象思想、<span class="ff2">JV<span class="_ _6"></span>M<span class="_ _0"> </span></span>探源、数<span class="_ _1"></span>据</div><div class="t m0 x3 h3 y16 ff1 fs1 fc6 sc0 ls0 ws0">结构与集合、<span class="_ _3"></span>并发与多线程、<span class="_ _1"></span>单元测试等知识客观、<span class="_ _3"></span>立体地呈现出来。<span class="_ _1"></span>紧扣学以致用、<span class="_ _3"></span>学以精进的目</div><div class="t m0 x3 h3 y17 ff1 fs1 fc6 sc0 ls0 ws0">标,<span class="_ _9"></span>结合阿里巴巴实践经验和故障案例,<span class="_ _9"></span>与底层<span class="_ _2"></span>源码解析融会贯通,<span class="_ _9"></span>娓娓道来。<span class="_ _a"></span>《码出高效》<span class="_ _9"></span><span class="ls5">和《<span class="_ _b"> </span><span class="ff2 ls0">Java</span></span></div><div class="t m0 x3 h3 y18 ff1 fs1 fc6 sc0 ls0 ws0">开发手册》书籍版所得收入均捐赠公益事情,希望用技术情怀帮助更多的人。</div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6264b2674c65f41259ef6cc7/bg3.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x5 h2 y19 ff1 fs0 fc7 sc0 ls0 ws0">目录<span class="ff2"> </span></div><div class="t m0 x3 h3 y1a ff1 fs1 fc1 sc0 ls0 ws0">前<span class="ff2"> <span class="_ _c"> </span></span>言<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>...................................................................................................................................<span class="ls0"> <span class="_ _4"></span><span class="ff4 fc5"> </span></span></span></span></div><div class="t m0 x3 h3 y1b ff1 fs1 fc1 sc0 ls0 ws0">一、编程规约<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>...................................................................................................................<span class="ls0"> <span class="_ _9"></span>1<span class="ff4 fc5"> </span></span></span></span></div><div class="t m0 x6 h3 y1c ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">一</span>) <span class="_ _d"> </span><span class="ff1">命名风格</span> <span class="_ _e"></span><span class="ls6">..........................................................................................................................................<span class="ls0"> <span class="_ _e"></span>1<span class="fc5"> </span></span></span></div><div class="t m0 x6 h3 y1d ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">二</span>) <span class="_ _d"> </span><span class="ff1">常量定义</span> <span class="_ _e"></span><span class="ls6">..........................................................................................................................................<span class="ls0"> <span class="_ _e"></span>4<span class="fc5"> </span></span></span></div><div class="t m0 x6 h3 y1e ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">三</span>) <span class="_ _d"> </span><span class="ff1">代码格式</span> <span class="_ _e"></span><span class="ls6">..........................................................................................................................................<span class="ls0"> <span class="_ _e"></span>5<span class="fc5"> </span></span></span></div><div class="t m0 x6 h3 y1f ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">四</span>) <span class="_ _d"> </span><span class="ls7">OOP<span class="_ _f"> </span></span><span class="ff1">规约<span class="_ _6"></span></span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls0"> <span class="_ _e"></span>7<span class="fc5"> </span></span></span></div><div class="t m0 x6 h3 y20 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">五</span>) <span class="_ _d"> </span><span class="ff1">日期时间</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">11<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y21 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">六</span>) <span class="_ _d"> </span><span class="ff1">集合处理</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">12<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y22 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">七</span>) <span class="_ _d"> </span><span class="ff1">并发处理</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">17<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y23 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">八</span>) <span class="_ _d"> </span><span class="ff1">控制语句</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">20<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y24 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">九</span>) <span class="_ _d"> </span><span class="ff1">注释规约</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">24<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y25 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">十</span>) <span class="_ _d"> </span><span class="ff1">其它</span> <span class="_ _e"></span><span class="ls6">................................................................................................................................................<span class="ls3">25<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x3 h3 y26 ff1 fs1 fc1 sc0 ls0 ws0">二、异常日志<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>.................................................................................................................<span class="ls3">27<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x6 h3 y27 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">一</span>) <span class="_ _c"> </span><span class="ff1">错误码</span> <span class="_ _10"></span><span class="ls6">.............................................................................................................................................<span class="ls3">27<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y28 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">二</span>) <span class="_ _c"> </span><span class="ff1">异常处理</span> <span class="_ _10"></span><span class="ls6">.........................................................................................................................................<span class="ls3">28<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y29 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">三</span>) <span class="_ _c"> </span><span class="ff1">日志规约</span> <span class="_ _10"></span><span class="ls6">.........................................................................................................................................<span class="ls3">30<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x3 h3 y2a ff1 fs1 fc1 sc0 ls0 ws0">三、单元测试<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>.................................................................................................................<span class="ls3">33<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x3 h3 y2b ff1 fs1 fc1 sc0 ls0 ws0">四、安全规约<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>.................................................................................................................<span class="ls3">35<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x3 h3 y2c ff1 fs1 fc1 sc0 ls0 ws0">五、<span class="ff2">MySQL<span class="_ _f"> </span></span>数据库<span class="ff2"> <span class="_ _10"></span><span class="ls6">................................................................................................<span class="_ _6"></span>.......................................<span class="ls3">36<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x6 h3 y2d ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">一</span>) <span class="_ _d"> </span><span class="ff1">建表规约</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">36<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y2e ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">二</span>) <span class="_ _d"> </span><span class="ff1">索引规约</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">37<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y2f ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">三</span>) <span class="_ _d"> </span>SQL<span class="_ _f"> </span><span class="ff1">语句</span> <span class="_ _4"></span><span class="ls6">.......................................................................................................................................<span class="ls3">39<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y30 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">四</span>) <span class="_ _d"> </span>ORM<span class="_ _f"> </span><span class="ff1">映射</span> <span class="_ _5"></span><span class="ls6">.....................................................................................................................................<span class="ls3">40<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x3 h3 y31 ff1 fs1 fc1 sc0 ls0 ws0">六、工程结构<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>.................................................................................................................<span class="ls3">42<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x6 h3 y32 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">一</span>) <span class="_ _d"> </span><span class="ff1">应用分层</span> <span class="_ _e"></span><span class="ls6">........................................................................................................................................<span class="ls3">42<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y33 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">二</span>) <span class="_ _d"> </span><span class="ff1">二方库依赖</span> <span class="_ _e"></span><span class="ls6">....................................................................................................................................<span class="ls3">43<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x6 h3 y34 ff2 fs1 fc1 sc0 ls0 ws0">(<span class="ff1">三</span>) <span class="_ _d"> </span><span class="ff1">服务器</span> <span class="_ _e"></span><span class="ls6">............................................................................................................................................<span class="ls3">44<span class="fc5 ls0"> </span></span></span></div><div class="t m0 x3 h3 y35 ff1 fs1 fc1 sc0 ls0 ws0">七、设计规约<span class="ff2"> <span class="_ _4"></span><span class="ls6">................................<span class="_ _6"></span>.................................................................................................................<span class="ls3">46<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x3 h3 y36 ff1 fs1 fc1 sc0 ls0 ws0">附<span class="_"> </span><span class="ff2">1</span>:版本历史<span class="ff2"> <span class="_ _5"></span><span class="ls6">..............................................................................................................................................<span class="ls3">49<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x3 h3 y37 ff1 fs1 fc1 sc0 ls0 ws0">附<span class="_"> </span><span class="ff2">2</span>:专有名词解释<span class="ff2"> <span class="_ _5"></span><span class="ls6">......................................................................................................................................<span class="ls3">51<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x3 h3 y38 ff1 fs1 fc1 sc0 ls0 ws0">附<span class="_"> </span><span class="ff2">3</span>:错误码列表<span class="ff2"> <span class="_ _5"></span><span class="ls6">..........................................................................................................................................<span class="ls3">52<span class="ff4 fc5 ls0"> </span></span></span></span></div><div class="t m0 x3 h4 y39 ff2 fs2 fc1 sc0 ls0 ws0"> </div><div class="t m0 x7 h3 y3a ff1 fs1 fc1 sc0 ls0 ws0">(注:浏览时请使用<span class="_"> </span><span class="ff2 fs3 fc6">PDF<span class="_"> </span></span>左侧导航栏)<span class="ff2"> </span></div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6264b2674c65f41259ef6cc7/bg4.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x8 h5 y3b ff5 fs4 fc1 sc0 ls0 ws0">Java<span class="_ _b"> </span><span class="ff6">开发手册<span class="ff7"> </span></span></div><div class="t m0 x9 h6 y3c ff8 fs4 fc1 sc0 ls8 ws0"> <span class="ls0">1/57 </span></div><div class="t m0 x3 h4 y3d ff2 fs2 fc1 sc0 ls0 ws0"> </div><div class="t m0 x3 h3 y3e ff2 fs1 fc1 sc0 ls0 ws0"> <span class="_ _11"> </span> </div><div class="t m0 x3 h7 y3f ff1 fs5 fc1 sc0 ls0 ws0">一、<span class="ff9"> <span class="_ _f"></span></span>编程规约<span class="ff2"> </span></div><div class="t m0 x3 h8 y40 ff2 fs6 fc1 sc0 ls0 ws0">(<span class="ff1">一</span>)<span class="ff9"> <span class="_ _12"> </span><span class="ff1">命名风格</span></span> </div><div class="t m0 xa h3 y41 ff2 fs1 fc1 sc0 ls3 ws0">1.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="fc6">代码中的命名均不能以<span class="fc5">下划线或美元符号</span>开始,也不能以<span class="fc5">下划线或美元符号</span>结束。<span class="ff2"> </span></span></span></span></div><div class="t m0 xb h9 y42 ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="ff2 fca">_name / __name / $name / name_ / name$ /<span class="_ _6"></span> name__<span class="fc1"> </span></span></div><div class="t m0 xa h3 y43 ff2 fs1 fc6 sc0 ls3 ws0">2.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="_ _13"></span><span class="fc6">所有编程相关的命名严禁使用拼音与英文混合的方式,<span class="_ _13"></span>更不允许直接使用中文的方式。<span class="_ _14"></span><span class="ff2"> </span></span></span></span></div><div class="t m0 xb h9 y44 ff1 fs3 fcb sc0 ls0 ws0">说明:<span class="fc6">正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,纯拼音命名方式更要避免采用。<span class="ff2"> </span></span></div><div class="t m0 xb h9 y45 ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="ff2 fc6">ali / alibaba <span class="_ _1"></span>/<span class="_ _6"></span> taobao / cainiao/ aliyun/ youku / hangzhou <span class="_ _c"> </span><span class="ff1">等国际通用的名称,可视同英文。</span> </span></div><div class="t m0 xb h9 yc ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="ff2 fc6">DaZhePromotion [<span class="ff1">打折</span>] / getPingfenByName() [<span class="ff1">评分</span>] / int <span class="_ _b"> </span><span class="ff1">某变量</span> <span class="_ _b"> </span>= 3<span class="_ _6"></span> </span></div><div class="t m0 xa h3 y46 ff2 fs1 fc6 sc0 ls3 ws0">3.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="fc6">类名使用<span class="_"> </span><span class="ff2">UpperCamelCase<span class="_ _0"> </span></span>风格,但<span class="_ _1"></span>以下情形例外:<span class="_ _6"></span><span class="ff2">DO / BO / DTO / VO / AO <span class="ls9">/ </span></span></span></span></span></div><div class="t m0 xb h3 y47 ff2 fs1 fc6 sc0 lsa ws0">PO<span class="ls0"> / UID<span class="_ _0"> </span><span class="ff1">等。</span> </span></div><div class="t m0 xb h9 y48 ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="ff2 fc6">ForceCode <span class="_ _b"> </span> <span class="_ _c"> </span>/ <span class="_ _b"> </span> <span class="_ _b"> </span>UserDO <span class="_ _b"> </span> <span class="_ _b"> </span>/ <span class="_ _b"> </span> <span class="_ _c"> </span>HtmlDTO <span class="_ _b"> </span> <span class="_ _b"> </span>/ <span class="_ _b"> </span> <span class="_ _c"> </span>Xm<span class="_ _1"></span>lService <span class="_ _b"> </span> <span class="_ _c"> </span>/ <span class="_ _b"> </span> <span class="_ _b"> </span>TcpUdpDeal / TaPromotion<span class="_ _15"></span> <span class="_ _b"> </span> </span></div><div class="t m0 xb h3 y49 ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="ff2 fc6">forceco<span class="_ _6"></span>de <span class="_ _b"> </span> <span class="_ _b"> </span>/ <span class="_ _c"> </span> <span class="_ _b"> </span>UserDo <span class="_ _b"> </span> <span class="_ _b"> </span>/ <span class="_ _b"> </span> <span class="_ _b"> </span>HTML<span class="_ _6"></span>Dto <span class="_ _b"> </span> <span class="_ _b"> </span>/ <span class="_ _b"> </span> <span class="_ _c"> </span>X<span class="_ _1"></span>MLService <span class="_ _b"> </span> <span class="_ _c"> </span>/ <span class="_ _b"> </span> <span class="_ _c"> </span>TCPUDPDeal / TAPromotion<span class="fs1"> </span></span></div><div class="t m0 xa h3 y4a ff2 fs1 fc6 sc0 ls3 ws0">4.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="fc6">方法名、参数名、成员变量、局部变量都统一使用<span class="_"> </span><span class="ff2">lo<span class="_ _6"></span>werCamelCase<span class="_ _f"> </span></span>风格。<span class="ff2"> </span></span></span></span></div><div class="t m0 xb h3 y4b ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="ff2 fc6"> localV<span class="_ _1"></span>a<span class="_ _6"></span>lue / getHt<span class="_ _6"></span>tpMessage() / <span class="_ _1"></span>input<span class="_ _6"></span>UserId<span class="_ _6"></span><span class="fs1"> </span></span></div><div class="t m0 xa h3 y4c ff2 fs1 fc6 sc0 ls3 ws0">5.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="fc6">常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。<span class="_ _16"></span><span class="ff2"> </span></span></span></span></div><div class="t m0 xb h9 y4d ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="ff2 fc6">MAX_STOCK_COUNT / <span class="_ _1"></span>CA<span class="_ _6"></span>CHE_EXPIRED_TIME </span></div><div class="t m0 xb h3 y4e ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="ff2 fc6">MAX_COUNT / <span class="_ _2"></span>EXPIRED_TIME<span class="fs1"> </span></span></div><div class="t m0 xa h3 y4f ff2 fs1 fc6 sc0 ls3 ws0">6.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="fc6">抽象类命名使用<span class="_"> </span><span class="ff2">Abstract<span class="_ _f"> </span></span>或<span class="_ _0"> </span><span class="ff2">Base<span class="_ _f"> </span></span>开头;异常类命名使用<span class="_"> </span><span class="ff2">Exception<span class="_ _f"> </span></span>结尾;<span class="_ _6"></span>测试类</span></span></span></div><div class="t m0 xb h3 y50 ff1 fs1 fc6 sc0 ls0 ws0">命名以它要测试的类的名称开始,以<span class="_"> </span><span class="ff2">T<span class="_ _6"></span>est<span class="_ _f"> </span></span>结尾。<span class="ff2"> </span></div><div class="t m0 xa h3 y51 ff2 fs1 fc6 sc0 ls3 ws0">7.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="fcd">类型与中括号紧挨相连来表示数组。<span class="ff2"> </span></span></span></span></div><div class="t m0 xb h9 y52 ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="fcd">定义整形数组<span class="_ _f"> </span><span class="ff2">int[] a<span class="_ _1"></span>rrayDemo; </span></span></div><div class="t m0 xb h3 y53 ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="fcd">在<span class="_"> </span><span class="ff2">main<span class="_"> </span></span>参数中,使用<span class="_"> </span><span class="ff2">String args[]</span>来定义。<span class="ff2 fs1 fc6"> </span></span></div><div class="t m0 xa h3 y54 ff2 fs1 fc6 sc0 ls3 ws0">8.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="_ _5"></span><span class="ff2 fc6">POJO<span class="_ _f"> </span><span class="ff1">类中的任何布尔类型的变量,<span class="_ _5"></span>都不要加<span class="_ _f"> </span><span class="ff2 lsb">is<span class="_ _f"> </span></span>前缀,<span class="_ _17"></span>否则部分框架解析会引起序列</span></span></span></span></div><div class="t m0 xb h3 y55 ff1 fs1 fc6 sc0 ls0 ws0">化错误。<span class="ff2 fs3"> </span></div><div class="t m0 xb h9 y56 ff1 fs3 fcb sc0 ls0 ws0">说明:<span class="fc6">在本文<span class="_"> </span><span class="ff2">MySQL<span class="_"> </span></span>规约中的建表约定第一条,表达<span class="_ _1"></span>是与否的值采用<span class="_ _f"> </span><span class="ff2">is_xx<span class="_ _1"></span>x<span class="_"> </span><span class="ff1">的命名方式,所以,需要在</span></span></span></div><div class="t m0 xb h3 y57 ff2 fs3 fc6 sc0 ls0 ws0"><resultMap><span class="ff1">设置从<span class="_"> </span></span>is_xxx<span class="_ _c"> </span><span class="ff1">到<span class="_ _f"> </span></span><span class="lsc">xxx<span class="_ _f"> </span></span><span class="ff1">的映射关系。</span><span class="fs1"> </span></div></div><div class="c xc y58 w3 ha"><div class="t m0 xd hb y59 ff1 fs4 fc6 sc0 ls0 ws0">版本号<span class="ff2"> </span></div></div><div class="c xe y58 w4 ha"><div class="t m0 xf hb y59 ff1 fs4 fc6 sc0 ls0 ws0">制定团队<span class="ff2"> </span></div></div><div class="c x8 y58 w5 ha"><div class="t m0 x10 hb y59 ff1 fs4 fc6 sc0 ls0 ws0">更新日期<span class="ff2"> </span></div></div><div class="c x11 y58 w6 ha"><div class="t m0 x12 hb y59 ff1 fs4 fc6 sc0 ls0 ws0">备注<span class="ff2"> </span></div></div><div class="c xc y5a w3 hc"><div class="t m0 x13 hb y5b ff2 fs4 fc6 sc0 ls0 ws0">1<span class="lsd">.6.0</span> </div></div><div class="c xe y5a w4 hc"><div class="t m0 x14 hb y5b ff1 fs4 fc6 sc0 ls0 ws0">阿里巴巴与<span class="_"> </span><span class="ff2">Java<span class="_ _c"> </span></span>社区开发者<span class="ff2"> </span></div></div><div class="c x8 y5a w5 hc"><div class="t m0 xd hb y5b ff2 fs4 fc1 sc0 lse ws0">2020<span class="ls0">.04.</span>22<span class="ls0"> </span></div></div><div class="c x11 y5a w6 hc"><div class="t m0 x15 hb y5b ff1 fs4 fc6 sc0 ls0 ws0">泰山版,首次发布错误码统一方案<span class="ff2"> </span></div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6264b2674c65f41259ef6cc7/bg5.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x8 h5 y3b ff5 fs4 fc1 sc0 ls0 ws0">Java<span class="_ _b"> </span><span class="ff6">开发手册<span class="ff7"> </span></span></div><div class="t m0 x9 h6 y3c ff8 fs4 fc1 sc0 ls8 ws0"> <span class="ls0">2/57 </span></div><div class="t m0 xb h9 y5c ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="fc6">定<span class="fcd">义为基本数据类型<span class="_ _f"> </span><span class="ff2">Boolean <span class="_ _1"></span>is<span class="_ _1"></span>Delet<span class="_ _6"></span>ed<span class="_"> </span><span class="ff1">的属性<span class="_ _1"></span>,它的方法也是<span class="_ _f"> </span><span class="ff2">is<span class="_ _1"></span>De<span class="_ _6"></span>leted<span class="lsf">()</span><span class="ff1">,框架在反向解析的时</span></span></span></span></span></span></div><div class="t m0 xb h9 y5d ff1 fs3 fcd sc0 ls0 ws0">候,“误以为<span class="fc6">”对应的属性名称是<span class="_ _f"> </span><span class="ff2">deleted</span>,导致属性获取不到,进而抛出异常。<span class="ff2"> </span></span></div><div class="t m0 xa h3 y5e ff2 fs1 fc6 sc0 ls3 ws0">9.<span class="ff9 ls0"> <span class="_ _d"> </span><span class="ff1 fc8">【强制】<span class="_ _17"></span><span class="fc6">包名统一使用小写,<span class="_ _4"></span>点分隔符之间有且仅有一个自然语义的英语单词。<span class="_ _4"></span>包名统一使用</span></span></span></div><div class="t m0 xb h3 y5f ff1 fs1 fc5 sc0 ls0 ws0">单数<span class="fc6">形式,但是类名如果有复数含义,类名可以使用复数形式。<span class="ff2 fs3"> </span></span></div><div class="t m0 xb h9 y60 ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="fc6">应<span class="fcd">用工具类包名为<span class="_ _f"> </span></span><span class="ff2">com.al<span class="_ _1"></span>ibaba.ei.kunlun.aap.<span class="_ _6"></span>util<span class="ff1">、类名为<span class="_ _f"> </span></span>Messa<span class="_ _1"></span>ge<span class="_ _6"></span>Utils<span class="ff1">(此规则参考<span class="_"> </span></span>spring<span class="_ _f"> </span><span class="ff1">的</span></span></span></div><div class="t m0 xb h9 y61 ff1 fs3 fc6 sc0 ls0 ws0">框架结构)<span class="ff2"> </span></div><div class="t m0 xa h3 y62 ff2 fs1 fcd sc0 ls3 ws0">10.<span class="ff9 ls0"> <span class="_ _5"></span><span class="ff1 fc8">【强制】<span class="_ _8"></span><span class="fcd">避免在子父类的成员变量之间、<span class="_ _13"></span>或者不同代码块的局部变量之间采用完全相同的命名,</span></span></span></div><div class="t m0 x12 h3 y63 ff1 fs1 fcd sc0 ls0 ws0">使可读性降低。<span class="ff2"> </span></div><div class="t m0 x12 h9 y64 ff1 fs3 fcb sc0 ls0 ws0">说明:<span class="fcd">子类、父类成员变量名相同,即使是<span class="_ _f"> </span><span class="ff2">public<span class="_ _c"> </span></span>类型的变量也是能够通过编译,而局部变量在同一方法</span></div><div class="t m0 x12 h9 y42 ff1 fs3 fcd sc0 ls0 ws0">内的不同代码块中同名也是合法的,<span class="_ _2"></span>但是要避免使用。<span class="_ _2"></span>对于非<span class="_ _f"> </span><span class="ff2">setter/getter<span class="_ _c"> </span></span>的参数名称也要避免与成员变</div><div class="t m0 x12 h9 y65 ff1 fs3 fcd sc0 ls0 ws0">量名称相同。<span class="ff2"> </span></div><div class="t m0 x12 h3 y66 ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="ff2 fs1 fcd"> </span></div><div class="t m0 x16 hb y67 ff2 fs4 fce sc0 ls0 ws0">public<span class="fc1"> </span>cl<span class="_ _6"></span>ass<span class="fc1"> ConfusingName <span class="fcf">{</span> </span></div><div class="t m0 x16 hb y68 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls0">public<span class="fc1"> </span>i<span class="_ _6"></span>nt<span class="fc1"> stoc<span class="_ _2"></span>k<span class="fcf">;</span> </span></span></div><div class="t m0 x16 hb y69 ff2 fs4 fc1 sc0 ls0 ws0"> </div><div class="t m0 x16 hb y6a ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fc10 ls11">// <span class="_ _b"> </span><span class="ff1 ls0">非<span class="_"> </span><span class="ff2">setter/getter<span class="_ _b"> </span></span>的参数名称,不允许与本类成员变量同<span class="_ _6"></span>名<span class="_ _6"></span></span></span><span class="ls0"> </span></div><div class="t m0 x16 hb y6b ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls0">public<span class="fc1"> </span>void<span class="fc1"> <span class="fc11">get<span class="fcf">(</span></span>String alibaba<span class="fcf">)</span> <span class="_ _6"></span><span class="fcf">{</span> </span></span></div><div class="t m0 x16 hb y6c ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls4">if</span><span class="ls0"> <span class="fcf">(</span>condition<span class="fcf">)</span> <span class="fcf">{<span class="_ _1"></span><span class="fc1"> </span></span></span></div><div class="t m0 x16 hb y6d ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls0">final<span class="fc1"> </span>int<span class="fc1"> money <span class="fc12">=</span> <span class="fc13 lse">666</span><span class="fcf">;</span> </span></span></div><div class="t m0 x16 hb y6e ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fc10 ls0">// ...<span class="fc1"> </span></span></div><div class="t m0 x16 hb y6f ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fcf ls0">}<span class="fc1"> </span></span></div><div class="t m0 x16 hb y70 ff2 fs4 fc1 sc0 ls0 ws0"> </div><div class="t m0 x16 hb y71 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls0">for<span class="fc1"> <span class="_ _6"></span><span class="fcf">(<span class="_ _1"></span><span class="fce">i<span class="_ _6"></span>nt<span class="fc1"> <span class="ls4">i </span><span class="fc12">=</span> <span class="fc13">0<span class="fcf">;</span></span> <span class="ls4">i </span><span class="fc12"><<span class="_ _1"></span><span class="fc1"> <span class="fc13 lse">10</span><span class="fcf">;<span class="_ _6"></span></span> i<span class="fc12 ls12">++</span><span class="fcf">)<span class="_ _1"></span><span class="fc1"> <span class="_ _6"></span><span class="fcf">{</span> </span></span></span></span></span></span></span></span></span></div><div class="t m0 x16 hb y72 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fc10 ls11">// <span class="_ _b"> </span><span class="ff1 ls0">在同一方法体中,不允许与其它代码块中的<span class="_"> </span><span class="ff2">money<span class="_ _b"> </span></span>命名相同<span class="_ _6"></span></span></span><span class="ls0"> </span></div><div class="t m0 x16 hb y73 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls0">final<span class="fc1"> </span>int<span class="fc1"> money <span class="fc12">=</span> <span class="fc13 lse">15978</span><span class="fcf">;</span> </span></span></div><div class="t m0 x16 hb y74 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fc10 ls0">// ...<span class="fc1"> </span></span></div><div class="t m0 x16 hb y75 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fcf ls0">}<span class="fc1"> </span></span></div><div class="t m0 x16 hb y76 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fcf ls0">}<span class="fc1"> </span></span></div><div class="t m0 x16 hb y4d ff2 fs4 fcf sc0 ls0 ws0">}<span class="fc1"> </span></div><div class="t m0 x16 hb y77 ff2 fs4 fc1 sc0 ls0 ws0"> </div><div class="t m0 x16 hb y78 ff2 fs4 fce sc0 ls0 ws0">class<span class="_ _6"></span><span class="fc1"> Son </span>ext<span class="_ _1"></span>ends<span class="fc1"> Conf<span class="_ _6"></span>usingName <span class="fcf">{</span> </span></div><div class="t m0 x16 hb y79 ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fc10 ls11">// <span class="_ _b"> </span><span class="ff1 ls0">不允许与父类的成员变量名称相同</span></span><span class="ls0"> </span></div><div class="t m0 x16 hb y7a ff2 fs4 fc1 sc0 ls10 ws0"> <span class="fce ls0">public<span class="fc1"> </span>i<span class="_ _6"></span>nt<span class="fc1"> stoc<span class="_ _2"></span>k<span class="fcf">;</span> </span></span></div><div class="t m0 x16 hb y7b ff2 fs4 fcf sc0 ls0 ws0">}<span class="fc1"> </span></div><div class="t m0 x17 hb y7c ff2 fs4 fc1 sc0 ls0 ws0"> </div><div class="t m0 xa h3 y7d ff2 fs1 fc6 sc0 ls3 ws0">11.<span class="ff9 ls0"> <span class="_ _9"></span><span class="ff1 fc8">【强制】<span class="fc6">杜绝完全不规范的缩写,避免望文不知义。<span class="ff2"> </span></span></span></span></div><div class="t m0 xb h9 y7e ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="ff2 fc6">AbstractCla<span class="_ _1"></span>ss<span class="ff1">“缩写”命名成<span class="_"> </span></span>AbsClass<span class="ff1">;</span>condition<span class="ff1">“缩写”命名成</span> <span class="_ _b"> </span>condi<span class="ff1">,此类随意缩写严重降</span></span></div><div class="t m0 xb h3 y7f ff1 fs3 fc6 sc0 ls0 ws0">低了代码的可阅读性。<span class="ff2 fs1"> </span></div><div class="t m0 xa h3 y80 ff2 fs1 fc6 sc0 ls3 ws0">12.<span class="ff9 ls0"> <span class="_ _9"></span><span class="ff1 fc2">【推荐】<span class="_ _4"></span><span class="fc6">为了达到代码自解释的目标,<span class="_ _4"></span>任何自定义编程元素在命名时,<span class="_ _4"></span>使用尽量完整的单词组</span></span></span></div><div class="t m0 xb h3 y81 ff1 fs1 fc6 sc0 ls0 ws0">合来表达。<span class="ff2"> </span></div><div class="t m0 xb h9 y82 ff1 fs3 fcc sc0 ls0 ws0">正例:<span class="_ _8"></span><span class="fcd">在<span class="_ _b"> </span><span class="ff2">J<span class="_ _6"></span>DK<span class="_ _c"> </span></span>中,<span class="_ _8"></span>对某个对象引用的<span class="_ _b"> </span><span class="ff2">volatile<span class="_ _c"> </span></span>字段进行原子更新的类名为:<span class="_ _8"></span><span class="ff2">AtomicReferenceFieldUpdater<span class="_ _6"></span><span class="ff1">。<span class="_ _8"></span><span class="ff2 fc6"> </span></span></span></span></div><div class="t m0 xb h3 y83 ff1 fs3 fc9 sc0 ls0 ws0">反例:<span class="fcd">常见的方法内变量为<span class="_ _f"> </span><span class="ff2">int <span class="ls13">a;</span></span>的定义方式。<span class="ff2 fs1 fc6"> </span></span></div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>