- 博客(439)
- 资源 (1)
- 收藏
- 关注
原创 B-树知识点总结
先大体看一遍此文章:https://zhuanlan.zhihu.com/p/54084335B-树:不叫B减树,而是B树,其是一种多路平衡查找树,它的每个节点最多包含k个孩子,k被称为B树的阶数据库索引为什么使用树存储结构树的查询效率高,且可保持有序为什么索引不使用二叉查找树来实现呢?虽然从算法层面二叉查找树的查找速度和比较次数都是最小的,但其磁盘IO操作次数较多。为什么磁盘IO操作次数多会导致查询速度慢呢?当利用索引查询时,是不能将整个索引加载到内存的,只能是逐一加载,索引页对应索引树的节
2022-03-20 23:44:57
947
原创 LeetCode Golang Hot53-最大子数组和
https://leetcode-cn.com/problems/maximum-subarray/贪心算法package mainimport "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
427
原创 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
541
2
原创 PHP大厂面经!!!
面经百度、腾讯PHP大厂面试经验分享,拿到了百度offer操作系统/计算机网络【并发】IO多路复用select/poll/epoll介绍Linux 系统目录结构find 查找文件的命令Linux 如何查看系统负载linux C嵌入式面试宝典——用户态和内核态Linux信号机制TCP对决UDPTCP 是如何工作的?三次握手和四次挥手是什么?tcp建立连接为什么需要三次握手tcp挥手时的time-wait状态为什么需要持续2MSL什么是TCP粘包?怎么解决这个问题建立socket需
2021-04-05 22:16:42
1830
原创 PHP利用反射给对象的私有属性赋值、调用对象私有方法
话不多说,直接上代码<?phpclass 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
891
原创 基于文本协议实现memcache协程客户端(swoole)
简介在开发easyswoole组件时发现,MemcacheQ(微博自研消息队列)与memcache二进制协议不完全兼容,所以只能使用文本协议重新开发一个memcache协程客户端组件安装composer require huizhang/memcache使用方式<?phpinclude './vendor/autoload.php';use Huizhang\Memcache\Memcache;use Huizhang\Memcache\Config;go(functio
2021-02-21 23:13:51
248
原创 js简单实现通用组件
目录结构BaseComponent.jsclass BaseComponent { props = { elementId: '' }; constructor(props) { this.props = props; document.getElementById(this.props.elementId).innerHTML = this.render(); this.events(); }
2021-02-21 15:58:11
493
1
原创 Grafana自定义alert的实现过程
前言grafana自带的alert功能是有限的,比如只能对某个query 配置alert,而不能对具体分类,当然我们可以通过代码来实现定制化的alert需求, 因为要用到定时监控grafana的数据变化情况,所以使用easyswoole的定时器功能来做讲解。生成keykey为调用grafana http api 所需的验证信息分析要请求的api和传递的参数当然你可以去grafana官方文档去翻一番http api 章节Install easyswoole的http-clie
2021-02-07 01:43:57
2614
2
原创 如何将Grafana作为业务统计可视化工具
前言需求做的越多越发现,几乎所有业务都需要统计功能,且功能相似程度极高(尤其是前端),从而导致相同功能开发N遍,这就好比一天三顿让你吃红烧肉你说腻不腻!!!grafana 统计功能做的很完善,图表也是相当炫酷,接入也很简单,很多公司喜欢将它作为一个资源监控工具,今天我们就来尝试一下接入普通的业务统计数据。安装grafanasudo docker pull docker.io/grafana/grafanasudo docker run -d --name=grafana -p 8080
2021-02-06 02:05:19
1941
1
原创 基于 EasySwoole 实现通用队列
EasySwoole 通用队列组件支持消费数据先落盘防止异常丢失数据支持队列数据消费日志保留支持基于Redis延迟队列支持基于Redis的队列支持MemcacheQ后续会支持更多消息中间件的消费驱动安装composer require huizhang/universal-queue定义消费者<?phpnamespace App\DelayQueue;use Huizhang\UniversalQueue\Core\ConsumerAbstract;class
2021-01-24 22:32:47
1314
原创 利用awk统计某接口非200状态数量
1. 简介通过下面的nginx访问日志,统计接口/user/list 非200状态的数量nginx.access.log2020-12-30 www.easyswoole.com 127.0.0.1 /user/get 2002020-12-30 www.easyswoole.com 127.0.0.1 /user/list 2002020-12-30 www.easyswoole.com 127.0.0.1 /user/list?page=1&page_size=10 2002020-
2020-12-31 00:21:04
757
原创 EasySwoole 使用*.ini格式的配置文件
EasySwoole 使用*.ini格式的配置文件简介本文章带领大家学习如何在EasySwoole使用ini格式的配置文件。ini的优缺点优点:线性的、简单、简练、方便缺点:复杂类型的数据配置无力目录结构.├── App│ ├── HttpController│ │ └── Productor.php│ ├── Process│ │ └── Cons...
2020-05-03 23:38:42
384
原创 Easyswoole利用Nginx实现服务不中断部署
1. 介绍近几天有幸接触到Nginx反向代理、负载均衡相关知识,为了加深印象,感觉还是有必要自己去踩一遍坑。2. 学习案例EasySwoole+git+Nginx 实现服务的不中断部署先部署9501服务单起一个进程,定时轮询Git分支是否有新版本发布如有新版本发布,clone一份composer update 更新库启动9502服务6...
2020-04-05 02:07:43
1011
原创 Git revert 导致的问题
1. 问题过程将已开发好的功能合并到master2F7891AFC602A505CD14D107C40624D6.jpg上线后发现有问题咋整、直接revert掉刚才的那次merge,也就是revert掉①那个点revert 的过程是将你合并的那个分支的所有改动,全部删除重新commit (覆盖)②,记住是commit,并不是撤销了你的合并和提交...
2020-01-04 00:37:56
1723
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
304
原创 php7.4 遍历属性和以前版本的区别
1. 简介终于腾出一点时间来解决近段时间遗留的问题,前几天有位同学在Easyswoole下提了一个issue。因此做了几个case 用来验证PHP 7.4.0 (cli) (built: Dec 6 2019 23:00:14) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Ze...
2019-12-07 00:54:34
248
原创 代码中的注释
TODO: + 说明:如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。XXX: + 说明:如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中...
2019-10-23 00:37:02
271
原创 Golang 实现访问Easyswoole的rpc服务
package mainimport ( "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
514
原创 golang []byte和string相互转换
package mainimport ( "fmt")func main() { str2 := "hello" data2 := []byte(str2) fmt.Println(data2) str2 = string(data2[:]) fmt.Println(str2)}
2019-10-08 08:57:19
144
原创 PHP 实现文件分段上传
1.安装composer require huizhang/file-segment-upload2.代码示例html<!doctype html><html lang="en"><body><form action="./Exampl1.php"> <input type="f...
2019-08-13 01:05:00
947
原创 谈谈React--componentWillReceiveProps的使用
1.什么是componentWillReceiveProps?这是个神图image.pngcomponentWillReceiveProps是React生命周期中的一个环节,有关React的生命周期,同学们可以在这里详细了解。componentWillReceiveProps在初始化render的时候不会执行,它会在Compone...
2019-07-22 14:59:00
5507
原创 Antd 的请求过程、state和props的区别
1. 简介很多小伙伴可能刚接触antd的时候会遇到这种困惑,这一坨代码到底是个什么鬼,不是类似MVC的开发方式吗,为毛我把代码都写到了page(view)层呢2.项目目录结构--src --pages --State --models // model层 --state.js --S...
2019-07-16 10:25:00
2044
原创 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
416
原创 解决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
3788
原创 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
6321
原创 Easyswoole源码分析-13-Crontab
1.简介EasySwoole支持用户根据Crontab规则去添加定时器。时间最小粒度是1分钟。2. 代码分析2-1添加cron2-1-1 流程image.png2-1-2 上半部分核心代码注意:此例请参照es手册在mainServerCreate 添加cronpublic static function mainS...
2019-06-28 11:22:00
499
原创 Easyswoole源码分析-12-定时器
1.简介框架对原生的毫秒级定时器进行了封装,以便开发者快速调用 Swoole 的原生定时器,定时器类的命名空间为 EasySwoole\Component\Timer2.知识点1.设置定时器2.清除定时器3.延时定时器3.代码分析最好对照es的手册进行分析。class Timer{ use Singleton; ...
2019-06-27 13:38:00
371
原创 Easyswoole源码分析-11-异步任务
1.简介在服务启动后的任意一个地方,都可以进行异步任务的投递,为了简化异步任务的投递,框架封装了任务管理器,用于投递同步/异步任务,投递任务有两种方式,一是直接投递闭包,二是投递任务模板类2.知识点1.异步任务2.Demo3.代码分析注意对比手册中的几种方式,核心代码在Core.php中。EventHelper::on($serv...
2019-06-27 12:56:00
544
原创 行为性模式-命令模式 (Command)
1.简介我们想实现的是,只需要输入一个字符串式的指令,就可以执行相应的逻辑,而不用if else什么来判断。PHP Cli命令的设计就会用到这个模式。2.代码实现我们来实现一个电视机开关的指令://命令接口interface Command{ public function excecute();}//开电视指令class...
2019-06-20 22:00:00
226
原创 Easyswoole源码分析-10-自定义进程
1.简介处理耗时任务,比如处理死循环队列消费,清除多余redis中的token数据等等。2.知识点Server->addProcessProcess::__constructswoole_event_delswoole_event_addProcess::signalProcess->exitCoroutine\Chan...
2019-06-20 17:23:00
1027
原创 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
228
原创 Easyswoole源码分析-8-Console(控制台)
1.简介EasySwoole 提供了console控制台组件,在项目运行的时候,可通过命令和服务端进行通讯,查看服务端运行状态,实时推送运行逻辑等知识点1.swoole_event_add2.addListener3.EasySwoole CONSOLE组件2.流程启动Easyswoole时会启动主服务,根据配置启动其它服务,比如C...
2019-06-04 15:13:00
987
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
214
原创 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
845
原创 Easyswoole源码分析-5-stop
1.简介stop 的过程其实非常简单,主要是停止主服务。2.知识点1.swoole中的kill2.Esayswoole的服务管理3.Swoole中的配置选项3.代码分析核心代码 public function exec(array $args): ?string { // TODO: Implement exec...
2019-05-28 23:44:00
722
1
MyEclipse黑色主题
2018-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人