白话阿里巴巴 Java 开发手册高级篇

作者/分享人:李艳鹏
向 Ta 提问
蚂蚁金服高级技术专家,著有《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,曾经在易宝支付、花旗银行、甲骨文、新浪微博、路透社等大型IT互联网公司担任技术负责人和架构师的工作,现专注于区块链平台的研发与推广,擅长大规模高并发的线上与线下相结合的第三方支付平台的架构规划与实施。

阿里巴巴发布了《阿里巴巴 Java 开发手册》,总结了阿里人多年一线实战中积累的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量。通过限制开发人员的编程风格、实现方式来避免研发人员在实践中容易犯的错误,同样的问题大家使用同样的模式解决,便于后期维护和扩展,确保最终在大规模协作的项目中达成既定目标。

无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行了应用和推广,收效颇丰,也总结了适合支付平台的技术规范。由于阿里巴巴 Java 开发手册本身定位为规约和规范,语言简单、精炼,没有太多的解读和示例,有些条款对于一般开发人员理解起来比较困难。本场 Chat 借着阿里巴巴发布的 Java 开发手册,详细解读 Java 平台下开发规范和标准的制定和实施。

实录提要:

  • 关于 DTO/DO/VO,有没有好的来源实现案例可以参考?
  • 1.4 以下 JDK 已经解决了内存可见性的问题,请问是采用什么机制?
  • Java Web 的项目,异常日志在哪一层记录?
  • 一个方法里面既有数据库操作也有外部 API 接口调用,事务超时时间如何考虑?
  • 开发手册怎么和 checkstyle 结合起来用?
  • 有没有相关文档提供下?
  • 支付和渠道风控的架构是什么?
已有640人预订
预订达标
文章出炉
交流日期
     
17.04.26
17.05.10
17.05.17 20:30
查看文章评论/提问
倾城志
你好,关于DTO/DO/VO,有没有好的来源实现案例可以参考?特别是在做微服务化的时候,如何合理使用它们?谢谢
金哲
您好,Java Web的项目,异常日志在哪一层记录?
Ray Wang
一个方法里面既有数据库操作也有外部API接口调用,请问事务超时时间如何考虑?
大乌贼 ("\(●-●)/")
前面老师说了使用声明式事务,但我认为为了控制事务的最小粒度,使用编程式事务会比较灵活,而且规范里面也没有说必须要使用声明式事务,事实上阿里的代码里面也是大量用到编程式事务。
大乌贼 ("\(●-●)/")
老师说状态流转、维护可用余额等最好直接利用数据库的行级锁,不需要显式的加锁。可否举例一些适合使用乐观锁的例子?
大乌贼 ("\(●-●)/")
网上对双检锁有N多讨论,这里很负责任的告诉大家,只要不是特别老的JDK版本(1.4以下),双检锁是没问题的。 这里老师说1.4一起jdk已经解决了内存可见性的问题,请问是采用什么机制,让使用者不用显式使用volatile或者类变量等手段达到happened-before原则的?
大乌贼 ("\(●-●)/")
【强制】POJO 类必须写 toString 方法。使用 IDE 的中工具:source> generate toString 时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。 每次修改pojo的时候,都需要执行一次generate toString,如果忘了怎么办,无疑增加出错概率,是否在toString方法中用tojson比较好?
三旬老汉
真心感谢,希望接下来这个规范和checkstyle结合起来?
请叫我,糖不吃|Selina Cao
文中有提到风控,因为这方面经验极少,所以老师可以简单介绍一下 支付和渠道风控的架构么。阿里有自己的风控体系,那么风控这个岗位是不是 对数据分析和挖掘方面有极高的要求!问题可能比较不专业,但是最想知道这个!谢谢老师
你可能还喜欢
从小白到架构师的成长之路
一盘花生米
二叉树的原理推敲与动手种树
浅浅
机器学习004:循环神经网络实现与文本分类问题
如是
电商高并发、高流量下分布式 ID 的解决方案(主键生成策略)
Array老师
DevOps 工具链:在线报障的流程、系统设计和自改进体系的建设
常新居士
谈谈 Java NIO
应书澜
微信扫描登录