• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






hxdoit

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理
上一页 1 2 3 4 下一页

2015年1月23日

smarty对网页性能的影响
摘要: 百度有个VUI模块,它负责将所有的广告信息縇染成HTML返回给调用方,它采用的是HHVM,縇染模板用的是smarty,前端服务器用的是nginx。此前知道,新浪微博以前也用的是smarty,自从鸟哥过去后,将smarty全部换成原生的php模板,因为据说性能提高了不少。耳听为虚,眼见为实,下面从各方... 阅读全文
posted @ 2015-01-23 21:28 hxdoit 阅读(1130) 评论(0) 推荐(0)
 

2014年12月10日

php-fpm正在生成页面时,浏览器刷新后,php-fpm会退出吗?
摘要: 好久没写博客了,因为没有啥可写。之所以有此疑问,是因为看了一篇大牛的文章:PHP升级导致系统负载过高问题分析。看完后,其中有些文字触发了我这个想法,也想验证一下。方案,用tcpdump抓包,用strace获取系统调用tcpdump port 8080 or port 9000 -i lo -s 0 ... 阅读全文
posted @ 2014-12-10 14:48 hxdoit 阅读(497) 评论(0) 推荐(0)
 

2014年7月25日

为什么日志记录到别的目录了?
摘要: 登录到服务器查看的时候,发现工作目录中有很多日志文件和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... 阅读全文
posted @ 2014-07-25 00:51 hxdoit 阅读(292) 评论(0) 推荐(0)
 

2014年7月24日

一个空格引发的bug
摘要: 好久没写博客了。我们的一个项目用的thinkphp框架,当在debug模式下面运行很正常,但切换到生产模式时,刷新页面第一次可以正常显示,刷新第二次会出现错误如下:Fatal error: Call to undefined function Think\C() in/home/work/huang... 阅读全文
posted @ 2014-07-24 00:52 hxdoit 阅读(988) 评论(0) 推荐(0)
 

2014年4月7日

linux内核--页高速缓存
摘要: 页高速缓存,可以理解为对磁盘中的文件内容进行缓存的一种缓存策略,当然它不仅仅用于磁盘文件。当对同一磁盘数据反复访问时,缓存数据就是非常必须的了。这就是buffer和 cache这两个概念中的buffer范畴了。页高速缓存的核心数据结构是address_space结构体,它由inode对象的i_mapping指针指向,我们知道inode对象中记录了一个文件的基本信息,所以每个文件都有一个address_space对象。每个address_space对象对应一棵radix树,我在文章radix树中简单的介绍了这个数据结构,并提出了一些我的疑问。如果大家不了解radix树的,也没有关系,只需要知道通 阅读全文
posted @ 2014-04-07 17:19 hxdoit 阅读(520) 评论(1) 推荐(0)
 
radix树
摘要: 今天在学Linux内核页高速缓存时,学到了一种新的数据结构radix树(基数),经过分析,感觉此数据结构有点鸡肋,有可能是我理解不到位吧。先来张图,给大家以直观的印象当有一个key-value型的数据结构,它的key是从0-255共256个int型数字,如果用数组来存储的话,只是key的部分,需要256*sizeof(int)个字节。但如果把key看作是一个bit序列,从00000000-11111111,按照字典树的思想,把8位bit分成4个部分,每一部分就对应上面树的一层,那么我们就会得到上图所示的一个radix树。上面的树中有4+16+64+256=340个节点。如果把这个树扩展到32个 阅读全文
posted @ 2014-04-07 16:09 hxdoit 阅读(1268) 评论(0) 推荐(0)
 

2014年4月6日

linux内核--用户态内存管理
摘要: 在上一篇博客“内核内存管理”中,描述的内核内存管理的相关算法和数据结构,在这里简单描述用户态内存管理的数据结构和算法。一,相关结构体与进程地址空间相关的全部信息都包含在一个叫做“内存描述符”的数据结构mm_struct中,进程描述符的mm字段指向社个结构。linux通过vm_area_struct的对象实现线性区,每个线性区表示一个线性地址空间。其中重要字段如下:struct vm_area_struct{ ...unsigned long vm_start;//线性区间的第一个线性地址unsigned long vm_end;//线性区间外的第一个线性地址struct vm_area_str 阅读全文
posted @ 2014-04-06 01:52 hxdoit 阅读(272) 评论(0) 推荐(0)
 

2014年4月5日

linux内核--内核内存管理
摘要: 如题目所示,为什么要称作“内核内存管理”,因为内核所需要的内存和用户态所需要的内存,这两者在管理上是不一样的。这篇文章描述内核的内存管理,用户态的内存管理在以后的文章中讲述。首先简单的说明一下下面的描述所需要的基础知识:1,以下描述适用于32位系统2,32位系统的线性地址(或称为逻辑地址,下面统称为线性地址)0-4G,其中的3G-4G的地址空间由内核使用。宏PAGE_OFFSET 为0xC0000000(3G),也是内核空间和用户空间的分界。但是linux内核并没有把整个1G空间用于线性映射,而只能映射最多896M物理内存,预留了最高端的128M虚拟地址空间给IO设备和其他用途。所以,当系统物 阅读全文
posted @ 2014-04-05 19:43 hxdoit 阅读(778) 评论(0) 推荐(0)
 

2014年3月23日

linux内核--软中断与tasklet
摘要: 硬件中断通常都需要在最短的时间内执行完毕,如果将所有硬件中断相关的处理都放在硬件中断处理程序中,那么就达不到这个目的。通过linux提供的软中断和tasklet,可以将硬件中断处理程序中可以延迟处理的部分放到软中断和tasklet中处理。1,软中断linux内核定义了软中断的主要数据结构softirg_vec数组,该数组包含类型为softirg_action的32个元素,即0-31,这也代表软中断的优先级。softirg_action数组包含两个字段:一个函数指针,一个参数指针。通过这两个字段,可以执行任何函数。在linux2.6中,只有前六个元素被使用。 如下图。在硬件中断中,可以将可延迟的 阅读全文
posted @ 2014-03-23 21:19 hxdoit 阅读(893) 评论(0) 推荐(0)
 
linux内核--几个上下文(context)
摘要: 为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为叫进程切换(process switch),任务切换(task switch)或上下文切换(context switch)。个人习惯将之称为context switch,因为context这个单词能够比较准确的形容进程运行的环境。一,进程在内核态的context每一个进程都有它自己的内核态上下文。Linux把两个不同的数据结构紧凑的存放在一个单独为进程分配的存储区域内:一个是与进程描述符相关的小数据结构thread_info,叫作线程描述符,另一个是内核态的进程堆栈。这块存储区域通常有8K。这 阅读全文
posted @ 2014-03-23 20:17 hxdoit 阅读(676) 评论(0) 推荐(0)
 
上一页 1 2 3 4 下一页