自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LiYi

github地址学习https://github.com/lijianguo1211/get/blob/master/README.md

  • 博客(107)
  • 资源 (1)
  • 收藏
  • 关注

转载 php设计模式之代理模式详解

代理模式代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。代理模式建议新建一个与原服务对象接口相同的代理类, 然后更新应用以将代理对象传递给所有原始对象客户端。 代理类接收到客户端请求后会创建实际的服务对象, 并将所有工作委派给它。比如客户访问一个站点,它首先访问的时代理服务器,代理服务器经过一层过滤之后,最后请求才到达真正的服务器代理服务可以延迟服务,等真正调用的时候,才会去示例对象代理可以实现访

2022-03-20 21:52:28 689 1

转载 php设计模式之原型模式详解

原型模式原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。所有的原型类都必须有一个通用的接口, 使得即使在对象所属的具体类未知的情况下也能复制对象。 原型对象可以生成自身的完整副本, 因为相同类的对象可以相互访问对方的私有成员变量。原型模式提供了一种复制已有对象的简便方式, 可代替直接复制对象的所有成员变量来对对象进行重构的方法原型模式让你能够在被克隆类的内部进行克隆工作, 因此可以不受限制地访问类的私有成员变量。创建原型接口, 并在其中声明 克隆方法。

2022-03-20 19:56:21 324

转载 php设计模式之生成器模式详解

生成器模式生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。该模式会将对象构造过程划分为一组步骤,但是不是所有步骤都需要调用最常用的一些例子就是sql查询的查询构造器当有不同的查询的时候,只需要调用不同的步骤即可再比如,sql查询中,mysql的limit,offset 写法和 postgreSql不一样,别的都一样,这个时候就只需要改写一个方法即可代码示例数据查询接口interface QueryBuilde

2022-03-20 19:14:07 421

转载 php设计模式之抽象工厂模式详解

抽象工厂模式抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。实现以不同的产品类型和产品变体来抽象为所有的产品类型申明接口具体的产品类来实现接口申明抽象工厂接口,并且在接口中为所有抽象产品提供一组构建方法。为每种产品变体实现一个具体的工厂类在应用程序中开发初始化代码。 该代码根据应用程序配置或当前环境, 对特定具体工厂类进行初始化。 然后将该工厂对象传递给所有需要创建产品的类举例声明一个数据连接,数据查询的接口不同的数据库有不同的连接方式在

2022-03-20 15:19:40 432

转载 工厂方法模式

工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。在编写代码时,无法预知对象具体的依赖时,可以使用工厂方法工厂方法将具体的使用和创建分离开工厂方法可以更加容易扩展,当要扩展这一组件的时候,可以根据协议更加容易的扩展,不需要去修改原来的代码,造成混乱具体的实现创造一个统一的接口,所有的产品都去实现这个接口在创建类中添加一个空的工厂方法,返回类型必须是遵循是上层的接口在创建者代码中找到对于产品构造函数的所有引用。为工厂方法中的每种产.

2022-03-20 13:55:50 69

转载 关于PHP中的多进程编程(六)

参考 workerman 创建一个简单的http请求服务EventLoop event 扩展调用事件操作class EventLoop{ protected \EventBase $eventBase; protected int $key = \Event::PERSIST | \Event::READ; public array $allEvent = []; /** * 初始化 base event 类 */ publi..

2022-03-19 22:15:49 102

转载 关于PHP中的多进程编程(五)

上一篇当中,可以算PHP的单进程的socket监听,监听事件也是使用PHP自带的Select调度模式。本篇就简单使用多进程加epoll事件调度模式编写关于当前的多进程需要知道几点pcntl_fork出子进程做socket监听, 父进程或者说是主进程做子进程监听控制,比如停掉,重启子进程等等使用event扩展,做事件调度,第一次添加stream_socket_server创建的服务器套接字,在第一次的回调中,stream_socket_accept接收由服务端的套接字,第二次添加,stre.

2022-03-19 22:14:54 91

转载 关于PHP中的多进程编程(四)

之前的一二三记录都是PHP中多进程编程需要使用的浅显知识,本篇算是把多进程编程的题外话,网络编程,之后通过了解网络编程之后,再把多进程编程和网络编程做融合网络知识php需要开启socket扩展,在编译时--enable-sockets Enable sockets support网络的七层模型序号title释义代表7应用层网络服务与最终用户的一个接口HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP.

2022-03-19 22:14:02 312

转载 关于PHP中的多进程编程(三)

关于事件循环扩展安装 event系统依赖名PHP扩展ubuntulibevent-devevent—编译安装-apt-get安装编译安装编译安装 event 扩展步骤命令解释1wget https://pecl.php.net/get/event-3.0.6.tgz下载扩展包2tar -zxvf event-3.0.6.tgz解压包3cd event-3.0.6进入文件4/usr/local/php/.

2022-03-19 22:13:09 86

转载 关于PHP中的多进程编程(二)

posix_kill 向进程发送信号posix_kill($pid, SIGHUP);//终止进程,终端线路挂断posix_kill($pid, SIGINT);//终止进程,ctrl+cposix_kill($pid, SIGQUIT);//建立core文件终止进程,并生成core文件,ctrl+\posix_kill($pid, SIGKILL);//终止进程posix_kill($pid, SIGUSR1);//终止进程,用户自定义信号posix_kill($pid, SIGUSR2).

2022-03-19 22:12:12 136

转载 关于PHP中的多进程编程(一)

需要使用的到的扩展扩展作用安装pcntl操作进程编译安装 --enable=pcntlpoisx操作进程(辅助)编译安装 --enable=poisx创建一个子进程 pcntl_fork(), 返回值有其三,等于-1失败,等于0进入子进程处理逻辑,>0进入父进程逻辑,这个>0的数值就是子进程的pid$pid = pcntl_fork();switch ($pid) { case -1: exit("fork pro.

2022-03-19 22:10:17 150

原创 Centos8 安装node

Centos8 安装node如果是root用户登陆算是比较方便的,如果你有这个账户的话,如果没有,安装运行命令的时候,需要加上sudo;方式一: 使用centos8自有的 AppStream存储库,使用的命令是dnf查看当前有那些可供选择的版本dnf module list node.js选择一个适合当前项目的版本dnf module edable nodejs:14安装nodejsdnf install nodejs查看当前的版本node --versio

2021-07-08 20:25:48 1947 2

原创 centos8 安装dcoker

qwe

2021-06-26 10:11:34 71

原创 laravel 在配置nginx代理时遇到的链接问题

nginx 反向代理相关问题需求:关于一个多语言站点的部署,只有中文站点在国内,多于站点部署在国外,国外是主营业务,所以国外算是主站点,域名类似comunity.xx.com,英语和小语种都是通过sg|au|fr|de|ru|jp|it访问,国内通过cn访问,国内的在国内服务器,通过nginx代理访问国内。环境语言服务器数据库前台框架后台框架服务器化境php7.2nginxmysql5.7laravel5.8laravel-adminCentOS7

2020-11-27 22:07:33 501

原创 Laravel生命周期学习一

生命周期index.php1.1 检测是否处于维护模式if (file_exists(__DIR__.'/../storage/framework/maintenance.php')) { require __DIR__.'/../storage/framework/maintenance.php';}1.2 加载composer自动加载文件require __DIR__.'/../vendor/autoload.php';1.3 加载初始化容器$app = require_

2020-09-26 16:19:54 331

原创 2020-09-26

laravel 视图共享数据需求背景,网站的头部数据,底部数据大多数都是共享的数据,每个页面都需要,基本都是保持不变的数据,这个时候,如果在每个控制器中都去查询数据传递变量,这样就很麻烦,造成[一变全改],某一个地方漏掉了,几乎就是一个致命bug了。那么在laravel中,就刚好有一个方法来帮助偷懒的开发者解决这个问题。先说一个复杂的完整的写法。首先需要在app/provides文件下面创建一个ViewServiceProvider服务提供者,这个服务提供者继承框架的的ViewServi

2020-09-26 16:14:51 100

原创 PHP设计模式之模板方法模式

PHP设计模式之模板方法模式 Template Method首先我们不说什么是模板方法模式,可以先看一个生活种的小例子,然后由生活中的小例子再来谈谈这个模板方法模式的实现。生活中大家早上上班,如果不是自己做饭的,一般都是在外面买这吃的,一般买包子搭配豆浆,这个是最快捷而且省钱的一种搭配方式,那么包子老板做包子一般分为几个步骤呢,一般都是先挑选紧致的面粉,然后会让面粉发酵,准备包包子的原材料,比如肉包子,韭菜包子,粉丝包子,海带包子,只要你能想的到,老板都会满足你,包好包子之后,会把包子放在蒸笼

2020-08-09 22:22:10 120

原创 PHP设计模式之外观模式

外观模式外观类 为调用端提供统一的调用接口,外观类知到那些子系统负责处理请求,从而将调用端的请求代理给适当的子系统外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统的使用的复杂性外观模式对客户端与子系统的耦合关系,让子系统内部的模块更容易维护和扩展通过合理的使用外观模式,可以更好的划分访问的层次生活举例,比如有一个影院系统,影院里有DVD,投影仪,爆米花机,幕布,音响,灯光,总共有这么多设备,我们去电影院开电影呢,用户是不关心影院怎么工作的,用户只关心的电影开

2020-08-07 00:28:38 150

原创 PHP代码检测工具-CodeSniffer

PHP代码检测工具 CodeSniffer使用composer安装 composer require squizlabs/php_codesniffergit拉取下载 https://github.com/squizlabs/PHP_CodeSniffer.git最主要的是两个文件:|-- squizlabs |-- php_codesniffer |-- bin |-- phpcbf //代码修正脚本 |--

2020-08-05 23:48:13 1050

原创 字符串或数字反转

字符串或数字反转字符串反转,比如给定一个字符串 abc,得到一个cba,或者输入一个123456得到一个654321,如果不想要自己实现,那么PHP有一个自带的函数strrev ( string $string ) : string strrev 也是可以达到相同的效果的在 力扣 算法篇是由这个题目描述的,具体的可以点链接过去看看,不过这个题目在里算法里面是属于简单的在这里如果想要自己实现一个达到相同效果的函数,也是可以做到的。方法一:使用二分法,我们把第一个字符和最后一个字

2020-07-29 23:29:27 1055

原创 javaScript 中 this 的指向学习

javaScript 中 this 的指向事件调用环境,this就是指向当前的调用者全局环境 console.log(this) 指向的就是浏览器的windows对象在node环境中指向就是导出的 module.exports在函数内部:function move(){ console.log(this);}move();非严格模式下,直接调用函数,函数内部this指向的是windos对象严格模式,直接调用函数,函数内部this指向的是undefi

2020-07-14 13:47:02 76

原创 PHP设计模式之桥接模式

PHP设计模式之桥接模式 Bridge桥接模式属于结构型的设计模式将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变bridge 模式是基于最小设计原则,通过封装,聚合及继承等行为让不同的类承担不同的职责,主要的特点就是将抽象与实现分离,从而保证各部分的独立性以及应对他们功能的扩展生活场景引入:现在的生活都离不开手机,手机中又有不同的品牌,小米,华为,三星,苹果。每一种手机的设计又不一样,比如最开始的翻盖手机,直板手机,到现在的全面屏手机,假如现在的每个手机厂商都

2020-07-04 21:07:49 202

原创 PHP设计模式之适配器模式

PHP设计模式之适配器模式生活场景问题引入:假如需要去国外旅游,游玩,现在电子产品很丰富,但是每个电子产品都是需要电源来做驱动,手机,电脑,相机。。。但是又有一个很显示的问题,电子产品是很消耗电量的,电量没有了,就需要充电,在我们国家,我们买的电子产品出场带的电源充电器,一般都是220V的电压,但是世界很大,每个国家的要求(规定)又是不同的,比如美国就是120V原理:将一个类的接口转换为另外一种接口,让原本接口不兼容的类可以兼容。用户调用适配器转化出来的目标接口方法,适配器再去调用被适

2020-06-29 23:45:01 127

原创 PHP设计模式之流接口模式

流接口模式 Fluent Interface属于结构型的设计模式定义: 用来编写易于阅读的代码,就像自然语言一样。鄙人之见,流接口模式就是可以瀑布式(链式调用)接口来转发一系列对象方法调用的上下文,这个上下文通常指3.1 通过被调方法的返回值定义3.2 自引用,新的上下文等于老的上下文3.3 返回一个空的上下文来终止最常见的就是各种php框架里封装的查询sql的语句,通过流式接口模式,把sql语句封装,然后供客户端方便明了的调用举例:namespace Flue

2020-06-24 00:58:22 289

原创 PHP设计模式之组合模式

PHP设计模式之组合模式 Composite组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。使用过 laravel-admin 这个快速后台的同学,应该都使用过它的表单类 Form 创建表单的时候,只需要 new Form,然后添加对应的输出的表单元素就可以了,很快捷,很方便,其实它就是使用了 组合模式根据以上

2020-06-22 23:45:08 159

原创 设计模式的相关介绍

设计模式的相关介绍 design-pattern-php学习PHP设计模式的相关记录什么是设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性为什么要使用设计模式,以上说的很明白,就是为了让代码可以复用,解除代码之间的高耦合低内聚,减少无用的代码。让一个项目增加可维护性,更加容易扩展,同时也是使程序更加的健壮,更加的可靠,更

2020-06-21 16:13:26 119

原创 关于时间PHP处理包遇到的问题时间序列化差值问题

关于时间PHP处理包遇到的问题问题描述,最近在写项目的时候,因为是一个多语言的项目,而且对于本地化时间也做了处理,再加上在宣传页面,不同的地方,做了不同格式的展示时间的处理,最重要一点,这是一个使用laravel开发的项目,安装一个方便的时间处理包真的是太方便了,而且carbon还是这么的强大。后台的使用者在发布一个宣传文章的时候,有时候会使用一个预发布的功能,那么前台在预发布的时间之后,就会显示这个宣传文章,现在的问题就是,比如我选择一个早上八点之前的预发布时间,那么使用carbon处理时

2020-06-18 00:05:50 163

原创 PHP设计模式之责任链模式

责任链模式 Chain Of Responsibilities顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。责任链模式也是属于行为型模式责任链模式是有一个请求类,一个请求处理者抽象类,然后有多个请

2020-06-17 00:06:37 219

原创 php设计模式之策略模式

策略模式 Strategy策略模式在分类上属于行为型现在有一个例子,比如有一只鸭子,有的鸭子是会飞的(野鸭),有的鸭子不会飞(家里养的鸭子),有的鸭子是会瓜瓜叫的,有的鸭子就不会叫(玩具鸭,周黑鸭),有的鸭子会游泳(养的鸭子,野鸭),有的鸭子不会(周黑鸭,玩具鸭,小黄鸭)假如利用继承来实现,那就是先创建一个抽象类,然后野鸭,周黑鸭,家里养的鸭子,小黄鸭,玩具鸭,都要去继承我们的抽象类鸭子,<?phpnamespace Strategy;abstract class

2020-06-16 00:30:14 191

原创 关于isset和逻辑运算符的使用

关于isset和逻辑运算符的使用之前看到Hyperf的框架中,关于服务端的代码,有一个设置配置的文件的代码,如下:$config = ['host' => ''];isset($config['host']) && $config['host'] = '127.0.0.1';这个代码里是把isset()和逻辑运算符放在一起的,当这个isset()存在的时候,就会给它重新赋值,比起写if来说,代码看起来清爽了很多。比如if的实现:$config = [];if (is

2020-06-14 23:08:43 152

原创 PHP设计模式之单例模式

PHP设计模式之单例模式单例模式在设计模式中是属于创建型的类型单例模式可以使一个程序处理请求过程中,只创建一次,减少类的频繁实例化单例模式不可以在外部实例化,也就是构造方法要设置为私有的方法单例模式只需要向外部提供一个公开的静态方法接口,给外部调用者使用单例模式要提供一个私有的克隆方法,防止外部克隆产生一个新的副本单例模式需要提供一个私有的防止类序列化的方法,以免产生一个新的副本单例模式可以分类饿汉式和饱汉式等等,在这里我们就提供一个饿汉式的单例模式单例模式一

2020-06-14 19:35:23 108

原创 PHP设计模式之观察者模式

PHP之观察者模式观察者模式在PHP里面是有已经定义好的两个接口文件,我们只需要继承它并实现它,那么我们的观察者模式就已经算是实现了。首先观察者模式,顾名思义,就是需要有一个观察者和被观察者,被观察的对象发生了变化,可以及时通知所有观察这个对象变化的对象在PHP种预定义的观察者: \SplObserver观察者定义了一个接口:interface SplObserver{ public function update(SplSubject $subject);}在PH

2020-06-13 23:37:36 129

原创 二叉树的遍历实现

二叉树tree 如图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传根节点 root节点(所有节点由它开始,它没有父节点,只有孩子节点)节点的度:节点拥有子树的个数树的度:一棵树中所有节点的度的最大值叶子节点:度为0的节点,没有子树的节点,终端节点(A,D,F,G)分支节点:度不为0的节点,非终端节点(D,C,E)兄弟节点:拥...

2020-01-05 23:10:43 156

原创 HTTP学习了解四

HTTP学习了解四首部字段解读表示是否能缓存的指令[public]指令: 当表明使用public指令的时候,表示其它用户也可以利用缓存[private]指令: private指令表示响应只以特定的用户作为对象[no-cache]指令: 为了防止从缓存中返回过期的资源,表示客户端不会接收缓存过的响应,服务器中包含[no-cache]指令,那么缓存服务器不能对资源进行缓存,源服务...

2019-12-23 09:35:15 95

原创 HTTP学习了解(三)

HTTP学习了解(三)HTTP首部字段 HTTP首部字段是构成HTTP报文的要素之一。无论是请求还是响应都会使用首部字段,它起到传递额外重要信息的作用,使用首部字段是为了提供浏览器和服务器提供报文主体大小,所使用的语言,认证信息等内容HTTP首部字段结构 首部字段名: 字段值HTTP首部字段类型通用首部字段 General Header Feilds 请求报文和响应报文...

2019-12-20 09:38:57 72

原创 HTTP学习(二)

HTTP报文HTTP报文大致可分为报文首部和报文主体,两者之间以空行[回车符和换行符]分开。通常,不应会有报文主体HTTP 首部HTTP报文首部请求行请求首部字段通用首部字段实体首部字段其它注意:请求行包括(方法,URI,HTTP版本),HTTP首部字段(请求首部字段,通用首部字段,实体首部字段)HTTP请求报文:METH...

2019-12-18 09:39:55 87

原创 HTTP 学习了解(一)

HTTP 学习了解TCP/IP协议族各层应用层应用层决定了向用户提供应用服务时通信的活动传输层传输层对上层应用层,提供处于网络链接中的两台计算机之间的数据传输,传输层有两种不同的协议,TCP(传输控制协议)和UDP(用户数据报协议)网络层(又可称之为网络互联网层)网络层时用来处理网络上流动的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎样的路径到达对方的计算...

2019-12-15 21:35:38 92

原创 插值查找算法

插值查找算法对于有序的数列[数组]来说,查找一个具体的数值[数组的value],可以使用顺序查找,也可以使用前一章节学习的折半[二分法]查找。下面有一个具体的实例:$arr = [1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]这是一个分布均匀的有序数组,这次需要查找数组的值为1的键,或者是一个值为20的键。首先使用顺序查找:顺序查...

2019-12-13 18:04:34 166

原创 查找算法之二分法

查找算法之二分法二分法查找的前提是待找的数组是一个有序的数组(这里假设数组是一个从小到大的数组)递归的查找需要找到的值思路:首先是一个有序的数组,找到这个数组的中间值,然后需要找到的值和这个中间值比较,如果是比中间值小,就向右递归,否则向左递归数组 $arr = [2, 36, 25, 1, -1, 45, 99];待找到的值 -1<?php/** *...

2019-12-12 14:30:59 187

原创 php命名空间学习

命名空间命名空间通过关键字namespace来声明命名空间必须在一个文件的最上面,它的声明以上不允许有任何代码,除了declare关键字之外。可以通过__NAMESPACE__来得到当前命名空间的名字使用命名空间的基础相对文件命名形式, foo.php 它会被解析为currentdirectory/foo.php,其中currentdirctory表示当前目录,因此如...

2019-11-24 23:30:16 111

CryptoJS v3.1.2.rar

CryptoJS v3.1.2.rar

2021-03-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除