源码分析
文章平均质量分 58
r_martian
这个作者很懒,什么都没留下…
展开
-
Go map底层结构实现原理
map结构是一种比较常用的数据结构,存储k/v映射关系集合,根据key能够快速的查找对应的v。go的map是基于hashtable实现,冲突解决采用拉链法map 底层实现结构包含hmap和bmap两个,下面详细说一下(注go.1.17.1版本)hmap结构// A header for a Go map.type hmap struct { count int //元素个数 flags uint8 //状态标记 B uint8 .原创 2022-01-24 11:15:33 · 1235 阅读 · 0 评论 -
【深度】 nginx gdb调试详解
参考文档1 GDB debugger原创 2020-03-27 20:02:21 · 850 阅读 · 0 评论 -
【深度】nginx strace和gstack源码调试
一、前提1 nginx编译安装假设已经安装好了nginx服务器,切能正常启动访问,个人版本为 nginx version: nginx/1.14.0,使用strace/pstack进行调试(或者gdb,没调试过)。strace 和ltrace 可以查看一个应用程序在运行过程中所发起的系统调用2 strace命令strace - trace system calls and signals ...原创 2020-03-24 17:27:00 · 624 阅读 · 0 评论 -
composer自动加载
第一步,框架入口文件index.phprequire __DIR__.'/../vendor/autoload.php';实际上是引入了composer目录下autoload文件从内容可知,其又引入了autoload_real文件,调用了类加载方法<?php// autoload.php @generated by Composerrequire_once __DIR__ ...原创 2020-03-11 21:45:32 · 536 阅读 · 0 评论 -
nginx 通过Signal发送控制信号
nginx 通过Signal发送控制信号,类似 nginx -s reload 的流程如下:1 信号结构体// 信号结构体typedef struct { int signo; //信号编号 char *signame; //信号表现形式,如“SIGIO” char *name; //信号名称,如“stop,reload”...原创 2020-02-05 22:41:53 · 908 阅读 · 0 评论 -
nginx源码注释项目
最近在nginx相关的东西,就深入的看了一下nginx的源码,从github上clone一份出来,然后建了个仓库,并进行注释,欢迎有意愿的小伙伴一起加入,本项目基于目前最新版本的nginx进行的。仓库地址:git@github.com:HelloMrShu/nginx_comment_1.17.x.git目前注释进度:1 nginx启动流程及相关函数2 nginx处理http请求流程及相关...原创 2020-01-23 17:01:04 · 719 阅读 · 3 评论 -
PHP新垃圾回收机制:Zend GC详解
一、概述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount_gc的值,如果refcount_gc为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而这种GC实现方案中,...转载 2018-08-30 16:24:19 · 5302 阅读 · 3 评论 -
Laravel Facade 实现揭秘
Facade(门面),为应用服务容器中的绑定类提供了一个“静态”接口,相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。Laravel 内置了很多facade,都定义在Illuminate\Support\Facades命名空间下,如App,Artisan,Auth,Cache,Config,Cookie,DB,Event,File,Log,Mail,Queue,Re...原创 2018-07-22 17:28:06 · 1064 阅读 · 0 评论 -
php _call与__callStatic方法
php 5.3后新增__call与__callStatic魔法方法。 __call:当调用一个不可访问方法,会自动调用__call 方法。 __callStatic:在静态上下文中调用一个不可访问方法时,会自动调用__callStatic方法。public mixed __call ( string $name, array $arguments )public static mixe...原创 2018-07-22 08:57:33 · 1034 阅读 · 0 评论 -
PHP扩展vld查看opcodes
1. 下载与安装VLDwget http://pecl.php.net/get/vld-0.11.2.tgztar zxvf vld-0.11.2.tgzcd ./vld-0.11.2/usr/bin/phpize 或者直接phpize,(phpize - prepare a PHP extension for compiling)/configure --with原创 2017-10-09 22:54:05 · 395 阅读 · 0 评论