摘要:
## 简介 `java.util.ArrayList` `List` 接口的可调整大小的数组实现。 **源码中对数组的操作非常精彩,值得学习** **数组一旦初始化长度就不可以发生改变** 数组结构特点 - 增删慢:每次删除元素,都需要更改数组长度、拷贝以及移动元素位置。 - 查询快:由于数组在内存 阅读全文
posted @ 2023-06-19 14:02
流星<。)#)))≦
阅读(134)
评论(0)
推荐(0)
摘要:
## 前言 这个视频是大学教学内容,之前也学习过尚硅谷的视频课程,相对于尚硅谷的,内容要更全面一些,有对应的教材,但是语言是C,尚硅谷的实例更多一些。 对于入门来说,这个视频教程更好一些 ## 目录 * 概论 * [20230227 1.1. 什么是数据结构](https://www.cnblogs 阅读全文
posted @ 2023-06-19 11:01
流星<。)#)))≦
阅读(58)
评论(0)
推荐(0)
摘要:
## 介绍 - `java.util.stream.Stream` - `public interface Stream extends BaseStream>` - 对应基本类型类:`IntStream`, `LongStream`, `DoubleStream` ## API ### stati 阅读全文
posted @ 2023-06-19 10:58
流星<。)#)))≦
阅读(23)
评论(0)
推荐(0)
摘要:
## 希尔排序( by Donald Shell )  - 定义增量序列 $D_M > D_{M-1} > … > 阅读全文
posted @ 2023-06-19 10:54
流星<。)#)))≦
阅读(15)
评论(0)
推荐(0)
摘要:
## 参考资料 * [大话设计模式 - 微信读书](https://weread.qq.com/web/reader/63632ba0813ab78f4g011d17?) ### 目录 * [0. 面向对象基础](https://www.cnblogs.com/huangwenjie/p/17490 阅读全文
posted @ 2023-06-19 10:07
流星<。)#)))≦
阅读(21)
评论(0)
推荐(0)
摘要:
## 介绍 对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并 阅读全文
posted @ 2023-06-19 09:56
流星<。)#)))≦
阅读(27)
评论(0)
推荐(0)
摘要:
## 介绍 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 阅读全文
posted @ 2023-06-19 09:55
流星<。)#)))≦
阅读(43)
评论(0)
推荐(0)
摘要:
## 介绍 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示 当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式 你需要对聚集有多种方式遍历时,可以考虑用迭代器模式。 为遍历不同的聚集结构提供如开始、下一 阅读全文
posted @ 2023-06-19 09:48
流星<。)#)))≦
阅读(20)
评论(0)
推荐(0)
摘要:
## 介绍 组合模式(Composite),将对象组合成树形结构以表示'部分-整体'的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 #)))≦
阅读(30)
评论(0)
推荐(0)
摘要:
## 介绍 备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 #)))≦
阅读(56)
评论(0)
推荐(0)
摘要:
## 介绍 适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式主要解决的问题:简单地说,就是需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是我们就想办法适配它 系统的数据和行为 阅读全文
posted @ 2023-06-19 09:46
流星<。)#)))≦
阅读(30)
评论(0)
推荐(0)
摘要:
## 介绍 状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化 #)))≦
阅读(45)
评论(0)
推荐(0)
摘要:
## 介绍 工厂方法模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类。 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 #)))≦
阅读(41)
评论(0)
推荐(0)
摘要:
观察者模式 又叫作 发布-订阅(Publish/Subscribe)模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 #)))≦
阅读(43)
评论(0)
推荐(0)
摘要:
'建造者模式(Builder)',又叫生成器模式 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 #)))≦
阅读(44)
评论(0)
推荐(0)
摘要:
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 #)))≦
阅读(27)
评论(0)
推荐(0)
摘要:
迪米特法则(LoD) 也叫 最少知识原则 迪米特法则(LoD):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限 面向对象 阅读全文
posted @ 2023-06-19 09:44
流星<。)#)))≦
阅读(24)
评论(0)
推荐(0)
摘要:
既然用了继承,并且肯定这个继承有意义,就应该要成为子类的模板,所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理 模板方法(Template Method) 阅读全文
posted @ 2023-06-19 09:44
流星<。)#)))≦
阅读(37)
评论(0)
推荐(0)
摘要:
原型模式(Prototype),用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。  原型模式其实就是 阅读全文
posted @ 2023-06-19 09:44
流星<。)#)))≦
阅读(22)
评论(0)
推荐(0)
摘要:
## 介绍 简单工厂模式的最大优点在于工厂类中包含必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 就编程来说,我们应该尽量将长的代码分派切割成小段,再将每一小段'封装'起来,减少每段代码之间的耦合,这样风险就分散了,需要修改或扩展的难度就降低了。 工 阅读全文
posted @ 2023-06-19 09:43
流星<。)#)))≦
阅读(31)
评论(0)
推荐(0)
摘要:
## 介绍 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。  * ISubject类,定义了 阅读全文
posted @ 2023-06-19 09:43
流星<。)#)))≦
阅读(31)
评论(0)
推荐(0)
摘要:
## 介绍 需要把所需的功能**按正确的顺序**串联起来进行控制 建造者模式要求建造的过程必须是稳定的,而现在我们这个例子,建造过程是不稳定的 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 #)))≦
阅读(26)
评论(0)
推荐(0)
摘要:
## 依赖倒转原则 依赖倒转原则,也叫 依赖倒置原则 依赖倒转原则 1. 高层模块不应该依赖低层模块。两个都应该依赖抽象。 2. 抽象不应该依赖细节。细节应该依赖抽象。 要针对接口编程,不要对实现编程 **电脑硬件的发展,和面向对象思想发展是完全类似的。这也说明世间万物都是遵循某种类似的规律,谁先把 阅读全文
posted @ 2023-06-19 09:42
流星<。)#)))≦
阅读(32)
评论(0)
推荐(0)
摘要:
开放-封闭原则(The Open-Closeed Principle,OCP) 或叫 开-闭原则 开放-封闭原则,是说软件实体(类、模块、函数等)应该可以扩展,但是不可修改。 **这个原则其实是有两个特征,一个是说'对于扩展是开放的(Open for extension)',另一个是说'对于修改是封 阅读全文
posted @ 2023-06-19 09:42
流星<。)#)))≦
阅读(56)
评论(0)
推荐(0)
摘要:
## 介绍 电子阅读器vs.手机: 理想的阅读,不管是优秀的小说,还是专业的图书,经过一段适应时间,可以进入一种沉浸状态,达到'心流'的境界。在这样的状态下,我们仿佛在作者面前与他交流,听他讲故事、听他表达思想,忘记了外界的环境、忘记了时间……进入这样的状态,我们会非常专注,废寝忘食,会拥有很大的充 阅读全文
posted @ 2023-06-19 09:41
流星<。)#)))≦
阅读(20)
评论(0)
推荐(0)
摘要:
## 介绍 简单工厂模式虽然也能解决这个问题,但这个模式只是解决对象的创建问题,而且由于工厂本身包括所有的收费方式,商场是可能经常性地更改打折额度和返利额度,每次维护或扩展收费方式都要改动这个工厂,以致代码需重新编译部署,这真的是很糟糕的处理方式,所以用它不是最好的办法。面对算法的时常变动,应该有更 阅读全文
posted @ 2023-06-19 09:41
流星<。)#)))≦
阅读(36)
评论(0)
推荐(0)
摘要:
## 简单工厂模式实现计算器  定义运算类 ```java public abstract class Oper 阅读全文
posted @ 2023-06-19 09:40
流星<。)#)))≦
阅读(26)
评论(0)
推荐(0)
摘要:
## UML 这一节非常帮!!! [1.11 UML类图](https://weread.qq.com/web/reader/63632ba0813ab78f4g011d17k182326e0221182be0c5ca23?) ### 几种关系以及代码示例 #)))≦
阅读(38)
评论(0)
推荐(0)
摘要:
## 面向对象的三大特性:封装、继承、多态 面向对象的好处:可维护、可扩展、可复用、灵活性好 ### 封装 每个对象都包含它能进行操作所需要的所有信息,这个特性称为**封装**,因此对象不必依赖其他对象来完成自己的操作。 封装有很多好处: * 第一,良好的封装能够减少耦合 * 第二,类内部的实现可以 阅读全文
posted @ 2023-06-19 09:37
流星<。)#)))≦
阅读(31)
评论(0)
推荐(0)
浙公网安备 33010602011771号