摘要: 组件是相互独立、可复用的单元,一个组件可能在不同地方被用到。但是在不同的场景下对这个组件的需求可能会根据情况有所不同,例如一个点赞按钮组件,在我这里需要它显示的文本是“点赞”和“取消”,当别的同事拿过去用的时候,却需要它显示“赞”和“已赞”。如何让组件能适应不同场景下的需求,我们就要让组件具有一定的 阅读全文
posted @ 2018-04-11 15:48 何塞穆里尼奥 阅读(344) 评论(1) 推荐(0)
摘要: state 我们前面提到过,一个组件的显示形态是可以由它数据状态和配置参数决定的。一个组件可以拥有自己的状态,就像一个点赞按钮,可以有“已点赞”和“未点赞”状态,并且可以在这两种状态之间进行切换。React.js 的 state 就是用来存储这种可变化的状态的。 我们还是拿点赞按钮做例子,它具有已点 阅读全文
posted @ 2018-04-11 15:38 何塞穆里尼奥 阅读(332) 评论(0) 推荐(0)
摘要: 在 React.js 里面监听事件是很容易的事情,你只需要给需要监听事件的元素加上属性类似于 onClick、onKeyDown 这样的属性,例如我们现在要给 Title 加上点击的事件监听: 只需要给 h1 标签加上 onClick 的事件,onClick 紧跟着是一个表达式插入,这个表达式返回一 阅读全文
posted @ 2018-04-11 14:55 何塞穆里尼奥 阅读(311) 评论(2) 推荐(0)
摘要: 继续拓展前面的例子,现在我们已经有了 Header 组件了。假设我们现在构建一个新的组件叫 Title,它专门负责显示标题。你可以在 Header 里面使用 Title组件: 我们可以直接在 Header 标签里面直接使用 Title 标签。就像是一个普通的标签一样。React.js 会在 <Tit 阅读全文
posted @ 2018-04-11 14:45 何塞穆里尼奥 阅读(747) 评论(0) 推荐(1)
摘要: React.js 中一切皆组件,用 React.js 写的其实就是 React.js 组件。我们在编写 React.js 组件的时候,一般都需要继承 React.js 的 Component(还有别的编写组件的方式我们后续会提到)。一个组件类必须要实现一个 render 方法,这个 render 方 阅读全文
posted @ 2018-04-11 14:02 何塞穆里尼奥 阅读(2042) 评论(0) 推荐(0)
摘要: 这一节我们通过一个简单的例子讲解 React.js 描述页面 UI 的方式。把 src/index.js 中的代码改成: 我们在文件头部从 react 的包当中引入了 React 和 React.js 的组件父类 Component。记住,只要你要写 React.js 组件,那么就必须要引入这两个东 阅读全文
posted @ 2018-04-11 13:57 何塞穆里尼奥 阅读(351) 评论(0) 推荐(0)
摘要: 安装 React.js React.js 单独使用基本上是不可能的事情。不要指望着类似于 jQuery 下载放到 <head /> 标签就开始使用。使用 React.js 不管在开发阶段生产阶段都需要一堆工具和库辅助,编译阶段你需要借助 Babel;需要 Redux 等第三方的状态管理工具来组织代码 阅读全文
posted @ 2018-04-11 13:51 何塞穆里尼奥 阅读(2878) 评论(0) 推荐(0)
摘要: 为了让代码更灵活,可以写更多的组件,我们把这种模式抽象出来,放到一个 Component 类当中: 这个是一个组件父类 Component,所有的组件都可以继承这个父类来构建。它定义的两个方法,一个是我们已经很熟悉的 setState;一个是私有方法 _renderDOM。_renderDOM 方法 阅读全文
posted @ 2018-04-11 13:47 何塞穆里尼奥 阅读(535) 评论(0) 推荐(0)
摘要: 看看上一节我们的代码,仔细留意一下 changeLikeText 函数,这个函数包含了 DOM 操作,现在看起来比较简单,那是因为现在只有 isLiked 一个状态。由于数据状态改变会导致需要我们去更新页面的内容,所以假想一下,如果你的组件依赖了很多状态,那么你的组件基本全部都是 DOM 操作。 一 阅读全文
posted @ 2018-04-11 13:42 何塞穆里尼奥 阅读(348) 评论(1) 推荐(0)
摘要: 很多课程一上来就给大家如何配置环境、怎么写 React.js 组件。但是本课程还是希望大家对问题的根源有一个更加深入的了解,其实很多的库、框架都是解决类似的问题。只有我们对这些库、框架解决的问题有深入的了解和思考以后,我们才能得心应手地使用它们,并且有新的框架出来也不会太过迷茫————因为其实它们解 阅读全文
posted @ 2018-04-11 13:31 何塞穆里尼奥 阅读(490) 评论(1) 推荐(0)
摘要: React.js 是一个帮助你构建页面 UI 的库。如果你熟悉 MVC 概念的话,那么 React 的组件就相当于 MVC 里面的 View。如果你不熟悉也没关系,你可以简单地理解为,React.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合、嵌套,就成了我们的页 阅读全文
posted @ 2018-04-11 13:23 何塞穆里尼奥 阅读(910) 评论(0) 推荐(0)
摘要: 职责链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 我们先来看一下职责链模式的结构图: 首先职责链模式会定义一个所有处理请求的对象都要继承实现的抽象类,这样就有利于随时切换新的实现。其次每 阅读全文
posted @ 2017-10-05 10:51 何塞穆里尼奥 阅读(225) 评论(0) 推荐(0)
摘要: 装饰器模式的定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式比生成子类更为灵活。 我们先来看一下装饰器模式的结构图: 装饰器模式遵守的编程原则之一就是“开放-关闭原则”,倘若ConcreteComponent的operation方法是一个很复杂的且经常变更的方法,我们不可能在每次 阅读全文
posted @ 2017-10-03 17:08 何塞穆里尼奥 阅读(216) 评论(0) 推荐(0)
摘要: 享元模式的定义:运用共享技术有效的支持大量细粒度的对象。当我们系统中某个对象类型的实例较多时,并且对这些实例进行分类后,发现真正有区别的分类很少的情况。(也就是说内存中存在着大量的看起来都差不多的对象实例)我们就可以(分离与共享),分离这些对象中变的部分与不变的部分,然后共享不变的部分(不变并不是代... 阅读全文
posted @ 2015-10-03 13:25 何塞穆里尼奥 阅读(234) 评论(0) 推荐(0)
摘要: 策略模式的定义:定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它们的客户而变化。我们来考虑这样一个现实场景,一个商场会有很多打折策略,如:对普通客户或全新客户全价;对老客户打5折;对大客户打10折等。如果我们来用程序实现,大多数人可能会用IF...ELSEIF... 阅读全文
posted @ 2015-08-01 14:39 何塞穆里尼奥 阅读(346) 评论(0) 推荐(0)
摘要: 模板方法模式的定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。来举一个.NET中典型的使用模板方法模式的例子,List的Sort方法中有一个重载方法的一个参数是IComparer比较器,这个IComparer接口中... 阅读全文
posted @ 2015-07-30 12:23 何塞穆里尼奥 阅读(330) 评论(0) 推荐(0)
摘要: 组合模式的定义:将对象组合成树形结构以表示“部分-整体”的层次结构。而客户端在使用时并不需要区分单个对象(叶子对象)和组合对象。我们来举一个简单的例子,模拟一下windows的文件系统,比如我们要遍历某一个盘符下的所有文件及文件夹,然后以树状结构输出文件及文件夹的名称。//先定义一个文件夹类publ... 阅读全文
posted @ 2015-07-19 10:24 何塞穆里尼奥 阅读(256) 评论(0) 推荐(0)
摘要: 迭代器模式的定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。我们还是照旧,先来看看迭代器模式的结构图:为了帮助理解,有必要贴一下聚合对象的createIterator()方法的代码:public Iterator createIterator(){ //此处... 阅读全文
posted @ 2015-07-16 14:15 何塞穆里尼奥 阅读(248) 评论(0) 推荐(0)
摘要: 命令模式的定义:将请求封装为对象,那么就可以对这些请求对象进行排队或记录请求日志,也可以对请求进行撤销、恢复,还可以用不同的请求对客户进行参数化。我们来看一下标准的命令模式的结构图:我们来设想一个我们去餐厅吃饭点餐的情景,可以看出,我们就是(Client),我们拿过来菜单点了很多菜,就是发出了很多命... 阅读全文
posted @ 2015-07-14 10:32 何塞穆里尼奥 阅读(191) 评论(0) 推荐(0)
摘要: 观察者模式的定义:定义对象间的一种一对多的依赖关系。当一个对象(目标对象)的状态发生变化时,所有依赖于它的对象(观察者)都得到通知并被自动更新。我们来设想一个这样的情景,我们到报社订阅报纸,那么报社就相当于目标对象,当被订阅的报纸被印刷出来时(状态发生变化),报社就会将这些报纸发送给订阅人阅读(观察... 阅读全文
posted @ 2015-07-11 09:23 何塞穆里尼奥 阅读(219) 评论(0) 推荐(0)
摘要: 代理模式的定义:为目标对象提供一种代理以控制对这个对象的访问。我们先来看一下代理模式的结构图:我们先来看看Proxy的request()方法里的代码:public void request(){ //在转调具体的目标对象前,可以执行一些处理功能 //转调具体的目标对象的方法 ... 阅读全文
posted @ 2015-07-06 10:52 何塞穆里尼奥 阅读(217) 评论(0) 推荐(0)
摘要: 中介者模式:用一个中介对象来封装一系列的对象交互,使得这些对象之间不需要显式地互相引用,从而松散这些对象间的耦合。其实如果使用.NET的WinForm或WebFom做开发的话,我们经常会用到中介者模式。而这个中介者就是Form窗体。试想一下,如果我们在Form窗体里拖了俩个控件,一个Label,一个... 阅读全文
posted @ 2015-07-03 11:14 何塞穆里尼奥 阅读(308) 评论(0) 推荐(0)
摘要: 原型模式概念:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式的本质:克隆生成对象。原型模式的主要思想是基于现有的对象克隆一个新的对象出来,一般是由对象的内部提供克隆的方法。原型模式会要求对象实现一个可以克隆自身的接口,这样就可以通过拷贝一个实例对象本身来创建一个新实例。如果把... 阅读全文
posted @ 2015-07-02 10:46 何塞穆里尼奥 阅读(304) 评论(0) 推荐(0)
摘要: 生成器模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。我们先来看一个简单的例子,比如说Product类是一个复杂的类,构建它需要许多步骤class Product{ List parts = new List(); public void Add(s... 阅读全文
posted @ 2015-06-30 15:26 何塞穆里尼奥 阅读(151) 评论(0) 推荐(0)
摘要: 抽象工厂模式跟工厂方法模式差别不大,主要的区别就在于抽象工厂模式里抽象工厂里的工厂方法通常有多个,并且这多个方法产生的产品之间是有联系的,也就是说抽象工厂着重的就是为一个产品簇选择实现,即客户端一选就是选择的一套产品。抽象工厂模式的结构图如下:由结构图可以看出,如果客户端选择了Schema1方案,就... 阅读全文
posted @ 2015-06-30 09:38 何塞穆里尼奥 阅读(210) 评论(0) 推荐(0)
摘要: 框架的基础知识框架就是能完成一定功能的半成品软件。它不能完全实现用户的功能,只是实现用户需要的功能的一部分。框架级的软件主要客户是开发人员,而不是最终用户。由于框架完成了一定功能,而且通常是一些基础的、有难度的、通用的功能,这就避免了我们在应用开发的时候完全从头开始,而是在框架已有的功能之上继续开发... 阅读全文
posted @ 2015-06-26 17:11 何塞穆里尼奥 阅读(198) 评论(0) 推荐(0)
摘要: 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式的结构图如下: 懒汉式实现(延迟加载,在用到的时候才会实例化那个类) public class Singleton { //私有化构造函数,不让外部实例化本类 private Singleton(){} //定义一个变量来存储 阅读全文
posted @ 2015-06-14 15:45 何塞穆里尼奥 阅读(176) 评论(0) 推荐(0)
摘要: 我们在软件开发后期或维护期间有时会碰到这种情况:我们想使用的一个模块功能能满足要求,但这个模块对外的接口与客户端要求的接口不兼容,我们又没有足够的时间来改造这个模块。也可能在设计之初,我们用的模块是属于第三方组件,它对外的接口也可能与客户端要求的接口不兼容,而我们显然是改不了此模块的。对于这种双方... 阅读全文
posted @ 2015-06-13 11:12 何塞穆里尼奥 阅读(527) 评论(0) 推荐(0)
摘要: 相信很多人都有过买股票的经历,一打开股票软件,一千多支股票,红红绿绿,又是指数大盘,又是个股K线指标,一下说基本面如何如何重要,一下说什么有题材才可以赚大钱,让人头昏眼花、迷茫困惑。其实股民,特别是新股民在没有足够了解证券知识的情况下去做股票,是很容易亏钱的。毕竟,需要学习的知识实在太多,不具... 阅读全文
posted @ 2015-06-11 17:28 何塞穆里尼奥 阅读(268) 评论(0) 推荐(0)
摘要: 简单工厂模式不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以需要好好掌握它。接口回顾:(概念)大家都知道,在java开发中,要“面向接口编程”。所谓接口是一种特殊的抽象类,跟一般抽象类相比,接口里面所有方法都是抽象方法,所有属性都是常量。即接口里面只有方法定义而没有任何方法实现。(用... 阅读全文
posted @ 2015-05-17 12:48 何塞穆里尼奥 阅读(227) 评论(0) 推荐(0)
摘要: 首先对Lucene做一个简短的介绍:Lucene不是一个完整的全文检索应用,而是一个用java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。Lucene的作者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。全文检索的实现机制Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表=>记录=&g 阅读全文
posted @ 2013-06-07 11:08 何塞穆里尼奥 阅读(2530) 评论(5) 推荐(3)
摘要: 由于本人精力及时间及兴趣原因,将暂时不再继续学习Python语言本身。先学习其web开发的利器Django。安装Pydev插件http://hi.baidu.com/yobin/blog/item/3c7a39f3f466e555342acc05.htmlhttp://blog.csdn.net/atco/article/details/6064275到此为止就可以创建普通的Python项目了创建基于django框架的Python项目 还需安装Django框架http://www.stevenwang.name/eclipse-django-begin-177001.html安装过程可能出现的 阅读全文
posted @ 2011-08-08 22:04 何塞穆里尼奥 阅读(742) 评论(2) 推荐(0)
摘要: 先来看一段Python代码:import osimport sysfrom UserDict import UserDictdef stripnulls(data): "strip whitespace and nulls" return data.replace("\00", "").strip()class FileInfo(UserDict): "store file metadata" def __init__(self, filename=None): UserDict.__init__(self) se 阅读全文
posted @ 2011-08-03 15:20 何塞穆里尼奥 阅读(619) 评论(2) 推荐(0)
摘要: 先来看一段Python代码:def info(object, spacing=10, collapse=1): """Print methods and doc strings. Takes module, class, list, dictionary, or string.""" methodList = [method for method in dir(object) if callable(getattr(object, method))] processFunc = collapse and (lambda s: &quo 阅读全文
posted @ 2011-07-27 14:05 何塞穆里尼奥 阅读(599) 评论(4) 推荐(0)
摘要: 变量声明Python与大多数其它语言一样有局部变量和全局变量之分,但是它没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。一次赋多值Python中比较 “酷” 的一种编程简写是使用序列来一次给多个变量赋值>>> v = ('a', 'b', 'e')>>> (x, y, z) = v >>> x'a'>>> y'b'>>> z'e'v是一个三元素的 tuple,并且(x, y, z)是一个三变 阅读全文
posted @ 2011-07-24 22:51 何塞穆里尼奥 阅读(643) 评论(4) 推荐(0)
摘要: Python既是动态类型语言(因为它不使用显示数据类型声明),又是强类型语言(因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)静态类型语言一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java和C是静态类型语言。动态类型语言一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript和Python是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。强类型语言一种总是强制类型定义的语言。Java和Python是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。 阅读全文
posted @ 2011-07-23 22:54 何塞穆里尼奥 阅读(647) 评论(5) 推荐(1)
摘要: 特殊的方法在类中有一些特殊的方法具有特殊的意义,比如__init__和__del__方法,它们的重要性我们已经学习过了。一般说来,特殊的方法都被用来模仿某个行为。例如,如果你想要为你的类使用x[key]这样的索引操作(就像列表和元组一样),那么你只需要实现__getitem__()方法就可以了。想一下,Python就是对list类这样做的!名称说明__init__(self,...)这个方法在新建对象恰好要被返回使用之前被调用。__del__(self)恰好在对象要被删除之前调用。__str__(self)在我们对对象使用print语句或是使用str()的时候调用。__lt__(self,ot 阅读全文
posted @ 2011-07-23 12:46 何塞穆里尼奥 阅读(389) 评论(0) 推荐(0)
摘要: 输入输出文件创建、读和写文件的能力是许多程序所必需的,你可以通过创建一个file类的对象来打开一个文件,分别使用file类的read、readline或write方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。最后,当你完成对文件的操作的时候,你调用close方法来告诉Python我们完成了对文件的使用。>>> f=file(r'E:\222.txt','w') 指定要写入的文件(没有会自动创建) 及 模式 'w':写 'r':读 'a':追加 默认是'r'& 阅读全文
posted @ 2011-07-23 11:05 何塞穆里尼奥 阅读(462) 评论(0) 推荐(0)
摘要: 面向对象的编程到目前为止,在我们的程序中,我们都是根据操作数据的函数或语句块来设计程序的。这被称为面向过程的编程。还有一种把数据和功能结合起来,用称为对象的东西包裹起来组织程序的方法。这种方法称为面向对象的编程理念。类和对象是面向对象编程的两个主要方面。类创建一个新类型,而对象这个类的实例。这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象)。属于一个对象或类的变量被称为域。对象也可以使用属于类的函数来具有功能。这样的函数被称为类的方法。这些术语帮助我们把它们与孤立的函数和变量区分开来。域和方法可以合称为类的属性。selfPython中的self等价于C++中的self指 阅读全文
posted @ 2011-07-22 21:58 何塞穆里尼奥 阅读(472) 评论(0) 推荐(0)
摘要: 数据结构数据结构基本上就是——它们是可以处理一些数据的结构。或者说,它们是用来存储一组相关数据的。在Python中有三种内建的数据结构——列表、元组和字典。我们将会学习如何使用它们,以及它们如何使编程变得简单。列表list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分割。列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以 阅读全文
posted @ 2011-07-22 11:38 何塞穆里尼奥 阅读(373) 评论(0) 推荐(0)