php
doraHP
暂时不写
展开
-
snowflake算法变种/php实现
snowflake是一种分布是唯一id生成算法,简单而又强大。但其依赖实体主机作为标识,而导致了唯一id的组成部分中关于mechine的部分需要实体主机的标识符来映射对应的二进制数值才能正常提供服务(其算法的本意)。而本程序改进如下,借用redis的string类型的key来代替这部分`mechine部分二进制数值`,当一个snowflake唯一id生成器服务进程启动时,会先随机获取一个m...原创 2019-11-03 12:16:20 · 473 阅读 · 0 评论 -
PHP内核分析-变量+引用+写时复制+变量分离
变量PHP5 变量的内部实现 变量存储结构:typedef struct _zval_struct zval;...struct _zval_struct { /* Variable information */ zvalue_value value; /*变量的值的存放容器*/ zend_uint refcount__gc; ...原创 2019-10-10 18:29:25 · 256 阅读 · 0 评论 -
利用模块方法模式初探业务逻辑处理模块
因为阅读yii2源码过程中,不理解其设计模式(导致阅读起来比较吃力),介绍其其中用到的一个设计模式:模块方法模式.模块方法模式概念: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤(引用:菜鸟教程)。在学习过程中设计一个业务处理逻辑模块。目录结构:/index.php demo文件/autolo...原创 2019-08-11 22:48:21 · 284 阅读 · 0 评论 -
RabbitMQ的一次封装/基于php-amqplib一次开发
RabbitMQ实现了AMQP协议(高级消息队列协议)。基于我对RabbitMQ的理解: 其基本组成结构有:publisher(生产者)、exchange(交换机)、queue(消息队列)、consumer(消费者) 各个数据结构介绍: publisher(生产者): 作为消息的产生者,产生消息存于消息队列中,生产的过程就是厂家将商品出货。 ...原创 2019-08-24 15:07:57 · 1381 阅读 · 0 评论 -
使用php依赖注入实现
首先需要了解什么是依赖注入,在这里我只能copy比较不错的定义如下: 依赖注入(Dependency Injection),组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。(引用:控制反转和依赖注入的理解(通俗易懂)) 通过阅读yii...原创 2019-08-11 11:13:14 · 291 阅读 · 0 评论 -
设计模式_builder变种模式使用实例-SQL构造器
把一条基本的SQL语句(不包括子句)抽象成一个类,这里的SQL类由select的`fields`, from的`table`, join`table`on`condition`, where的`condtion`, order by的`field desc, field asc`, limit `offset, length` 六部分组成(可支持扩展 `group by`\`having`\uni...原创 2019-08-14 00:14:27 · 221 阅读 · 0 评论 -
redis--分布式锁; key约束_改进(规避锁无生命周期的问题)[php]
继redis--分布式锁; key约束_改进(减少临界资源被多个进程使用)[php]解决了释放锁时,版本不同问题,而可能造成的催生更多的多个进程同时访问临界资源问题,而本篇在此基础上,解决在加锁时候出现的进程奔溃问题而最后创建了key却没能expire,而造成其它进程一直获取不到锁的问题。<?php/*---------------------- 上一篇出现的一个解决的问题...原创 2019-05-19 17:00:21 · 201 阅读 · 0 评论 -
redis--分布式锁; key约束_改进(减少临界资源被多个进程使用)[php]
这里的临界资源指的是(获取锁成功的处理流程,不过并不是整个过程都涉及资源的争用情况,因为你也不想坐电梯[自己想去一层的],到了二层的时候才去按一层的按钮,而在按下之前的瞬间电梯已经决定往上走了,因为楼上有人想下去~ hiahia...)<?php/*---------------------- 上一篇出现的一个问题就是,当因为进程操作时间过长,而导致所自动释放,超时进程又误...原创 2019-05-19 15:06:26 · 377 阅读 · 0 评论 -
redis--分布式锁; key约束[php]
<?php/*---------------------- 使用创建锁key代替watch*//** * @define lock的定义,对商城商品进行加索 *//*----------------- 常量定义*/define('USER', 'user:');define('INVENTORY', 'inventory:');define('MARKET', 'mark...原创 2019-05-19 14:56:36 · 178 阅读 · 0 评论 -
PHP 命名空间使用--规约探索
探索一:namespace 有无的区别:假设:在一个Application.php 中定义一个class Application, 且申明命名空间,如下:<?phpnamespace app;class Application{ protected function getClass() { return __CLASS__.PHP_...原创 2019-05-19 12:10:32 · 422 阅读 · 0 评论 -
redis--分布式锁; watch实现[php]
<?php/*----------------- 常量定义*/define('USER', 'user:');define('INVENTORY', 'inventory:');define('MARKET', 'market');/*----------------- 公共方法*/function log_($message) { printf($message....原创 2019-05-19 11:53:37 · 505 阅读 · 0 评论 -
正则表达式学习笔记一 :e-mail和tel简单验证/php
分别在前端和后端实现对表单(E-mail和 Telphone)的验证原创 2017-09-21 15:46:02 · 4098 阅读 · 0 评论 -
正则表达式学习之回溯与固态分组/php
正则表达式有关反向引用,回溯和固化分组的学习笔记原创 2017-09-22 20:31:53 · 391 阅读 · 0 评论