自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

转载 nodejs redis遇到的一个问题解决

var redis = require("redis"), client = redis.createClient({host:'tc-arch-osp33.tc', port: 4300,no_ready_check:true});// if you'd like to select database 3, instead of 0 (default), ...

2018-03-28 17:08:00 938

转载 mac下实现代码远程同步

近期将办公电脑从windows换成了mac,以前一直用windows,在windows下面将代码同步到远程的开发机,zend studio有一些内置的工具,但mac下的zend stduio没有了这个工具。而sublime一些同步插件太难用,于是网上搜索,自己来实现同步。1,在mac上面后台运行一个脚本,原理就是用mac的fswatch命令检测目录内文件的变化,然后通过rsync命令...

2017-05-22 13:04:00 383

转载 PHP写日志什么时候需要加锁?

先分析fwrite,直接找到PHP源代码:static size_t _php_stream_write_buffer(php_stream *stream, const char *buf, size_t count TSRMLS_DC){vv size_t didwrite = 0, towrite, justwrote; /* if we hav...

2016-05-30 23:50:00 233

转载 php的fread函数的一个巨大的坑

先看看fread的manual,如下:http://php.net/manual/en/function.fread.phpfread()reads up tolengthbytes from the file pointer referenced byhandle. Reading stops as soon as one of the following condit...

2016-05-26 18:00:00 909

转载 grep -P的一个小问题

用grep时,发现一个怪异的问题。背景:grep -E表示用扩展的正则表达式。grep -P 表示用perl正则表达式,区别:http://www.cnblogs.com/wangkangluo1/archive/2012/04/13/2446021.html测试文件如下:MAX_STAY_TIME 103299 52 2923SLIDE_BOTTOM...

2016-04-20 13:26:00 1964

转载 php静态方法与非静态方法在性能上有什么区别?

先贴代码如下:class class1{ public static function test(){}}class class2{ public function test(){}}var_export(-1111111111111111111);//代码段1//写法1class1::test(); var_export(...

2016-02-16 18:42:00 296

转载 一个疑难bug的解决过程

一个crontab脚本,下载一个文件并把内容入mysql数据库。具体流程如下:1, wget一个文件。2,处理文件生成一个中间文件。3,将中间文件load入库。05 10 * * * /home/work/local/php5.4/bin/php /home/work/www/new_products1/web/index_cli.php actionads/inde...

2015-09-06 20:30:00 285

转载 php中的$_SERVER从哪来

前几个月学了个tcpdump抓包命令,遇到任何问题总想试试,真是程序员的终级武器呀,它像显微镜一下,把任何的丑陋的bug都显示在你的面前。为什么有题目中所说的疑问呢?因为我发现在不同的环境下面,我获取到的$_SERVER["SERVER_NAME"]是不一样的。$_SERVER顾名思义,它是服务端的配置,所以我想应该跟nginx的配置有关吧。事实也是如此。验证方法一:很简...

2015-08-02 15:42:00 220

转载 iptables与tcpdump谁更靠近网卡

结论是tcpdump,用tcpdump抓包试试就知道了。// 将所有访问8080端口的包丢弃iptables -A INPUT -s 0.0.0.0/0.0.0.0 -p tcp --dport 8008 -j DROP// 查看iptables的策略iptables -L -n// 结果Chain INPUT (policy ACCEPT)targ...

2015-02-13 22:24:00 400

转载 smarty对网页性能的影响--开启opcache

在上一篇《smarty对网页性能的影响》中,默认没有开启opcache,于是我安装了一下zend opcache扩展,重新实验了一下,结果如下:有smarty用apache的ab命令进行压力测试,并发10个,不算大;同时用sar命令进行cpu利用率的统计。命令如下:./ab -c 10 -n 100000 http://cq01-rdqa-dev072.cq01.baid...

2015-01-23 22:51:00 126

转载 smarty对网页性能的影响

百度有个VUI模块,它负责将所有的广告信息縇染成HTML返回给调用方,它采用的是HHVM,縇染模板用的是smarty,前端服务器用的是nginx。此前知道,新浪微博以前也用的是smarty,自从鸟哥过去后,将smarty全部换成原生的php模板,因为据说性能提高了不少。耳听为虚,眼见为实,下面从各方面来分析一下smarty对我们的性能产生多少影响。先贴下我的实验环境,我...

2015-01-23 21:28:00 178

转载 php-fpm正在生成页面时,浏览器刷新后,php-fpm会退出吗?

好久没写博客了,因为没有啥可写。之所以有此疑问,是因为看了一篇大牛的文章:PHP升级导致系统负载过高问题分析。看完后,其中有些文字触发了我这个想法,也想验证一下。方案,用tcpdump抓包,用strace获取系统调用tcpdump port 8080 or port 9000 -i lo -s 0 -w temp8080是nginx的服务端口,9000是php-f...

2014-12-10 14:48:00 127

转载 为什么日志记录到别的目录了?

登录到服务器查看的时候,发现工作目录中有很多日志文件和core文件pwd :/home/work/anti-rw-rw-r-- 1 work work 2738 Jul 18 21:22 14_07_18.log-rw-rw-r-- 1 work work 1829 Jul 19 02:35 14_07_19.log-rw-rw-r-- 1 work work...

2014-07-25 00:51:00 127

转载 一个空格引发的bug

好久没写博客了。我们的一个项目用的thinkphp框架,当在debug模式下面运行很正常,但切换到生产模式时,刷新页面第一次可以正常显示,刷新第二次会出现错误如下:Fatal error: Call to undefined function Think\C() in/home/work/huangxuan/anti/Protected/ThinkPHP/Library/Thi...

2014-07-24 00:52:00 151

转载 linux内核--页高速缓存

页高速缓存,可以理解为对磁盘中的文件内容进行缓存的一种缓存策略,当然它不仅仅用于磁盘文件。当对同一磁盘数据反复访问时,缓存数据就是非常必须的了。这就是buffer和 cache这两个概念中的buffer范畴了。页高速缓存的核心数据结构是address_space结构体,它由inode对象的i_mapping指针指向,我们知道inode对象中记录了一个文件的基本信息,所以每个文件都...

2014-04-07 17:19:00 151

转载 radix树

今天在学Linux内核页高速缓存时,学到了一种新的数据结构radix树(基数),经过分析,感觉此数据结构有点鸡肋,有可能是我理解不到位吧。先来张图,给大家以直观的印象当有一个key-value型的数据结构,它的key是从0-255共256个int型数字,如果用数组来存储的话,只是key的部分,需要256*sizeof(int)个字节。但如果把key看作是一个bit序列,从...

2014-04-07 16:09:00 135

转载 linux内核--用户态内存管理

在上一篇博客“内核内存管理”中,描述的内核内存管理的相关算法和数据结构,在这里简单描述用户态内存管理的数据结构和算法。一,相关结构体与进程地址空间相关的全部信息都包含在一个叫做“内存描述符”的数据结构mm_struct中,进程描述符的mm字段指向社个结构。linux通过vm_area_struct的对象实现线性区,每个线性区表示一个线性地址空间。其中重要字段如下:stru...

2014-04-06 01:52:00 85

转载 linux内核--内核内存管理

如题目所示,为什么要称作“内核内存管理”,因为内核所需要的内存和用户态所需要的内存,这两者在管理上是不一样的。这篇文章描述内核的内存管理,用户态的内存管理在以后的文章中讲述。首先简单的说明一下下面的描述所需要的基础知识:1,以下描述适用于32位系统2,32位系统的线性地址(或称为逻辑地址,下面统称为线性地址)0-4G,其中的3G-4G的地址空间由内核使用。宏PAGE_OF...

2014-04-05 19:43:00 103

转载 linux内核--软中断与tasklet

硬件中断通常都需要在最短的时间内执行完毕,如果将所有硬件中断相关的处理都放在硬件中断处理程序中,那么就达不到这个目的。通过linux提供的软中断和tasklet,可以将硬件中断处理程序中可以延迟处理的部分放到软中断和tasklet中处理。1,软中断linux内核定义了软中断的主要数据结构softirg_vec数组,该数组包含类型为softirg_action的32个元素...

2014-03-23 21:19:00 206

转载 linux内核--几个上下文(context)

为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为叫进程切换(process switch),任务切换(task switch)或上下文切换(context switch)。个人习惯将之称为context switch,因为context这个单词能够比较准确的形容进程运行的环境。一,进程在内核态的context每一个进程都...

2014-03-23 20:17:00 483

转载 linux内核数据结构--进程相关

linux里面,有一个结构体task_struct,也叫“进程描述符”的数据结构,它包含了与进程相关的所有信息,它非常复杂,每一个字段都可能与一个功能相关,所以大部分细节不在我的研究范围之内,在这篇文章里面只讲述这些数据结构的组织方式,相当于一个知识点的大的梗概或骨架,如果骨架搞明白了,那么内部的细节就可以抽丝剥茧,搞明白也非难事。一,链表很简单,上面所说的进程描述符以双向...

2014-03-23 19:31:00 97

转载 无用的内存分段

分段是80X86体系的处理器支持的一种特性,也就是说硬件已经支持了这内存分段的功能, 用或不用的选择权在操作系统手中,linux系统就没有使用分段的功能,而使用了分页的功能。linux虽然没有用分段,但了解分段对于整个linux系统的了解,还有linux初始化的时的流程,还是很有用的。参考资料 《深入理解Linux内核》第二章,大概讲了12页,我也看了几遍才看懂,以下内容就算个读...

2014-03-19 04:10:00 76

转载 用mysqlslap压测mysql

参考文献:http://my.oschina.net/costaxu/blog/108568上面网友详细的列举了用mysqlslap对mysql的压力测试结果,我也照葫芦画瓢试了一次,结果如下:以下命令代表:用10个并发连接,对一个有10个int列,10个varchar列,两个索引的表进行写操作mysqlslap --concurrency=10 --iteratio...

2014-01-01 19:13:00 101

转载 对apache和memcache进行压力测试

工作中经常使用的软件之二:apache和memcache以前经常听说memcache的TPS能达到几万,但一直也不知道apache的性能到底如何,所以在闲暇之余,就自己做了一下压力测试。环境:两台开发机,一台施压,一台被压过程如下:1,下载、安装并启动apache 2.2.262,使用一个简单的网页作为测试目标<html><body>&...

2013-12-22 15:43:00 92

转载 多线程----信号处理

1,在linux的信号机制里面,有很多信号的默认处理都是结束进程,例如SIGPIPE,SIGINT如果我们没有对信号进行处理,那么我们的程序就不太健壮。2,不同的操作系统,多线程中对信号的处理不一致。linux的线程其实就是一个轻量级的进程,每一个线程都可以接收和处理信号。例如,linux中信号处理默认是由主线程进行,但如果主线程对某个信号进行了屏蔽,这个信号就可以交给其...

2013-12-15 13:15:00 117

转载 服务器程序后台化

//服务器程序后台化int daemonize(){ //创建父进程,创建子进程,使程序在后台运行 pid_t pid=fork(); if(pid<0) return -1; else if(pid >0) exit;...

2013-11-23 01:47:00 154

转载 automake---让Makefile变得更专业一点儿

一般我们装软件时,都要运行./configure --prefix=/usr/localmakemake install看着不断刷新的屏幕,总感觉真得好高深呀,其实我们的程序也可以这样子。下面,我将自己以前编写的一个程序改造成很专业的样子。下面的Makefile是我自己写的:objects=allotter/array.o config/conf...

2013-11-21 00:22:00 57

转载 什么要缓存curl资源

在看公司的代码框架底层时,发现了一个问题,如下:代码中调用接口时,使用的是curl,框架将curl资源以IP :端口的形式缓存了下来,例如:10.10.10.10:80 curl110.10.10.10:8080 curl2有点不太理解原因,所以作了两个实验,过程如下:实验一:两个curl请求相同域名下的不同接口实验二:一个curl请求相同域名下的不同接...

2013-11-15 13:45:00 355

转载 用EPOLL进行压力测试

在以前的博客中提到的一个服务端,在以前压力测试的过程中,发现单核CPU最多能达到1000TPS还以为是服务端性能不够好,所以一直想着怎么去优化它。但优化的思路明显不多,所以就考虑换一种压力测试的方法,事实证明这个想法是对的。以前的压力测试方法 :for((i=0;i<$3;i++));do for((j=0;j<$4;j++));...

2013-11-06 11:47:00 322

转载 B和B+树学习笔记

二叉树如果数据都在内存中,我们就用平衡二叉查找树即可,这样效率最高。在前面的文章中我使用过红黑树(大致平衡的二叉查找树),500万节点时,搜索的深度可以达到50,也就是需要50次指针操作才能获取到数据。数据在内存中,50次间接寻址不是什么问题。B树但数据在硬盘中,50次间接寻址肯定就不行了,所以就必须减少树的深度。于是我们的树就不是二叉了,而是多叉,举...

2013-10-12 11:48:00 69

转载 KMP算法

算法简介:http://blog.sae.sina.com.cn/archives/307绝对简单易懂,以下代码是根据算法自己实现的,为了便于阅读,分成了三个函数,可能有点ugly另外,实际算法肯定不会调用malloc的,在这儿只是实现了功能而已写了半天,我们在平常在php中调用strstr,stripos等函数时,是否会想过它的背后是这么复杂的算法吗?i...

2013-10-09 18:27:00 42

转载 殊途同归

ext2文件系统中,块的大小为4K(可配置),将硬盘分为4K大小的块,这是基础架构,然后在上面构建inode索引结点等其它数据结构。ext2会在inode中记录文件(例如:/tmp/a.txt)使用了哪几个块。在内存管理中,将物理内存分为4K大小的页,然后以页为单位,分配置给各个进程来使用。操作系统会在页表中记录了某个进程使用了哪几个页。......这不能说是一...

2013-10-09 18:27:00 64

转载 从m个数中取top n

将题目具体一点,例如,从100个数中取出从大到小排前10的数方法1:使用快速排序因为快速排序一趟下来,小于K的数都在K的前面,大于K的数都在K的后面如果,小于K的数有35个,大于K的数有64个那么,所以我们取top 10时,只需要在前35个数中进行递归快速排序,所以不需要对所有的数进行排序方法2:使用堆排序...

2013-10-09 18:26:00 161

转载 用红黑树实现500万数据的动态排序

近几个月,做了一个可以对500万数据实时排序的程序此想法源于一个实际的需求:微博达人目前有500万以上,每一位达人都有达人积分,积分可以通过发博,评论等活动来获取。为了激励用户,产品需要获取每一位达人的积分排名,目前的做法是一天排序一次,排序方法如下:1,先从数据库中以文本形式导出500万达人的积分数据2,用sort命令对文本进行排序3,将排序后的数据一条一条的更新到数据库中经过日志分析...

2013-10-09 18:24:00 232

转载 返璞归真

从大二开始学数据结构,到现在还没有把几种排序算法完完整整的写过一遍,现在终于有心情把这些最基本的东西捡起来,重新学习一遍。六种排序算法:插入,希尔,冒泡,快速,归并和堆排序先随机生成10万个数,放在文本中,然后读到内存,进行排序电脑配置:双核cpu MHz: 2394.650费话不多说,先看看我的性能分析:排序算法  运行时间(s)快速排序    0.078归并排序   ...

2013-10-09 18:23:00 81

转载 second blog编程之美------控制cpu曲线

先贴程序:以前看过这个算法, 不过没什么印象,大概记得它利用while循环来控制cpu利用率#includeint main(int argc,char*argv[]){while(1){int i=atoi(argv[1]);while(i--);...

2013-10-09 18:19:00 69

转载 first blog编程之美-----计算1的个数

根据以下总结写出以下程序,总结来源于网上感想:得硬着头皮找规律#includeint count1(int n){int i=1;int count=0,after=0,before=0,cur=0;while(n/i){after = n%i;...

2013-10-09 18:18:00 66

空空如也

空空如也

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

TA关注的人

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