自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(439)
  • 资源 (1)
  • 收藏
  • 关注

原创 B-树知识点总结

先大体看一遍此文章:https://zhuanlan.zhihu.com/p/54084335 B-树:不叫B减树,而是B树,其是一种多路平衡查找树,它的每个节点最多包含k个孩子,k被称为B树的阶 数据库索引为什么使用树存储结构 树的查询效率高,且可保持有序 为什么索引不使用二叉查找树来实现呢? 虽然从算法层面二叉查找树的查找速度和比较次数都是最小的,但其磁盘IO操作次数较多。 为什么磁盘IO操作次数多会导致查询速度慢呢? 当利用索引查询时,是不能将整个索引加载到内存的,只能是逐一加载,索引页对应索引树的节

2022-03-20 23:44:57 1003

原创 LeetCode Golang Hot53-最大子数组和

https://leetcode-cn.com/problems/maximum-subarray/ 贪心算法 package main import "fmt" func main() { res := maxSubArray([]int{-3, -1, -5}) fmt.Println(res) } func maxSubArray(nums []int) int { if len(nums) == 0 { return 0 } var max

2022-03-15 23:49:06 490

原创 《结构化思维》

获取信息不仅要被动接受,还要主动寻找,否则非常容易因为信息不全面而得出错误的认知,做出错误的判断。

2021-06-16 00:06:14 354

原创 Mac: 脚本安装brew

直接执行 /bin/zsh -c "$(curl -fsSL https://github.com/huizhang-op/script/blob/main/brew-install.sh)" 脚本源码 防丢可以将此脚步上传到自己的github #HomeBrew自动安装脚本 #cunkai.wang@foxmail.com #获取硬件信息 UNAME_MACHINE="$(uname -m)" #在X86电脑上测试arm电脑 # UNAME_MACHINE="arm64" # 判断是Linux还是M

2021-05-15 18:45:12 633 2

原创 PHP大厂面经!!!

面经 百度、腾讯PHP大厂面试经验分享,拿到了百度offer 操作系统/计算机网络 【并发】IO多路复用select/poll/epoll介绍 Linux 系统目录结构 find 查找文件的命令 Linux 如何查看系统负载 linux C嵌入式面试宝典——用户态和内核态 Linux信号机制 TCP对决UDP TCP 是如何工作的?三次握手和四次挥手是什么? tcp建立连接为什么需要三次握手 tcp挥手时的time-wait状态为什么需要持续2MSL 什么是TCP粘包?怎么解决这个问题 建立socket需

2021-04-05 22:16:42 2411

原创 EasySwoole命令管理思维导图

2021-03-28 22:57:55 234

原创 PHP内核剖析

php 内核探秘之 PHP_FUNCTION 宏

2021-03-14 01:02:07 361

原创 PHP利用反射给对象的私有属性赋值、调用对象私有方法

话不多说,直接上代码 <?php class User { private $name; private function getName() { return $this->name; } } // 反射拿到类 $class = new ReflectionClass('User'); // 获取对象实例 $obj = $class->newInstance(); // 获取方法对象 $method = $class-&g.

2021-03-05 19:29:53 992

原创 基于文本协议实现memcache协程客户端(swoole)

简介 在开发easyswoole组件时发现,MemcacheQ(微博自研消息队列)与memcache二进制协议不完全兼容,所以只能使用文本协议重新开发一个memcache协程客户端组件 安装 composer require huizhang/memcache 使用方式 <?php include './vendor/autoload.php'; use Huizhang\Memcache\Memcache; use Huizhang\Memcache\Config; go(functio

2021-02-21 23:13:51 294

原创 js简单实现通用组件

目录结构 BaseComponent.js class BaseComponent { props = { elementId: '' }; constructor(props) { this.props = props; document.getElementById(this.props.elementId).innerHTML = this.render(); this.events(); }

2021-02-21 15:58:11 544 1

原创 Grafana自定义alert的实现过程

前言 grafana自带的alert功能是有限的,比如只能对某个query 配置alert,而不能对具体分类,当然我们可以通过代码来实现定制化的alert需求, 因为要用到定时监控grafana的数据变化情况,所以使用easyswoole的定时器功能来做讲解。 生成key key为调用grafana http api 所需的验证信息 分析要请求的api和传递的参数 当然你可以去grafana官方文档去翻一番http api 章节 Install easyswoole的http-clie

2021-02-07 01:43:57 2768 2

原创 如何将Grafana作为业务统计可视化工具

前言 需求做的越多越发现,几乎所有业务都需要统计功能,且功能相似程度极高(尤其是前端),从而导致相同功能开发N遍,这就好比一天三顿让你吃红烧肉你说腻不腻!!! grafana 统计功能做的很完善,图表也是相当炫酷,接入也很简单,很多公司喜欢将它作为一个资源监控工具,今天我们就来尝试一下接入普通的业务统计数据。 安装grafana sudo docker pull docker.io/grafana/grafana sudo docker run -d --name=grafana -p 8080

2021-02-06 02:05:19 2173 1

原创 基于 EasySwoole 实现通用队列

EasySwoole 通用队列组件 支持消费数据先落盘防止异常丢失数据 支持队列数据消费日志保留 支持基于Redis延迟队列 支持基于Redis的队列 支持MemcacheQ 后续会支持更多消息中间件的消费驱动 安装 composer require huizhang/universal-queue 定义消费者 <?php namespace App\DelayQueue; use Huizhang\UniversalQueue\Core\ConsumerAbstract; class

2021-01-24 22:32:47 1393

原创 利用awk统计某接口非200状态数量

1. 简介 通过下面的nginx访问日志,统计接口/user/list 非200状态的数量 nginx.access.log 2020-12-30 www.easyswoole.com 127.0.0.1 /user/get 200 2020-12-30 www.easyswoole.com 127.0.0.1 /user/list 200 2020-12-30 www.easyswoole.com 127.0.0.1 /user/list?page=1&page_size=10 200 2020-

2020-12-31 00:21:04 860

原创 EasySwoole 使用*.ini格式的配置文件

EasySwoole 使用*.ini格式的配置文件 简介 本文章带领大家学习如何在EasySwoole使用ini格式的配置文件。 ini的优缺点 优点:线性的、简单、简练、方便 缺点:复杂类型的数据配置无力 目录结构 . ├── App │ ├── HttpController │ │ └── Productor.php │ ├── Process │ │ └── Cons...

2020-05-03 23:38:42 440

原创 Easyswoole利用Nginx实现服务不中断部署

1. 介绍 近几天有幸接触到Nginx反向代理、负载均衡相关知识,为了加深印象,感觉还是有必要自己去踩一遍坑。 2. 学习案例 EasySwoole+git+Nginx 实现服务的不中断部署 先部署9501服务 单起一个进程,定时轮询Git分支是否有新版本发布 如有新版本发布,clone一份 composer update 更新库 启动9502服务 6...

2020-04-05 02:07:43 1074

原创 Git revert 导致的问题

1. 问题过程 将已开发好的功能合并到master 2F7891AFC602A505CD14D107C40624D6.jpg 上线后发现有问题咋整、直接revert掉刚才的那次merge,也就是revert掉①那个点 revert 的过程是将你合并的那个分支的所有改动,全部删除重新commit (覆盖)②,记住是commit,并不是撤销了你的合并和提交 ...

2020-01-04 00:37:56 1815 1

原创 SELECT list is not in GROUP BY clause and contains nonaggregated column

1. 问题描述 MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。说白了就是select 后面不能直接跟非在group by 后面出现的字段 错误示例 select i...

2020-01-03 23:59:20 346

原创 php7.4 遍历属性和以前版本的区别

1. 简介 终于腾出一点时间来解决近段时间遗留的问题,前几天有位同学在Easyswoole下提了一个issue。因此做了几个case 用来验证 PHP 7.4.0 (cli) (built: Dec 6 2019 23:00:14) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Ze...

2019-12-07 00:54:34 300

原创 代码中的注释

TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。 FIXME: + 说明: 如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。 XXX: + 说明: 如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中...

2019-10-23 00:37:02 315

原创 Golang 实现访问Easyswoole的rpc服务

package main import ( "encoding/binary" "net" ) func main() { var tcpAddr *net.TCPAddr tcpAddr,_ = net.ResolveTCPAddr("tcp","127.0.0.1:9600") conn,_ := net.DialTCP("tcp",...

2019-10-08 09:37:21 565

原创 golang []byte和string相互转换

package main import ( "fmt" ) func main() { str2 := "hello" data2 := []byte(str2) fmt.Println(data2) str2 = string(data2[:]) fmt.Println(str2) }

2019-10-08 08:57:19 175

原创 PHP 实现文件分段上传

1.安装 composer require huizhang/file-segment-upload 2.代码示例 html <!doctype html> <html lang="en"> <body> <form action="./Exampl1.php"> <input type="f...

2019-08-13 01:05:00 1000

原创 Linux yum安装gcc和gcc+c++

yum -y install gcc yum -y install gcc-c++

2019-08-09 18:42:00 2111

原创 谈谈React--componentWillReceiveProps的使用

1.什么是componentWillReceiveProps? 这是个神图 image.png componentWillReceiveProps是React生命周期中的一个环节,有关React的生命周期,同学们可以在这里详细了解。 componentWillReceiveProps在初始化render的时候不会执行,它会在Compone...

2019-07-22 14:59:00 5596

原创 Antd 的请求过程、state和props的区别

1. 简介 很多小伙伴可能刚接触antd的时候会遇到这种困惑,这一坨代码到底是个什么鬼,不是类似MVC的开发方式吗,为毛我把代码都写到了page(view)层呢 2.项目目录结构 --src --pages --State --models // model层 --state.js --S...

2019-07-16 10:25:00 2112

原创 React中自定义函数什么时候执行

<div id="root"></div> <script type="text/babel"> class Toggle extends React.Component { constructor(props) { super(props); this.state = { ...

2019-07-14 16:27:00 466

原创 解决Antd post请求跨域问题

服务端设置 header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers:content-type"); header("Access-Control-Allow-Methods:POST, GET, OPTIO...

2019-07-12 19:37:00 3855

原创 解决跨域问题

header("Access-Control-Allow-Origin: *"

2019-07-12 09:02:00 157

原创 Antd Table (index.js:1 Warning: [antd: Table] Each record in dataSource of table should have a un...

1.简介 在用Antd的Table组件时报错, 那是因为数据源中默认必须每条记录的key为主键 Warning: [antd: Table] Each record in dataSource of table should have a unique `key` prop, or set `rowKey` of Table to an unique ...

2019-07-11 13:32:00 6397

原创 Easyswoole源码分析-13-Crontab

1.简介 EasySwoole支持用户根据Crontab规则去添加定时器。时间最小粒度是1分钟。 2. 代码分析 2-1添加cron 2-1-1 流程 image.png 2-1-2 上半部分核心代码 注意:此例请参照es手册 在mainServerCreate 添加cron public static function mainS...

2019-06-28 11:22:00 576

原创 Easyswoole源码分析-12-定时器

1.简介 框架对原生的毫秒级定时器进行了封装,以便开发者快速调用 Swoole 的原生定时器,定时器类的命名空间为 EasySwoole\Component\Timer 2.知识点 1.设置定时器 2.清除定时器 3.延时定时器 3.代码分析 最好对照es的手册进行分析。 class Timer { use Singleton; ...

2019-06-27 13:38:00 447

原创 Easyswoole源码分析-11-异步任务

1.简介 在服务启动后的任意一个地方,都可以进行异步任务的投递,为了简化异步任务的投递,框架封装了任务管理器,用于投递同步/异步任务,投递任务有两种方式,一是直接投递闭包,二是投递任务模板类 2.知识点 1.异步任务 2.Demo 3.代码分析 注意对比手册中的几种方式,核心代码在Core.php中。 EventHelper::on($serv...

2019-06-27 12:56:00 619

原创 行为性模式-命令模式 (Command)

1.简介 我们想实现的是,只需要输入一个字符串式的指令,就可以执行相应的逻辑,而不用if else什么来判断。 PHP Cli命令的设计就会用到这个模式。 2.代码实现 我们来实现一个电视机开关的指令: //命令接口 interface Command{ public function excecute(); } //开电视指令 class...

2019-06-20 22:00:00 281

原创 Easyswoole源码分析-10-自定义进程

1.简介 处理耗时任务,比如处理死循环队列消费,清除多余redis中的token数据等等。 2.知识点 Server->addProcess Process::__construct swoole_event_del swoole_event_add Process::signal Process->exit Coroutine\Chan...

2019-06-20 17:23:00 1102

原创 Easyswoole源码分析-9-phar

1. 简介 PHP5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件。 2.知识点 spl标准库 phar的认识与使用 FilesystemIterator迭代器中的常量 3. 代码分析 phar 核心代码分析 public function exec(array $args): ?string { ...

2019-06-10 14:53:00 285

原创 Easyswoole源码分析-8-Console(控制台)

1.简介 EasySwoole 提供了console控制台组件,在项目运行的时候,可通过命令和服务端进行通讯,查看服务端运行状态,实时推送运行逻辑等 知识点 1.swoole_event_add 2.addListener 3.EasySwoole CONSOLE组件 2.流程 启动Easyswoole时会启动主服务,根据配置启动其它服务,比如C...

2019-06-04 15:13:00 1084 2

原创 Easyswoole源码分析-7-help

介绍 所有command类都实现了CommandInterface接口 interface CommandInterface { public function commandName():string; public function exec(array $args):?string ; public function he...

2019-06-02 23:12:00 263

原创 Easyswoole源码分析-6-reload

1.知识点 1.主要看里面的SIGUSR1和SIGUSR2信号的作用 2.向指定pid进程发送信号 2.代码分析 public function exec(array $args): ?string { // TODO: Implement exec() method. $all = false; /...

2019-05-30 15:06:00 918

原创 Easyswoole源码分析-5-stop

1.简介 stop 的过程其实非常简单,主要是停止主服务。 2.知识点 1.swoole中的kill 2.Esayswoole的服务管理 3.Swoole中的配置选项 3.代码分析 核心代码 public function exec(array $args): ?string { // TODO: Implement exec...

2019-05-28 23:44:00 787 1

MyEclipse黑色主题

亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用亲测可用

2018-03-09

空空如也

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

TA关注的人

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