- 博客(47)
- 收藏
- 关注
原创 JupyterLab
JupyterLab是一个交互式的开发环境,是Jupyter Notebook的下一代产品,集成了更多的功能。使用JupyterLab,能够以灵活,集成和可扩展的方式处理文档和活动:可以开启终端,用于交互式运行代码,完全支持丰富的输出支持Markdown,Python,R,LaTeX等任何文本文件增强notebook功能更多插件支持安装:jupyterlab中的有些组件需要依赖node.js,先安装node.js虚拟环境 pip install jupyterlab如果使用云服务器远程
2020-05-10 23:57:03 354
原创 Linux运维三剑客
原始文本文件(test.txt):[xcosy@codedancing ~]$ cat ./test.txt序号 姓名 毕业院校 学院 专业1 Bob 华中科技大学 软件学院 软件工程2 Alice 清华大学 机械工程学院 机械工程3 John 北京大学 人文学院 哲学4 Nike 中国科学技术大学 计算机学院 计算机科学与技术5 Alon 哈尔滨工业大学 理学院 理论物理学,应用...
2020-04-24 13:57:35 546
原创 Linux中的top命令
top 命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认进入top时,各进程是按照CPU的占用量来排序的。常用参数-u <username> 查看指定用户的进程-p <PID> 查看指定进程命令显示top - 20:45:54 up 1 day, 7:38, 1 user, load average: 0.02, 0.0...
2020-03-18 22:09:07 309
原创 访问者模式
定义访问者(Visitor)模式将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离。访问者模式属于对象行为型模式,是行为型模式中最复杂的一种模式。要点优点:扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。复...
2020-03-09 20:34:53 209
原创 策略模式
定义策略(Strategy)模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户,通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行实现和管理。策略模式属于对象行为型模式。要点优点:多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。提供了一系列的可供重用的算法族,恰当使用继承可以把算法...
2020-03-09 18:20:28 148
原创 状态模式
定义状态(State)模式对有状态的对象,把复杂的 “判断逻辑” 提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式属于对象行为型模式。要点优点:状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。有利...
2020-03-09 17:38:52 225
原创 观察者模式
定义观察者(Observer)模式 又称发布-订阅模式、模型-视图模式,指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式属于对象行为型模式。要点优点:降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制。缺点:目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环...
2020-03-08 23:46:48 182
原创 备忘录模式
定义备忘录(Memento)模式又叫快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。备忘录模式属于对象行为型模式。要点优点:提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。简化了发...
2020-03-08 21:08:38 229
原创 中介者模式
定义中介者(Mediator)模式又称又叫调停模式,定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合变得松散,且可以独立地改变它们之间的交互。它是迪米特法则的典型应用。中介者模式属于对象行为型模式。要点优点:降低了对象之间的耦合性,使得对象易于独立地被复用。将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。缺点:当同事类太多时...
2020-03-08 16:42:31 247
原创 迭代器模式
定义迭代器(Iterator)模式提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式。要点迭代器模式是通过将聚合对象的遍历行为分离出来,抽象成迭代器类来实现的,其目的是在不暴露聚合对象的内部结构的情况下,让外部代码透明地访问聚合的内部数据。优点:访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合...
2020-03-07 23:15:44 109
原创 命令模式
定义命令(Command)模式将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。命令模式属于对象行为型模式。要点优点:降低系统的耦合度。命令模式能将调用操作的对象与实现操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵...
2020-03-07 19:09:49 175
原创 责任链模式
定义责任链(Chain of Responsibility)模式又称职责链模式,是为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。...
2020-03-06 18:06:38 145
原创 解释器模式
定义解释器(Interpreter)模式给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。解释器模式属于类行为型模式。要点优点:扩展性好。由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。容易实现。在语法...
2020-03-06 16:52:19 166
原创 模板方法模式
定义模板方法(Template Method)模式定义一个操作的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。模板方法模式属于类行为型模式。要点优点:封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。在父类中提取了公共的部分代码,便于代码复用。部分方法...
2020-03-06 12:36:38 175
原创 过滤器模式
定义过滤器模式(Intercepting Filter Pattern),又称标准模式(Criteria Pattern),主要用于统一接收并过滤客户端的请求,根据过滤器的选择,将请求传送给对应的目标处理程序。过滤器模式属于对象结构型模式。要点主要角色:目标对象(Target):处理请求,根据要求执行任务。过滤器(Filter):过滤器在请求处理程序执行请求之前或之后,执行某些任务。...
2020-03-06 11:07:39 398
原创 代理模式(动态代理)
静态代理模式的缺点当场景稍微复杂一些的时候,静态代理的缺点也会暴露出来:1、当需要代理多个类的时候,由于代理对象要实现与目标对象一致的接口,如果只维护一个代理类,由这个代理类实现多个接口,但是这样就导致代理类过于庞大;如果新建多个代理类,每个目标对象对应一个代理类,但是这样会产生过多的代理类。2、 当接口需要增加、删除、修改方法的时候,目标对象与代理类都要同时修改,不易维护。动态代理类...
2020-03-06 00:02:30 137
原创 代理模式(静态代理)
定义**代理模式(Proxy)**为一个对象提供一个替身或占位符以控制对这个对象的访问。访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。使用代理模式创建代理对象,让代理对象(representative)控制对某对象的访问,被代理的对象可以是远程对象、创建开销大的对象或者是需要安全控制的对象。代理模式属于对象结构型模式。代理分为静态代理和动态代理两种。...
2020-03-05 12:00:20 210
原创 享元模式
定义享元(Flyweight)模式又称蝇量模式,主要运用共享技术来有效地支持大量细粒度对象的复用。主要用于减少创建对象的数量,以减少内存占用和提高性能。如果想要让某个类的一个实例用来提供许多 “虚拟实例” ,就可以考虑使用享元模式。享元模式属于对象结构型模式。要点优点:可以极大减少内存中对象的数量,使得相同或相似对象在内存中只保存一份,从而可以节约系统资源,提高系统性能。享元模式...
2020-03-04 16:18:44 128
原创 Maven常见配置及本地仓库清理(Linux)
常见配置<?xml version="1.0" encoding="UTF-8"?><project>xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mave...
2020-03-03 14:10:15 3083
原创 Maven使用profile进行项目多环境配置切换
在项目开发时,我们本地搭建的开发dev环境,开发完成打包部署到服务器时,用到的是服务器prod环境。可以借用Maven的profiles、filters和resources,在运行或打包时指定选用的环境,实现不同环境自动使用各自环境的配置文件或配置信息。maven profile可使用操作系统信息,jdk信息,文件是否存在,属性值等作为依据,来激活相应的profile,也可在编译阶段,通过mvn...
2020-03-03 13:30:16 776
原创 【Java】getClass().getClassLoader().getResourceAsStream() 与 getClass().getResourceAsStream()的区别
代码public static void main(String[] args) { Properties properties = new Properties(); System.out.println(getClass().getResource("").getPath()); System.out.println(this.getClass().getResource("")....
2020-03-03 11:54:01 525
原创 外观模式
定义外观(Facade)模式是一种通过为多个复杂的子系统提供一个统一的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观模式属于对象结构型模式。要点外观(Facade)模式是“迪米特法则”的典型应用,优点:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调...
2020-02-29 22:19:21 270
原创 组合模式
定义组合(Composite)模式:又称作部分整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示 “部分-整体” 的关系,使用户对单个对象和组合对象具有一致的访问性。组合模式属于对象结构型模式。要点组合模式的优点:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;更容易在组合体内加入新的对象,客户端不会...
2020-02-29 20:59:08 271
原创 虚拟化容器技术与Docker
虚拟机(virtual machine)虚拟机就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。虚拟机缺点:资源占用多;冗余步骤多;启动慢Linux容器针对虚拟机容器的缺点...
2020-02-27 14:32:05 335
原创 装饰者模式
定义装饰者(Decorator)模式是指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。装饰者模式可以动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。装饰者模式属于对象结构型模式。要点装饰者和被装饰对象有相同的超类型。可以用一个或多个装饰者包装一个对象。既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(...
2020-02-27 13:52:52 138
原创 桥接模式
定义桥接模式(Bridge)将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。【优点】抽象与实现分离,扩展能力强;实现细节对客户透明。【缺点】由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,增加了系统的理解与设计难度。...
2020-02-25 12:19:21 181
原创 Python安装虚拟环境 virtualenv 和 virtualenvwrapper
virtualenv 创建“独立”的Python运行环境的原理把原始 Python 环境复制一份到 virtualenv 的环境,用命令 source venv/bin/activate 进入一个 virtualenv 环境时,virtualenv 会修改相关环境变量,让命令 python 和 pip 均指向当前的 virtualenv 环境。VirtaulenvWrapper 是 virtu...
2020-01-17 11:34:09 341
原创 Linux环境下的用户组和用户管理
1. 概述在Linux环境下,用户组可以让多个用户具有相同的权限,也就是说,一个用户可以属于多个用户组,并同时拥有这些用户组的权限,这就引出了主组(也称初始组)和附加组,使用 groups 命令可以查看该用户的用户组。codedancing adm cdrom sudo dip plugdev lpadmin sambashare docker/etc/passwd 文件中每个用户信息分为...
2020-01-13 13:02:05 338
原创 Linux安装Python失败常见缺失依赖项
1._ctypes 模块构建失败build correctly but finished with this message: Failed to build these modules: _ctypes 解决Are you using Ubuntu or other Linux distribution? This problem is because you di...
2020-01-12 18:11:50 2989
原创 使用 conda 过程中的问题解决
conda 使用 conda deactivate 命令时出现 CommandNotFoundErrorcodedancing@Ubuntu:/usr/local/anaconda3$ conda deactivateCommandNotFoundError: Your shell has not been properly configured to use 'conda deacti...
2020-01-11 19:08:58 8589 4
原创 Linux下多用户Anaconda环境的安装与卸载
Anaconda 的默认安装选项为用户独立安装,默认将 Anaconda 安装在该用户的 home 目录下,不会与同一系统上的其他用户共享。如果您具有管理员操作权限,则可以选择所有用户进行安装。对于要允许用户导入 Python 库并运行 Python 应用程序的多用户系统,这是一个不错的选择。安装 Anaconda下载 Anaconda 安装脚本,开始以管理员身份进行安装:sudo ...
2020-01-11 15:21:09 8692 2
原创 Python小知识(二)
与 C 和 JAVA 不一样,Python 不支持自增( ++ )和自减( -- )python 中的运算符优先级乘除优先加减位运算和算术运算 > 比较运算符 > 赋值运算符 > 逻辑运算符...
2020-01-07 12:44:06 136
原创 Python小知识(一)
Python 数据类型不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。isinstance 和 type 的区别type() 不会认为子类是一种父类类型。isinstance() 会认为子类是一种父类类型。class Father: pa...
2020-01-06 18:18:42 280 1
原创 Linux防止文件和目录被意外删除或修改
为了防止在Linux系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用:chattr(Change Attribute)命令在类 Unix 等发行版中,该命令能够有效防止文件和目录被意外的删除或修改。file 文件在 Linux 中被描述为一个数据结构,chattr 命令在大多数现代 Linux 操作系统中是可用的,可以修改file属性。命令语法chattr ...
2020-01-04 18:09:22 4571
原创 Linux主机之间传输文件的四种主流方式
经常使用,今天顺便整理一下~1、scpscp 是 secure copy 的简写,是linux系统下基于 ssh(Secure Shell)登陆进行安全的远程文件拷贝命令,scp 命令可以在 linux 服务器之间复制文件和目录。当服务器硬盘变为只读 read only system 时,用 scp 可以把文件移出来。另外,scp 占用非常小的系统资源,不会提高多少系统负荷,基本不影响系统正...
2019-12-31 12:20:32 2987 2
原创 适配器模式
定义适配器模式(Adapter Pattern)将某个类的接口转换成客户期望的另一个接口表示,主要的目的是拥有兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。适配器模式属于结构型模式。主要分为两类:类(接口)适配器模式、对象适配器模式例如在欧洲国家使用美国制造的笔记本电脑,可能需要使用一个交流电的适配器。 要点从客户的角度看不到被适配者,是解耦的客户调...
2019-12-27 18:20:20 109
原创 建造者模式
定义建造者模式(Builder Pattern)是一种对象构建模式,用来封装一个产品的构造过程,并允许按步骤构造产品。建造者模式又叫生成器模式,建造者模式属于创建型模式。 要点经常被用来创建组合结构将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象一步一步创建一个复杂的对象,允许用户只通过指定复杂对象的类型和内容就可以构...
2019-12-07 16:34:27 118
原创 原型模式
定义当创建给定的实例的过程很昂贵或很复杂时,就是用原型模式(Prototype Pattern)。用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式属于创建型模式。 要点原型模式允许通过复制现有的实例来创建新的实例,在Java中,这通常意味着使用 clone() 方法或反序列化。向客户影藏制造新实例的复杂性。提供让客户能够产生未知类型对象的选项。...
2019-12-04 18:41:32 111
原创 工厂模式
定义工厂模式(Factory Method)是由一个工厂对象决定创建出哪一种产品类的实例。定义一个创建对象的类,由这个类来封装实例化对象的行为。一般情况下,我们称被创建的对象称为“产品”,把创建产品的对象称为“工厂”。工厂模式有三类:简单工厂模式、工厂模式、 抽象工厂模式。工厂模式属于创建型模式。 要点抽象工厂(Abstract Factory):提供创建产品的接口,调用者...
2019-11-27 21:09:46 141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人