c/c++
文章平均质量分 94
盘古大叔
这个作者很懒,什么都没留下…
展开
-
读过的最好的epoll讲解
作者:蓝形参,<strong title="Geek" 伪技术宅"="" class="xukw" style="padding: 0px; margin: 0px;">Geek 伪技术宅 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。转载 2015-04-27 15:04:03 · 749 阅读 · 0 评论 -
【PHP内核】语法:不同类型之间数值运算的实现
我们都知道php属于弱类型的语言,不同类型之间可以直接进行运算,比如加减乘除,但是php是构建在c语言之上的,它是如何实现这种复合类型运算的呢?很显然,内核帮我们作了类型转化,下面我们就从一个简单的例子具体看下zend引擎中都干了哪些事。(文中涉及的代码均来自php-7.0.4)原创 2016-03-23 14:41:17 · 2173 阅读 · 1 评论 -
Memcached协议解析及Go语言客户端实现
前段时间在一个go语言项目中用到memcached,在githup找到github.com/bradfitz/gomemcach,beego的cache中也用的这个,但是发现它只能存储最终的bytes,需要自己做类型转换,用起来很不方便,而且通信协议用的是文本协议,不如二进制协议解析快,所以就自己写了一个,代码见:https://github.com/pangudashu/memcache1、Mem原创 2016-03-22 23:46:35 · 5580 阅读 · 2 评论 -
【PHP内核】运算符:instanceof的内核实现
PHP中有个类型运算符instanceof 用于确定一个 PHP 变量是否属于某一类 class原创 2016-04-07 20:39:30 · 2224 阅读 · 0 评论 -
为阻塞型函数调用添加超时机制
转载:http://tonybai.com/2013/10/25/add-timeout-to-blocking-function-call/我们产品中的一个子模块在进行Oracle实时数据库查询时,常常因数据库性能波动或异常而被阻塞在OCI API的调用上,为此我们付出了“惨痛”的代价。说来说去还是我们的程序设计的不够完善,在此类阻塞型函数调用方面缺少微小粒度的超时机制。调用阻塞多发生在I/O操作转载 2016-10-14 17:02:53 · 4890 阅读 · 0 评论 -
PHP7哈希表(数组)的内核实现
PHP7+内部哈希表,即PHP强大array结构的内核实现。哈希表是PHP内部非常重要的数据结构,除了PHP用户空间的Array,内核也随处用到,比如function、class的索引、符号表等等都用到了哈希表。关于哈希结构PHP7+与PHP5+的区别可以翻下[nikic]早些时候写的一篇文章,这里不作讨论。原创 2016-12-01 12:06:52 · 5808 阅读 · 1 评论 -
PHP函数执行超时控制扩展(for php7+)
函数级控制PHP函数的执行时间,超时终止执行,支持毫秒级配置,在call_user_func()基础上加了超时控制机制。源码:https://github.com/pangudashu/timeout版本v1.0.0环境&依赖OS: linuxVersion: PHP 7.0.0及以上SAPI: php-fpm or cli特性通用:函数级控原创 2016-11-28 16:35:18 · 2367 阅读 · 1 评论 -
【PHP7内核剖析】3.3 Zend引擎执行过程
更多《PHP7内核剖析》系列文章:https://github.com/pangudashu/php7-internal3.3 Zend引擎执行过程Zend引擎主要包含两个核心部分:编译、执行:前面分析了Zend的编译过程以及PHP用户函数的实现,接下来分析下Zend引擎的执行过程。3.3.1 数据结构执行流程中有几个重要的数据结构,先看下这几个结构。原创 2017-03-31 09:44:32 · 9090 阅读 · 4 评论 -
【PHP内核】语法:IF判断的实现
面试PHP时经常碰到一种判断各种类型的空值是否为true的题:$a = '';$a = null$a = false;if($a){...}if(isset($a)){...}if(empty($a)){...}...由下面的例子我们来简单看下zend引擎中对if是怎么处理的:<?php$a = ''; //array();if($a){ echo "Y";}这里例子比较简单原创 2016-04-01 16:14:27 · 2085 阅读 · 0 评论 -
linux c语言 fork() 和 exec 函数的简介和用法
原文:http://blog.csdn.net/nvd11/article/details/8856278假如我们在编写1个c程序时想调用1个shell脚本或者执行1段 bash shell命令, 应该如何实现呢? 其实在 这个头文件中包含了1个调用shell命令或者脚本的函数 system();直接把 shell命令作为参数传入 system函数就可以了,转载 2016-02-03 14:29:45 · 14019 阅读 · 2 评论 -
高性能、高并发TCP服务器(多线程调用libevent)
原文链接:http://blog.csdn.net/i_am_jojo/article/details/7587838本文讲述的TCP服务器是模仿memcache中的TCP网络处理框架,其中是基于libevent网络库的。主线程只处理监听客户端的连接请求,并将请求平均分配给子线程。子线程处理与客户端的连接以及相关业务。每个子线程有一个“连接”队列。每个“转载 2015-04-30 11:14:21 · 1848 阅读 · 0 评论 -
有关epoll的EPOLLOUT
原文:http://blog.csdn.net/tanlijun37/article/details/9207627 epoll使用的资料网上一大把,EPOLLIN(读)监听事件的类型,大家一般使用起来一般没有什么疑问,无非是监听某个端口,一旦客户端连接有数据发送,它马上通知服务端有数据,一般用一个回调的读函数,从这个相关的socket接口读取数据就行了。但是有关EPOLLOU转载 2015-04-28 14:50:46 · 1963 阅读 · 0 评论 -
Epoll在LT和ET模式下的读写方式
原文链接:http://www.ccvita.com/515.html在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resourc转载 2015-04-28 15:59:17 · 520 阅读 · 0 评论 -
小心使用C语言realloc()函数
原文:http://c.biancheng.net/cpp/html/2536.html在C语言中,良好的编程习惯要求一个函数只做一件事,如果一个函数实现了若干功能,可以说基本是一个糟糕的设计。C语言 realloc() 函数位于 stdlib.h 头文件中,其原型为: void *realloc(void *ptr, size_t size);realloc转载 2015-05-04 14:54:36 · 6602 阅读 · 0 评论 -
automake
转载:http://www.cnblogs.com/ericdream/archive/2011/12/09/2282359.html前言: 这次task,我大概用了4天的时间去完成。四天的时间内,我不停地去查资料,不停的去做小Demo,不停的总结,终于做完了这次的作业。下面的内容记录了我做这次Makefile作业的学习之路。 一、 相关概念的介绍转载 2015-08-14 17:05:13 · 3622 阅读 · 0 评论 -
linux sock_raw原始套接字
原文链接:http://www.cnblogs.com/yoleung/articles/1348250.htmlsock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP转载 2015-09-10 10:30:51 · 682 阅读 · 0 评论 -
Makefile选项CFLAGS,LDFLAGS,LIBS
CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include转载 2015-09-18 11:49:57 · 683 阅读 · 0 评论 -
C语言的变量的内存分配
原文:http://blog.csdn.net/chenyiming_1990/article/details/9476181今晚看了人家写的一个关于C语言内存分配的帖子,发现真是自己想找的,于是乎就收藏了。。。先看一下两段代码:char* toStr() { char *s = "abcdefghijkl"; retur转载 2015-09-21 16:02:39 · 584 阅读 · 0 评论 -
【PHP7内核剖析】面向对象-类的实现及编译
更多《PHP7内核剖析》系列文章:https://github.com/pangudashu/php7-internal目录:3.4.1.1 类的结构及存储3.4.1.2 类常量3.4.1.3 成员属性3.4.1.4 成员方法3.4.1.5 类的编译3.4.1 类类是现实世界或思维世界中的实体在计算机中的反映,它将某些具有关联关系的数据以及这些数据上的操作封装在一起。在面向对象中类是对象的抽象,对象原创 2017-03-31 09:49:42 · 6029 阅读 · 0 评论