原型模式 - Prototype Pattern定义用原型实例来确定要创建对象的类型,并通过复制原型来创建新的对象。结构中包含的角色Prototype(抽象原型角色):声明一个克隆自身的接口Concrete Prototype(具体原型角色):实现一个克隆自身的操作最小可表达代码// 定义拷贝接口 interface Cloneable { p ......
398
0
0
2022-07-22
建造者模式 - Builder Pattern定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。结构中包含的角色Builder(抽象建造者)ConcreteBuilder(具体建造者)Product(产品角色)Director(指挥者)一句话概括设计模式通过分解构建步骤,控制构建顺序,隔离复杂对象的创建和使用的方式,解决复杂对象的 ......
347
0
0
2022-07-22
工厂模式 Factory Pattern简述工厂模式分三种类型。 1. 简单工厂模式。 2. 工厂方法模式。 3. 抽象工厂模式。设计的原则和思想把对象的创建封装在工厂类中,解耦对象的创建和使用。产品等级结构和产品族产品等级结构 : 继承结构,就是同类。例如,华为手机,小米手机,魅族手机,这些都是具体实现类,抽象类是手机。 产品族 ......
383
0
0
2022-07-22
单例模式 - Singleton Pattern定义一个类只拥有一个实例,且能提供全局访问的方法。 一句话概括设计模式一个类只实例化一次。 结构中包含的角色Singleton 单例对象 最小可表达代码// final 不能继承 final class Singleton { private static $instance; ......
327
0
0
2022-07-22
修改 dnmp 的 .env 文件, php 配置 swoole 扩展PHP_EXTENSIONS=swoole 销毁容器docker-compose down 重新构建 php 容器docker-compose build php 启动docker-compose up -d 查看 安装的 swoole 扩展php -m | grep swoole ......
426
0
0
2022-07-19
github.com/aliyun/aliyun-apsaradb-... phpsdkdemo一、背景信息云数据库HBase增强版,是由云原生多模数据库Lindorm的宽表引擎云原生多模数据库Lindorm的宽表引擎提供的、完全兼容HBase的云上托管数据库二、hbase遇到的问题问题:正式上线后三天、log每天200G数据写入到hbase后变成了2TB数 ......
611
0
0
2022-07-18
引言在介绍布隆过滤器之前我们首先引入几个场景。场景一在一个高并发的计数系统中,如果一个key没有计数,此时我们应该返回0,但是访问的key不存在,相当于每次访问缓存都不起作用了。那么如何避免频繁访问数量为0的key而导致的缓存被击穿?有人说, 将这个key的值置为0存入缓存不就行了吗?确实,这是一个好的方案。大部分情况我们都是这样做的,当访问一个不存在的ke ......
369
0
0
2022-07-18
并发访问限制问题对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券。常见的业务逻辑代码如下:if A(可以换领) B(执行换领) C(更新为已换领) D(结束) ......
396
0
0
2022-07-17
随机生成号码 function generate_name($count,$type="array",$white_space=false) { $arr = array( 130,131,132,133,134,135,136,137,138,139, 144,147, ......
507
0
0
2022-07-12
hyperf-redis-lockEnglish | 中文一个简单的Redis分布式锁的实现 基于Hyperf框架。本扩展实现了基本的分布式锁,支持阻塞式分布式锁和非阻塞式分布式锁。原理Redis的命令为原子性 使用Redis的set即可保证业务的串行执行。2.8之前版本的Redis不支持set 的ex选项 因此只能使用 setnx+expire的方式。 对 ......
572
0
0
2022-07-12
项目中发现查看手册运行代码 比较数组队列 和 SplQueuelist($t1, $t2) = explode(' ', microtime()); $st = (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000); $splq = new SplQueue; for($i = ......
454
0
0
2022-07-12
设计模式设计模式单例模式工厂模式工厂模式,工厂方法或者类生成对象,而不是在代码中直接new。public function test1($arr) { $people = new PeopleClass(); } public function test2($arr) { $people = new PeopleClass(); ......
458
0
0
2022-07-10
GlobalPay支持国际版支付的 PHP SDK,目前只支持支付宝国际版。因目前支付宝跨境在线支付服务只支持 app、wap、web 和报关这四种,本 SDK 提供了 app、wap、web 这三种跨境支付,详见国际支付宝官方文档 。安装composer require pudongping/global-pay -vvv 特点命名规范隐藏开发者不需要关 ......
313
0
0
2022-07-10
下面通过两个例子,了解 tcp 传输没有数据边界的特点所带来的问题,由此引出本篇提出的合包与分包的概念。在此使用 swoole 的客户端和服务端。例1,发送方发送多条数据,接收方一次性读取//发送方 $client = new swoole_client(SWOOLE_SOCK_TCP); $client->connect('127.0.0.1', ......
392
0
0
2022-07-09
php-toolkit/pflag 是一个PHP编写的,通用的命令行标志(选项和参数)解析库。Github 仓库: php-toolkit/pflag功能说明通用的命令行选项和参数解析器支持设置值数据类型(int,string,bool,array),将自动格式化输入值支持为选项/参数设置默认值支持为一个选项设置多个短名称支持从环境变量读取标志值支持设置选项 ......
343
0
0
2022-07-08