自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 接口恶意访问

一.在接口中判断访问来源,例如php使用HTTP_REFERER来判断来源,如果是直接访问接口的请求不予处理,如果是从网页调用的请求再做处理。二通过redis限制用户一分钟内访问次数$key = 'user:1:api_count';//限制次数为10 $limit = 10;$check = $redis->exists($key);if($check){$redis->incr($key);$count = $redis->get($key);if($count

2021-08-05 20:32:56 248

原创 layui大文件分成很多小文件上传Oss

对于很大的文件比如几百M的音频视频 软件上传,如果直接上传 服务器,经常处理不了。可以利用layui,在客户端先把大文件切割成小文件 一个一个上传,然后服务器端,再组合成一个大文件。服务端代码public function bigUpload(Request $request) { $params = $request->param(); $status = 1; $fname = sprintf('tmp/%s.%s', $param.

2021-08-02 20:08:31 566 3

原创 两个mysql实例搭建以及主从同步备份

Mysql主从同步原理:当master服务器上的数据发生改变时(增、删、改),则将其改变写入二进制binlog日志中;slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开启一个I/O 线程请求master二进制事件,同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从库本地的中继日志中,从库(从节点)将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后IO线程和SQL线程将进入睡眠状态,等待

2021-08-01 17:02:14 325

原创 配置负载均衡

Nginx:轻量级,高性能http和反向代理服务器。高并发连接达到2-4万个,内存、cpu等系统资源消耗低。Rewrite重写规则(根据域名,URL的不同将HTTP请求分到不同的后端服务器群组),内置的健康检查功能(Nginx)Proxy 后端的某台web服务器宕机也不会影响前端访问),节省带宽(支持GZIP压缩,可以添加浏览器本地缓存的Header头)。负载均衡是用反向代理的原理实现的。nginx的upstream目前支持5种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服.

2021-08-01 08:45:38 638

原创 PHP+Redis令牌桶算法 接口限流

在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源,通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户,他在一个时间段(interval)内,比如 1分钟,调用服务器接口的次数不能够 大于一个上限(limit),比如说 100次。如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。服务接口的流量控制策略:分流、降级、限流等。本文讨论下限流策略,虽然降低了服务接口的访问频率和并发量,却换取服务接口和业务应用系统的高可用。令牌桶算法.

2021-07-28 21:00:37 304

原创 公众号开发(一)

订阅号与服务号的区别:1、申请主体2.主要用途服务号:为企业和组织提供更强大的业务服务与用户管理能力,主要偏向服务类交互;订阅号:为媒体和个人提供一种新的信息传播方式,主要功能是在微信侧给用户传达资讯;3.消息展示服务号的推送消息直接显示在好友对话列表中;订阅号的推送消息则是显示在“订阅号消息”文件夹中;4.群发次数服务号:1个月(按自然月)内可发送4条群发消息。订阅号:(认证用户、非认证用户)1天内可群发1条消息。公众平台的两种模式:1、编辑模式:直接使用微信公众平台所提供的后台操作进

2021-07-21 20:00:57 1008

原创 直播流程详解

1.添加播流域名2. 绑定对应的推流域名,编辑推流回调地址,对应的回调参数为action 事件 publish:推流。 publish_done:断流。 ip 推流的客户端IP。 id 推流流名称。app 推流域名。默认为自定义的推流域名,如果未绑定推流域名即为播流域名。 appname 推流应用名称。time Unix时间戳。单位:秒。 usrargs 用户推流的参数。 node CDN接受流的节点或者机器名。height 分辨率的高。单位:像素。 说明 分辨率信息(height

2021-07-20 11:25:46 434

原创 依赖注入和控制反转

IOC(Inversion of Control)控制反转:遵循依赖倒置原则的一种代码设计方案,依赖的创建 (控制) 由主动变为被动 (反转)。DI (Dependency Injection) 依赖注入:控制反转的一种具体实现方法。通过参数的方式从外部传入依赖,将依赖的创建由主动变为被动 (实现了控制反转)。class Controller{ protected $service; // 依赖被动传入。申明要 Service 类的实例 (抽象接口) public func

2021-07-14 13:42:23 155

原创 RESTful总结感悟

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。REST(英文:Representational State Transfer,简称REST)表述性状态转移。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。RESTFUL特点包括:每一个URI代表1种资.

2021-07-13 15:17:59 199 1

原创 ES简单的CURD

在 elasticsearch-php 中,几乎一切操作都是用关联数组来配置。REST 路径(endpoint)、文档和可选参数都是用关联数组来配置。为了索引一个文档,我们要指定4部分信息:index,type,id 和一个 body。构建一个键值对的关联数组就可以完成上面的内容。body 的键值对格式与文档的数据保持一致性。(译者注:如 [“testField” ⇒ “abc”] 在文档中则为 {“testField” : “abc”}):在 composer.json 文件中引入 elasticse

2021-07-13 15:01:34 99

原创 二分查找法

前提数组是有序的(如果无序,我们也可以考虑排序,不过要注意排序的复杂度)术语二分查找中使用的术语:target —— 要查找的值index —— 当前位置l 和 r —— 左右指针mid —— 左右指针的中点,用来确定我们应该向左查找还是向右查找的索引思维框架首先定义搜索区间为 [left, right],注意是左右都闭合,之后会用到这个点你可以定义别的搜索区间形式,不过后面的代码也相应要调整,感兴趣的可以试试别的搜索区间。由于定义的搜索区间为 [left, right],

2021-07-13 14:49:43 158

原创 微信小程序wx.request二次封装

这些天开始做小程序开发了在网络请求上发现了一些小问题,最终没忍住想了点办法把request封装了一下。下面来看看吧。看项目代码时发现了下面几点问题:网络请求都写在Page里,每个请求都要重复的写wx.request以及一些基础配置;每个页面里都要处理相同类型的异常;后端返的http status code为200以外时,并不能直接进入fail对应函数进行处理针对这些问题,首先在项目utils目录里新建了一个http.jsconst host = "http://www.week1.com:888

2021-07-07 10:05:53 545 3

原创 thinkphp6 用PHPMailer实现邮箱发送功能

下载PHPMailer包composer require phpmailer/phpmailer $mail = new PHPMailer(true); $mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码 $mail->isSMTP(); $mail->SMTPDebug = 0; //Wheth

2021-06-20 21:44:14 875 4

原创 Redis分布式锁心得(单机部署)

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。实现原理在进程请求执行操作前进行判断,加锁是否成功,加锁成功允许执行下步操作;如果不成功,则判断锁的值(时间戳)是否大于当前时间,如果大于当前时间,则获取锁失败不允许执行下步操作如果锁的值(时间戳)小于当前时间,并且GETSET命令获取到的锁

2021-06-10 14:33:56 195 1

原创 laravel 中针对 laravel/passport的使用

laravel 中针对 laravel/passport的使用1.composer安装由于网络上的方式都是基于你的laravel本身所具有其 illuminate/auth 8.2 然而安装需要上个版本,耦合性过大,导致安装困难。所以选择此方式。composer require laravel/passport=~9.02.具体实现步骤最好搭配auth()登录一起使用 但需要注意 auth的登录密码需要使用 Hash类生成 从而符合其auth内部的密码规则$password = Hash::m

2021-06-02 19:14:27 1446 6

原创 MySQL索引 B+树

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引Hash 索引全文索引我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结构。B+

2021-05-27 20:43:17 72

原创 微信小程序之上拉加载和下拉刷新

微信小程序之上拉加载和下拉刷新使用系统提供的onPullDownRefresh、onReachBottom这2个事件,前提需要在app.json或page.json配置文件中设置,才能使用。app.json是全应用的页面都可以使用该事件,page.json则只是对应的页面才可以使用。示例:app.json:在app.json文件里设置window属性{ "window":{"enablePullDownRefresh": true }}page.json:在page.json

2021-05-27 20:39:24 134

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除