![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术开发文档
文章平均质量分 69
倾听岁月
淡淡忧伤,淡淡愉悦。聆听岁月流逝,倾听拾光荏苒。
展开
-
php 任务调度
php 后台进程原创 2023-02-24 16:03:31 · 520 阅读 · 0 评论 -
设计模式 - 适配器模式理解及示例
根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。设计一个抽象类:工作。目前提供有搬砖、服务员两个工作。原创 2022-10-13 13:33:20 · 358 阅读 · 0 评论 -
hyperf 优点、缺点 分析
hyperf原创 2022-10-11 17:50:09 · 9295 阅读 · 0 评论 -
composer 包开发
composer、package原创 2022-08-25 10:14:28 · 1028 阅读 · 0 评论 -
设计模式 - MVC 扩展设计
设计模式、MVC、原创 2022-08-15 11:32:47 · 242 阅读 · 0 评论 -
设计模式 - 组合模式理解及示例
设计模式 - 组合模式原创 2022-08-10 09:13:43 · 277 阅读 · 0 评论 -
程序设计6大原则
程序设计原创 2022-08-08 10:11:51 · 1141 阅读 · 0 评论 -
设计模式 - 策略模式理解及示例
情人到了,改不赶快行动起来原创 2022-08-05 11:40:25 · 187 阅读 · 0 评论 -
nginx swoole php-fpm工作原理及比较。
Cpu 进程、线程切换。 swoole php-fpm 的比较原创 2022-07-21 11:41:42 · 1178 阅读 · 0 评论 -
分布式架构 - ID 生成器 hash 算法
redis、php、mysql、分布式、hash算法、队列原创 2022-07-18 17:56:32 · 1271 阅读 · 0 评论 -
swoole TCP 集群 MQTT消息通信服务器
swoole 分布式通信转载 2022-06-29 11:14:49 · 758 阅读 · 0 评论 -
mysql XA 分布式事务、DTM TCC事务(多语言支持)
mysql xa 事务支持分布式事务原创 2022-06-27 17:19:39 · 836 阅读 · 1 评论 -
高迸发解决方案2
大迸发解决方案原创 2022-06-11 17:01:05 · 373 阅读 · 0 评论 -
laravel 死锁处理机制+测试
在日常交易场景中,我们有用户A向用户B进行转账,用户B向用户A进行转账的情况,那么当两个请求并发一起执行的时候怎么办呢,首先是在事务中绑定一个死锁。$user1 = \App\Models\User::query()->where('id',1)->lockForUpdate()->first();那么当产生死锁之后我们怎么来处理呢。/** * Notes:死锁1 * Author:tanyong * DateTime:2022/5/19 *原创 2022-05-19 12:03:53 · 600 阅读 · 0 评论 -
好用的linux后台进程管理 pm2
pm2 是一款带有负载均衡的 node 应用进程管理器,当然也可以用来管理 php 的cli脚本。.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的,下面我们来看pm2常用的命令用法介绍吧。PM2 (github上的源码)是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。由下图可见,pm2对应转载 2022-05-18 17:53:45 · 563 阅读 · 0 评论 -
laravel 复杂搜索组件
有时候我们希望能和前端好好对接一个页面的功能性展示,如支持的搜索条件有哪些,支持的字段有哪些,复杂搜索组件代码 ComplexSearch.php<?php/** * Notes:描述该文件的用途 * History:文件历史 * tanyong 2022/5/18 */namespace App\components\ComplexSearch;use App\components\ComplexSearch\Exceptions\ComplexException;use原创 2022-05-18 16:33:31 · 2396 阅读 · 0 评论 -
laravel rbac权限管理系统
开发系统中,关于权限这块儿我想大家都不陌生,就是对一个操作进行权限判定,对用户当前请求的操作效验权限是否允许此用户执行这个动作。最近在学习laravel框架,发现laravel官方没有提供关于我感觉便捷的权限管理。我就自己实现了一个基于rbac模式的权限管理系统1、什么是rbac?在这里就简单说下他的思想,rbac的核心定义就是角色与权限的关系、用户与角色的关系。啥意思呢?意思是说,一组用户通过被分配的角色身份去行使对应的权限。2、如何在laravel中实现rbac以下就是硬货,我尽量对每个类添加原创 2022-05-16 14:22:44 · 4400 阅读 · 0 评论 -
laravel 接口日志中间件
在日常开发中,我们总会使用到restful接口调用,而我们在开发的过程中,我们总是希望统计出我们的接口在使用时入参的情况和回参(响应的情况),为此,我设计了一个中间件来统计接口的调用情况。第一步:创建中间件RunLogMiddleware(运行日志中间件)命令行运行php artisan make:middleware RunLogMiddleware运行成功后,会在App\Http\Middleware命名空间下创建RunLogMiddleware class文件<?phpname原创 2022-05-11 11:02:45 · 679 阅读 · 0 评论 -
laravel 服务提供者(provider)
laravel的服务提供者感觉就是单例模式的实现(单例模式,即是在整个会话中这个类有且仅有一个实例)我们在使用的要明确的知道某些概念,比如一个用户服务提供者,将会注册用户服务或是其它服务(如身份信息服务、邮寄地址服务等等)。用户服务提供者:身份信息服务、邮寄地址服务命令:创建一个服务提供者php artisan make:provider TanyongProvider在自己的服务提供者中注册自己的服务<?phpnamespace App\Providers;use Illumi原创 2022-05-10 18:19:44 · 922 阅读 · 0 评论 -
laravel 队列
最近在学习laravel框架,突然发现我似乎从未发布过关于队列消息方面的文章,今天结合laravel框架来说说队列消息方面的内容。队列消息是什么?消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方原创 2022-05-10 14:56:24 · 727 阅读 · 0 评论 -
php function bind object
PHP function bind object转载 2022-04-14 11:36:24 · 103 阅读 · 0 评论 -
Yii2 关于异常的全局处理
Yii2 全局异常捕获及处理原创 2022-03-29 15:33:31 · 1574 阅读 · 0 评论 -
H5 与微信小程序交互控制分享内容
第一步在微信小程序web-view 组件中添加监听<web-view wx:if="{{h5url}}" src="{{h5url}}" bindmessage="h5PostMessage" ></web-view>其中 bindmessage="h5PostMessage" 意思是当收到来自h5端推送过来的消息的时候,将由小程序函数h5PostMessage 方法进行后续处理第二步在小程序中,添加h5PostMessage方法,用于获取h5端收到的信息...原创 2020-11-09 11:05:27 · 1014 阅读 · 1 评论 -
php Iterator、ArrayAccess
IteratorIterator接口的作用是允许对象以自己的方式迭代内部的数据,从而使它可以被循环访问,Iterator接口摘要如下:interface Iterator extends Traversable { //返回当前索引游标指向的元素 abstract public mixed current ( void ) //返回当前索引游标指向的键 abstract public scalar key ( void ) //移动当前索引游标到下一元素 abstract原创 2020-09-16 10:26:59 · 179 阅读 · 0 评论 -
php - 斗鱼接口对接
当前直播是很有热度的主题,直播捧红了一大批网红,然后形成了时长需要,那么我们怎么采用直播呢。直播使用思路1、采用视频推流的方式,将视频推送至后端(有可能OSS,也有可能是视频点播服务,经由CDN网络分发,分发至各个区域),前端从后端获取视频源,并观看直播目前阿里云已支持推流或拉流的创建(在阿里云中心创建直播服务)2、如果是要对接已有的第三方平台怎么呢?目前我仅了解了斗鱼直播,关于斗鱼直播平台是有开放平台的,开发者可通过开放平台接入斗鱼直播,斗鱼官方的开放平台具体开放了哪些能力,百度搜索 “斗鱼开原创 2020-09-11 11:21:29 · 1404 阅读 · 0 评论 -
mysql 锁详解 锁优化
mysql主要的存储引擎有innodb和myisam存储引擎。其中innodb引擎支持表锁和行锁。myisam仅支持表锁什么是表锁?什么是行锁?MySQL的存储引擎是从MyISAM到InnoDB,锁从表锁到行锁。后者的出现从某种程度上是弥补前者的不足。比如:MyISAM不支持事务,InnoDB支持事务。表锁虽然开销小,锁表快,但高并发下性能低。行锁虽然开销大,锁表慢,但高并发下相比之下性能更高。事务和行锁都是在确保数据准确的基础上提高并发的处理能力。本文重点介绍InnoDB的行锁。总的来说,InnoD转载 2020-09-03 18:13:30 · 302 阅读 · 0 评论 -
php yar rpc 远程调用
什么是远程调用?远程过程调用,简称 RPC,是一种最为常见的远程服务。RPC 对于通过网络连接系统之间的过程调用进行了抽象。它在许多方面都类似于 IPC 机制,并且通常建立在 IPC 之上。不过,因为现在的情况是进程处在不同系统上,所以应提供基于消息的通信方案,以提供远程服务。目的:一个项目,从开始到版本更新,一直到最后的版本维护。功能在不断增多,对应的代码量也在不断增加,也就意味着项目变得更不可维护,这时候,我们需要用拆分的方式将一个项目打散,以便开发团队更好的对项目进行维护。什么是Yar?远程过原创 2020-06-02 14:36:03 · 420 阅读 · 0 评论 -
php 守护进程怎么维持数据库的长连接
什么是守护进程?守护进程是在后台底层运行的进程,不和前端发生交互,只在某个特定的时段需要去完成的部分工作的进程。问题1:当守护进程运行的时候,因工作任务量大,计算运行耗时长,但mysql有最大连接时间,超过这个时间后mysql数据库就自动断连,怎么维持数据库的链接呢?解决办法:在每一次sql语句执行之前先判定当前数据库连接是否是一个有效的数据库连接。如果是一个有效的连接,则继续执行后续的工作...原创 2020-04-07 16:40:38 · 818 阅读 · 0 评论 -
php 迭代
什么是迭代?类继承PHP的Iterator接口,批量操作。//迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。//相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作。迭代有什么作用?处理大数据的时候迭代器很有作用例子:如果程序在执行的时候需要读取一个文件的内容,传统的方法是将文件file_get_content 或是 fgets,但是这种有一个缺陷,读出来...原创 2020-03-25 17:59:24 · 447 阅读 · 0 评论 -
Yii2实现mysql断线重连
在实际生产环境中,我们有时候需要创建控制台任务在后台执行一系列工作任务,但部分任务耗时较长,此时就会产生一个情况,mysql连接超时,那么我们怎么来控制mysql不连接超时呢?思路:每次在执行sql的时候先判定一次当前mysql连接对象是否过期?如果没有过期则继续执行,过期了初始化一个新的mysql连接来继续执行。限制尽量不要使用事务,对需要事务处理的任务,要谨慎处理(一旦在处理事务的时候...转载 2020-03-25 17:04:02 · 1485 阅读 · 0 评论 -
JavaScript实时监听歌曲播放进度显示对应歌词
前言在之前我就想试试在线的音乐播放器的制作,昨晚动手实现了播放音乐的歌词实时对应显示的组件,下面就来看看其中的解析原理。正文这里我以李玉刚的《刚好遇见你》为例,首先我们需要获取到音频文件以及歌词的lrc内容,lrc歌词文件内容如下:"[00:00.00] 作曲 : 高进\n[00:01.00] 作词 : 高进\n[00:12.56]我们哭了\n[00:15.27]我们笑着\n[00:18....转载 2019-12-17 17:26:42 · 1469 阅读 · 1 评论 -
Yii2 - 性能优化篇 - redis
首先我们需要知道redis 是什么?Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。整合redis 进...原创 2019-11-20 14:51:49 · 985 阅读 · 0 评论 -
一个很好用的工具teambition
在项目开发过程中,我们在进入测试阶段会发现各种各样的问题,而这些问题能处理的人员又是不同的工作人员,那么如果按照传统的工作模式将任务一个一个口头传递下去,就会造成工作阻滞(口述不清楚,或是忘了怎么的),最好是能笔述,但笔述的话又需要给不同的工作人员都准备一份,很是麻烦,这时候就需要一款好的管理工具,来进行任务下发,让工作人员在任务板上看自己需要修改或工作的内容,这时候一款好的管理工具就诞生了te...原创 2019-10-24 09:55:45 · 1524 阅读 · 4 评论 -
我理解的MVC开发模式
mvc开发模式原创 2017-04-21 15:51:54 · 1884 阅读 · 0 评论 -
cookie与session会话
cookie即是传统的会话控制,由于要存储的信息是保存在客户端的,所以安全系数较低,而session会话控制是将要存储的信息保存在服务器上的,所以相对于cookie安全系数较高. 不论是在使用cookie方式存储,还是session方式存储在使用存储的函数之前都不能有输出语句,否则会产生一个e级错误 使用cookie的存储的方式 setcookie(原创 2017-04-24 10:18:35 · 388 阅读 · 0 评论 -
PHP CURL 与 java http
php curl 有时候我们的项目需要与第三方平台进行交互。举个例子。 现在有A、B两个平台。 甲方在最初一段时间由A实现了一部分关键业务(如用户信息等)。 然后基于一部分原因,现在有一些业务需要B来实现,且实现程序调用了一些敏感的接口只能在B方服务器上跑,那么只能做两个平台之间的交互了。curl 就是这种问题的解决方案。 curl 是一个php扩展,你可以看作一个可以访问其他网站的精原创 2017-04-25 09:40:29 · 6363 阅读 · 0 评论 -
程序设计模式
刚出来的时候拿到一个项目不知道怎么办的时候,总觉得好难呀,好难呀。这个我做不来。以前没有做过类似的项目,没有经验。 有的项目做得来,结果一拿起项目就开始敲代码,根本不去考虑程序的流程,结果出来的项目重复实现代码太多,不便于维护。 所以,拿到一个项目,不要急着下结论,不要急着敲代码。先分析下项目的需求,从而推导出需要哪些功能,需要哪些技术去实现。怎样去实现。1、拿到一个项目我们首先要做的就是分析客原创 2017-04-28 20:36:42 · 377 阅读 · 0 评论 -
微信开发 - 多平台网页授权怎么做?
相信从事微信开发的小伙伴们遇到过这样的情况,就是甲方的微信公众帐号的网页授权指定域名指向了其它的域名(以后叫A),并在该域名下实现了一部分功能。现在,需要开发另一个功能,且该功能所在的域名(以后叫B)不再网页授权指定域名下。 怎么办呢?造成网页授权域名的冲突了。解决方案: 需要获取用户信息的时候我们完全可以让用户跳转到A方完成授权,授权完成后带着关键参数回传给B。然后B获取关键参数,请求微信生成原创 2017-07-03 12:14:43 · 1317 阅读 · 0 评论 -
从需求到程序设计
讨论这个问题之前,先举个例子。 一家公司找了一个建筑公司给他们修建一栋大楼,问是先有房子还是先有房子的设计图纸? 我想这个问题大家都会很肯定的回答是先有设计的图纸吧。 那么,这里再问一个问题,大楼的设计图纸是怎么来的,是怎么设计的? 这里可能有些同学就有点懵逼了。 解释:大楼的设计图是根据客户的需求来的,比如说客户希望一楼是接待楼层,那么这个就是客户的需求,既然是需求那么在设计的时候就需要.........原创 2017-07-10 09:47:00 · 565 阅读 · 0 评论 -
二维码好高大尚,我也想生成一个
二维码,这个牛逼的黑科技自发明以来,就火遍大江南北。 现在,我要自己生成一个二维码怎么办呢? 不喜欢动手的,给你方法自己体会跳转到这个页面去看看你就知道了。$url = "http://qr.liantu.com/api.php?text=http://baidu.com";header("location:$url");我要把二维码下载下来。$url = "http://qr.liantu.原创 2017-07-03 15:12:38 · 435 阅读 · 0 评论