自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之装饰者模式(Java)

比如,当继承导致类爆炸时、目标类被 final 修饰时,都不宜通过创建目标类的子类来扩展功能。1.装饰者模式的核心思想是通过创建一个装饰对象(即装饰者),动态扩展目标对象的功能,并且不会改变目标对象的结构,提供了一种比继承更灵活的替代方案。装饰者模式:动态的将新功能附件到对象上 在对象功能扩展方面,它比继承更有弹性。2.需要注意的是,装饰对象要与目标对象实现相同的接口,或继承相同的抽象类;2.装饰者的实现类的构造方法中 持有目标类的父类引用。2.要求不影响其他对象,为特定目标对象添加功能。

2023-06-16 21:09:01 74

原创 设计模式之观察者模式(Java)

主题与观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。在观察者模式中,会改变的是主题的状态。对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化。观察者模式利用”组合“将许多观察者组合进主题中。对象之间的这种关系不是通过继承产生的。而是在运行时利用组合的方式而产生的。找出程序中会变化的方面,然后将其和固定不变的方面相分离。现有接口:提供温度,气压和湿度的接口。松耦合 主题者和观察者之间的关系。

2023-06-15 12:39:02 392

原创 设计模式之策略模式(Java)

策略模式是一种定义一系列策略的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合不明白耦合的概念 参见此文章策略模式的策略类层次为GoBehavior定义了一系列的可供重用的算法或行为。继承有助于吸取出这些算法中公用功能在基本的策略模式中,选择所用具体实现的职责由客户端对象承担,并转给策略模式的策略对象。

2023-06-13 18:26:12 93

原创 好的模块软件设计的目标是高内聚低耦合

降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。高内聚是指类与类之间的关系而定,高,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运行起来就会出问题。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。:模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

2023-06-13 15:56:36 208

原创 Java 异常深度理解

/如果在某种条件下成立 则抛出自定义异常 if(true) {try {//写一些code处理 然后再抛出异常 throw new RuntimeException(e);} } } }通常,自定义的异常类应该包含两个构造器,一个是默认的构造器;另一个是带有详细描述信息的构造器。

2023-06-12 21:06:39 42

原创 Java 反射?反射深度理解

反射 初步探究

2023-06-11 21:55:51 41

原创 集合LinkedList源码精解(好理解)

LinkedList是由其内部类Node组成的,Node里面包含一个List元素element和2个Node对象或者称之为指向Node的地址对象,连接关系如上图。由于LinkedList的数据结构,它没有所谓的初始大小,也没有所谓的扩容因子,与ArrayList不同。寄语:我就是一直憋龟,一步一步慢慢爬。

2023-06-08 23:40:22 32

原创 集合ArrayList源码精解(好理解)

默认初始容量是,但是如果你new一个不传参数的ArrayList,size开始是0,但是他会创建一个Object 为10的数组。看下ArrayList代码,我们可以看到底层是起码为 elemetDate的Object数组,没有指定数组大小。就是新的数组大小=原来的大小+原来的大小右移1位(java中无符号右移一位,类似于除法除2运算)所以ArrayList扩容是1.5倍,没有扩容因子,当数组容量超过最大值时扩容。当执行到超过10个元素的时候,数组扩容到15.等同于新的数组大小=原来的大小+原来的大小/2。

2023-06-07 14:22:28 36

原创 下载JDK源码Debug(可写自己注释)

2.安装完软件后,记得配置环境变量,不然cmd 不识别命令。6.注意:如果写注释,尽量在代码后面写,不要重起一行。5.新建工程把Sourcepath指向下载代码。1.中关村下载Mercurial安装包。3.输出这个命令下载JDK源代码。如果重起一行导致代码显示行数不对。4.下载对应的jdk11。

2023-06-05 23:00:40 78

原创 如何快速学习一门新IT技术 (兴趣 专注 时间)

学习任何知识或者技能,都是需要全身贯注,身体和脑袋都要全身贯注。我之前一直,想把学习知识的某个兴趣提升,这样学习过程就不会很痛苦。因为是自己想学,就是主动学习。对了,有关兴趣提升,我建议参考,胖子邓的这本书最后,祝大家好好学习,天天进步,最重要的是开心高效的学习,如果觉得写的还可以,请给一个小小的赞啦,我写了一个小时。

2023-06-05 12:05:35 77

原创 Java中的锁以及synchronized解决需要同步问题(附加案例和代码)

Java 并发 synchronized使用

2023-06-03 16:00:46 403

原创 Java--基础 面向对象特性之多态之二

抽象类在一个类中,如果包含抽象方法,则该类为抽象类。特点:1.抽象类不能被实例化,不能在通过new创建其实例对象。一个普通类继承了该抽象类,实例化子类的时候,可以通过super()来调用抽象类的构造函数。2.抽象类中可以没有抽象方法,但是包含了抽象方法的类一定是抽象类。3.一个普通类继承了抽象类,则该子类必须实现抽象类中的所有抽象方法。4.如果继承了抽象类的子类也是一个抽象类,则不用...

2020-04-21 08:43:23 86

原创 Java--基础 面向对象特性之多态之一

多态:一个事物,有多种表现形态。cat 是一只猫 是一个宠物 是一个动物多态在实际使用中,需要建立继承关系,建立接口和实现类的关系。当一个程序因为需求的变化而需要频繁修改代码的时候,则表示改程序的可扩展性和可维护性很差,使用多态可以对其优化。继承和方法重写是实现多态的基础形参(形式参数)实参(实际参数)方法定义时参数列表中的数据就是形参在调用方法时传入的数据就是实参多态的使用:...

2020-04-21 08:40:20 98

原创 Java--基础 面向对象特性之继承三

继承:子类可以继承父类非私有的信息(属性和方法)public protected 默认public 修饰就不需要get set方法一旦Cat和Pet建立继承关系之后,Cat类就继承了Pet类的name和age,此时在Cat类中,name,this.name,super.name表示的是同一个数据,都指向了Pet的nameCat里面没有age,name , Cat调用父类属性 是直接指向父类...

2020-04-20 11:00:19 73

原创 Java--基础 面向对象特性之继承二

继承是Java实现代码复用的一种重要方式1.减少代码量2.提高代码的维护性基本语法:创建父类public class 父类名{//属性和方法}public class 子类名 extends 父类名{//子类特有的属性和方法}两个类建立起继承关系,我们称之为父子类,子类可以用于父类的信息(属性和方法)。super关键字,专门用于有继承关系的父子类,子类可以通过super关...

2020-04-20 10:58:36 127

原创 Java--基础 面向对象特性之继承一

继承:Dog:name age weight strain(品种)Cat:name age weight gender将多个类中相同的信息(属性+方法)提取出来,多个类可以共用这部分信息。通过继承的机制来完成。将Dog和Cat相同的信息提取到Animal,然后让Dog和Cat继承Animal,表示继承了Animal中的信息。Java中如何设置两个类的继承关系?**通过extends...

2020-04-20 10:42:06 116

原创 Java --基础 面向对象特性之封装

为什么要封装:安全性 准确性 外部不能随意修改 只能根据特定的方法去操作封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问这些信息,外部只能通过该类提供的特定方法来实现对隐藏信息的操作和访问。如何实现封装:1.修改属性的访问权限,设置为private(私有)一旦设置为私有只能在该类的方法中使用2.创建公有public的getter和setter方法(如果不创建这些公有方法 就没有意...

2020-04-20 10:26:52 103

原创 面向对象开发步骤及初始化事项

程序开发步骤:1.需求分析2.定义类(对象的模版)3.创建对象,通过调用类的构造方法/函数来创建对象.构造方法种类:有参构造和无参构造(每个类都有一个默认的无参构造)无参构造只创建对象,不对对象的属性进行赋值。有参构造创建对象,并且对对象的属性进行赋值。this关键字:指当前类所产生的对象this可以来修饰类中的属性和方法,只能在方法中使用。在方法中的用法this.属性名t...

2020-04-19 22:28:43 278

原创 面向对象编程思想

Java:类和对象对象是程序中的每一个参与角色的具体的模块化,可以用来表示世间万物中任何一个个体。类是对象的模版,具有相同属性和方法的一组对象的集合,对象的抽象化的描述。对象是类的具体化的描述由类产生对象类是构成Java程序的单位,Java程序通过类来组织其结构,是指在开发期间,静态。对象是Java程序在运行时的单位,运行期间的Java程序是通过多个对象之间的相互作用关系来完成需求,动...

2020-04-19 22:25:28 97

原创 面向对象背景和概念

面向对象编程1.结构化开发(面向过程)面向功能划分的软件结构从上到下,按步执行最小的粒度是方法步骤繁琐,制约了软件的可维护性和可扩展性代码一次成型,后续修改非常麻烦2.面向对象开发把软件系统看成各种对象的集合系统结构稳定子系统相对独立软件的可维护性,可扩展性强面向过程编程关注点在于每一个细节,每一步的具体操作。面向对象关注点在于整个事件的参与对象,将系统中的参与者全部看成...

2020-04-19 22:08:42 404

原创 Java 一次编译到处运行 版本问题

Java 一次编译到处运行问题欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的...

2019-08-22 21:38:07 386

空空如也

空空如也

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

TA关注的人

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