![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
阿里Java手册
文章平均质量分 83
阿里Java手册解读
梦里藍天
不积跬步,无以至千里;不积小流,无以成江海
展开
-
解读阿里巴巴Java手册:为什么HashMap初始化需要设定大小,HashMap初始化大小设定多少合适
HashMap的介绍在开始之前,先看下在官方文档中是如何介绍HashMap的:An instance of HashMap has two parameters that affect its performance: initial capacity and load factor. The capacity is the number of buckets in the hash table, and the initial capacity is simply the capacity at t原创 2020-08-18 18:36:00 · 2977 阅读 · 1 评论 -
解读阿里巴巴Java手册:为什么不建议使用Executors创建线程池?
Executors 是一个Java中的工具类。提供工厂方法来创建不同类型的线程池。从上图中也可以看出,Executors的创建线程池的方法,创建出来的线程池都实现了ExecutorService接口。可以发现,其实底层确实是通过LinkedBlockingQueue实现的:LinkedBlockingQueue是一个用链表实现的有界阻塞队列,容量可以选择进行设置,不设置的话,将是一个无边界的阻塞队列,最大长度为Integer.MAX_VALUE。这里的问题就出在:不设置的话,将是一个无边界的阻塞原创 2020-08-20 19:26:28 · 2666 阅读 · 1 评论 -
解读阿里巴巴Java手册:为什么在for循环中不应该使用语法糖“+”加号拼接字符串
可能每个人都再进入Java时都知道不要再循环体中进行字符串拼接,但是对于为什么不建议这么做并不是每个人都知道,再循环体中拼接字符串我们看看编译器为我们做了哪些工作。首先在循环体中写一个拼接的方法public class Test { public static void main(String[] args) { String testString = "testString"; for(int i=0;i<20;i++) { testString += i+","; }原创 2020-08-25 19:09:47 · 510 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么在foreach中禁止add/remove操作
foreach介绍foreach是Java1.5引入的语法糖,语法糖写法简洁明了,容易被人理解,更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,但是不了解语法糖实现的原理很容易导致编写的代码运行时错误。错误的例子 public static void main(String[] args) { List<String> nums = new ArrayList<String>(); nums.add("1"); nums.add("2"); nums.原创 2020-08-26 19:18:44 · 302 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么禁止在系统中直接使用日志系统(Log4j、Logback)的API
常用的log日志框架有哪些?Log4jLog4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。LogbackLogback是由log4j创始人设计的又一个开源日志组件。logb.原创 2020-08-27 19:00:31 · 533 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么禁止把SimpleDateFormat设为static
SimpleDateFormat介绍SimpleDateFormat用于以区域设置敏感的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和归一化。日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从’A’到’Z’和从’a’到’z’的非引号的字母被解释为表示日期或时间字符串的组件的模式字母。 可以使用单引号( ’ )引用文本,以避免解释。 "’’"代表单引号。 所有其他字符不被解释; 在格式化过程中,它们只是复制到输出字符串中,或者在解析过程中与输入字符串匹配。例原创 2020-08-29 18:35:50 · 731 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么禁止开发人员使用isSuccess作为变量名
JavaBean定义无规矩不成方圆,Java IDE在代码检查或者自动生成时都要遵循一定的Java规范(并非100%,但就是因为不是100%按规范才容易出问题),先来看一下Java规范对于javabean时如何定义的。据JavaBeans™ Specification规定,如果是普通的参数propertyName,要以以下方式定义其setter/getter:public <PropertyType> get<PropertyName>();public void set&l原创 2020-08-31 21:48:59 · 825 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么禁止开发人员修改serialVersionUID 字段的值
serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastException。看一下实现Serializable的类。如果没有serialVersionUID话该类会提示一原创 2020-09-01 21:11:34 · 290 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么禁止使用 count(列名)或 count(常量)来替代 count(*)
虽然在规定的说明上已经简单的说明了下为什么,但是说的不够详细和全面,我们来看下不用引擎之间的差别:MyISAM引擎把一个表的总行数记录在了磁盘上,执行count(*)会直接返回这个数值,效率很高。InnoDB,执行count(*),需要把数据一行行的从引擎中读出来,然后累积计数。MyISAM做了一个简单的优化,那就是它可以把表的总行数单独记录下来,如果从一张表中使用COUNT(*)进行查询的时候,可以直接返回这个记录下来的数值就可以了,前提是没有where条件。InnoDB需要把数据一行行从数.原创 2020-09-02 21:13:06 · 1629 阅读 · 0 评论 -
解读阿里巴巴Java手册:为什么格式化时间是强制使用yyyy而不能使用YYYY
从手册上可以看出,使用YYYY一般情况下是没有问题的,只是在涉及到跨年的时候才会出现问问题,但这种问题往往也是致命的。像礼拜几是一周的第一天问题一样,中国是把礼拜一作为一周的第一天,而美国把礼拜天作为一周的第一天。在哪一周是一年的第一周这个问题上也存在这种问题。为了解决这个问题,国际标准化组织制订了国际标准ISO 8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前最新为第三版ISO8601:2004,第一版为ISO8601:1988,第二版为ISO860.原创 2020-09-03 18:24:41 · 418 阅读 · 0 评论