自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (6)
  • 收藏
  • 关注

原创 PHP分布式部署代码同步Git实现

php 分布式代码自动同步

2023-02-02 17:17:55 18722

原创 PHP Hyperf连接Nacos RPC调用并发内存泄露(协程安全问题)

hyperf rpc 内存泄漏,高并发,协程安全问题

2022-08-27 17:36:30 20161

原创 细说Mysql MVCC多版本控制

细说mysql MVCC多版本控制具体实现方案跟查找流程

2022-06-28 17:13:26 12165

原创 Java为啥比PHP快?

java 真的比php快吗,快又快在哪里,php有优化的方案吗?,php 8.0 jit有实际意义吗?

2021-12-28 10:42:19 50907 3

原创 使用composer构建自己的项目

平时写项目我们都是使用别人的框架,也没有去研究文件的加载过程,这里从头分析下composer构建自动加载的过程及相关问题流程:1:安装composer并创建新项目,这里只简单创建了App 文件夹2:配置composer.json 文件,需要使用composer 管理项目必须要有composer.json文件,这里只需要注意autoload 模块的 匹配,简单配置如下{ "name": "composer test", "type": "project", "descript

2021-05-06 17:27:25 48676 4

原创 如何创建自己的composer依赖库

如何创建自己的composer 依赖库环境1:码云账号(或者GitHub)码云地址2:composer 官方仓库账号 Packagist composer官方仓库3:安装composer流程1:发行composer的依赖包是需要从git 或者svn里拉取的,所以得先在码云里创建一个仓库2:依赖包中必须有composer.json配置标明名字依赖等信息,配置大概如下,配置完后提交到码云仓库中;{ "name": "qibo/test", "type": "library",

2021-05-06 16:36:48 7801 4

原创 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 70299 5

原创 Swoole数据库连接池分析及实现

使用PHP swoole 由于其内存常驻及协程特性,一般是需要使用数据库链接池来减少链接创建的开支的,一个连接池的实现难点在哪,下面分析1:如何判断是否该获取新的链接?A:默认规则一个协程对应一个数据库连接,同一个协程里应该返回同一个链接,即保存链接时应该以协程id为key;2:如何判断连接是否被使用?在获取连接时我们是不能把正在使用的连接给丢给别的协程的,不然就出现数据混淆的风险,在获取数据库连接对象时应该保存该连接被使用的标记,当协程结束时 (Coroutine::defer 注册回调函数)

2021-04-26 14:08:26 49925

原创 PHP高并发项目性能优化及接口安全实践(企业实践)

记录之前公司微信投票项目性能优化过程及安全相关项目:微信投票,依赖于微信授权框架:yaf,php 7.0规则:每人每天30票(未绑定手机的20票,可以无限送礼,新用户进入直接微信授权后添加用户即可获得20票)已有用户数:50w+原始方案:LNMP php模板渲染高并发页面:投票主页,选手详情页面(含投票活动信息,选手信息,票数,礼物等)压力并发:单机+单库 (8pvc 16g) QPS<150公司要求:QPS 3000+,投票时间一个月,不缺钱优化方案:一:架构修改1:数

2021-04-21 15:11:35 32895

原创 PHP 实现异步定时多任务消息推送(企业实用级)

PHP 实现 异步多任务模板消息任务推送实现功能点1:异步发送,添加端只管添加,不需要考虑发送2:定时定点,误差不超过5s(任务多会排队)3:保证每条消息发送成功(尝试N次后自动丢弃)4:可设置多线程5:保证不重复发送实现原理crontab(定时执行) +php(实现推送)+mysql(消息存储)步骤1:创建消息表,保存消息(友情提示 注意索引)CREATE TABLE `sent_tpl_task` ( `id` int(11) NOT NULL AUTO_INCREMENT,

2020-07-28 16:21:51 32259

原创 深入理解跨域与跨域攻击CSRF

此文适合了解跨域与CSRF攻击,但又好像似懂非懂的童鞋阅读,对于没有了解过跨域或者跨域攻击的童鞋可以先去了解跨域跟CSRF 再回来看先看问题1:为何浏览器要有同源策略,限制跨域?2:同源策略有什么限制?3:浏览器既然有同源策略,为何还允许JSONP 或者COSF解决跨域?4:浏览器已经限制跨域为何还会有csrf?5:scrf防御核心思想是啥?1:为何浏览器要有同源策略,限制跨域?答1:浏览器没有同源策略 那csrf攻击将会轻而易举,网站cookie随手可取,任何网站将变得不安全eg:用户登

2020-06-16 17:36:33 30292

原创 Mysql数据备份还原(企业实用级)

一:全量备份使用mysqldump 每天对数据进行定点全量备份,并且删除7天前的数据实现方法,服务器crontab 定时执行备份shell;#!/bin/bash baseDir="/home/backup/"; cd "$baseDir"; echo "开始备份数据库"; echo `mysqldump -h 127.0.0.1 -uroot -p123456 --default-character-set=utf8 test> test_dump_$(date +%Y%m%

2020-06-12 16:59:46 6046

原创 2023年软件设计师下午试题及参考答案

2023年上半年软件设计师下午题 试题及参考答案

2023-05-30 10:38:23 26145 4

原创 2023年软件设计师上午试题及参考答案

2023年上半年软件设计师上午试题级答案

2023-05-30 10:16:32 12035

原创 nginx 负载均衡502问题

nginx 负载均衡;nginx的upstream异常

2023-03-01 17:27:53 8598

原创 PHP项目临时拓容Nginx负载均衡实操记录

PHP项目临时拓容Nginx负载均衡实操记录

2023-02-01 16:48:35 2085

原创 PHP微服务 hyperf+nacos使用

PHP微服务使用 hyper+nacos使用

2022-08-26 18:08:44 35641

原创 示例 PHP开发编译自己的拓展

php拓展开发,实现自己的第一个php拓展

2022-03-29 18:06:23 22957

原创 PHP IO编程epoll实现方案

什么是EPOll,PHP如何实现epoll 模式的IO?

2022-01-14 17:26:27 12844

原创 时序图在线工具

实用的在线时序图制作工具

2022-01-05 11:56:45 1717

原创 简述PHP执行流程

PHP 代码是如何最终转换为cpu指令集被执行的?

2021-12-27 15:37:05 55534

原创 PHP底层入门的一些概念

PHP运行模式php常见的运行模式有4种:一:cgi 协议模式cgi模式 通用网关接口(Common Gateway Interface),它允许web服务器通过特定的协议与应用程序通信, 调用原理大概为:用户请求->Web服务器接收请求->fork子进程 调用程序/执行程序->程序返回内容/程序调用结束->web服务器接收内容->返回给用户 由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低二:fast-cgi 协议模式(就是常用的PHP

2021-12-04 17:27:48 1902

原创 Linux搭建Git 私有仓库及多人协同配置

一:查看安装Git查看是否安装Git git --version没显示版本则安装,centos安装命令yum install git第二:创建仓库先创建一个项目文件夹mkdir gitproject接着进入刚刚创建的项目文件夹cd gitproject执行创建仓库命令git --bare init这时一个空仓库就创建好了,接下来要创建用户跟用户组第三创建用户/用户组创建项目1的git操作 用户组groupadd git_p1添加第一个用户dev_1并归到上面的用户

2021-11-11 16:08:56 14090

原创 VPC,NAT网关,EIP网卡,SNAT,DNAT简介及使用介绍

公司java团队 最近部署新项目,用了VPC,NAT等,之前没怎么接触过,这里介绍记录一波vpc简介:私域网络,简单理解就是局域网,一般由NAT网关,EIP网卡及交换机,服务器等组成用处:搭建内网,提高网络安全性,或者提高内部通信效率;NAT网关简介:一般指局域网公网流量的出入口,需要配合EIP网卡,交换机以及配置SNAT,DNAT 使用;SNAT:NAT网关的配置之一,局域网共享一个公网IP接入lnternel,指服务器访问外网,不是别人访问你的服务器,有点类似交换机干的活(这…服务网访问外网

2021-07-03 11:12:33 2169

原创 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 30073 5

原创 2021百度Apollo智能汽车 PHP面试题

1:php 中unset() 的作用;2:php 中的基本数据类型3:php常用的方法;4:Abstract 关键字使用5:php 5.x 跟7.x 区别,底层原有何优化;6:fpm 是什么?7:fpm 的大体架构8:nginx 跟 fpm的通信方式9:nginx Work进程数量配置10:403端口有什么特别11:Http 协议状态码,项目实践中50x 的状态码情况有哪些12:Https 的加密过程,常见的网络攻击有哪些13:tcp/ip 协议实现socket 客户端跟服务端(没明

2021-06-18 17:00:43 6242 2

原创 PHP 常用的设计模式跟使用场景

策略模式:抽象类,接口,实例化不同的具体子类实现对应功能,如BaseControll 子类根据不同模块实现不同的授权;单例模式:全局唯一,数据库连接类,配置文件类等工厂模式:通过不同参数生产不同的实例,封装同类产品,如DbManager 通过参数获取不同类型的数据库连接Builder模式:通过返回操作对象,进行链式调用,TP model->where->find观察者模式:数据变动或事件结束会主动回调,需要提前设置回调方法 如swoole协程结束,设置回调函数,异常处理设置回调函数等

2021-05-20 17:57:02 1439

原创 PHP手写HTTP协议

HTTP GET请求的格式:GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3注意:每个Header一行一个,换行符是\r\n。下面是php socket 实现的http 访问,实测是ok的//需要连接的域名 $host="127.0.0.1"; $port="80"; //php创建socket $socket=socket_create(AF_INE

2021-05-18 16:00:33 17021

转载 PHP PSR0-4规范

PSR 是 PHP Standard Recommendation 的简写,即PHP推荐标准。目前通过的规范有 PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。PSR 不是PHP官方标准,而是从如Zend、Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越来越多的社区项目

2021-05-18 14:09:21 2068

转载 nginx 日志分析示例

nginx日志分析统计IP访问量awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点)grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l 查看访问最频繁的前100个IPawk '{print $1}' access.log | sort -n |uniq -c | so

2021-05-18 10:11:19 1362

原创 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 12244

原创 关于微服务跟高并发的一些东西

微服务微服务的意义例如我们在开发一个基础的商场系统时,可能分为 用户模块、商品模块、订单模块、活动模块 等,系统建设初期,我们也许为了快速上线和节约成本,那么就会采用直接把一整套的模块代码,全部写在一个项目代码中。 而在后期流量上来后,我们会发现,经常因为某个模块的的功能模块失效,导致整个服务瘫痪。例如 活动模块 和 商品模块 是最容易在高流量下瘫痪的模块。 举个例子,在 2018 年的双十一活动中,某商场系统花了很多钱去做广告,导致很高流量直接进入到商场系统当中,而在此之前,也没做服务拆分,那么 活动

2021-04-28 17:03:25 3293 3

原创 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 26703 2

原创 PHP-Redis实现分布式乐观锁,悲观锁

乐观锁悲观锁使用场景请看这篇乐观锁悲观锁使用场景一: 悲观锁特性:1:互斥性,一个线程获取后其他不能获取,等待或者返回false2:不能死锁,超时应该自动释放3:锁应该只能由加锁人解锁下面是redis 实现的伪代码/** * Class RedisLock * @package app\common\model */class RedisLock { private $redis; private $lock; public function __const

2021-04-23 16:57:03 20031

原创 Mycat 实现mysql读写分离配置

之前项目中有主从复制,读写分离的场景,mycat 作为数据库分库分表中间件,这里记录一波使用操作官网:mycat官网一:环境&安装环境:jdk 1.8+ centos首先更新已安装的包:yum update查看系统当前的java版本:java -version输入以下命令,以查看可用的JDK软件包列表;yum search java | grep -i --color JDK选到自己要的版本安装yum install java-1.8.0-openjdk.x86_64

2021-04-21 11:04:34 3524

原创 Redis乐观锁,事务multi,watch之间的先后关系

Redis乐观锁,事务multi,watch之间的先后关系1:watch 必须在 multi之前,不然watch 无效,事务都会执行成功 $v=$rds->get("test"); $rds->set("test",333); //先起事务 $rds->multi(); //添加watch $rds->watch("test"); //模拟操作,此时其他线程已经修改test 值

2021-04-19 16:50:54 9012

原创 PHP+Elisticsearch-7.15+Dejavu综合使用教程

1.配置文件(elasticsearch.yml)#ES集群名称,同一个集群内的所有节点集群名称必须保持一致cluster.name: my_es​#ES集群内的节点名称,同一个集群内的节点名称要具备唯一性​node.name: master_01​#允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举node.master: true​#允许该节点存储索引数据(默认开启)node.data: true​#数据存储路径

2021-04-09 15:18:34 5650

原创 PHP多进程异步处理复杂接口类似微服务(企业真实案例)

需求: 用户下单,推荐合师傅给用户(类似滴滴派单)场景: 在线服务平台有各类技术师傅入驻,顾客在下单后需要根据在线师傅及自己位置计算返回相关推荐的师傅给用户问题: 平台师傅有多个评分属性,比如:位置,能力水平,信用分,服务时间等,用户每次下单得查找所有在线师傅 计算综合分后排名返回给用户,整个工作可能非常耗时(师傅数量万级基本超时),php-fpm 无法多线程工作;解决方案:1:根据师傅位置 生成服务范围比如方圆20公里内(这里不能直接用区,很多在边上的用户);2:根据服务范围筛选出对应的工程师;

2021-04-02 16:17:45 20338 6

原创 Nginx限速详解

这里写自定义目录标题记录下nginx 限速相关的模块以及使用ngx_http_limit_req_modulengx_http_limit_conn_modulengx_http_core_module总结:单限制接口速度建议用一个方法,可以设置缓冲池,限制带宽应该第二 第三同时使用 防止别人恶意占用带宽记录下nginx 限速相关的模块以及使用nginx 一共有3个限速相关模块,分别是1:ngx_http_limit_req_module2:ngx_http_limit_conn_module3:

2021-03-22 18:01:11 9330

原创 Easyswoole 接微信公众号坑

Easyswoole 接微信公众号坑Easyswoole 接微信公众号坑Easyswoole 接微信公众号坑个人项目想迁移到 Easyswoole+layui 组合的 php 框架上来,实现高性能 跟前后端分离,在接入微信公众号消息时遇到了问题简单说下配置流程1:微信公众号后台配置url,这里可以直接配置到自己的一个接口里,跟普通项目一样没啥特殊的,不要看文档说的很晕,各种mainServerCreate 里注册啥的2:因为配置好后微信是会先校验的,校验时必须返回微信带的字段,但是连接是同一条,文

2021-03-13 14:57:53 1451 5

个人免签安卓端源码

个人免签源码,后台源码我主页有 自己去结合,协助q540616979 测试地址 http://mpay.ph05.cn

2018-11-27

5000元免签支付源码

微信支付宝个人免签支付源码测试地址 http://mpay.php05.cn/

2018-11-25

淘宝客商城源码包教程,秒建自己的返利网

淘宝客商城源码包教程,秒建自己的返利网

2018-11-13

skinDemo测试

换肤

2017-04-04

miCalender

一款高仿小米日历的Demo

2017-03-14

动态代理设置监听DEMO

android动态代理实现事件注入Demo

2017-03-01

空空如也

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

TA关注的人

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