程序人生
ChenVast
有梦想,敢拼博,执着的走属于自己的路。无惧一切,勇往直前,做自己。成为一个伟大的人,改变世界。
Python软件基金会(PSF)成员,
国际数据管理协会(DAMA)会员
展开
-
几句话浅谈算法
算法这东西....每个人都有与生俱来利用基础数学处理问题能力。算法是的一种抽象,这种抽象就是利用基础数学逻辑解决计算机方面的问题。一般的算法是每个人都会的东西,只是人们对于“算法”这两个字带有特殊的恐惧罢了。只要用心挖掘自身的这种能力,就能将自身具备一般算法转化为高级算法。原创 2017-10-18 17:51:15 · 351 阅读 · 0 评论 -
【程序设计】Python的责任链模式
责任链模式的定义如下:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。优点:1、将请求者与处理者分离,请求者并不知道请求是被哪个处理者所处理,易于扩展。应用场景:1、若一个请求可能由一个对请求有链式优先级的处理群所处理时,可以考虑责任链模式。除本例外,银行的客户请求处理系统也可以用转载 2018-01-29 11:18:48 · 885 阅读 · 0 评论 -
【程序设计】Python的观察者模式(发布-订阅模式)
观察者模式也叫发布-订阅模式,其定义如下:定义对象间一种一对多的依赖关系,使得当该对象状态改变时,所有依赖于它的对象都会得到通知,并被自动更新。观察者模式的通知方式可以通过直接调用等同步方式实现(如函数调用,HTTP接口调用等),也可以通过消息队列异步调用(同步调用指被观察者发布消息后,必须等所有观察者响应结束后才可以进行接下来的操作;异步调用指被观察者发布消息后,即可进行接下来的操作。)转载 2018-01-29 11:23:36 · 3384 阅读 · 0 评论 -
【程序设计】Python的模板模式
模板模式定义如下:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。子类实现的具体方法叫作基本方法,实现对基本方法高度的框架方法,叫作模板方法。优点:1、可变的部分可以充分扩展,不变的步骤可以充分封装;2、提取公共代码,减少冗余代码,便于维护;3、具体过程可以定制,总体流程方便掌控。使用场景转载 2018-01-29 11:25:59 · 1747 阅读 · 0 评论 -
【程序设计】Python的访问者模式
访问者模式的定义如下:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义于作用于这些元素的新操作。提到访问者模式,就不得不提一下双分派。分派分为静态分派和动态分派。静态分派即根据请求者的名称和接收到的参数,决定多态时处理的操作。Python原生是不支持静态分派的,因而也不直接支持更高层次的分派。访问者模式实现的分派,是一种动态双分派。但这转载 2018-01-29 11:29:17 · 1126 阅读 · 0 评论 -
【程序设计】Python的状态模式
状态模式的定义如下:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。优点:1、状态模式的优点是结构清晰,相比于if…else…简约了不少;2、封装性好,外部调用不必知道内部实现细节。应用场景:1、行为状态改变的场景。这点在各种控制器中非常常见,同时,逻辑结构为状态转移图的场景中都非常适用。缺点1、在状态比较多时,子类也会非常多,不便于管理转载 2018-01-30 09:05:38 · 982 阅读 · 0 评论 -
【程序设计】Python的备忘录模式
备忘录模式定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来保存的状态。在备忘录模式中,如果要保存的状态多,可以创造一个备忘录管理者角色来管理备忘录。应用场景1、需要保存和恢复数据的相关状态场景。如保存游戏状态的场景;撤销场景,如Ctrl-Z操作;事务回滚的应用。一般情况下事务回滚有两种方式:一是把从恢转载 2018-01-30 09:05:53 · 1091 阅读 · 0 评论 -
【程序设计】Python的解释器模式
解释器模式定义如下:给定一种语言,定义它的文法表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。解释器模式中会有终结符和非终结符之说,语法也根据两种终结符,决定语句最终含义。优点:1、在语法分析的场景中,具有比较好的扩展性。规则修改和制订比较灵活。应用场景:1、若一个问题重复发生,可以考虑使用解释器模式。这点在数据处理和日志处理过程中使用较多,当数据的需转载 2018-01-30 09:06:04 · 1140 阅读 · 0 评论 -
【程序设计】设计模式
设计模式它不限于一种特定的语言,它是一种解决问题的思想和方法。设计模式是面对各种问题进行提炼和抽象而形成的解决方案。考虑了封装性,复用性,效率,可修改,可移植等各种因素的高度总结。遵循设计模式而设计的代码结构,尽可能减少模块间的不必要依赖设计模式对需求变更与代码重用的考虑,可以被作为软件设计的参考设计模式基本上本着“高内聚,低耦合”的原则,遵循设计模式而设计转载 2018-01-27 13:13:30 · 772 阅读 · 0 评论 -
计算机常用单词
单词 音标 解释 专业用语 Able 'ebl . 能 有能力的 Accept ækˈsɛpt 接受;承认; 接受 Accoun...原创 2017-05-22 09:40:50 · 1404 阅读 · 0 评论 -
【Python】面向对象软件设计简述(OOP)
通过实施角色扮演游戏的课程来演示目录介绍对象类型1.实体对象2.控制对象3.边界对象奖励:值对象关键设计原则抽象化封装分解泛化组成批判性思维免责声明关注的凝聚,耦合和分离凝聚耦合关注点分离结束语概要进一步阅读 介绍大多数现代编程语言都支持并鼓励面向对象编程(OOP)。虽然最近我们似乎看到了一点点偏离...翻译 2018-09-17 11:41:55 · 1798 阅读 · 0 评论 -
【Jupyter】JupyterLab安装插件失败
使用安装插件的命令后报错 命令:jupyter-lab.exe build 或 安装相关插件的命令 报错内容:[LabBuildApp] JupyterLab 0.34.1[LabBuildApp] Building in D:\Anaconda3\share\jupyter\labTraceback (most recent call last): File "D...原创 2018-09-18 10:05:27 · 14136 阅读 · 1 评论 -
【互联网软件设计风格】表现层状态转换(REST)
表现层状态转换(REST,英文:Representational State Transfer)是Roy Thomas Fielding博士于2000年在他的博士论文中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。表现层状态转换是根基于超文本传输协议(HTTP)之上而确定的一组约束和属性,是一种设计提供万维网络服务的软件构建风格。匹配或兼容于这种架构风...原创 2018-10-08 14:52:37 · 732 阅读 · 0 评论 -
【JupyterLab】发现JupyterLab的一个优化点,提升JupyterLab的性能。
浏览器试验环境系统:Windows 10 JupyterLab:V0.35Chrome:V69Firefox:V62 Chrome打开NoteBook性能:一个1.19Mb的NoteBook打开花费的时间:01分04秒 切换NoteBook性能:16秒 其他问题: 使用TOC跳转到指定目录时会接着编辑跳转到的那个单元格 使用TOC跳转是有大...原创 2018-10-10 16:27:10 · 5183 阅读 · 3 评论 -
【编程】避免 异步/等待 地狱
async/await 将我们从回调地狱中释放出来,但人们已经开始滥用它,导致异步/等待地狱的诞生。在本文中,我将尝试解释async/await 地狱是什么,我还将分享一些提示以逃避它。 什么是异步/等待地狱在使用异步JavaScript时,人们经常一个接一个地编写多个语句,并在函数调用之前等待等待。这会导致性能问题,因为很多时候一个语句不依赖于前一个语句 - 但您仍需要...翻译 2018-10-24 10:55:38 · 303 阅读 · 0 评论 -
【Web】一种好用的浏览器页面打印(打印销售小票)方法
使用工具:lodop工具地址:http://www.c-lodop.com/download.html 样例:<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script language="javascript&quo原创 2019-02-26 08:55:27 · 3548 阅读 · 0 评论 -
【程序设计】Python的命令模式
命令模式的定义为:将一个请求封装成一个对象,从而可以使用不同的请求将客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式中通常涉及三类对象的抽象:Receiver,Command,Invoker(本例中的waiterSys)。只有一个Invoker的命令模式也可以抽象成一个类似的“星形网络”,但与之前介绍的中介者模式不同,单纯的命令模式更像是一个辐射状的转载 2018-01-29 11:16:17 · 837 阅读 · 0 评论 -
【程序设计】Python的中介者模式
中介者模式的定义为:用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式地互相作用,从而使其耦合松散,并可以独立地改变它们之间的交互。优点:1、减少类与类的依赖,降低了类和类之间的耦合;2、容易扩展规模。应用场景:1、设计类图时,出现了网状结构时,可以考虑将类图设计成星型结构,这样就可以使用中介者模式了。如机场调度系统(多个跑道、飞机、指挥塔之间的调度)、路由系转载 2018-01-29 11:13:33 · 1042 阅读 · 0 评论 -
Python程序员必读—Python PEP8编程风格
目录基于PEP8的Python编程风格一、缩进:二、制表符还是空格三、最大代码长度:四、在二元运算符之前或之后是否应该断行五、空白行:六、源文件编码:七、导入:八、模块级别的dunder名称:九、行引号:十、表达式和语句中的空格:十一、其他建议:十二、注释:十三、阻止评论:十四、内联注释:十五、文档注释:十六、命名约定:十七、...翻译 2017-11-09 15:50:28 · 1875 阅读 · 0 评论 -
开源许可证基础知识扫盲
作为一个开发者,如果你打算开源自己的代码,千万不要忘记,选择一种开源许可证(license)。许多开发者对开源许可证了解很少,不清楚有哪些许可证,应该怎么选择。本文介绍开源许可证的基本知识,主要参考了 OpenSource.com (1,2)。一、什么是开源许可证开源许可证是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权转载 2017-12-15 09:54:31 · 894 阅读 · 0 评论 -
【程序设计】设计模式与设计原则
设计模式与设计原则,基本符合规则与原则的关系: 设计模式是一个个具体问题的解决方案,设计模式是程序设计方法的形。 设计原则反映了这些设计模式的指导思想,设计原则是程序设计方法的神。设计原则可衍生出的设计模式,任何一种针对特定业务场景中的解决方法,虽然找不到对应的设计模式与之匹配,但若符合设计原则,也可以认为是一种全新的设计模式。 设计原则:单一职责原则: 单...转载 2018-01-25 16:17:52 · 851 阅读 · 0 评论 -
【程序设计】Python的单例模式
单例模式是指:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的优点:1、由于单例模式要求在全局内只有一个实例,因而可以节省比较多的内存空间;2、全局只有一个接入点,可以更好地进行数据同步控制,避免多重占用;3、单例可长驻内存,减少系统开销。单例模式的应用举例:1、生成全局惟一的序列号;2、访问全局复用的转载 2018-01-27 13:22:28 · 768 阅读 · 0 评论 -
【程序设计】Python的工厂模式
工厂类模式:工厂模式、简单工厂模式、抽象工厂模式工厂模式的定义如下:定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。产品类定义产品的公共属性和接口,工厂类定义产品实例化的“方式”。工厂在使用前必须实例化。省去了将工厂实例化的过程。这种模式就叫做简单工厂模式。优点:1、工厂模式巨有非常好的封装性,代码结转载 2018-01-27 19:14:10 · 896 阅读 · 0 评论 -
【程序设计】Python的建造者模式
建造者模式的定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式的作用,就是将“构建”和“表示”分离,以达到解耦的作用。优点:1、封装性好,用户可以不知道对象的内部构造和细节,就可以直接建造对象;2、系统扩展容易;3、建造者模式易于使用,非常灵活。在构造性的场景中很容易实现“流水线”;4、便于控制细节。使用场转载 2018-01-27 19:16:56 · 783 阅读 · 0 评论 -
【程序设计】Python的代理模式
代理模式是一种使用频率非常高的模式,在多个著名的开源软件和当前多个著名的互联网产品后台程序中都有所应用。代理模式定义如下:为某对象提供一个代理,以控制对此对象的访问和控制。代理模式在使用过程中,应尽量对抽象主题类进行代理,而尽量不要对加过修饰和方法的子类代理。优点:1、职责清晰:非常符合单一职责原则,主题对象实现真实业务逻辑,而非本职责的事务,交由代理完成;2、扩展转载 2018-01-27 19:19:47 · 858 阅读 · 0 评论 -
【程序设计】Python的原型模式
原型模式定义如下:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。进行clone操作后,新对象的构造函数没有被二次执行,新对象的内容是从内存里直接拷贝的。优点:1、性能极佳,直接拷贝比在内存里直接新建实例节省不少的资源;2、简化对象创建,同时避免了构造函数的约束,不受构造函数的限制直接复制对象,是优点,也有隐患,这一点还是需要多留意一些。使用场景:转载 2018-01-27 19:23:29 · 1036 阅读 · 0 评论 -
【程序设计】Python的门面模式
门面模式也叫外观模式,定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式注重“统一的对象”,也就是提供一个访问子系统的接口。门面模式与之前说过的模板模式有类似的地方,都是对一些需要重复方法的封装。模板模式是对类本身的方法的封装,其被封装的方法也可以单独使用;而门转载 2018-01-27 19:29:30 · 810 阅读 · 0 评论 -
【程序设计】Python的享元模式
享元模式定义如下:使用共享对象支持大量细粒度对象。大量细粒度的对象的支持共享,可能会涉及这些对象的两类信息:内部状态信息和外部状态信息。内部状态信息就是可共享出来的信息,它们存储在享元对象内部,不会随着特定环境的改变而改变;外部状态信息就不可共享的信息了。享元模式中只包含内部状态信息,而不应该包含外部状态信息。优点:1、减少重复对象,大大节约了系统资源。转载 2018-01-29 11:06:23 · 749 阅读 · 0 评论 -
【程序设计】Python的装饰器模式
装饰器模式定义如下:动态地给一个对象添加一些额外的职责。在增加功能方面,装饰器模式比生成子类更为灵活。装饰器模式和上一节说到的代理模式非常相似装饰器模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点是侧重对主题类的过程的控制,而装饰模式则侧重对类功能的加强或减弱。在Python中,AOP通过装饰器模式实现更为简洁和方便。AOP即Aspect Or转载 2018-01-27 19:26:14 · 793 阅读 · 0 评论 -
【程序设计】Python的组合模式
组合模式也叫作部分-模式整体将对象组合分类中翻译树形结构以表示“部分 ”和“整体 ”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。优点:1,节点增加和减少是非常自由和方便的,这也是树形结构的一大特点;2,所有节点,不管是分支节点还是叶子结点,不管是调用一个结点,还是调用一个结点群,都是非常方便的。使用场景:1,维护部分转载 2018-01-29 10:54:00 · 909 阅读 · 0 评论 -
【程序设计】Python的桥梁模式
模式桥梁又叫桥接模式,定义如下:将抽象艺术与实现解耦(注意此处的抽象和实现,并非抽象类和实现类的那种关系,而是一种角色的关系,这里需要好好区分一下),可以使其独立变化。所谓的桥,就是抽象化角色的抽象类和实现化角色的抽象类之间的引用关系。优点:1,抽象角色与实现角色相分离,二者可以独立设计,不受约束;2,扩展性强:抽象角色和实现角色可以非常灵活地扩展。应用转载 2018-01-29 10:56:45 · 1156 阅读 · 0 评论 -
【程序设计】Python的适配器模式
适配器模式定义如下:将一个类的接口变换分类中翻译客户端的期待的另一种接口,使从而因原本不接口匹配而无法在一起工作的两个类能够在一起工作适配器模式装饰状语从句:有模式的一定相似性,都起包装的作用装饰模式的结果,是给一个对象增加了一些额外的职责,而适配器模式,则是将另一个对象进行了“伪装”。适配器可以认为是对现在业务的补偿式应用尽量不要在设计阶段使用适配转载 2018-01-27 19:32:34 · 941 阅读 · 0 评论 -
【程序设计】python的策略模式
策略模式定义如下:定义一组算法,将每个算法都封装起来,并使他们之间可互换。具体策略实现类中即可定义个性化的策略方式,且可以方便替换。比较一下桥接模式和策略模式,如果把策略模式的Context设计成抽象类和实现类的方式,那么策略模式和桥接模式就可以划等号了。桥接模式比策略模式多了对一种角色(抽象角色)的抽象。桥接模式解决抽象角色和实现角色都可以扩展的问题;而策略模式解转载 2018-01-29 11:11:01 · 809 阅读 · 0 评论