吃到老,活到老
01
01
延迟队列 延迟队列
比如要实现30分钟未支付订单取消,量少的时候可以用数据库轮训的方式,但是数据量大的话,轮训的并发和准确性就不可靠,这个时候可以用延迟队列来解决这个问题 延迟队列的实现 [RabbitMQ] RabbitMQ通过RabbitMQ Delaye
2019-01-01
12
04
Redis 分布式锁 Redis 分布式锁
实现一个分布式锁定,我们至少要考虑它能满足一下的这些需求: 互斥,就是要在任何的时刻,同一个锁只能够有一个客户端用户锁定. 不会死锁,就算持有锁的客户端在持有期间崩溃了,但是也不会影响后续的客户端加锁 谁加锁谁解锁,很好理解,加锁和解锁的
2018-12-04
01
07
11
php-fpm 配置文件优化 php-fpm 配置文件优化
PHP-FPM CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议。它负责处理URL的请求,启动一个进程,将客户端发送的数据作为输入,由Web服务器收集程序的输出并加上合适的头部
2018-07-11
06
21
Pypppeteer Pypppeteer
之前做爬虫或者浏览器自动化操作都用selenium ,再配合docker可以进行分布式部署,但是selenium太耗性能,这里有另外个选择puppeteer谷歌浏览器在17年自行开发了Chrome Headless特性,并与之同时推出了pu
2018-06-21
05
11
concurrent.futures 并发操作 concurrent.futures 并发操作
concurrent.futures模块的基础是Exectuor,Executor是一个抽象类,它不能被直接使用。但是它提供的两个子类ThreadPoolExecutor和ProcessPoolExecutor却是非常有用,顾名思义两者分别
2018-05-11
04
11
协程 asyncio 协程 asyncio
协程可称为用户态的线程,由用户态完成创建,切换和销毁。IO操作频繁的可以由协程异步操作,相比与线程减少线程切换的开销。 关于asyncio的一些关键字的说明: event_loop 事件循环:程序开启一个无限循环,把一些函数注册到事件循环上
2018-04-11
03
08
04
二分查找与其变体 二分查找与其变体
二分查找针对的是一个有序的数据集合,时间复杂度为O(logn) $data = [8,11,19,23,33,33,33,45,55,67,98]; 普通的二分查找function binarySearch(array $data,$fi
2018-03-04
02
01
yield 生成器 读取超大文件 yield 生成器 读取超大文件
生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。 读取超大文件functi
2018-02-01
2 / 3