阿里巴巴java开发手册(阿里巴巴Java开发手册 嵩山版)
关于java学习,有什么书籍或者教程推荐不啦?
java Netty实战课程java高性能分布式RPC教程课程? 免费下载
链接:
提取码:kvvv
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
? ? ? ? ? ?
用户传入的任何参数都必须做有效性验证,如果忽略的话可能会导致哪些危害系统
1)page size 过大导致内存溢出。
2)恶意 order by 导致数据库慢查询。
3)任意重定向。
4)SQL 注入。
5)反序列化注入。
6)正则输入源串拒绝服务 ReDoS。
《阿里巴巴Java开发手册》第四条:强制用户请求传入的任何参数必须做有效性验证。
Java 代码用正则来验证客户端的输入,有些正则写法验证普通用户输入没有问题,但是如果攻击人员使用的是特殊构造的字符串来验证,则有可能导致死循环。
阿里巴巴开发手册(list集合操作)
1、不允许程序任何地方使用java.sql.Date、java.sql.Time 、java.sql.Timestamp。
2、判断list元素是否为空,使用isEmpty()方法,而不是size()==0。
3、集合转数组,必须使用集合的toArray(T[] array),传入的是类型完全一致、长度0的空数组
说明:如果直接使用toArray无参方法存在问题,只能返回object[]类,若强制转其他数组类型出现ClassCastException异常
使用 toArray 带参方法,数组空间大小的 length,
1) 等于 0,动态创建与 size 相同的数组,性能最好2)
2)大于 0 但小于 size,重新创建大小等于 size 的数组,增加 GC 负担。
3) 等于 size,在高并发情况下,数组创建完成之后,size 正在变大的情况下,负面影响与 2 相同。
4) 大于 size,空间浪费,且在 size 处插入 null 值,存在 NPE 隐患。
4、集合初始化时,指定集合初始值大小
说明:如果暂时无法确定集合大小,指定默认值(16)即可。
5、变量map使用entrySet而不是keySet。
说明:KeySet其实变量了2次,一次转为Iterator对象,另一次从hashMap中取出key对应的value。
如果jdk8使用Map.forEach()方法
6、Map类集合k/v能不能存储null值,表格
如何评价阿里巴巴发布的Java开发手册
适用于大型公司
适用于人员流动很快的公司
优点: ?1.定义非常精细,可以让其他人员很快速的就能读懂代码且进行修改。毕竟代码是写给其他人看的,毕竟不是给自己看的。
2.代码产出高,指定给纯正的码农,只用来搬砖。
缺点:定义非常精细。因为太精细,也疑问着限制太多,限制开发人员使用新技术或者新想法。
毕竟阿里公司非常大,而且技术也是领先的,所以缺点在阿里眼里不是缺点。
idea阿里巴巴规范插件报错
等级调到Inspactions。idea是阿里巴巴所研发的代码规范插件,idea阿里巴巴规范插件报错等级调到Inspactions即可,规范基于《阿里巴巴Java开发手册》,在IntelliJ IDEA的插件管理中直接搜索Alibaba Java Coding Guidelines即可。