自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

转载 PHP+Hadoop实现数据统计分析

记一次完全独立完成的统计分析系统的搭建过程,主要用到了PHP+Hadoop+Hive+Thrift+Mysql实现安装Hadoop安装: http://www.powerxing.com/install-hadoop/Hadoop集群配置: http://www.powerxing.com/install-hadoop-cluster/Hive安装: htt

2017-03-18 00:08:09 13369 1

转载 PHP中的gzcompress、gzdeflate、gzencode函数详解

PHP中存在一组看起来很像的压缩解压函数:压缩函数:gzcompress gzdeflate gzencode解压函数:gzuncompress gzinflate gzdecodegzdecode是PHP 5.4.0之后才加入的,使用的时候要注意兼容性问题。这几个函数都以gz开头,让人想到gzip压缩,而光看函数名却又看不出它们之间的区别,只能查文档。gz

2017-03-15 13:41:14 2109

原创 PHP匿点之数组运算符+和array_merge区别

我们在平常写代码时候会经常对数组进行操作,当然少不了数组的合并操作。在数组合并时候,我们通常会用到  数组运算符+   和  函数array_merge,对于 array_merge函数的底层实现逻辑前面文章已经介绍过了,这里我们主要说下他们两个的区别数组运算符+:以第一个array为主 第二(或其他)个array为辅,只进行一级深度的 合并操作array_merge:以最后一个arr

2017-03-04 17:37:23 429

原创 REDIS实践之请勿踩多进程共用一个实例连接的坑

最近在做一个主进程fork出多个子进程的项目时候,一开始,想在主进程之前 new redis出一个实例,让fork出的多个子进程共用这个实例,但是总感觉有哪里不妥!思来想去,想到这么个例子来证明这么做的可怕性首先在redis里面建了一个 【1-8,除去4】的集合体然后在进程里面有加入这么段代码:把不为集合成员的4却返回true  和  为集合成员的【1,2,3,5,

2016-11-04 21:33:01 13379 4

原创 PHP函数源码之array_merge分析

在使用array_merge时是需要注意键的类型的,对于string 的key  和 数字key的处理方式是有区别的,虽然应用没问题, 但是偶尔写的时候总有点对预期结果不踏实,所以我们还是从底层来分析下,这样在用时候也就底气十足了PHP_FUNCTION(array_merge){ php_array_merge_or_replace_wrapper(INTERNAL_FUNCTION_P

2016-10-09 21:59:16 1774

原创 PHP匿点之string转int

今天遇到一个奇怪的问题<?phpecho 1 + 2 + "3+4+5";输出的结果为6; 当时有点想不通,1+2=3是没问题的  但是 3+“3+4+5” = 6 是为什么呢, 百思不得其解。所以我们还是从内核来看吧。我们先看下opcode:这里的 “3+4+5”被编译成3%2B4%2B5,以字符串形式存在,与整形相加,需要先转为整形,想到整形我们就intval

2016-09-20 23:02:33 4202

原创 PHP函数源码之file_puth_contents分析

闲来无事,找个文件操作函数看下, 刚好中间涉及到底层对流的处理,也算作学习前的预先了解吧/* {{{ proto int file_put_contents(string file, mixed data [, int flags [, resource context]]) Write/Create a file with contents data and return the nu

2016-09-15 13:34:08 1168

原创 算法之最长公共子序列(LCS)算法

比如:求下面字符串最长公共子序列“abcbdab” “bdcaba”怎么解决呢?下面就引出了本文所说的算法:LCS一、作用最长公共子序列常用来解决字符串的相似度二、解决方案枚举法这种方法比较简单, 也是最容易想到的。 但是呢 ,我们要想这个问题:一个长度为N的字符串,其子序列有2N个,每个子序列要在第二个长度为N的字符串中去匹配

2016-09-15 12:26:18 671

原创 PHP函数源码之var_export分析

今天在使用var_export函数时, 竟然有点手生的感觉, 于是把源码翻出来看了看/* {{{ proto mixed var_export(mixed var [, bool return]) Outputs or returns a string representation of a variable */PHP_FUNCTION(var_export){ zval *va

2016-09-10 23:25:50 497

原创 REDIS实践之在线人数统计几种方案分析

在线人数统计业务是我们开发web肯定要设计的业务逻辑,本文就会给出几种设计方案,来分析下各个方案的优缺点:使用有序集合这种方案能够同时储存在线的用户 和 用户上线时间,能够执行非常多的聚合计算,但是所消耗的内存也是非常可观的。使用集合这种方案能储存在线的用户,也能够执行一定的聚合计算,相对有序集合,所消耗的内存要小些,但是随着用户量的增多,消耗内存空间也处于增加状态

2016-09-10 20:31:14 13595

原创 REDIS实践之使用sort set完成商品筛选排序

我们知道 redis中 有个用来排序的函数 sort,我们先看看手册对它的描述描述:按条件取得数据参数:array('by' => 'pattern', //匹配模式'limit' => array(0, 1),'get' => 'pattern''sort' => 'asc' or 'desc','alpha' => TRUE,'store' => 'external-key

2016-09-08 16:58:28 6858

原创 REDIS实践之使用watch完成秒杀抢购功能

突然想写点关于redis业务实现的一些东西,想起来很早之前看过一个关于用watch完成秒杀功能的案例,然后又翻出来看了看,不看还好, 一看发现这个实现逻辑是有问题了,随便改吧改吧,希望不要被误导$redis = new Redis();$redis->pconnect('127.0.0.1', 6379, 2.5);echo "Connection to server sucessfull

2016-09-07 22:40:37 1891

转载 利用http_load测试Web引擎性能

http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB。它以并行复用的方式运行,可以测试web服务器的吞吐量与负载。一、获得http_loadhttpd_load的官方站是:http://www.acme.com/software/http_load/,LinuxVPS学习者直接提供了下载地址(文件来自官方)wget -c http

2016-09-06 21:03:55 751

原创 cygwin配置及使用参考

安装apt-cyg命令wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg -P /bin;chmod.exe +x /bin/apt-cyg如果googlecode.com无法访问,可使用链接(2015-05-07更新):wget http://download.zjmainstay.cn/apt-cyg -P /b

2016-09-06 20:58:20 341

转载 PHP匿点之位运算[与] [或] [异] [取反]

<?php/**php中有4个位运算,分别是&与 |或 ^异或 ~取反& 两位全为1,结果为1| 有一位为1,结果为1^ 一个为0,一个为1,结果为1~ 取反0->1,1->01.二进制的最高位是符号位,0表示正数,1表示负数。2.正数的原码,反码,补码都一样。3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)。4.负数的补码=它的反码+1。5.0的反码,

2016-09-05 17:03:44 326

原创 PHP匿点之位运算按位取反

我们看示例:<?php$a = 8;var_dump(~$a);先不要看结果, 试想下结果是多少? 然后我们运行下看看, 纳尼? 和我们设想的不一样,奇怪了  什么原因呢于是我们翻看PHP中文手册: ~ $a Not(按位非) 将 $a 中为 0 的位设为 1,反之亦然。 我只是简单的理解为:0变1,1变0。原来按位取反以十进制输出并不是简单理解成这样。首先要知道,在计

2016-09-05 16:35:04 1042

转载 Cygwin下vim的配置

有时为了测试使用linux下一些功能或实现,在虚拟机中装个linux还是有些麻烦,装个cygwin环境还是方便快捷多了。但一些中文显示及vim的操作并不合平时使用习惯,于是把一些相关设置记在这。0、安装安装时可以选择使用以下镜像1)网易:http://mirrors.163.com2)搜狐:http://mirrors.sohu.

2016-09-05 14:52:46 3362

转载 Cygwin下vim配置

我的vim配置主要有以下优点:1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码4.按“F2”可以直接消除代码中的空行

2016-09-05 13:38:05 2502

原创 PHP函数源码之VLD实现原理

vld功能的实现要依赖 Zend引擎初始化(zend_startup)的时候 将zend_execute和zend_compile_file定义为函数指针的功劳了  默认的zend_execute指向 executezend_compile_file指向 compile_file 试想如果我们在实际编译和执行之前将zend_execute和zend_

2016-09-04 14:08:42 1287

转载 PHP内核之PHP解释器引擎执行流程

这里将介绍引擎内部执行一个PHP脚本的流程,以cli SAPI为例子来对流程中核心的部分做简单介绍,省去一些初始化及清理操作。    cli(Command Line Interface)即PHP的命令行模式,现在此SAPI是默认安装的,我们在服务器上安装完PHP之后,一般会生成一个可执行文件,假设此文件为/usr/local/bin/php ,那么我们在SHELL下可以用以下命令来执行一

2016-09-04 12:53:51 369

转载 PHP内核之动态修改PHP.INI

运行时改变配置在前一篇中曾经谈到,ini_set函数可以在php执行的过程中,动态修改php的部分配置。注意,仅仅是部分,并非所有的配置都可以动态修改。关于ini配置的可修改性,参见:http://php.net/manual/zh/configuration.changes.modes.php我们直接进入ini_set的实现,函数虽然有点长,但是逻辑很清晰:/* {{{

2016-09-03 21:08:56 279

转载 PHP内核之PHP.INI配置原理

使用php的同学都知道php.ini配置的生效会贯穿整个SAPI的生命周期。在一段php脚本的执行过程中,如果手动修改ini配置,是不会启作用的。此时如果无法重启apache或者nginx等,那么就只能显式的在php代码中调用ini_set接口。ini_set是php向我们提供的一个动态修改配置的函数,需要注意的是,利用ini_set所设置的配置与ini文件中设置的配置,其生效的时间范围并不相同。

2016-09-03 20:38:02 270

转载 PHP函数源码之SESSION实现机制

Session是以扩展的形式嵌入到PHP内核的,所以我们可以把Session当成扩展来看待。一般扩展被载入到PHP会经过下面几个过程[cpp] view plain copy #define PHP_MINIT_FUNCTION      ZEND_MODULE_STARTUP_D       // 初始化module时运行   #def

2016-09-03 11:04:57 909

原创 PHP匿点源码之变量赋值与引用

首先需要知道一个数据结构:直接上例子:<?php$a = 1;xdebug_debug_zval('a');$b = &$a;xdebug_debug_zval('a');$c = 20;$a = &$c;xdebug_debug_zval('a');var_dump('a:'.$a, 'b:'.$b, 'c:'.$c);unset($a);xde

2016-09-02 10:09:09 426

原创 MEMCACHED源码之main初始化

一.启动memcached1.memcached启动选项:-p TCP监听端口 (default: 11211)-U UDP 监听端口 (default: 11211, 0 is off)-s UNIX socket监听路径,不支持网络-a UNIX socket访问掩码, 八进制 (default: 0700)-l 监听的服务器IP地址 (default: all ad

2016-09-01 14:46:03 911

原创 ZVAL_STRING 和 ZVAL_STRINGL

字符串处理是我们常用的操作,而 zend 封装了很多关于字符串操作相关的宏,先看下 ZVAL_STRING 和 ZVAL_STRINGL#define ZVAL_STRING(z, s, duplicate) do { \ const char *__s=(s); \ zval *__z = (z); \ Z_STRLEN_P(__z) = strlen(__s);

2016-08-30 21:44:25 1297

原创 PHP内核之Apache的PHP模块启动

首先,了解一下每个Apache模块都会输出一个模块数据结构,其定义结构如下(以PHP模块为例):AP_MODULE_DECLARE_DATA module php5_module = { STANDARD20_MODULE_STUFF, create_php_config, /* create per-directory config structure */ merge_php_

2016-08-28 21:29:38 498

原创 PHP内核之SAPI:Apache2 SAPI分析

1、首先概念普及:SAPI: Server abstraction API,它提供了一个接口,使得PHP可以和其他应用进行交互数据,具体点说是提供了一个和外部通信的接口。常见的:给apache的mod_php5,CGI,给IIS的ISAPI,还有Shell的CLI首先我们看个从鸟哥那挪来的PHP架构图:如果还感觉概念模糊的话 可以试着用wamp升级php版本来找下感觉首先说

2016-08-28 12:24:52 1764

原创 PHP匿点之巧用位运算符 << 和 >>

先来回顾下来自官方的位运算符说明:1、实质是将对应的数据的二进制值逐位左移若干位,并在空出的位置上填0,最高位溢出并舍弃。例 如 $a=10; $b=$a<<2; //$b=40根据手册描述可以看出位运算可以看出向左移一位,则是实现乘2运算。性能:位移操作的运算速度比乘法的 运算速度高很多。因此在处理数据的乘法运算的时,采用位移运算可以获得较

2016-08-27 11:46:04 539

原创 PHP匿点之语言结构快于函数的原因

1、PHP中的语言结构有:echo()print()die()isset()unset()include()require()array()list()empty()2、概念普及:语言结构:就是 PHP语言 的关键词,语言语法的一部分;它不可以被用户定义或者添加到语言扩展或者库中;它可以有也可以没有变量和返回值。函数:由代码块组成的,可以

2016-08-27 09:14:47 427

原创 PHP内核之opcode的处理函数查找

首先我们需要知道有个存放 所有opcode 的 opcode_handler_t 的函数指针字段 的集合 的文件 php-5.5.12\Zend\zend_vm_execute.hvoid zend_init_opcodes_handlers(void){ /* opcode执行函数的指针字段集合 */ static const opcode_handler_t labels[] =

2016-08-27 00:01:03 1016

原创 PHP内核之opcode解读

我们通过示例来说吧<?phpecho '1'.print(2)+3;exit;?>得出的opcode如图:行号、指令编号、脚本开始标记、结束标记、ZEND VM指令、返回值、ZEND VM指令对应的参数。

2016-08-26 13:33:49 702

原创 PHP内核之opcode 变量哪里去了

首先我们需要知道一个东东:操作数,每个操作数有一下两部分组成IS_TMP_VAR: 一个临时变量,保存一些op_array的结果,以便接下来的op_array使用,这种的操作数的 u 保存着一个指向变量表的一个句柄(整数),这种操作数一般用 "~" 开头,比如~0,  表示变量表的0号未知的临时变量IS_VAR 这种是我们一般意义上的变量了,以$开头表示

2016-08-26 10:03:22 506

Go编程 许式伟 PDF

Go语言编程 高清版 许式伟 个人推荐 当前最火的Go类书籍 Go编程 许式伟 PDF

2018-09-19

mprop-改android属性工具-32位+64位

操作步骤 1.下载mprop文件,选择手机设备的架构 2.将mprop文件拷贝到data 3.cmd 命令 如下: # adb shell # cd data # chmod 777 mprop # ./mprop ro.debuggable 1 # stop # start 就能看见了

2018-09-19

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

TA关注的人

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