算法
文章平均质量分 51
qq_540616979
我是一颗小小小草
展开
-
PHP 实现LRU 算法
整体设计1:用数组保存缓存对象(Node);2:缓存对象(Node)之间通过nextKey,preKey组成一个双向链表;3:保存链表头 跟尾;处理流程如下图:主要代码1:Node 节点类/** * 缓存值保存类, * Class Node * @package app\common\model */class Node{ private $preKey=null;//链表前一个节点 private $nextKey=null;//链表后一个节点 priva原创 2021-06-22 17:36:50 · 30119 阅读 · 5 评论 -
Api接口数据安全及数据加密方式主要流程实现
简述接口数据安全的主要实现方式一:数据校验常用算法:MD5,SHA1流程:1:前端生成数据后按照约定方式生成一个sign 校验字段(一般通过MD5或者SHA1 方式),一并提交给后端;2:后端获得参数后通过同样的方式生成sign 然后跟接口携带的sign对比是否一致,以此判断数据是否被修改;eg:下面接口文档中的sign接口参数有: 1 order_id:订单号,唯一,长度小于30 2 money:金额,分 3:type:支付类型 alipay(个码),alipay(支付宝),wecha原创 2021-05-04 12:04:29 · 70489 阅读 · 5 评论 -
PHP 递归快速排序问题分析及优化方案
最近研究了下快速排序,发现网上很多用递归实现,但是有很多极端问题,分析记录一波首先给出快排递归实现(网上copy)$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);function quick_sort($a){ // 判断是否需要运行,因下面已拿出一个中间值,这里<=1 if (count($a) <= 1) { return $a; } $middle = $a[0]; // 中间值原创 2021-04-30 16:14:01 · 12266 阅读 · 0 评论 -
Easyswoole 令牌桶IP限流实现(企业实用)
使用Easyswoole 开发项目有一段时间了,官方的ip 限流方法比较简陋,我这里自己手动实现了一套基于令牌桶算法限流的方案,这里记录分享下实现功能1:根据ip 限速2:可以配置缓冲池,防止突发流量3:可以配置黑白名单,或者及时调整指定ip的流量实现流程一:创建IpAccess 类<?php/** * Created by PhpStorm. * User: 05 * Date: 2020/8/18 * Time: 10:14 * * 模型管理器,保证每个协程只生成一个模原创 2021-04-28 14:38:05 · 26744 阅读 · 2 评论 -
PHP多进程异步处理复杂接口类似微服务(企业真实案例)
需求: 用户下单,推荐合师傅给用户(类似滴滴派单)场景: 在线服务平台有各类技术师傅入驻,顾客在下单后需要根据在线师傅及自己位置计算返回相关推荐的师傅给用户问题: 平台师傅有多个评分属性,比如:位置,能力水平,信用分,服务时间等,用户每次下单得查找所有在线师傅 计算综合分后排名返回给用户,整个工作可能非常耗时(师傅数量万级基本超时),php-fpm 无法多线程工作;解决方案:1:根据师傅位置 生成服务范围比如方圆20公里内(这里不能直接用区,很多在边上的用户);2:根据服务范围筛选出对应的工程师;原创 2021-04-02 16:17:45 · 20358 阅读 · 6 评论 -
递归与循环的互转关系
递归与循环写法互转1:递归与循环理论上可以互转2:递归顺序必须由父–>子 -->兄弟;3:循环用压栈方式可以实现由父–>子 -->兄弟;用连表方式可以实现父–>兄弟—>子的顺序;递归通用模板 /** * 递归通用函数 */ function dg($pms){ //符合某条件直接返回 if ($pms=='xxx'){ return 'xxx'; }原创 2020-07-28 17:54:47 · 6599 阅读 · 0 评论