自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吃时间的虫子

贵在坚持

  • 博客(14)
  • 问答 (1)
  • 收藏
  • 关注

原创 JAVA集合概览

Collection Collection接口是Java中集合继承关系中的根接口,一个集合表示一组元素。List List接口表示有序集合,使用这个接口可以将元素插入到集合指定的位置,也可以通过索引来查找元素。 在List接口的实现类中,Vector和ArrayList比较相似,它们内部的实现都是通过可变数组来实现的,两者的区别为Vector是线程安...

2018-10-11 07:05:17 679

原创 PriorityQueue源码解析

PriorityQueue是一种可以高效删除最小元素的集合。其特点如下:PriorityQueue是一个基于优先级堆的无界优先级队列(容量不限制) PriorityQueue中的元素按照元素的自然排序或者在构造对象时提供的比较器进行比较排序 PriorityQueue不能保存null值 PriorityQueue中的排序是按照元素自身的自然排序,则不能保存没有实现Compareable接...

2019-04-21 20:37:20 219

原创 ArrayDeque原码分析

主要特点ArrayDeque是通过可变数组的方式实现了Deque接口。 ArrayDeque没有容量限制,为了满足需求会自动容量会自动增长。 ArrayDeque不是线程安全的。 不允许存放null。 当作stack使用时,效率比java.util.Stack快;当作queue使用时,效率比java.util.LinkedList快。 大部分的操作都是常数时间运行JDK实现的关键点...

2019-04-13 17:00:00 314

原创 LinkedList源码解析

LinkedList是一个双端有序列表,它支持在任何位置进行高效的插入和删除操作,在JAVA集合概览这篇文章,我们说的它实现了Deque接口,在这篇文章中主要谈谈对LinkedList源码的解读。 为什么LinkedList支持高效的插入和删除操作? 因为LinkedList中的元素,除了保存了值以外还保存了上一个元素以及下一个元素的引用,这样在添加或者删除的时候,只要...

2019-03-31 08:40:49 569

原创 常见排序算法总结

排序算法综述排序时需要的方法选择排序插入排序希尔排序归并排序快速排序堆排序综述本文主要是整理几种常见的排序算法(选择排序,插入排序,希尔排序,归并排序、快速排序,堆排序)源码Github地址排序时需要的方法package org.jpractice.algorithm.sort;/** * @author: 作者: xuefei * @date: 创建时间:2019-02-23 1...

2019-03-16 15:38:22 150

原创 装饰者模式(二)

目录想要达到的目的(要解决的问题)适用的场景组成部分和关键点例子在装饰者模式(一)中,我们提供了一个样例作为背景。在介绍完背景之后,这篇文章从装饰者模式的下面五个方面来介绍它。想要达到的目的(要解决的问题) 适用的场景 组成部分和关键点 优势和劣势分别是什么? 与其他模式的对比 例子想要达到的目的(要解决的问题)仔细想想背景中的案例,其实增加配菜可以抽象为增...

2018-10-11 09:08:04 115

原创 根据源码谈谈对ArrayList的理解

    因为最近正在绘制JAVA体系的脑图,在整理集合部分的时候只知道是怎么用的,但是不知道是怎么实现的,所以打算花点时间把集合部分的源码看一下,这篇博客是看完ArrayList的源码之后的一些感想。    首先,ArrayList是通过数组来实现的。因为ArrayList的元素是可以动态增加的,而且元素数量是不一定的,因此ArrayList通过在需要时进行数组的拷贝,将旧数组中元素拷贝到容量...

2018-10-08 22:27:45 197

原创 装饰者模式(一)

背景假设我们现在要为沙县小吃创建一个应用程序,我们需要对沙县小吃进行建模。假设一开始他们提供了鸡腿饭、鸭腿饭、大肉面三种饭。刚刚开始的时候我们使用了继承来实现,而且将公共的操作放在了抽象的Snack类中。     每种饭的价格不一样,所以在每个子类中都重写了getCost()方法。现在顾客除了点鸡腿饭、鸭腿饭、大肉面之外,还想加上青菜、蒸蛋、土豆以及再加一个鸡腿等等需求。按照现在的...

2018-09-17 12:57:01 173

原创 使用docker搭建持续集成(CI)环境

                                使用docker搭建持续集成环境本文主要介绍如何在docker中搭建持续集成(CI)环境,按照文中的步骤,可以完成使用jenkins打包项目并上传到nexus上。环境要求mac(我使用的环境)/linux/ubuntu 已经安装了docker以及创建了swarm集群1.GITLAB安装如果本地没有对应的gitlab...

2018-09-16 18:54:23 4104

翻译 每个程序员都必须知道的Unicode以及字节码最基础的知识

原文出处:the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses Ever wonder about that mysterious Content-Type tag?You know, the one y...

2018-09-09 23:18:22 2226

原创 排序算法之插入排序

    什么是插入排序?    想必大家都玩过扑克牌,在玩牌的时候对牌的排序方法可以是从左往右逐渐变大,从第二张牌开始跟第一张比较,如果第二张比第一张小,则把第二张插到第一张前面。第三张跟第一第二张比较,然后在放到对应的位置上,后面的以此类推。    因为我们对牌的大小很熟悉,在打扑克时自然而然的就把扑克放在了正确的位置上。我们可以以前三张为例子思考下这个真正的过程。第一步将第二张跟第...

2018-08-17 09:22:41 299

原创 排序算法之选择排序

选择排序的思路        先找到数组中最小的那个元素,其次,将它与数组中第一个元素互换位置(如果第一个元素是最小元素,就跟自己交换位置)。再次,在剩下的元素中找到最小元素,将它与数组中第二个元素交换位置。如此反复,直到整个数组排序。这种算法之所以叫选择排序,是因为它不断的在查找数组中最小的元素。    在选择排序中,交换元素的次数为N。算法的效率取决于比较的次数。对于长度为N的数组,选...

2018-08-16 20:34:24 406

原创 《Java8实战》读书笔记(二)

目录筛选、切片和匹配filterdistinctlimit(n)skip(n)mapflatmap查找、匹配和规约anyMatchallMatchnoneMatchfindAnyfindFirstreduce使用数值范围等数值流映射到数值流转换回对象流这篇文章中,主要记录的是如何使用流。主要包括下面几个方面:从多个源创建流...

2018-08-08 12:59:45 207

原创 《Java8实战》读书笔记(一)

流是什么?流是Java API的新成员,它允许你以声明的方式处理数据集合(通过类似数据库查询语句来表达,而不是临时编写一个实现)。使用流的好处代码是以声明的方式写的:说明想要完成什么,而不是说明如何实现一个操作 可以把几个基础的操作链接起来,来表达复杂的数据处理流水线,同时保持代码清晰可读。filter、sorted、map和collect等操作是与具体线程无关的高层次构件,所以...

2018-08-07 20:18:01 453

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除