摘要: 1.概览 LinkedList是java的动态数组另一种实现方式,底层是基于双向链表,而不是数组。 LinkedList实现了动态数组与双向队列两个接口,提供了两种方法集合,可以用来实现队列、栈之类的功能。 2. 成员变量 先来看成员变量 链表一般就是有个head的节点就能完成对应的工作。Linke 阅读全文
posted @ 2019-05-07 23:48 小小的平庸 阅读(127) 评论(0) 推荐(0) 编辑
摘要: ArrayList是java的动态数组,底层是基于数组实现。 1. 成员变量 一个个来看一下这些成员变量。 elementData 这是ArrayList的基本数据类型,因为java并没有真的实现底层泛型,而是通过实现编译类型擦除的方式实现了泛型的效果。因此,底层的数组是Object[]类型。 si 阅读全文
posted @ 2019-04-30 00:17 小小的平庸 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1 java基本数据类型 1.1 基本数据类型 java的基础数据类型有多少个,每个在内存的分配是多少呢? | 类型 | 分配字节 | | | | |byte|1| |short|2| |char|2| |int|4| |long|8| |reference|4/8| |array|4/8| 引用类 阅读全文
posted @ 2019-04-28 00:52 小小的平庸 阅读(934) 评论(0) 推荐(0) 编辑
摘要: Task 抽象带来Task 首先,假设我们有这么一段逻辑:收到一个参数,先校验格式是否正确,再提取相关的参数出来,执行我们的事务,然后构建结果并返回。伪代码如下: 在上面的handleEvent方法里面,处理逻辑与Engine并没有太多的联系,我们可以将这个逻辑抽离出来,或者说可以变得更抽象一点,如 阅读全文
posted @ 2019-03-30 23:34 小小的平庸 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 方法注释 应用 这个方法主要用于只有一个元素的优化,减少内存分配,无需分配额外的内存,可以从SingletonList内部类看得出来,由于只有一个element,因此可以做到内存分配最小化,相比之下ArrayList的DEFAULT_CAPACITY=10个。 其他特殊容器类 需要注意的是,以上6个 阅读全文
posted @ 2018-10-09 18:11 小小的平庸 阅读(70877) 评论(1) 推荐(8) 编辑
摘要: 在java的concurrent.Executors主要提供两种线程池:无固定线程数但有限制任务队列的cachedThreadPool与有固定线程数但无任务队列限制的fixedThreadPool,这两种线程池是在小任务里面使用是正常的,但是一旦任务增大或者代码逻辑有问题,很容易导致OOM。因此《阿 阅读全文
posted @ 2018-03-04 17:42 小小的平庸 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 首先,这个问题是从《阿里巴巴Java开发手册》的1.6.12(P31)上面看到的,里面有这样一句话,并列出一种反例代码(以下为仿写,并非与书上一致): 在并发场景下,通过双重检查锁(double-checked locking)实现延迟初始化的优化问题隐患,推荐解决方案中较为简单的一种(适用于JDK 阅读全文
posted @ 2018-03-04 16:14 小小的平庸 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 说得快速排序,基本是常用的排序当中速度最快的排序了,之前也用C和Java实现过,但是过程十分痛苦,更重要的是写完代码只记得过程却对实质的过程觉得隔了一层纱,有种说不出的感觉。刚刚看一下Haskell实现的快排,顿时感觉惊为天人,他喵的,这才是人应该写的代码,简单而又优雅,真是太棒了 测试代码: 输出 阅读全文
posted @ 2018-01-03 00:33 小小的平庸 阅读(2120) 评论(2) 推荐(2) 编辑
摘要: 之前看了刘新宇大大的《算法新解》有了点收获,闲来无事,便写了一个二叉搜索树实现的Map类。 java的Map接口有很多不想要的方法,自己定义了一个 具体实现: 测试的类: 在各自只运行一次的情况下测试数据如下: 由于二叉搜索树没有自平衡机制,搜索的时间在O(n*n)与O(lgn)之间摇摆,因此对比j 阅读全文
posted @ 2017-12-29 18:35 小小的平庸 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 也接触到开发大概1年多了,从netty技术栈到spring技术栈,先后也接触到了两种截然不同的项目:java服务器与大数据web,大概也有了一点对开发的认识,所以打算写下来记录一下。 1.git 分支的使用 开发一个新功能时一定要拉出一个分支来,这样既可以在开发的时候避免其他变量的影响,也方便发布的 阅读全文
posted @ 2017-12-15 10:57 小小的平庸 阅读(379) 评论(0) 推荐(1) 编辑