计数限流算法

 计数器算法实现起来比较简单,它的基本思路是:在单位时间内(如 1 秒钟)对访问次数进行计数,如果超过设定的阈值,则拒绝后续的请求。以下是一个使用 PHP 实现的计数器算法。完整代码class Counter { protected $maxCount = 100; // 设定最大请求数 protected $interval = 60; // 设定时间窗口大小,单位为秒 protected $redis = null; // Redis 连接 public function __construct($maxCount, $interval) { $this->maxCount = $maxCount; $this->interval = $interval; // 建立 Redis 连接 $this->redis = new Redis(); $this->redis->connect('127.0.0.1', 6379); } publi...

PHP,Golang,.Net,解决方案,其他 2023-03-21 PM 77次 0条

令牌桶限流算法

 下面我们通过使用redis实现一个简单通用的令牌桶限流算法解决问题 令牌桶算法主要是以桶的容量为基准,以固定的时间来生产令牌,有效的解决了漏桶效率不高的问题具体实现创建redis对象并定义缓存键$redis = $this->connect(); $key = "aaaaa";开启 watch 并定义定义每分钟最大请求数量$current_time = time(); $max_count = 320; $total_s = 60; $redis->watch($key);计算平均值用于限制每秒请求数量$rate = (int)(($max_count / $total_s) * ($current_time - ¥result_array["time"]));取出最大容量与桶内容量最小值$num = min($max_count, ($result_array["num"] + $rate));判断令牌数/* 令牌小于0 */ if ($num <= 0) { return false; }重新保存令牌$result = json_encode(["num" =>...

PHP,Golang,.Net,解决方案,其他 2023-03-21 AM 66次 0条

实现滑动窗口限流算法

 下面我们通过php使用redis实现一个简单通用的滑动窗口限流算法解决问题 滑动窗口算法主要解决了传统计数限流算法的阶段突发性流量问题。具体实现创建redis对象并定义缓存键$redis = new \Redis(); $redis->connect("127.0.0.1"); $key = "aaaaa";定义每分钟最大请求数量$max_count = 320; $total_s = 60; $current_time = time();计算平均值用于限制每秒请求数量$avg_count = ceil($max_count / $total_s);限制每秒请求数量$range_count = $redis->zRangeByScore($key, $current_time, $current_time); if (count($range_count) > $avg_count) { exit('请求太过频繁,请稍后 -1'); }限制每分钟请求数量$redis->zRemRangeByScore($key, 0, $current_time - 59); $c...

PHP,Golang,前端,.Net,解决方案,其他 2023-03-17 PM 71次 0条

新手也能看懂的jenkins上传文件到阿里云oss脚本

 分享一段新手也能看懂的jenkins上传文件到阿里云oss脚本,便于其他同学快速入门.步骤 下面实现了代码从仓库到上传文件到阿里云oss过程,分别是拉取仓库代码打包代码上传清理当前工作空间源码pipeline { agent any parameters{ string(name:'git_url',defaultValue:'https:/xxxx.cn/xzz/xxxxx.git',description:'仓库地址') string(name:'version',defaultValue:'main',description:'版本') string(name:'build_name',defaultValue:'xxxxxx',description:'打包名称') } stages { stage('拉取') { steps { deleteDir() checkout([ $class: 'GitSCM', ...

Linux,解决方案,其他 2022-12-28 AM 100次 0条

新手也能看懂的jenkins部署脚本

 分享一段新手也能看懂的jenkins部署脚本,便于其他同学快速入门.步骤 下面实现了代码从仓库到目标服务器的部署过程,分别是拉取仓库代码配置服务配置打包代码检查目标服务器环境部署代码到目标服务器发布代码到目标服务器指定位置清理当前工作空间源码pipeline { agent any parameters{ string(name:'site_hash',defaultValue:'deploy_001',description:'站点名称') string(name:'git_url',defaultValue:'https://xxx.com/xxxx.git',description:'仓库地址') string(name:'version',defaultValue:'v1.0.0',description:'版本') string(name:'build_name',defaultValue:'deploy_001',description:'打包名称') strin...

Linux,其他 2022-12-21 AM 69次 0条

代码参数注释大全

 本文主要记录代码参数注释大全方便参考查看标明作者@author@author 张三 提供给第三方使用的接口@api@api xxxx参数@param @param array 参数名 描述返回值@return@return string待办@todo@todo 这里是待办版本号@version@version 1.0.0文档继承@inheritdoc类属性@property@property array $auth 描述只读属性@property-read@property-read array $auth 描述只写属性@property-write@property-write array $auth 描述常量@const@const APP过期方法@deprecated示例@example标识类是终态, 禁止派生@final指明引用的全局变量@global标识类、方法、属性是静态的@static忽略@ignore限内部使用@internal协议@license@license MIT链接,引用文档等@link@link http://www.xxx...

PHP,其他 2022-09-02 PM 170次 0条

缓存三贱客

无处不在的缓存缓存在计算机系统是无处不在,在CPU层面有L1-L3的Cache,在Linux中有TLB加速虚拟地址和物理地址的转换,在浏览器有本地缓存、手机有本地缓存等。可见,缓存在计算机系统中有非常重要的地位,其主要作用是提高响应速度、减少磁盘访问等。高并发系统中的缓存一句话概括缓存系统在高并发系统中的地位的话就是如果高并发系统是烤羊肉串,那么缓存系统就是那一撮孜然。缓存系统的作用缓存系统在高并发系统的作用很大,在某种程度上可以说没有缓存系统很难支撑高并发场景。基于机械磁盘或SSD的数据库系统,一般来说读写的速度远慢于内存,因此单纯磁盘介质的数据库无法支撑很高的并发,可以简单认为缓存是保护磁盘数据库的重要屏障。对于一些基于LSM的存储引擎数据库来说,随机写改为顺序写速度提升很大,但是随机读仍然是个问题,所以缓存系统是很有必要的如:NessDBleveldbhbase其核心思想的核心就是放弃部分读能力,换取写入的最大化能力。缓存系统访问流程实际场景也是读多写少,看看请求是如何得到响应的,简单看下交互流程:请求到达之后,业务线程首先访问缓存,如果缓存命中则返回如果未命中则继续请求磁...

PHP,解决方案,其他 2022-06-01 PM 338次 0条

使用浙江大学访问谷歌镜像站(google)含答案

 有时候我们常常需要使用 谷歌搜索 或者 谷歌学术 来查找一些 学术资料 但是因为国内网络环境原因,我们基本上访问不到 谷歌 ,这时我们可以通过浙江大学学术网站来访问谷歌镜像站来进行 合法 搜索一些 学术资料 。 但是想要使用浙江大学访问谷歌镜像站需要验证一些问题才能使用,下面我们提供了相对应的问题答案。浙江大学谷歌镜像站地址主站地址备用地址需要验证您是否来自浙江大学 这样的验证只会出现一次,通过后您会被加入白名单,之后相同IP的访问不会再需要验证。由于手机和宽带IP经常会发生改变,您可能会多次看到这一页面。只需要回答出以下任意一个问题即可请问浙江大学内网最大的论坛中, 每天发帖量最大的版块是哪个?(全称,四个汉字)答案:心灵之约请根据以下指引找到并输入三个汉字以验证你是浙大学生(ps:我跟求是潮一点关系都没)Android: 最新版求是潮手机app左边菜单栏中, "其他"一栏的第一个项目是什么(点左上角的选项按钮调出左边栏)(三个汉字,第一个字是"水")iOS:最新版求是潮手机app中, 从左往右划动主界面调出左边栏,其中有一栏是三个汉字,图标是一个"水"字,如果你没有自定义它...

解决方案,其他 2021-12-30 PM 4536次 0条

一键优化宝塔面板补丁适用宝塔面板版本7.7+

 第三方网友提供的一键优化宝塔面板补丁,听说很好用,博主未测试感兴趣的同学可以在本地测试下玩玩。补丁代码 提供源代码,远程代码两种补丁安装方式,推荐使用源代码自行执行更安全。宝塔面板源代码补丁(推荐)#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH if [ $(whoami) != "root" ];then echo "请使用root权限执行命令!" exit 1; fi if [ ! -d /www/server/panel ] || [ ! -f /etc/init.d/bt ];then echo "未安装宝塔面板" exit 1 fi if [ ! -f /www/server/panel/data/userInfo.json ]; then echo "{\"uid\":1000,\"username\":\"admin\",\"serverid\":1}" > /www/ser...

软件工具,Linux,其他 2021-12-29 AM 781次 0条

微信养号规则以及权重说明教程

 本文主要记录分享一下微信养号规则以及权重说明微信使用规则篇微信 8 个常见的使用规则注册新微信 微信的最新规则,注册微信的时候需要邀请一个好友帮忙 扫码辅助 ,辅助的账号要注册 半年以上 ,本月未帮人辅助注册过,且开通了 微信支付 ,腾讯目前并没有 全面升级 , 部分朋友注册 新微信号 ,有时不会出现这个要求。微信实名认证 一个身份证可以实名认证 5 个微信号,一张银行可以绑定 3 个号,之前可以只用身份证进行认证,现在腾讯升级为 必须绑定银行卡 认证了,认证信息是可以注销的,注销后微信的 余额就会被清零 ,注销后可以换一个身份认证。现在微信若不做实名认证会有很多 功能受限 。主动添加好友 包括通讯录加人,查找加人,摇一摇,扫一扫。每天主动加别人的上限是 50 人,每 10 个小时不要超过 15 人。超过这个阀值,你发送了请求对方也无法收到, 而且会有被封号的风险,要特别小心。面对面建群 现场能建 100 人的群,超过 100 人,对方需要通过 实名验证 才能接受邀请(可通过绑定银行卡进行验证)。被动添加好友 微信每天 被动加好友 人数不能超过 200 人,否则也有封号危险。进...

其他 2021-10-12 AM 432次 0条