夯实基础
扎好马步,再踢腿
caibaoli
-Github用户名caibaoli
-一直觉得名字是一个人的标签,想了好久,还是努力把本名做成标签,倒过来会更有趣些
展开
-
设计模式-构建、转换器、bridge、原型、备忘录、模板
构建模式构建复杂对象转换器模式一个类无法访问另一个类,中间加一个适配器桥接bridge模式用聚合代替继承,抽象和实现两个维度上同时发展命令(动作)模式doit和undo原型模式实现Cloneable,重写clone方法需要区分浅clone和深clone。浅clone:只clone第一个对象,第一个对象里的对象不会clone,需要重写clone稍改变下备忘录模式可以回到之前状态备忘录模式使用三个类 Memento、Originator 和 CareTaker。Memento 包含了要原创 2020-07-13 23:46:46 · 230 阅读 · 1 评论 -
设计模式学习记录-调停者、责任链、装饰器、观察者、组合、享元、代理、迭代器
调停者模式参考 :https://www.cnblogs.com/V1haoge/p/6518603.html思想:1个经理负责统筹所有员工工作责任链模式参考:https://www.jianshu.com/p/9f7d9775bdda思想:签字审批需要依次向上一层层领导签字装饰器模式为已有产品动态的添加更多功能的一种方式,更多的功能采用装饰器接口,不同产品装饰器统一实现这个接口,这样不同产品会有同一功能下的不同表现形式。观察者模式需要定义事件、事件源对象(getSource)组合模式原创 2020-07-13 18:00:49 · 247 阅读 · 0 评论 -
设计模式学习记录-单例模式、策略模式、工厂模式
设计模式本质都是多态1、单例模式2、策略模式策略模式中调用的方法是唯一的,封装的是不同对象的不同的方法,强调动作。可以认为相当于把if-else/switch封装了。3、工厂模式:不同产品对应不同工厂简单工厂:工厂类(SimpleFactory)拥有一个工厂方法(create)工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品抽象工厂:抽象工厂是应对产品族概念的。其实只分工厂方法和抽象工厂(工厂模式),简单工厂只是一个叫法工厂方法就是抽象工厂的特例,也原创 2020-07-11 23:38:07 · 156 阅读 · 0 评论 -
数据结构-树2
二叉树的特性1、在二叉树的第i层上至多有2^(i-1)个结点,i>=1;2、深度为k的二叉树至多有2^k-1,k>=1;3、n0=n2+1;4、n个结点的完全二叉树的深度为log_(2)n向下取整+1;5、双亲是结点i/2向下取整,左孩子是2i,右孩子是2i+1;【注】树存储结构中的孩子兄弟表示法会将树转化为二叉树,但此时转化成的二叉树上,一个结点的右子树是此结点的兄弟。意义与树的意义相悖,树中一个结点的右子树是此结点的孩子,这里注意一下。...原创 2020-06-29 22:06:29 · 116 阅读 · 0 评论 -
数据结构-树1
//树基本构造public class TreeNode<T> { T value; TreeNode<T> leftChild; TreeNode<T> rightChild; TreeNode(T value) { this.value = value; } TreeNode() { } /** * 增加左子节点 * addLeft: *原创 2020-06-23 21:54:47 · 123 阅读 · 0 评论 -
数据结构-String字符串匹配(BM,KMP)
KMP参考:https://baijiahao.baidu.com/s?id=1659735837100760934&wfr=spider&for=pc// KMP public static int kmp(String str, String pattern) { // 预处理,生成next数组 int[] next = getNexts(pattern); int j = 0; // 主循环,遍历主串字符原创 2020-06-22 22:45:32 · 417 阅读 · 0 评论 -
数据结构-String中的chars()和codePoints
个人理解,如有不对,欢迎评论指出!public final class String implements java.io.Serializable, Comparable<String>, CharSequencechar每个字符都对应着一个unicode编码,后来16位的unicode编码不够用了,又加了一些编码,称为『增补编码』,对应字符称为『增补字符』。代码点:表示字符的unicode编码。代码单元:有了增补字符之后,代码点与字符不是一一对应原创 2020-06-22 15:43:27 · 1159 阅读 · 0 评论 -
数据结构-队列queue
Queue继承Collectionpublic interface Queue<E> extends Collection<E>方法有boolean add(E)boolean offer(E)E remove()E poll()E element()E peek()Queue实现类们方法区别原创 2020-06-22 14:50:30 · 142 阅读 · 0 评论 -
数据结构-栈
斐波那契数列public static Stack<Integer> fib(int n) { Stack<Integer> stack = new Stack<Integer>(); if (n < 2) { if (n == 0) stack.push(0); if (n == 1) { stack.push(0);原创 2020-06-21 16:35:30 · 106 阅读 · 0 评论 -
数据结构-线性表
公共接口// 线性表公共接口IListpublic interface IList { // 清除数据为空表 public void clear(); // 判断是否是空表 public boolean isEmpty(); // 读取i位置上的值 public Object get(int i) throws Exception; // 在i位置上插入x public void insert(int i, Object x) thr原创 2020-06-20 12:25:11 · 161 阅读 · 0 评论 -
数据结构-基本概念
基本概念数据:如一张表数据元素:表中列、行数据据:列、行中的每个值数据对象:具有相同类型的行、列数据结构:不同数据元素的之间的关系,如行与行之间的关系,列与列之间的关系,行与列之间的关系。逻辑结构:集合结构,线性结构,树形结构,图形结构。物理结构:顺序存储结构,链式存储结构数据类型:(抽象:抽取出事物的共性)一个数据对象、数据对象中各数据元素之间的关系、对数据元素的操作三部分组成。算法算法的特性:输入输出、有穷性、确定性、可行性。算法设计的要求:正确性、可读性、健壮性、时间效率高和存储原创 2020-06-17 16:58:20 · 231 阅读 · 0 评论