自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

元勇温的博客

雷霆雨露,均为天恩。

  • 博客(12)
  • 收藏
  • 关注

原创 设计模式---单例模式(Singleton)

1. 什么是单例模式?程序在运行时,通常会生成很多实例。但是,有的时候某些对象只需要一个,比如线程池、缓存等,如果生成多个实例就会导致很多问题产生。那么怎么才能保证一个类只有一个实例并且能够便于访问?最好的方法就是让这个类自身来负责创建它的唯一实例。所谓单例模式就是确保某一个类只有一个实例,并且提供一个全局访问点。单例模式的特点:它只有一个实例。它必须要自行实例化。它必须向外提供访...

2019-09-28 11:15:08 177

原创 设计模式---工厂模式(Factory)

1. 什么是工厂模式?工厂模式定义一个创建对象的接口,这个接口决定实例的生成方式,但是并不决定所要生成的具体的类,具体的处理全部交给子类处理。2. 什么时候使用工厂模式?如果需要创建多种对象,同时这些对象又有极大的相似点,可以考虑使用工厂设计模式。3.怎么使用工厂模式?3.1 工厂模式中的角色Product(产品)Product是一个抽象类,它定义了工厂模式中生成的那些实例所持有...

2019-09-27 16:38:39 233

原创 设计模式---适配器模式(Adapter)

1. 什么是适配器模式?适配器模式就是将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。适配器模式有两种:类适配器使用继承的适配器,也就是适配器类继承被适配的类。由于java在多继承上的局限性,类适配多数被用于服务一个类。对象适配器使用委托的适配器。在java中,委托就是只将某个方法中的实际处理交给其他实例的方法。其实就是适配器类持有被适配类的...

2019-09-26 16:17:39 325

原创 设计模式---模板方法(Template Method)模式

1. 什么是模板方法模式?在父类中定义处理流程的框架,在子类中实现具体的处理。从字面上理解,模板方法模式是带有模板功能的模式,而组成模板的方法被定义在父类中。这些方法基本上都是抽象方法,模板只是规定了处理的流程或者步骤。子类实现了这些抽象方法的具体处理,在不同的子类中实现不同的具体处理,当父类的模板方法被调用时也就有不同的具体实现。但是,无论子类的具体实现是怎样的,处理流程都会按照父类中所定...

2019-09-25 14:37:52 162

原创 java UTC时间格式转换

UTC时间格式样例:2018-09-28T16:00:00.000Z常用的时间格式样式:2018-09-28 24:00:00将常用时间格式转换成UTC格式public static String formatUTC(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");...

2019-09-24 17:38:41 2555

原创 设计模式---迭代器(Iterator)模式

1. 什么是迭代器模式?迭代器模式,提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器模式的本质是将遍历聚合对象中数据的行为提取出来,封装到一个迭代器中,通过专门的迭代器来遍历聚合对象的内部数据。2. 迭代器用来做什么?用于在数据集合中按照顺序遍历集合。3. 迭代器模式中的角色Iterator(迭代器)一般是一个接口,负责定义遍历元素的方法。Con...

2019-09-24 14:25:29 286

原创 高级排序--归并排序

归并排序的基本原理归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表。实现思路假设有有序数组a:[ 38,69,70,71 ],和有序数组b:[ 11,17,28 ],要使用归并排序来实现a和b的排序:定义一个临时的数组temp,用于存放排序后的元素。其长度为a和b的长度总和。比较a[ 0 ]与b[ 0 ]的大小,将小的值放到temp[ 0 ],大的值继续参与下次比较。...

2019-09-17 15:50:24 152

原创 桶排序--解决待排序数组中有0或者重复元素

关于桶排序的基本实现,可以参考:https://blog.csdn.net/weixin_45051996/article/details/100917360这里就直接上代码了:public class BucketSort { /** * 桶排序 * 这里仍然有一个问题,就是桶排序只能实现正整数的排序 * * @param arr 待排序数...

2019-09-17 12:06:36 1397

原创 高级排序--桶排序

关于桶排序桶排序是稳定的;桶排序是常见排序算法中最快的一种,大多数情况下比快速排序和归并排序还要快;桶排序非常快但是也非常消耗空间,典型的以空间换时间,基本上是最耗内存的排序算法。实现思路首先,桶排序中对于无序数组有个要求:成员隶属于固定(有限)的区间,如范围为0~10例如:待排数组[6, 2, 4, 1, 5, 9]准备10个空桶:顺序从待排数组中取出数字,首先6被取出...

2019-09-17 11:22:28 195

原创 选择排序

算法介绍选择排序具有二次方程增长阶,一次仅适用于排序小的列表。选择排序通过列表反复扫描,每次扫描选择一项,然后将这一项移动到列表中正确的位置。与冒泡排序不一样的地方,冒泡排序是每次比较相邻的两个元素。而选择排序是考虑列表中未经排序的部分,每次都选出一个最小值或者最大值,然后将这个值放到这部分的最前面。实现思路循环数组,假设第i个元素就是最小的元素。循环剩下的元素(即从i+1开始循环)...

2019-09-16 16:30:36 93

原创 插入排序

算法介绍仅用于排序小列表,如果需要排序的列表几乎已经排序,则插入排序比冒泡排序更有效率。算法实现如果需要通过插入排序算法来排序一个列表,那么:需要将列表分为两个子列表:排序列表和未排序列表。最初排序列表中有第一个元素,而未排序列表中包含所有剩余的元素。循环为排序列表,将第一元素放到循环列表中的正确位置。代码public class InsertSort { pr...

2019-09-16 14:11:35 67

原创 冒泡排序

public class BubbleSort { private static int[] arr = {5,2,6,7,3}; /** * 从小到大排序 * @param arr 需要排序的数组 */ private static void sort(int[] arr) { int n = arr.length; // 待循环数组长度 // 循环数组 for (int i = 0; i <

2019-09-16 09:49:54 87

空空如也

空空如也

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

TA关注的人

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