可使用如下模式对搜索结果排序: SPH_SORT_RELEVANCE 模式, 按相关度降序排列(最好的匹配排在最前面) SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值越大的越是排在前面) SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面) SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近一小时/天/周/月)降序,再按
有如下可选的匹配模式: SPH_MATCH_ALL, 匹配所有查询词(默认模式); SPH_MATCH_ANY, 匹配查询词中的任意一个; SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配; SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式 (参见Section4.2, “布尔查询语法”); SPH_MATCH_EXTENDED, 将查询看作一个Sphi
由于各种原因,Emacs 启动比较耗时。可以启动一个 Emacs 的守护进程 emacs --daemon 然后通过 emacsclient 来连接服务器 emacsclient -t --alternate-editor jed file -t 在当前控制台打开 emacs 窗口 --alternate-editor jed 如果不能连接到 emacs 服务器,则使用 jed 编辑器 也可
参与GitHub中的项目开发,最常用和推荐的首选方式是“Fork + Pull”模式。在“Fork + Pull”模式下,项目参与者不必向项目创建者申请提交权限,而是在自己的托管空间下建立项目的派生(Fork)。 如果一个开源项目派生出另外的项目,通常意味着项目的分裂和开发团队的削弱,而GitHub中的项目派生则不会,而且正好相反,GitHub中的项目派生是项目壮大的体现。所有的派生项目都会有链接
Progressive Web Apps(PWA) 是一项融合 Web 和 Native 应用各项优点的解决方案。我们可以利用其支持离线功能的特点,让我们的网站可以在信号差或者离线状态下正常运行。 要使用它也非常容易。 创建 serviceWorker 这里已经整理好了一份代码,你只需要在网站根目录下创建一个 sw.js 文件,并粘贴下面的代码。 sw.js /* ================
创建型 工厂方法Factory Method 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决:主要解决接口选择的问题。 何时使用:我们明确地计划不同条件下创建不同实例时。 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。 关键代码:创建过程在其子类执行。 定义创建产品接口,让子类决定何时实例化 有效封装产品类、调用者无须关
1.1 类图 名称 定义 标志 继承 实线,三角箭头指向被父类。 实现 虚线,三角箭头指向被实现接口。 组合 关联 主要有数组和链表两种实现。 栈 主要有数组和链表两种实现。 集合 add 主要有List 和 BST 两种实现。 remove contains getSize 1.2 时序图 2. 设计原则 名称 定义 实现方法 开闭原则 对修改封闭,对扩展(继承父类,实现新功能的接口)开放。 依
Sometimes, we want to update a group of objects when the state of another object changes. A very popular example lies in the Model-View-Controller (MVC) pattern. Assume that we are using the data of t
Whenever we want to add extra functionality to an object, we have a number of different options. We can: 任何时候,只要我们想给一个对象添加附加的功能,就有多个不同的选项供我们选择。我们可以选择: Add the functionality directly to the class the o
Structural design patterns deal with the relationships between the entities (such as classes and objects) of a system. A structural design pattern focuses on providing a simple way of composing object
Imagine that we want to create an object that is composed of multiple parts and the composition needs to be done step by step. The object is not complete unless all its parts are fully created. That's
访问者模式 不知不觉当中,我们就到了最后一种设计模式,即访问者模式。访问者模式,听上去复杂一些。但是,这种模式用简单的一句话说,就是不同的人对不同的事物有不同的感觉。比如说吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐。可是,不同的地方的人未必都喜欢这两种豆腐。四川的朋友可能更喜欢辣豆腐,江浙的人就可能对臭豆腐更喜欢一些。那么,这种情况应该怎么用设计模式表达呢? typedef struct _Tof
解释器模式 解释器模式虽然听上去有些费解,但是如果用示例说明一下就不难理解了。我们知道在C语言中,关于变量的定义是这样的:一个不以数字开始的由字母、数字和下划线构成的字符串。这种形式的表达式可以用状态自动机解决,当然也可以用解释器的方式解决。 typedef struct _Interpret { int type; void* (*process)(void* pDa
备忘录模式 备忘录模式的起源来自于撤销的基本操作。有过word软件操作经验的朋友,应该基本上都使用过撤销的功能。举个例子,假设你不小心删除了好几个段落的文字,这时候你应该怎么办呢?其实要做的很简单,单击一些【撤销】就可以全部搞定了。撤销按钮给我们提供了一次反悔的机会。 既然是撤销,那么我们在进行某种动作的时候,就应该创建一个相应的撤销操作?这个撤销操作的相关定义可以是这样的。 typedef st
观察者模式 观察者模式可能是我们在软件开发中使用得比较多的一种设计模式。为什么这么说?大家可以听我一一到来。我们知道,在windows的软件中,所有的界都是由窗口构成的。对话框是窗口,菜单是窗口,工具栏也是窗口。那么这些窗口,在很多情况下要对一些共有的信息进行处理。比如说,窗口的放大,窗口的减小等等。面对这一情况,观察者模式就是不错的一个选择。 首先,我们可以对这些共有的object进行提炼。 t