会员
众包
新闻
博问
闪存
赞助商
Trae
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
taek
博客园
首页
新随笔
联系
管理
订阅
[置顶]
mysql优化器在统计全表扫描的代价时的方法
摘要: innodb 的聚集索引 的叶子结点 存放的 是 索引值以及数据页的偏移量 那么在计算全表扫描的代价是怎么计算的呢? 我们知道代价 为 cpu代价+io代价 cpu代价 就是 每5条记录比对 计算一个代价 (这里的记录并不是我们数据记录,而是索引记录) 是数据记录个数 又是如何取出全表的总记录呢 (
阅读全文
posted @ 2017-03-31 19:02 taek
阅读(1608)
评论(0)
推荐(0)
[置顶]
php if 的实现
摘要: 简单分析下php中的分支背后的实现 1.语法分析 对于上面的php代码来说 if 匹配 T_IF $a == 1 匹配 parenthesis_expr , 同时语法分析器要执行 zend_do_if_cond op为zend_is_equal echo "a" 匹配 statement, 同时语法
阅读全文
posted @ 2016-11-20 23:13 taek
阅读(1493)
评论(0)
推荐(0)
[置顶]
CPU 分支预测
摘要: 去年在安宁庄的时候, 有个同事阐述了一个观点:php中的if else 在执行时考虑到效率的原因,不会按我们的代码的顺序一条一条去试,而是随机找出一个分支,执行,如果不对,再随机找到一个分支 当时由于种种原因,也没过多去想这个问题,最近查了下资料,发现里面的学问还挺大的 php解释器是由c编写的,
阅读全文
posted @ 2016-11-19 22:05 taek
阅读(8330)
评论(0)
推荐(0)
[置顶]
php7 改为从栈上分配内在的思路
摘要: php7的特点是规则上不从堆上分配内存,改为从栈上分配内存, 因为有些场景是从堆上分配内在后,还要手动释放内存,利用栈分配内在快的特点,在有需要的时候,再在堆上分配内在 但是栈上分配的内存,不能返回,因为当函数运行完后,就退栈了,但可以将该内在地址传给别的函数 php7的hashTable中的Buc
阅读全文
posted @ 2016-06-02 00:24 taek
阅读(2109)
评论(0)
推荐(0)
[置顶]
php的GC机制
摘要: 在php5.3版本之前, php变量的回收机制只是简单的通过计数来处理(当refcount=0时,会回收内存),但这样会出现一个问题 $a=array("str"); $a[]=&$a; unset($a); 执行unset之前,$a的refcount 为2,执行unset之后,$a的refcout
阅读全文
posted @ 2016-05-09 07:28 taek
阅读(6159)
评论(1)
推荐(0)
[置顶]
protobuffer php使用
摘要: protobuffer是google推出的一种数据传的方式,具体压缩,体积小的特点 protobuffer本身不支持php,若要把.proto文件转化为php支持的文件,需要使用第三方的程序 allegro/php-protobuf 或 drslump/Protobuf-PHP 参考 http://
阅读全文
posted @ 2016-05-08 15:08 taek
阅读(13241)
评论(0)
推荐(0)
[置顶]
php引用使用不恰当而产生问题的地方
摘要: php变量的引用,如果使用的恰当,会带来效率的提升,相反,效率下降 count是个内置函数,参数只接收传值,但现在传入的参数$array是个引用,由于在php5中,某个值是不能引用变量和非引用变量之间使用, 针对这个例子来说,即在count内部,php引擎会copy一个$arrray指向的zval,
阅读全文
posted @ 2016-05-04 13:14 taek
阅读(281)
评论(0)
推荐(0)
[置顶]
mysql层的内存分配
摘要: 参考 http://www.cnblogs.com/justfortaste/p/3198406.html http://m.blog.csdn.net/blog/IT_PCode/17007833 http://blog.chinaunix.net/uid-28364803-id-3419777.
阅读全文
posted @ 2015-12-20 18:02 taek
阅读(1373)
评论(0)
推荐(0)
[置顶]
innodb分配内存
摘要: innodb分配内存有三种方法 1)使用OS的malloc 2)使用innodb自己实现的内存分配方法 3)使用goolge的Tmalloc innodb引擎分析之内存管理 在my.cn配置文件中可设置 #InnoDB是使用自带的内存分配程序, #还是使用当前部署的操作系统中现有的更高效的内存分配程
阅读全文
posted @ 2015-12-01 00:09 taek
阅读(281)
评论(0)
推荐(0)
[置顶]
innodb 源码分析 --锁
摘要: innodb引擎中的锁分两种 1)针对数据结构, 如链表 互斥锁 读写锁 http://mysqllover.com/?p=425 http://www.cnblogs.com/justfortaste/p/3668935.html 2)针对数据表中记录 行锁 表锁 innodb中的互斥锁是依据操作
阅读全文
posted @ 2015-11-04 12:50 taek
阅读(1039)
评论(0)
推荐(0)
[置顶]
安装mysql
摘要: 转自 http://www.iteye.com/topic/1128407 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/m
阅读全文
posted @ 2015-05-26 16:03 taek
阅读(469)
评论(0)
推荐(0)
[置顶]
php 内存分配
摘要: php内核中的内存分配 使用的函数有 emalloc(), erealloc() ,这两个函数分别是malloc(),realloc()函数的封装 关于内存分配有四个容器:cache,小块内存链表,大块内存(链表+树), 剩余rest内存链表 大块内存(链表+二叉排序树):链表中每个bucket除了
阅读全文
posted @ 2015-01-23 14:16 taek
阅读(2744)
评论(0)
推荐(0)
[置顶]
php-echo原理
摘要: 1.语法分析unticked_statement:| T_ECHO echo_expr_list ';';echo_expr_list: echo_expr_list ',' expr { zend_do_echo(&$3 TSRMLS_CC); } | expr ...
阅读全文
posted @ 2014-11-24 16:00 taek
阅读(1627)
评论(0)
推荐(0)
[置顶]
php语法分析
摘要: php的语法分析的主要作用是验证词法分析的基础上将token组成的序列,在php这门语言中是否是一个有效的句子,也可以理解为这些token序列是否匹配设计php这门语言时的语法模型,在匹配的情况下构建具体的程序(组建opcode),以供编译后期使用。 比如:在设计php语言时,需要设计一套语法...
阅读全文
posted @ 2014-09-24 17:54 taek
阅读(2906)
评论(1)
推荐(1)
[置顶]
c malloc分配内存
摘要: php中的内存分配有用类似emalloc这样的函数,emalloc实际上是C语言中的malloc的一层封装,php启动后,会向OS申请一块内存,可以理解为内存池,以后的php分配内存都是在这块内存池中进行的,以至于efree,也不会向OS退回内存,而只是设置标志位,标识efree这块内存不再使用...
阅读全文
posted @ 2014-09-11 15:15 taek
阅读(6103)
评论(2)
推荐(1)
[置顶]
php内核为变量的值分配内存的几个宏
摘要: 在php5.3之前,为某变量分配内存是用宏MAKE_STD_ZVAL;737 #define MAKE_STD_ZVAL(zv) \ # /Zend/zend.h738 ALLOC_ZVAL(zv); \739 INIT_PZVAL(zv);165 #define ALLOC_Z...
阅读全文
posted @ 2014-06-17 21:48 taek
阅读(371)
评论(0)
推荐(0)
2019年3月22日
php7 引用成为一种类型
摘要: $a=range(10000) refcount 1 $b=&$a ref (refcount=2) val(refcount=1) $a1=$a ref(refcount=2) val(refcount=2) unset($a) ref(refcount=1) val(refcount=2) un
阅读全文
posted @ 2019-03-22 11:15 taek
阅读(615)
评论(0)
推荐(0)
function参数
摘要: 将参数从左到在依次放到栈里 当调用函数时,将
阅读全文
posted @ 2019-03-22 11:14 taek
阅读(670)
评论(0)
推荐(0)
execvp php-fpm reload使用的函数
摘要: php重启 本质上是调用 execvp("/usr/local/php/sbin/php-fpm"); execvp就是用一个新的进程把自己替换掉,一个进程一旦调用exec类函数,它本身就"死亡"了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留
阅读全文
posted @ 2019-03-22 11:14 taek
阅读(419)
评论(0)
推荐(0)
php-fpm定时器
摘要: php-fpm有三种定时器 1)主进程接收到用户的信号,例如sigusr,主进程执行kill(子进程号,sigquit),的同时,设置定时器,在一个无限循环里如果当前时间 大于或等于 该定时器的过期时间,则主进程执行kill(子进程号,sigterm); 2)对于在php-fpm里设置了reques
阅读全文
posted @ 2019-03-22 11:13 taek
阅读(433)
评论(0)
推荐(0)
fastcgi
摘要: nginx和php-fpm是通过fastcgi协议进行通信的,php-fpm本身就是个socket服务端,nginx拿到url后,识别出.php结尾的地址后,会传给php-fpm,php-fpm通过预先启动的进程,调用php解释器 fastcgi消息有10种,其中有 fcgi_begin_reque
阅读全文
posted @ 2019-03-22 11:13 taek
阅读(445)
评论(0)
推荐(0)
php 类继承
摘要: 2. 针对extends 的函数 zend_do_fetch_class 3.ZEND_FETCH_CLASS_SPEC_CONST_HANDLER函数 4.zend_fetch_class_by_name函数 开始声明类 绑定父类
阅读全文
posted @ 2019-03-22 11:12 taek
阅读(684)
评论(0)
推荐(0)
php 对象 调用静态方法
摘要: 1.BNF范式 2.调用静态方法的编译 zend_do_begin_class_member_function_call 3.调用静态方法的编译 zend_do_end_function_call
阅读全文
posted @ 2019-03-22 11:12 taek
阅读(1795)
评论(0)
推荐(0)
php 词法分析,语法分析
摘要: php的词法分析 可以理解为 通过一定的规则,把输入的代码 区分出哪些是 是$开头的变量, 哪些是 以两个单引号括起来的字符串,哪些是以两个双引号括起来的字符串 等等, 这些区分出来的东西 称为token ,token 之间的联系 是由语法分析来完成的, 比如 赋值,加减乘除; 语法分析详见这里 语
阅读全文
posted @ 2019-03-22 11:12 taek
阅读(1571)
评论(0)
推荐(0)
php unset变量
摘要: 1)词法分析 2)语法分析 unticked_statement: | T_UNSET '(' unset_variables ')' ';' //unset($a,$b) 还能这么用呢,第一次知道 unset_variables: unset_variable | unset_variables
阅读全文
posted @ 2019-03-22 11:11 taek
阅读(1003)
评论(0)
推荐(0)
php5数组与php7数组区别
摘要: http://ju.outofmemory.cn/entry/197064 http://www.fzb.me/2015-9-16-php7-implementation-hashtable.html http://ju.outofmemory.cn/entry/154095 http://www.
阅读全文
posted @ 2019-03-22 11:11 taek
阅读(2359)
评论(0)
推荐(0)
下一页
公告
昵称:
taek
园龄:
14年2个月
粉丝:
27
关注:
2
+加关注
<
2025年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接
随笔分类
apache(1)
C(7)
centos(1)
dbproxy(7)
ecshop(1)
free-software(1)
gdb(3)
html(1)
JS(3)
kafka(1)
LUA(1)
mysql(49)
mysql-MMVC(2)
mysql-安装(1)
mysql-锁(2)
PHP(46)
php扩展(3)
php-算法(2)
redis(1)
ubuntu(1)
汇编(12)
更多
随笔档案
2019年3月(15)
2018年10月(7)
2018年4月(1)
2018年3月(1)
2018年2月(1)
2018年1月(6)
2017年12月(2)
2017年9月(6)
2017年8月(2)
2017年7月(1)
2017年4月(2)
2017年3月(5)
2016年11月(2)
2016年9月(1)
2016年8月(1)
2016年6月(1)
2016年5月(3)
2016年3月(1)
2016年2月(5)
2016年1月(2)
2015年12月(12)
2015年11月(19)
2015年9月(4)
2015年8月(10)
2015年7月(1)
2015年5月(1)
2015年4月(2)
2015年1月(5)
2014年11月(3)
2014年9月(2)
2014年8月(4)
2014年7月(4)
2014年6月(2)
2012年2月(27)
更多
aa
何登成
liuzhiqiangruc
阅读排行榜
1. 以div代替frameset,用css实现仿框架布局(22655)
2. 汇编语言---GCC内联汇编(20453)
3. 上传文件,提示文件不存在的解决方法(16061)
4. protobuffer php使用(13241)
5. 汇编语言---字符串操作指令(11551)
评论排行榜
1. 以div代替frameset,用css实现仿框架布局(6)
2. 汇编语言---函数调用栈(3)
3. c malloc分配内存(2)
4. php的GC机制(1)
5. php语法分析(1)
推荐排行榜
1. 汇编语言---GCC内联汇编(4)
2. 以div代替frameset,用css实现仿框架布局(2)
3. php sapi 产生core 文件(1)
4. redis中存储小数(1)
5. mysql 代价(1)
最新评论
1. Re:汇编语言---GCC内联汇编
这一篇是我见过的最清晰 的。写的很好啊 大佬。学到了
--静心zzZ
2. Re:汇编语言---函数调用栈
@ 还有,一直有个问题没想明白,我要是用 栈里面的变量 ,比如 我 依次 压入 a,b,c 3个变量, 现在我要是用b 是必须要pop 两下吗?这样c不就弄丢了吗?这个问题困扰我几天了...
--落花雨你飘摇的美丽
3. Re:汇编语言---函数调用栈
讲的很清楚, 那如果函数退出的话,是直接
mov bp,sp
pop sp
这样的吗?
--落花雨你飘摇的美丽
4. Re:汇编程序 JNZ(或JNE)(Jump if not zero,or not equal)
1
--铁臂尹新月
5. Re:汇编语言---函数调用栈
博主你好,你提到的 EBP/BP 是指 EBP 也被称为 Frame Pointer 吧?那么应该写作“EBP/FP”,文章中似乎搞错了。
--Leto
点击右上角即可分享