- 博客(62)
- 资源 (1)
- 收藏
- 关注
原创 Java的几种引用
Java的几种引用Java 的引用类型有四种,分别是强引用(Strongly Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference),这四种引用类型的强度依次降低。引用的传统定义如果reference类型的数据中存储的数值代表的是另一块内存的起始地址,就称该reference数据是代表么某块内存、某个对象的引用。Java中的四种引用强引用强引用是最传统引用的定义,是指在程序代码中普遍存在的引用赋值,即
2020-12-07 19:25:20
356
1
原创 Iterator和 Iterable接口源码阅读
Iterator和 Iterable接口源码阅读IteratorIterator属于 java 集合框架,是一个集合上的迭代器,它在 Java 集合框架中代替了枚举。但是它又与枚举有两点不同:迭代器允许调用者在迭代期间使用定义明确的语句从基础集合中删除元素。方法名称进行了改进。接口的定义如下:public interface Iterator<E> { boolean hasNext(); E next(); default void remove(
2020-11-18 22:22:48
956
原创 python通过新 mplfinance 模块绘制 k 线图
python通过新 mplfinance 模块绘制 k 线图最近绘制 k 线图发现mplfinance从matplotlib中独立出来了,作为一个单独的模块,并且可以直接使用Pandas 的DataFrames。这里简单记录一下如何用新的mplfinance绘制一个 k 线图。只需要查看代码的,请滑到最后。环境安装数据使用的是Tushare提供的接口,这个接口也更新到了 pro版本,需要注册后使用。这里需要注意的是,调用不同的数据需要不同的积分,增加积分可以通过邀请新用户。安装 tusharep
2020-11-13 18:31:28
4523
9
原创 设计模式之简单工厂模式、工厂模式和抽象工厂模式
简单工厂模式、工厂模式和抽象工厂模式1. 简单工厂模式简单工厂模式属于创建型模式,是工厂模式的一种。简单工厂模式定义了一个创建对象的类,由这个类来封装实例化对象的行为。它是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式中最简单使用的模式。简单工厂模式的三个角色Factory(工厂角色) :简单工厂模式的核心,它负责实现创建所有实例的内部逻辑,根据调用时传入的参数,从而创建不同的对象。Product(抽象产品角色) :简单工厂模式中所创建所有对象的父类,负责描述所以产品
2020-10-29 00:05:35
2103
原创 设计模式之职责链模式
职责链模式职责链模式(Chain of Responsibility Pattern)又叫责任链模式,属于行为型模式。它为请求创建了一个接受者对象的链,每个接受者都包含对另一个接受者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接受者,依次类推。职责链模式的三个角色Handler(抽象处理者角色):抽象的处理者定义了一个处理请求的接口, 同时含有下一个 Handler。ConcreteHandler(具体处理者角色):是具体的处理者, 处理它自己负责的请求, 可以访问它的后继者
2020-10-19 23:37:56
2403
原创 计算机组成原理复习提纲六(CPU结构和功能)
CPU结构和功能文章目录CPU结构和功能CPU结构1. CPU的功能控制器的功能运算器的功能2. CPU的结构框图3. CPU的寄存器(1) 用户可见寄存器(2) 控制和状态寄存器4. 控制单元CU和中断系统指令周期1. 指令周期的基本概念(1) 指令周期(2) 每条指令的指令周期不同(3) 具有间接寻址的指令周期(4) 带有中断周期的指令周期(5)指令周期流程(6) CPU 工作周期的标志CPU访存有四种性质2. 指令周期的数据流(1) 取指周期的数据流(2) 间址周期的数据流(3) 执行周期的数据流(
2020-10-19 11:25:14
4514
1
原创 计算机组成原理复习提纲五(指令系统)
第7章 指令系统文章目录第7章 指令系统1.掌握指令的一般格式以及指令字各字段的作用;掌握不同的地址格式对访存次数、寻址范围的影响。2.熟练运用扩展操作码技术。3.指令寻址方式(顺序寻址和跳跃寻址)顺序寻址跳跃寻址数据寻址立即寻址直接寻址隐含寻址间接寻址寄存器寻址寄存器间接寻址基址寻址变址寻址相对寻址堆栈寻址操作数寻址方式深刻理解不同数据寻址方式(立即寻址、直接寻址、隐含寻址、存储器间接寻址、寄存器寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址、堆栈寻址等)的有效地址的计算方法、特点以及深刻理解不同数
2020-10-19 11:23:35
5046
原创 设计模式之策略模式
策略模式策略模式(Strategy Pattern)属于行为型模式。它把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体 类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。策略模式的三个角色Context(环境类):也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。Strategy(抽象策略):通常情况下为一个接口,当各个
2020-10-19 00:05:42
2443
原创 设计模式之状态模式
状态模式状态模式(State Pattern)属于行为模式。它主要用来解决对象在多个状态转换时,需要对外输出不同行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态发生改变时,允许改变其行为,这个对象看起来像是改变了类。状态模式的三个角色State(抽象状态角色):定义一个接口,封装与Context的一个特定状态相关的行为。ConcreteState(具体状态角色):每一个子类实现一个与Context的一个特定状态相关的行为。Context(环境角色):用于维护Stat
2020-10-18 16:37:40
2472
原创 设计模式之解释器模式
解释器模式解释器模式(Interpreter Pattern)属于行为模式,它定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式的四个角色AbstractExpression(抽象表达式):声明一个抽象的解释操作,这个方法为抽象语法树中所有的节点所共享。TerminalExpression(终结符表达式):实现与文法中的终结符相关的解释操作。比如 c = a + b,其中 a 和 b 就是终结符,而对应 a 和 b 的解释器就是终结符
2020-10-12 16:33:00
2551
2
原创 设计模式之备忘录模式
备忘录模式备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern),属于行为型模式。备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。设计模式中的备忘录模式可以类比现实中的备忘录。现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意 见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某 种状态,或者某些数据,当要做回退时,可以
2020-10-10 19:32:11
2536
3
原创 设计模式之中介者模式
中介者模式中介者模式(Mediator Pattern)属于行为型模式,它用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起 到了中间人的作用。中介者模式的四个角色Mediator(抽象中介者):定义了同事对象到中介者对象之间的接口。ConcreteMediator(具体中介者):具体的中介
2020-10-08 22:15:33
2628
原创 设计模式之观察者模式
观察者模式观察者模式(Observer Pattern)也叫发布-订阅(Publish/Subscribe)模式,是属于行为型模式。观察者模式定义了一种对象间多对一的依赖关系,使得当被观察者状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的四个角色Subject(抽象被观察者角色): 这是一个抽象类或接口,定义了对观察者集合的操作,例如注册观察者、删除观察者和通知更新观察者信息等。ConcreteSubject(具体被观察者角色): 具体观察者角色有自己的属性和方法,并实现了抽象被
2020-10-03 22:19:56
2624
原创 设计模式之迭代器模式
迭代器模式迭代器模式(Iterator Pattern)是常用的设计模式,属于行为模式。迭代器模式提供了一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即不暴露其内部的结构。如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍 历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器的四个角色Iterator(抽象迭代器):迭代器接口,有hasNext()、nex
2020-10-02 22:27:26
2723
原创 设计模式之访问者模式
访问者模式访问者模式(Visitor Pattern)是属于行为模式,它封装了一些用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些操作的新操作。访问者模式的基本原理是:在被访问的类里加一个对外提供接待访问者的接口。主要将数据结构与数据分离,解决数据结构和操作耦合性的问题。访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作"污染"这些对象的类,可以选用访问者模式解决。观察模式的五个角色Visitor(抽象访
2020-09-28 23:48:53
3070
原创 设计模式之命令模式
命令模式命令模式(Command Pattern)又称为行动模式或交易模式,它是属于对象的行为模式。命令模式把一个请求或操作封装为一个对象,以便使用不同的参数来表示不同的请求(即命名),同时命令模式也支持撤销操作。命令模式的核心是引入了一个命令类,通过命令类来降低发送者和接受者之间的耦合,让对象之间的调用关系更加灵活,实现解耦。命令模式的四个角色命令角色(Command):这是一个抽象类或者接口,所有的命令都在这里。具体命令角色(ConcreteCommand):定义一个接受者对象并与动作绑定,
2020-09-26 00:05:49
2971
原创 设计模式之模板方法模式
模板方法模式模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式执行。简单的说,模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构,就可以重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。模板方法模式的两个角色AbstractTemplate(抽象模板):抽象类,类中实现了模板方法(T
2020-09-22 23:37:32
2893
原创 设计模式之代理模式
代理模式代理模式为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理对象可以是远程对象、创建开销大的对象或需要安全控制的对象,代理模式有不同的形式,主要有三种:静态代理、动态代理(JDK 代理、接口代理)和Cglib 代理(可以在内存动态的创建对象,而不需要实现接口,它是属于动态代理的范畴)。静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的
2020-09-20 14:27:19
2844
原创 设计模式之享元模式
享元模式享元模式(FlyWeight Pattern)也叫蝇量模式,是运用共享技术有效地支持大量细粒度的对象,而这些对象都很相识,状态变化很小,可以是实现对象的多次复用。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对 象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。所以常用于系统底层开发,解决系统的性能问题。它是一种轻量级的对象结构型模式,一般结合工厂模式进行使用。享元模式的四个角色抽象享元(FlyWeight)角色:通常是一个接口或抽象
2020-09-16 22:35:45
2886
1
原创 设计模式之外观模式
外观模式外观模式(Facade Pattern),也叫过程模式。它为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外模模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用只需跟这个高层接口发生调用,而不需关心这个子系统的内部细节。外观模式的三个角色外观类(Facade): 为调用端提供统一的调用接口, 外观类知道哪些子系统负责处理请求,从而将调用端的请求代 理给适当子系统对象。调用者(Client): 外观接口的调用者。子系统的
2020-09-14 20:38:24
2768
原创 设计模式之组合模式
组合模式组合模式(Composite Pattern),又叫整体部分模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次,组合模式使得用户对单个对象和组合对象访问具有一致性,即:组合能够让客户以一致的方式处理个别对象以及组合对象。这种设计模式属于结构型模式。组合模式的三个角色抽象构件(Component)角色:这是组合中对象声明接口, 在适当情况下, 实现所有类共有的接口默认行为,用于访问和管理 Compone
2020-09-13 20:25:12
2876
原创 设计模式之装饰器模式
装饰器模式装饰器(Decorator)模式又名包装(Wrapper)模式,是一种能动态将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰器模式也体现了开闭原则(ocp),是一种继承关心的替代方案。装饰器模式的四个角色**抽象构件(Component)角色:**给出一个抽象接口,已规范准备接受附加责任对象。**具体构件(ConcreteComponent)角色:**定义一个将要接受附加责任的类。**装饰(Decorator)角色:**持有一个构件(Component)对象的实例,并定
2020-09-12 20:16:23
2771
原创 设计模式之桥接模式
桥接模式桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式是一种结构型设计模式,它基于类的最小设计原则,通过使用封装、聚合及集成等行为让不同类承担不同的职责。它主要的特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。桥接模式的四个角色Abstraction:定义抽象接口,拥有一个Implementor类型的对象引用RefinedAbstraction:扩展Abstraction中的接口
2020-09-11 10:34:05
2793
原创 设计模式之适配器模式
适配器模式基本介绍适配器模式(Adapter Pattern)是将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。适配器模式属于结构型模式,主要分为三类:类适配器模式、对象适配器模式、接口适配器模式适配器模式的三个角色Target:目标类,最终要从Adapter输出的类。Adapter:适配器类Adaptee:被适配的类类适配器模式类适配器模式主要是通过 Adapter类继承Adapt
2020-09-10 11:31:56
2753
原创 Java 泛型
Java 泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型信息不会进入到运行时阶段。编译器有效泛型的三种方式:泛型类、泛型接口、泛型方法泛型类定义格式:修饰符 class 类名<代表泛型的变量> { }例如,API中的ArrayList集合:class ArrayList<E>{ p
2020-09-08 12:46:35
2866
原创 05. 设计模式之建造者模式
建造者模式建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的构建过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构建出不同表现(属性)的对象。构建者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式的四个角色Product(产品角色):一个具体的产品对象。Builder(抽象建造者):创建一个 Product 对象的各个部件指定的接口或抽象类。Concr
2020-09-07 20:27:36
2841
原创 02. 设计模式之单例模式
单例模式文章目录单例模式设计模式概述设计模式介绍设计模式类型单例设计模式单例设计模式介绍单例模式八种方式1. 饿汉式(静态常量)步骤如下:优缺点说明:2. 饿汉式(静态代码块)代码演示优缺点说明3. 赖汉式(线程不安全)代码演示优缺点说明4. 懒汉式(线程安全,同步方法)代码演示优缺点说明5. 懒汉式(线程安全,同步代码块)代码演示优缺点说明6. 双重检查(DCL)代码演示优缺点说明7. 静态内部类代码演示优缺点说明8. 枚举代码演示优缺点说明单例模式注意事项和细节说明设计模式概述设计模式介绍设
2020-08-21 10:01:08
3354
原创 01. Java设计模式七大原则
设计模式七大原则文章目录设计模式七大原则1. 单一职责原则基本介绍对应实例方案 1方案 2方案 3单一职责原则注意事项和细节2. 接口隔离原则(Interface Segregation Principle)基本介绍应传统方法的问题和使用接口隔离原则改进3. 依赖倒转(倒置)原则基本介绍依赖倒转原则的注意事项和细节4. 里氏替换原则OO 中继承性的思考和说明基本介绍解决办法5. 开闭原则基本介绍改进的思路分析6. 迪米特法则基本介绍迪米特法则注意事项和细节7. 合成复用原则基本介绍设计原则核心思想1.
2020-08-21 09:59:49
3398
原创 计算机组成原理复习提纲四(输入输出系统)
第5章 输入输出系统文章目录第5章 输入输出系统1.熟知输出输入系统的组成以及I/O设备与主机的联系方式。输入输出系统的发展概况输入输出系统的组成I/O软件I/O硬件I/O设备与主机的联系方式2.理解I/O设备和主机交换信息的控制方式(程序查询方式、程序中断方式、DMA方式、通道方式、I/O处理机方式)以及各自的特点(包括他们之间的区别、联系以及对CPU工作效率的影响等)。程序查询方式过程特点优...
2020-04-19 19:14:36
3812
原创 计算机组成原理复习提纲三(存储器)
第4章 存储器文章目录第4章 存储器1.存储系统层次结构的概念,掌握缓存-主存和主存-辅存层次作用,以及程序访问的局部性原理与存储系统层次结构的关系。存储器分类存储器的层次结构程序访问的局部性2.熟知主存储器的基本组成;掌握主存中存储单元地址的分配(对于一定容量的存储器,按字节访问和按字访问的寻址范围是不同的。)、主存的技术指标以及提高访存速度的措施。主存的基本组成主存与CPU的联系主存中存储单...
2020-04-19 19:12:22
4644
原创 计算机组成原理复习提纲二(系统总线)
第3章 系统总线文章目录第3章 系统总线1.掌握总线的基本概念:总线和总线信息上信息传输的特点。**总线的基本概念**: 总线是连接各部件的信息传输线, 是*各个部件**分时**共享的传输介质*.**总线的信息传送**:串行/并行2.熟知总线的分类:按连接部件不同,总线可以分为几类。片内总线: **芯片内部**的总线.系统总线: 计算机个部件之间的信息传输线通信总线:计算机系统之间或计算机系统与...
2020-04-19 19:11:15
3476
原创 计算机组成原理复习提纲一(计算机系统概论)
第1章 计算机系统概论文章目录第1章 计算机系统概论1.熟知一些基本概念:2.掌握冯•诺依曼计算机的特点。3.掌握计算机硬件的主要技术指标。计算机系统性能评价指标1.熟知一些基本概念:计算机系统及计算机系统的层次结构;硬件、主机、CPU、主存、辅存、外部设备;计算机硬件计算机硬件框图典型冯·洛伊曼计算机机构框图以寄存器为中心的计算机框图...
2020-04-19 19:09:55
3318
原创 数据库组合两个表(MySQ)
这个是一个数据库的题,来源于力扣题目:表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-----------...
2019-12-06 23:26:55
3016
原创 Numpy读取本地数据和其他转置方式
numpy读取本地数据np.loadtxt(frame, dtype=np.float, delimiter=None, skiprows=0, usecols=None, unpack=False)参数解释frame文件、字符串或产生器,可以是.gz或bz2压缩文件dtype数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认np.floatde...
2019-10-11 20:53:51
2943
原创 Matplotlib绘制散点图
Matplotlib绘制散点图导入matplotlib.pyplot和font_manegerimport matplotlib.pyplot as pltfrom matplotlib import font_manager设置字体my_font = font_manager.FontProperties(fname="/usr/share/fonts/opentype/no...
2019-09-20 20:08:34
2909
原创 Matplotlib01基础语法
Matplotlib一、基本语法导入Matplotlibimport matplotlib.pyplot as plt设置x轴和y轴x = []y = []设置显示图像大小plt.figure(figsize=(x, y ), dpi=80)x 和y 是图形的长和宽,dpi是图像的清晰度绘制图形plt.plot(x, y, lable="...
2019-09-16 20:29:36
2873
原创 解决Anaconda无法添加环境变量问题,适用于Linux的大多数发行版本。
不知道大家有没有遇到和我一样的坑,就是安装Anacoda之后,无法添加环境变量。其实这也不算什么坑,也怪我自己在遇到问题后就直接在网上疯狂搜索答案,没有仔细思考出问题的原因。下面我就给大家讲讲我是怎么入坑的。问题描述:首先介绍我的环境,我是ubuntu18.04系统,并且Shell安装的是zsh(这是关键)。大家都知道,一般我们安装Anaconda都是可以自动添加环境变量的。最初我以为是我...
2019-07-26 19:24:10
5414
原创 MYSQL 8.0.16 winx64的安装和配置(配图)
今天撸代码的时候发现数据库有点问题,然后在网上搜了很久也没找到解决方案(根本原因是我太菜了),于是就把它卸载了重新装一次,然后再写个教程分享给大家。1. 从网上下载mysql的安装包。下载链接2. 解压下载的文件并不像我们平常下载的exe安装包一样,直接点击就可以安装。这个直接就是安装文件,我们需要将它解压到我们想要安装的位置。如图我的解压路径就是安装路径。下面是解压后的文件:...
2019-07-13 19:49:41
2862
原创 MYSQL数据类型和约束
数据类型常用的数据类型如下:整数:int 、bit小数:decimal字符串:varchar 、char日期时间:date 、time 、datetime枚举类型(enum)特别说明的类型如下:decimal表示浮点数,如decimal(5, 2)表示共存5位小数,小数占2位char表示固定长度的字符串,如char(3),如果填充’ab’时就会补一个空格为‘ab ’v...
2019-06-21 20:48:14
2898
原创 win10内置Ubuntu/Linux换阿里源(小白教程)
今天又把Ubuntu For Windows下载了,和之前一样,首先是换源,不然更新的时候网速太慢了。但是自己再网上搜了很多阿里源,但是添加上去网速还是不理想,于是自己就到阿里镜像站重新找了链接添加后网速就快了许多。首先记录一下阿里镜像站的链接,然后顺便写一下换源的操作步骤。下面我用我的 Ubuntu for WIndows 演示:首先用lsb_release -a查看自己的Ubuntu/...
2019-06-18 20:48:16
9966
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人