202108-19 正则表达式讲解--断言 NEW 正则表达式中,用于查找某些内容之前或者之后的东西,叫做断言。 (?=exp)用于匹配的位置前面能匹配到的值。 举个例子有字符串为 hello the world 如果输入的匹配表达式为 \b\w+(?=ld\b),则会输出wor (?<=exp)用于匹配的位置后面能匹配到的值。 举个例子有字符串为 hello the world 如... Read More >
202108-18 正则表达式中尽可能匹配最多的 NEW 基础语法和在线测试https://c.runoob.com/front-end/854首先了解如何用字符来描述字符。1. 在正则表达式中,如果直接给出字符,就是精确匹配。用d可以匹配一个数字,w可以匹配一个字母或数字,所以:'00d'可以匹配'007',但无法匹配'00A';'ddd'可以匹配'010';'wwd'可以匹配'py3';2. 点( . ) 可... Read More >
201511-11 KD-Tree原理详解 NEW 简介kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。一个KDTree的例子上图的树就是一棵KDTree,形似二叉搜索树,其实KDTree就是二叉搜索树的变种。这里的K = 3.首先来看下树的组织原则。将每一个元组按0排序(第一项序号为0,第二项序号为1,第三项序号为2),在树的第n层,第 n%3 项被用粗体显示,而这些被粗体显示的树就是作为二叉搜索树的key值,比如,根节点的左子树中... Read More >
201504-14 腾讯面试题:10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。关于中位数:数据排序后,位置在最中间的数值。即将数据分 成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了)。... Read More >
201504-13 归并排序,外排序,10G文件500M内存的排序 归并排序可以是一种外排序, 外排序是指利用外存也就是磁盘进行排序的一种简称。典型的应用是hadoop 的 mapreduce 的merge 阶段归并排序的: 假设有n 个元素, 将n 个元素分程x 组, 然后对每一组的元素进行排序, 然后将这 x 组已经排好序的序列合并起来。说一下分成x 组的方式, 大概有两种: 第一种: 递归的方式, 这种情况你可能都不会去关心 x 大小。 第二种: 每组 m 个元素, x = n/m。这种方法常用在内存不够的情况下。&n... Read More >
201404-15 在Laravel中正确地应用 Repository设计模式 概念在本文中,我会向你展示如何在 Laravel 中从头开始实现 repository 设计模式。repository 设计模式允许你使用对象,而不需要了解这些对象是如何持久化的。本质上,它是数据层的抽象。这意味着你的业务逻辑不需要了解如何检索数据或数据源是什么,业务逻辑依赖于 repository 来检索正确的数据。关于这个模式,我看到有人将它误解为 repository 被用来创建或更新数据。 这不是 repository 应该做的,repository 不应该创建或更新... Read More >
201404-10 Laravel中用到的设计模式 1:工厂模式Auth::user()此处Auth这个类就是工厂中的方法,Auth是注册树中的别名。好处:类似于函数的封装,使对象有一个统一的生成(实例化)入口。当我们对象所对应的类的类名发生变化的时候,我们只需要改一下工厂类类里面的实例化方法即可。2:单例模式好处:对象不可外部实例化并且只能实例化一次,节省资源。实现方式:private static $ins = null; &... Read More >
201404-09 Laravel神奇的IoC容器 Laravel 的核心就是一个 IoC 容器,根据文档,称其为“服务容器”通过举例来让读者去理解什么是 IoC(控制反转) 和 DI(依赖注入)超人和超能力,依赖的产生!我们把一个“超人”作为一个类,一个超人肯定拥有至少一个超能力,这个超能力也可以抽象为一个对象。class Power { /** *&nb... Read More >
201404-08 Laravel中的基本概念 一.什么是 DI依赖注入/IOC控制反转DI依赖注入啥都不说,直接上代码<?php class UserController { private $user; &nb... Read More >
201404-07 设计模式概览 设计模式设计模式的世界丰富多彩,比如生产一个个「产品」的工厂模式,衔接两个不相关接口的适配器模式,用不同的方式做同一件事的策略模式,构建步骤稳定、根据构建过程的不同配置构建出不同对象的建造者模式等。面向对象结合设计模式,才能真正体会到程序变得可维护、可复用、可扩展、灵活性好。设计模式对于程序员而言并不陌生,每个程序员在编程时都会或多或少地接触到设计模式。无论是在大型程序的架构中,亦或是在源码的学习中,设计模式都扮演着非常重要的角色。设计模式基于六大原则开闭原则:一个软件实体如... Read More >
201205-08 代理模式、桥接模式、中介者模式区别和联系 联系 在现实生活中,如房屋中介、买房人、卖房人,房屋中介是一个中介,因为它担任买房人和卖房人之间的相同;房屋中介也是一个代理,它在卖房人眼前是买房人的代理,在卖房人眼前是买房人的代理;最后房屋中介也是一个桥接,用于连接买房人和卖房人。那这字面意思相似的三者到底有什么不同的应用场景。代理模式 场景 1. 最常见的就是数据库中间件,他们代理了数据库的访问,访问一个... Read More >
201205-07 php中介者模式 概念中介者模式用于开发一个对象,这个对象能够在类似对象相互之间不直接相互的情况下传送或者调解对这些对象的集合的修改。一般处理具有类似属性,需要保持同步的非耦合对象时,最佳的做法就是中介者模式。PHP中不是特别常用的设计模式。 场景1、中国加入 WTO 之前是各个国家相互贸易,结构复杂,现在是各个国家通过 WTO 来互相贸易。 2、机场调度系统。 3、MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。优点1、降低了类的复杂度,将一对多转化成了一对一... Read More >
201205-06 php中的状态模式 概念状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。角色上下文环境(Work):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的具体对象来处理。抽象状态(State):定义一个接口以封装使用上下文环境的的一个特定状态相关的行为。具体状态(AmState):实现抽象状态... Read More >
201205-05 php中的模板模式 概念在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。示例<?php abstract class Game { abs... Read More >
201205-04 php中的依赖注入模式 概念依赖注入模式(Dependency Injection),用松散耦合的方式来更好的实现可测试、可维护和可扩展的代码。依赖注入模式是控制反转(Inversion of Control)的一种实现方式。要实现控制反转,通常的解决方案是将创建被调用者实例的工作交由 IoC 容器来完成,然后在调用者中注入被调用者(通过构造器 / 方法注入实现),这样我们就实现了调用者与被调用者的解耦,该过程被称为依赖注入。示例<?php class DatabaseCo... Read More >
201205-03 php中的流接口模式 概念 流接口模式(Fluent Interface)用来编写易于阅读的代码,就像自然语言一样(如英语),最关键的一步是:操作函数中必须 return $this,即返回本对象,以调用后续的方法和使用场景PHPUnit 使用连贯接口来创建 mock 对象Yii 框架:CDbCommand 与 CActiveRecord 也使用此模式TP框架中常见的数据库链式操作示例<?php class Sql { &nb... Read More >
201205-02 php中的数据映射模式 概念数据对象映射模式,就是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作,数据映射模式使您能更好的组织你的应用程序与数据库进行交互。大家如果用过 thinkphp 这个框架,应该知道里面的 Model 吧,当你 new User(或 $user = M(‘User’)) 的时候,其实就是在操作 user 表示例class User { //分别对应User表里面的四个字段 &nbs... Read More >
201204-28 php中责任链模式 概念又叫职责链模式。包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的方法。示例情景一: 当用户发布一个帖子时: 如果版主可以决定,就版主处理; &nb... Read More >
201204-27 php中spl库观察者模式接口 PHP-SPL标准库中实现了观察者模式接口,PHP内置提供了两个接口来供外部应用区实现这个模式。<文档>http://www.php.net/manual/zh/splobserver.update.php SplSubject 接口SplSubject代表着被观察的对象,其结构: interface SplSubject{ //添加(注册)一个观察者 &n... Read More >
201204-26 php中策略模式详解 概念在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。场景场景1:假设现在要设计一个购物车系统,一个最简单的情况就是把所有货品的单价乘上数量,但是实际情况肯定比这个复杂。例如:对普通会员无折扣,对中级会员提供8折优惠,对高级会员提供7折优惠。场景2:例如:一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告示例/** ... Read More >