夯实基础
扎好马步,再踢腿
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 · 329 阅读 · 1 评论 -
设计模式学习记录-调停者、责任链、装饰器、观察者、组合、享元、代理、迭代器
调停者模式 参考 :https://www.cnblogs.com/V1haoge/p/6518603.html 思想:1个经理负责统筹所有员工工作 责任链模式 参考:https://www.jianshu.com/p/9f7d9775bdda 思想:签字审批需要依次向上一层层领导签字 装饰器模式 为已有产品动态的添加更多功能的一种方式,更多的功能采用装饰器接口,不同产品装饰器统一实现这个接口,这样不同产品会有同一功能下的不同表现形式。 观察者模式 需要定义事件、事件源对象(getSource) 组合模式原创 2020-07-13 18:00:49 · 315 阅读 · 0 评论 -
设计模式学习记录-单例模式、策略模式、工厂模式
设计模式本质都是多态 1、单例模式 2、策略模式 策略模式中调用的方法是唯一的,封装的是不同对象的不同的方法,强调动作。可以认为相当于把if-else/switch封装了。 3、工厂模式:不同产品对应不同工厂 简单工厂:工厂类(SimpleFactory)拥有一个工厂方法(create) 工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品 抽象工厂:抽象工厂是应对产品族概念的。 其实只分工厂方法和抽象工厂(工厂模式),简单工厂只是一个叫法 工厂方法就是抽象工厂的特例,也原创 2020-07-11 23:38:07 · 232 阅读 · 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 · 188 阅读 · 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 · 173 阅读 · 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 · 508 阅读 · 0 评论 -
数据结构-String中的chars()和codePoints
个人理解,如有不对,欢迎评论指出! public final class String implements java.io.Serializable, Comparable<String>, CharSequence char 每个字符都对应着一个unicode编码,后来16位的unicode编码不够用了,又加了一些编码,称为『增补编码』,对应字符称为『增补字符』。 代码点: 表示字符的unicode编码。 代码单元: 有了增补字符之后,代码点与字符不是一一对应原创 2020-06-22 15:43:27 · 1339 阅读 · 0 评论 -
数据结构-队列queue
Queue 继承Collection public 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 · 204 阅读 · 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 · 171 阅读 · 0 评论 -
数据结构-线性表
公共接口 // 线性表公共接口IList public 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 · 220 阅读 · 0 评论 -
数据结构-基本概念
基本概念 数据:如一张表 数据元素:表中列、行 数据据:列、行中的每个值 数据对象:具有相同类型的行、列 数据结构:不同数据元素的之间的关系,如行与行之间的关系,列与列之间的关系,行与列之间的关系。 逻辑结构:集合结构,线性结构,树形结构,图形结构。 物理结构:顺序存储结构,链式存储结构 数据类型:(抽象:抽取出事物的共性)一个数据对象、数据对象中各数据元素之间的关系、对数据元素的操作三部分组成。 算法 算法的特性:输入输出、有穷性、确定性、可行性。 算法设计的要求:正确性、可读性、健壮性、时间效率高和存储原创 2020-06-17 16:58:20 · 292 阅读 · 0 评论
分享