Git 分支规范  

1. 开发环境简介 DEV:Development environment,开发人员本地使用 FAT:Feature Acceptance Test environment,功能验收测试环境,用于测试环境下的QA/PM测试使用。 UAT: User Acceptance Test environment,用户验收测试环境,用于生产环境下的QA/PM测试使用。 PRO:Production environment,生产环境/正式环境 2. 分支简介 master 主分支,用于部署到正式环境(PRO

Posted:2020-04-04  By vilay

PHP 使用Mysql8.0可能遇到的问题  

1. 连接问题 数据库升级8.0之后,使用php连接数据库,可能会报一个错误 Authentication plugin 'caching_sha2_password' cannot be loaded 这是因为MySQL账号认证方式的改变,由此前的 mysql_native_password 变成了 caching_sha2_password。 解决方法:修改认证方式 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY

Posted:2020-04-04  By vilay

4.4 哀悼 大厂网站页面变灰的技术实现  

一直以为这种实现是通过图片设计或者切换整个主题来实现的,这样成本太高了。后面发现是基于浏览器的属性支持来实现的。 根据CSS3 filter(滤镜) 属性 html { -webkit-filter: grayscale(1); /* Webkit */ filter: gray; /* IE6-9 */ filter: grayscale(1); /* W3C */ } 小程序里面: page {filter:grayscale(1)}

Posted:2020-04-04  By vilay

秒杀系统架构设计学习  

1. 秒杀应该考虑的问题 1. 超卖 一般秒杀都是有库存限制的,超出秒杀库存,一个是公司实际利益受损,另外就是真的库存不足,需要练习客户退单,影响较大。 2. 高并发 秒杀都是定时或者限时秒杀,用户都在一个点进入,就算引入缓存也有可能缓存穿透或者缓存雪崩 3. 接口防刷 用户使用脚本或者机器发大量请求。 4. 秒杀url 大部分是前端直接按钮禁用,但是熟悉web开发的,会分析你的url以及参数,使用3进行大量请求 5. 数据库设计 最好单独数据库进行秒杀功能,这样不会影响主体业务 2. 秒杀系统

Posted:2020-03-30  By vilay

网页上打开QQ  

网页上使用QQ做客服 PC <a href="tencent://message/?uin=QQ号&Site=Sambow&Menu=yes" class="rightFixedItem"></a> Wap <a href="mqqwpa://im/chat?chat_type=wpa&uin=QQ号&version=1&src_type=web&web_src=oic

Posted:2020-03-11  By vilay

PHP操作word文档  

使用php的phpoffice/phpword扩展包,操作word文档 1. 安装扩展包 composer require phpoffice/phpword 3. 简单使用 在项目里面先设计一个word模版文件,设置上变量,比如姓名,手机号,变量名用${username},${mobile}这种格式。 代码示例 <?php include_once "vendor/autoload.php"; $filename = "xb.docx"; $tmp

Posted:2020-03-07  By vilay

RabbitMQ(五)- 远程过程调用(RPC)  

在之前教程中我们介绍了如何使用工作队列(work queue)在多个工作者(woker)中间分发耗时的任务。 可是如果我们需要将一个函数运行在远程计算机上并且等待从那儿获取结果时,该怎么办呢?这就是另外的故事了。这种模式通常被称为远程过程调用(Remote Procedure Call)或者RPC。 这篇教程中,我们会使用RabbitMQ来构建一个RPC系统:包含一个客户端和一个RPC服务器。现在的情况是,我们没有一个值得被分发的足够耗时的任务,所以接下来,我们会创建一个模拟RPC服务来返回斐波

Posted:2019-12-31  By vilay

RabbitMQ(五)- 主题交换机(Topics)  

在前面,我们改进了我们的日志系统。我们使用直连交换机替代了扇型交换机,从只能盲目的广播消息改进为有可能选择性的接收日志。 尽管直连交换机能够改善我们的系统,但是它也有它的限制 —— 没办法基于多个标准执行路由操作。 在我们的日志系统中,我们不只希望订阅基于严重程度的日志,同时还希望订阅基于发送来源的日志。Unix工具syslog就是同时基于严重程度-severity (info/warn/crit…) 和 设备-facility (auth/cron/kern…)来路

Posted:2019-12-31  By vilay

RabbitMQ(四)- 路由  

在前面,我们实现了一个简单的日志系统。可以把日志消息广播给多个接收者。 在这边,我们新增一个功能 —— 使得它能够只订阅消息的一个字集。例如,我们只需要把严重的错误日志信息写入日志文件(存储到磁盘),但同时仍然把所有的日志信息输出到控制台中。 绑定(Bindings) 在前面的示例中,我们已经创建绑定。 $channel->queue_bind($queue_name, 'logs'); 绑定(binding)是指交换机(exchange)和队列(queue)的关系。可以简单理解为:这个队

Posted:2019-12-31  By vilay

PHP 通过反射获取类的方法以及参数  

比如一个PHP的扩展,你知道类名,但是不知道具体有哪些方法可以使用,可以使用反射试试。 示例: $reflection = new ReflectionClass ($class_name); $methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC + ReflectionMethod::IS_PROTECTED + ReflectionMethod::IS_PRIVATE); //遍历所有的方法 echo "

Posted:2019-12-31  By vilay

Git 子模块移除  

在vendor/包下有个包包含了子模块,一直无法提交。 我先进入目录把git相关的移除,但是还是无法提交。 再把缓存清除 git rm --cached vendor/package 重新提交就ok了。

Posted:2019-12-31  By vilay

RabbitMQ(三)- 发布/订阅  

在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者(worker)。在本篇教程中,我们要做的跟之前完全不一样 —— 分发一个消息给多个消费者(consumers)。这种模式被称为“发布/订阅”。 为了描述这种模式,我们将会构建一个简单的日志系统。它包括两个程序——第一个程序负责发送日志消息,第二个程序负责获取消息并输出内容。 在我们的这个日志系统中,所有正在运行的接收方程序都会接受消息。我们用其中一个接收者(receiver)把日志写入硬盘中,另外一个接受者(receiver)把日

Posted:2019-12-28  By vilay

RabbitMQ(二)- 工作队列  

工作队列 工作队列(又称:任务队列——Task Queues)是为了避免等待一些占用大量资源、时间的操作。当我们把任务(Task)当作消息发送到队列中,一个运行在后台的工作者(worker)进程就会取出任务然后处理。当你运行多个工作者(workers),任务就会在它们之间共享。 这个概念在网络应用中是非常有用的,它可以在短暂的HTTP请求中处理一些复杂的任务。 生产者 (task.php) <?php require_once __DIR__ . '/vendor/autoload.php

Posted:2019-12-28  By vilay

RabbitMQ(一)- 简单队列  

客户端 composer require php-amqplib/php-amqplib 生产者 send.php 代码 <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; require_once __DIR__ . '/config.php'; $connection

Posted:2019-12-28  By vilay

微信公众号:该公众号提供的服务出现故障,请稍后再试解决思路  

在开发微信公众号的时候,一直提示该公众号提供的服务出现故障,请稍后再试. 官方文档上是说有两种情况会返回 1、开发者在5秒内未回复任何内容 2、开发者回复了异常数据,比如JSON数据等 情况1是网络延迟或者计算过多,请求接口超时等问题。 情况2也有好多种情况 1. 返回数据格式错误,如代码报错输出了错误信息,或者返回了json,或者直接就是字符串,非xml,或者xml格式中空格多了 2. 公众授权了消息相关权限,接收,被动回复等,在这种情况下,微信除了会向你的开发者服务器地址发送信息之外,还会向

Posted:2019-08-23  By vilayz