自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

盘古大叔

https://github.com/pangudashu

  • 博客(67)
  • 收藏
  • 关注

转载 Inside ELF Symbol Tables

ELF files are full of things we need to keep track of for lateraccess: Names, addresses, sizes, and intended purpose. Without thisinformation, an ELF file would not be very useful. We would haveno w

2017-07-14 17:01:38 713

原创 【PHP7内核剖析】3.4 面向对象-对象的实现

更多《PHP7内核剖析》系列文章:https://github.com/pangudashu/php7-internal3.4.2 对象对象是类的实例,PHP中要创建一个类的实例,必须使用 new 关键字。类应在被实例化之前定义(某些情况下则必须这样,比如3.4.1最后那几个例子)。3.4.2.1 对象的数据结构对象的数据结构非常简单:typedef struct _zend_object

2017-04-12 09:48:13 1340

原创 【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 5889

原创 【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 8999 4

原创 golang sql连接池的实现解析

golang的”database/sql”是操作数据库时常用的包,这个包定义了一些sql操作的接口,具体的实现还需要不同数据库的实现,mysql比较优秀的一个驱动是:github.com/go-sql-driver/mysql,在接口、驱动的设计上”database/sql”的实现非常优秀,对于类似设计有很多值得我们借鉴的地方,比如beego框架cache的实现模式就是借鉴了这个包的实现;”data

2017-01-09 18:26:33 35984 5

原创 PHP7哈希表(数组)的内核实现

PHP7+内部哈希表,即PHP强大array结构的内核实现。哈希表是PHP内部非常重要的数据结构,除了PHP用户空间的Array,内核也随处用到,比如function、class的索引、符号表等等都用到了哈希表。关于哈希结构PHP7+与PHP5+的区别可以翻下[nikic]早些时候写的一篇文章,这里不作讨论。

2016-12-01 12:06:52 5758 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 2318 1

转载 MySQL索引背后的数据结构及算法原理

原文:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关

2016-11-21 15:59:23 837

转载 zookeeper分布式锁避免羊群效应(Herd Effect)

本文主要讲述在使用ZooKeeper进行分布式锁的实现过程中,如何有效的避免“羊群效应( herd effect)”的出现。一般的分布式锁实现这里简单的讲下一般的分布式锁如何实现。具体的代码实现可以在这里看到:https://svn.apache.org/repos/asf/zookeeper/trunk/src/recipes/lock/在之前的《ZooKeepe数据模型》一文中提到过,zooke

2016-11-01 11:50:15 1793

转载 为阻塞型函数调用添加超时机制

转载:http://tonybai.com/2013/10/25/add-timeout-to-blocking-function-call/我们产品中的一个子模块在进行Oracle实时数据库查询时,常常因数据库性能波动或异常而被阻塞在OCI API的调用上,为此我们付出了“惨痛”的代价。说来说去还是我们的程序设计的不够完善,在此类阻塞型函数调用方面缺少微小粒度的超时机制。调用阻塞多发生在I/O操作

2016-10-14 17:02:53 4778

转载 保证分布式系统数据一致性的6种方案

有人的地方,就有江湖有江湖的地方,就有纷争问题的起源在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为了便于

2016-10-14 16:58:54 867

转载 保证分布式系统数据一致性的6种方案

有人的地方,就有江湖有江湖的地方,就有纷争问题的起源在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我

2016-06-29 11:37:19 1914

原创 【PHP内核】运算符:instanceof的内核实现

PHP中有个类型运算符instanceof 用于确定一个 PHP 变量是否属于某一类 class

2016-04-07 20:39:30 2179

原创 【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 1953

原创 【PHP内核】语法:不同类型之间数值运算的实现

我们都知道php属于弱类型的语言,不同类型之间可以直接进行运算,比如加减乘除,但是php是构建在c语言之上的,它是如何实现这种复合类型运算的呢?很显然,内核帮我们作了类型转化,下面我们就从一个简单的例子具体看下zend引擎中都干了哪些事。(文中涉及的代码均来自php-7.0.4)

2016-03-23 14:41:17 2119 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 5509 2

原创 【PHP笔记】 zend常用数据结构及宏

1、zend_execute_data:opcode执行期间非常重要的一个结构,记录着当前执行的zend_op、返回值、所属函数/对象指针、符号表等//Zend/zend_compile.hstruct _zend_execute_data { const zend_op *opline; /* executed opline

2016-03-13 16:15:44 1573

原创 golang float32/64与[]byte互转

网络协议开发中经常需要将int、float、bool等转为二进制数据,float32、64 与[]byte处理:import ( "encoding/binary" "math")func Float32ToByte(float float32) []byte { bits := math.Float32bits(float) bytes := make(

2016-02-19 10:07:05 23499

转载 Go conversion between struct and byte

点击打开链接

2016-02-15 15:45:22 1117

转载 memcached binary protocol

IntroductionMemcache is a high performance key-value cache. It is intentionally a dumb cache, optimized for speed only. Applications using memcache should not rely on it for data -- a persistent

2016-02-15 10:32:41 2034

转载 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 13895 2

转载 MessagePack介绍

1,今天在hacknews上看到很多人对messagepack的争论。首先了解什么是MessagePack:MessagePack is a binary-based efficient object serialization library. It enables to exchange structured objects between many languages like JSON. ...

2015-10-13 09:50:05 4780

转载 MySQL索引背后的数据结构及算法原理

原文:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了

2015-09-24 10:22:57 535

转载 C语言的变量的内存分配

原文:http://blog.csdn.net/chenyiming_1990/article/details/9476181今晚看了人家写的一个关于C语言内存分配的帖子,发现真是自己想找的,于是乎就收藏了。。。先看一下两段代码:char* toStr()   {      char *s = "abcdefghijkl";      retur

2015-09-21 16:02:39 558

转载 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 643

转载 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 654

转载 automake

转载:http://www.cnblogs.com/ericdream/archive/2011/12/09/2282359.html前言:       这次task,我大概用了4天的时间去完成。四天的时间内,我不停地去查资料,不停的去做小Demo,不停的总结,终于做完了这次的作业。下面的内容记录了我做这次Makefile作业的学习之路。 一、    相关概念的介绍

2015-08-14 17:05:13 3592

原创 php字符串查找函数zend_memnstr

Zend/zend_operators.h:static inline char * zend_memnstr(char *haystack, char *needle, int needle_len, char *end){ 字符首指针 char *p = haystack; 最后一个字符 char ne = needle[needle_le

2015-07-02 10:55:44 1485

转载 小心使用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 6565

转载 高性能、高并发TCP服务器(多线程调用libevent)

原文链接:http://blog.csdn.net/i_am_jojo/article/details/7587838本文讲述的TCP服务器是模仿memcache中的TCP网络处理框架,其中是基于libevent网络库的。主线程只处理监听客户端的连接请求,并将请求平均分配给子线程。子线程处理与客户端的连接以及相关业务。每个子线程有一个“连接”队列。每个“

2015-04-30 11:14:21 1814

转载 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 492

转载 有关epoll的EPOLLOUT

原文:http://blog.csdn.net/tanlijun37/article/details/9207627 epoll使用的资料网上一大把,EPOLLIN(读)监听事件的类型,大家一般使用起来一般没有什么疑问,无非是监听某个端口,一旦客户端连接有数据发送,它马上通知服务端有数据,一般用一个回调的读函数,从这个相关的socket接口读取数据就行了。但是有关EPOLLOU

2015-04-28 14:50:46 1925

转载 读过的最好的epoll讲解

作者:蓝形参,<strong title="Geek" 伪技术宅"="" class="xukw" style="padding: 0px; margin: 0px;">Geek 伪技术宅    首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。    不管是文件,还是套接字,还是管道,我们都可以把他们看作流。

2015-04-27 15:04:03 718

转载 快速理解Kafka分布式消息队列框架

原文:http://blog.csdn.net/colorant/article/details/12081909

2014-08-14 10:48:29 547

转载 linux命令后台运行

有两种方式:1. command & : 后台运行,你关掉终端会停止运行2. nohup command & : 后台运行,你关掉终端也会继续运行一、 简介 Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务。因此在任务管理上也有别具特色的管理思想。我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而

2014-08-14 10:43:48 418

转载 redis 下key的过期时间详解:expire

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下:redis通过expire命令来设置key的过期时间。语法:redis.expire(key, expiration)1. 在小于2.1.

2014-06-13 12:16:45 5542

原创 jquery uploadify上传文件http error

使用jquery uploadify上传文件

2014-05-14 16:28:00 892

原创 go语言http服务处理image/css/js等静态文件

go语言实现http服务器时如果处理静态文件,需要用到

2014-04-09 22:59:24 3548

原创 memcache基本方法

Memcache::add // 添加一个值,如果已经存在,则返回false Memcache::addServer // 添加Memcache地址 Memcache::close // 关闭一个Memcache的连接 Memcache::connect // 打开一个到Memcache的连接 Memcache::decrement // 对保存的某个key中的

2014-03-06 15:09:26 657

转载 redis配备为开机自启动

redis配置为开机自启动将redis设置为系统服务,并且开机自启动。需要完成以下脚本。 #!/bin/sh # chkconfig: 2345 10 90# description: Start and Stop redis PATH=/usr/local/bin:/sbin:/usr/bin:/bin R

2014-03-06 14:48:45 640

空空如也

空空如也

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

TA关注的人

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