数据结构(1)——绪论

1 数据结构 1数据元素由多个数据项组成 2数据对象由性质相同的数据元素组成的集合,是数据的一个子集 3数据结构是相互之间存在一种或者多种特定关系的数据元素的集合 4数据结构分逻辑结构和物理结构(存储结构) 2算法 算法的5大特性:有穷性,确定性,可行性,输入,输出 算法的时间复...

2019-05-19 16:02:05

阅读数 12

评论数 0

java并发编程 —— synchronized与对象头

1 synchronized关键字 使用synchronized关键字有以下三种使用方式: 同步代码块 同步方法 静态同步方法 通过编译的class文件可以看到synchronized代码块使用了monitorenter和monitorexit两个指令分别获取锁标记和释放锁标记,而sync...

2019-03-08 10:06:29

阅读数 80

评论数 0

分布式锁

一、基于数据库的实现方式 基于数据库的实现方式的核心思想是:在数据库中创建一个表,表中包含方法名等字段,并在方法名字段上创建唯一索引,想要执行某个方法,就使用这个方法名向表中插入数据,成功插入则获取锁,执行完成后删除对应的行数据释放锁。 (1)创建一个表: DROP TABLE IF EX...

2019-03-04 18:00:37

阅读数 71

评论数 0

java设计模式(十)—— 责任链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会...

2019-03-04 14:29:35

阅读数 15

评论数 0

java设计模式(九)—— 享元模式

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式 1、如果一个系统中存在大量的相同或者相似的对象,由于这类对象的大量使用,会造成系统内存的耗费,可以使用享元模...

2019-03-04 13:55:04

阅读数 21

评论数 0

java设计模式(八)—— 命令模式

1.命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。 2.每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。 3.命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接...

2019-03-04 13:45:36

阅读数 16

评论数 0

java设计模式(七)—— 适配器模式

适配器模式与装饰器模式的区别 装饰器与适配器都有一个别名叫做 包装模式(Wrapper),它们看似都是起到包装一个类或对象的作用,但是使用它们的目的很不一一样。适配器模式的意义是要将一个接口转变成另一个接口,它的目的是通过改变接口来达到重复使用的目的。 而装饰器模式不是要改变被装饰对象的接口,...

2019-03-04 12:57:32

阅读数 9

评论数 0

java设计模式(六)—— 装饰器模式

其实就是一个类包装一个类传递来的对象实现 1.抽象构件 /** * 定义作为人类应有的一些规范 */ public interface Human { void eating(); } 2.具体构件 /** * 具体构件类 */ public class Man im...

2019-03-03 18:57:54

阅读数 24

评论数 0

java设计模式(五)—— 原型模式

原型模式的本质是Java中的克隆技术,以某个对象为原型,复制出新的对象。 通过原型模式创建的克隆对象属性值完全和原型对象相同,并且克隆出的信对象不会改变影响原型对象。 原型模式的实现 (浅克隆) Cloneable接口和clone方法。 一般而言,clone()方法满足:   1. ...

2019-03-03 18:26:55

阅读数 56

评论数 0

java设计模式(四)—— 多例模式

每次都new对象,典型:数据库连接池 MyConnectionsconn=MyConnections.getInstance(); publicstaticMyConnectionsgetInstance(){ Randomrandom=newRandom(); currN...

2019-03-03 17:30:21

阅读数 16

评论数 0

java设计模式(三)—— 单例模式

双重检查 public class Singleton { private static volatile Singleton singleton; private Singleton() {} public static Singleton getInsta...

2019-03-03 17:20:14

阅读数 14

评论数 0

java设计模式(二)—— 抽象工厂模式

1.抽象产品接口:定义产品的接口,公共的暴露方法。便于实际的产品类实现。 2.具体的产品类:包含实际产品的类的逻辑处理: 3.抽象工厂接口:定义产生系列对象的接口 4.具体的工厂实现:实现抽象的接口工厂,返回具体的产品类的实现。 下面是具体的代码示例: 1.抽象的产品接口,定义了...

2019-03-03 17:12:49

阅读数 40

评论数 0

java设计模式 ——全貌

一、创建型模式 1、抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 2、生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的...

2019-03-03 16:52:19

阅读数 27

评论数 0

数据结构 —— 红黑树

特性 节点是红色或黑色。 根节点是黑色。 每个叶子节点都是黑色的空节点(NIL节点)。 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)。 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 择取两篇...

2019-03-01 16:09:27

阅读数 15

评论数 0

数据结构 —— 哈夫曼(huffman)树和哈夫曼编码及压缩

择取两篇博客 1 https://www.cnblogs.com/kubixuesheng/p/4397798.html 2 https://www.cnblogs.com/liguangsunls/p/7207265.html 哈夫曼树的构造(哈夫曼算法) 1.根据给定的n个权值...

2019-03-01 15:02:33

阅读数 43

评论数 0

数据结构 —— B树与B+树

B树 B+树的优势有: 1.单一节点存储更多的元素,使得查询的IO次数更少。(单一节点存储更多的元素是因为B+的非叶子节点不存储数据,存的是索引) 2.所有查询都要查找到叶子节点,查询性能稳定。(同样是因为非叶子节点不存储数据,数据只有叶子节点有) 3.所有叶子节点形成有序链表,便于范围查询...

2019-03-01 14:01:40

阅读数 24

评论数 0

数据结构 ——二叉查找树《BST》与平衡二叉树《AVL》

1二叉查找树定义(查找最好时间复杂度O(logN),最坏时间复杂度O(N)) 在二叉查找树中: (01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; (03) 任意节点的左、右子树也分别为...

2019-03-01 13:47:02

阅读数 28

评论数 0

数据结构——二叉树

1 二叉树概念 二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者有一个根节点和两颗互不相交的,方便称为根节点的左子树和右子树的二叉树组成 一般的树都可以使用孩子兄弟表示法转换为二叉树表示 (二)特殊的二叉树...

2019-02-28 14:13:11

阅读数 27

评论数 0

数据结构 ——树

1 基础知识 1.树的定义 树是一种非线性的数据结构,右n(n>=0)个结点组成的有限集合,如果n=0,称为空树,如果n>0,则: 有一个特定的结点被称之为跟结点(root),根结点只有直接后继,没有前驱, 除根结点外的其他结点划分为m(...

2019-02-28 11:14:08

阅读数 44

评论数 0

排序算法(九)总结

      堆排序、快速排序、希尔排序、直接选择排序不稳定的排序算法, 基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。       1 简单选择排序    是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素  ...

2019-02-27 16:53:15

阅读数 43

评论数 0

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