自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 适配器模式

动机通常情况下,客户端可以通过目标类的接口访问到它所提供的服务。有时现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。这时候就需要适配器,适配器的出现可以保证在不修改原有目标类和客户端代码的基础上确保能够重用现有的类。定义讲一个类的接口转换成用户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。(1)类适配器模式(2

2021-04-24 09:26:05 142

原创 抽象工厂模式

抽象工厂模式是工厂方法模式的泛化版,工厂方法模式是一种特殊的抽象工厂模式。在工厂方法模式中,每一个具体工厂只能生产一种具体产品,而在抽象工厂方法中,每一个具体工厂可以生产多个具体产品。定义抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。组成抽象工厂模式包含四个角色:抽象工厂、具体工厂、抽象产品、具体产品。举例接着上一次工厂方法举的例子:电视机有很多品牌,但是每一个电器品牌并不是只做电视机的,还会涉及其他电器:冰箱

2021-04-22 19:54:39 294

原创 原型模式

定义在软件系统中有时候需要多次创建某一类型的对象,为了简化创建过程,可以只需要创建一个对象,然后再通过克隆的方式复制出多个相同的对象,这就是原型模式的设计思想。因为是使用克隆获取多个对象,因此原型模式可以分为两种形式:浅克隆、深克隆。浅克隆:对于基本数据类型,会进行数据的复制。而对于引用类型,只会复制其地址。因此,如果A是B浅克隆的结果,那么当我们修改A或B其中一方基本数据类型的值,另一方不会受到影响;但是如果我们修改其中一方的引用类型数据,另一方也会跟着一起改变,因为变量存储的只是一个地址值,它们

2021-04-21 20:20:10 92

原创 工厂方法模式

工厂方法模式属于创建型模式。它是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的缺陷,更好的符合“开闭原则”的要求。当我们添加一个新的产品对象的时候,不需要对已有系统做任何修改,只需要添加一个新的产品类和新的工厂。将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。定义:在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例

2021-04-20 10:35:16 160

原创 简单工厂模式

简单工厂模式又称为静态工厂模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。工厂类只负责创建对象,而不必关心对象的实现细节。举例水果有很多种,有苹果、橙子、香蕉等,利用简单工厂模式,我们应该创建一个水果类Fruit,然后具体的水果继承这个类。还需要创建一个工厂类FruitFactory负责创建这些水果的实例。类与类之间关系图如下:代码如下:Fruit.javapublic ab

2021-04-19 23:09:48 196

原创 设计模式七大设计原则

单一职责原则定义:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。开闭原则(OCP原则)对扩展开放,对修改关闭.(即设计一个模块的时候,应该保证能使得这个模块原先的代码不改变的前提下进行扩展)为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。开闭原则还可以通过更加具体的“对可变现封装原则”来描述,对可变性封装原则要求找到系统的可变因素并将其封装起来。对每一个模式进行优缺点评价时都会以开闭原则作为一个重要的评价依据,以判断基于该模式设计的系统是否具备良好的灵

2021-04-19 22:07:40 119

原创 双亲委派模型

类与类加载器在了解双亲委派模型之前,首先我们需要了解类与类加载器。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立

2021-04-13 21:35:32 84

原创 ArrayList:初始化和扩容机制的源码分析

private static final Object[] EMPTY_ELEMENTDATA = new Object[0]; //1 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = new Object[0]; //2 transient Object[] elementData; //注意:这里elementData指的是容量的大小,而不是实际存储的大小 public ArrayList(int v...

2021-04-13 18:02:24 290

原创 2021春招面经 Java岗

自我介绍==和equals的区别简单说一下Java的封装、继承、多态封装有哪几种表现形式简单说一下垃圾回收机制mysql有哪些存储引擎MyISAM和InnoDB的区别mysql什么情况下会索引失效优化sql的步骤

2021-04-12 16:27:34 263

原创 MySQL:索引优化分析

文章目录概述mysql索引分类基本语法mysql索引结构BTree索引是否创建索引的选择本文通过学习尚硅谷Mysql索引视频整理得出概述在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构就是索引。官方定义:索引是帮助Mysql高效获取数据的数据结构。索引的目的在于提高查询效率,可以类比字典。对已排序的快速查找数据结构。索引:排序、查找。一般来说索引本身也很大,不可能全部存储在内存中,因此索

2021-04-10 10:43:43 329 1

原创 垃圾收集算法:分代收集算法、标记-清除算法、标记-复制算法、标记-整理算法

文章目录垃圾收集算法分代收集算法标记-清除算法标记-复制算法标记-整理算法本文内容是阅读《深入理解Java虚拟机》第三章的学习笔记。垃圾收集算法分代收集算法是目前虚拟机使用的回收算法。它解决了标记整理不适用于老年代的问题,将内存分为各个年代。一般分为老年代和新生代。标记-清除算法标记-清除算法是最早出现也是最基础的垃圾收集算法。执行过程:算法可分为两个阶段(标记和清除):首先标记处所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未

2021-04-10 08:43:12 205

原创 对象间四种引用关系:强引用、软引用、弱引用、虚引用。

引用判断对象是否存活和“引用”离不开关系。在JDK1.2后,引用被分为4种:强引用、软引用、弱引用、虚引用。这四种引用强度依次减弱。强引用:是指在程序代码之中普遍存在的引用赋值,即类似"Object obj=new Object()"这种引用关系。无论任何情况下,只要强引用关系还存在,垃圾收集器就永远不会回收掉被引用的对象。软引用:用来描述一些还有用,但非必须的对象。只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收。(即在内存不足时才会进行回收)如果这

2021-04-10 08:36:47 734

原创 MYSQL:七种JOIN连接

假设存在A表、B表,且A、B表有公共部分,存在以下七种连接:内连接:select * from A inner join B on A.key=B.key;左连接:select * from A left join B on A.key=B.key;右连接:select * from A right join B on A.key=B.key;A-公共部分:select * from A left join B on A.key=B.key where B.key is null;B-公共部分

2021-04-09 21:03:43 216

原创 MYSQL:常用存储引擎MyISAM和InnoDB的区别

Mysql与其它数据库相比,它的不同主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。存储引擎:真正的负责了Mysql中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,我们可以根据实际需要进行选取。MyISAM和InnoDB存储引擎的区别:MyISAM不支持主键、外键和事务;InnoDB支持。MyISAM使用表锁,只要操作了表,即使是一条记录,也会锁住整.

2021-04-09 20:09:23 159

原创 《深入理解Java虚拟机》十款HotSpot虚拟机的垃圾收集器

文章目录基础引用垃圾收集算法标记-清除算法标记-复制算法标记-整理算法垃圾收集器经典垃圾收集器Serial 收集器ParNew 收集器Parallel Scavenge 收集器Serial Old 收集器Parallel Old 收集器CMS 收集器Garbage First 收集器(G1)低延迟垃圾收集器Shenandoah 收集器ZGC 收集器特殊的垃圾收集器Epsilon 收集器本文内容是阅读《深入理解Java虚拟机》第三章的学习笔记。基础引用判断对象是否存活和“引用”离不开关系。在JDK1

2021-04-09 19:28:13 200

原创 求整数n开m次平方的和

题目描述数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。输入描述:输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。输出描述:对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。示例1输入81 42 2输出94.733.41解题代码public static void main(String[] args){ Scanner sc=new Scanner(Sy

2021-04-09 17:07:07 149

原创 蓝桥杯

问题描述小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。在冒泡排序中,每次只能交换相邻的两个元素。小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符, 则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。 例如,对于字符串 lan 排序,只需要 1 次交换。对于字符串 qiao 排序, 总共需要 4 次交换。 小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要 100 次交 换,可是他忘了吧这个字符串记下来,现在找不到了。请帮助小蓝找一个只包含小写英文字母且没有字母重.

2021-04-08 14:18:26 629

空空如也

空空如也

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

TA关注的人

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