Quantcast
Channel: Technical –火丁笔记
Browsing all 151 articles
Browse latest View live

MongoDB与内存

但凡初次接触MongoDB的人,无不惊讶于它对内存的贪得无厌,至于个中缘由,我先讲讲Linux是如何管理内存的,再说说MongoDB是如何使用内存的,答案自然就清楚了。 据说带着问题学习更有效,那就先看一个MongoDB服务器的top命令结果: shell> top -p $(pidof mongod) Mem: 32872124k total, 30065320k used,...

View Article



Image may be NSFW.
Clik here to view.

玩转PMan

所谓PMan,指的是PHP Man Pages,可以通过它方便的在命令行上查看PHP文档。它就好比Perl里的PerlDoc,或者Python中的PyDoc,亦或者Ruby里的Ri。 安装 假设你的系统已经存在pear命令了,那么接下来就是一招鲜了: shell> pear install doc.php.net/pman 安装好后使用非常方便,就和Linux下常见的man命令一样的用法:...

View Article

Subversion钩子

Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能。 所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有很多,默认有如下模板可供选择: shell> ls /path/to/repository/hooks post-commit.tmpl post-lock.tmpl...

View Article

如何解决SELinux问题

说起SELinux,多数Linux发行版缺省都激活了它,可见它对系统安全的重要性,可惜由于它本身有一定的复杂性,如果不熟悉的话往往会产生一些看似莫名其妙的问题,导致人们常常放弃使用它,为了不因噎废食,学学如何解决SELinux问题是很有必要的。 我们以CentOS环境为例重现一个非常常见的SELinux问题:...

View Article

OAuth的改变

去年我写过一篇《OAuth那些事儿》,对OAuth做了一些简单扼要的介绍,今天我打算写一些细节,以阐明OAuth如何从1.0改变成1.0a,继而改变成2.0的。 OAuth1.0...

View Article


Linux运维利器之ClusterShell

如果你有若干台数据库服务器,突然你想知道它们当前的即时负载情况,你会怎么办?挨个登录上去uptime一下?感觉有点傻,写个shell?浪费时间,直接用ClusterShell吧! ClusterShell的安装与配置 ClusterShell的安装很Easy,如果使用APT或YUM包管理方式的话,基本就是一条命令的事儿,我就不说了,这里说一下如何从源代码安装,需要在源代码目录执行如下命令:...

View Article

Redis高可用性之Failover过渡方案

稍后重写

View Article

MySQL高可用性大杀器之MHA

提到MySQL高可用性,很多人会想到MySQL Cluster,亦或者Heartbeat+DRBD,不过这些方案的复杂性常常让人望而却步,与之相对,利用MySQL复制实现高可用性则显得容易很多,目前大致有MMM,PRM,MHA等方案可供选择:MMM是最常见的方案,可惜它问题太多(What’s wrong with MMM,Problems with MMM for...

View Article


记一次TIME_WAIT网络故障

最近发现一个PHP脚本时常出现连不上服务器的现象,调试了一下,发现是TIME_WAIT状态过多造成的,本文简要介绍一下解决问题的过程。 遇到这类问题,我习惯于先用strace命令跟踪了一下看看: shell> strace php /path/to/file EADDRNOTAVAIL (Cannot assign requested address)...

View Article


Redis消息通知系统的实现

最近忙着用Redis实现一个消息通知系统,今天大概总结了一下技术细节,其中演示代码如果没有特殊说明,使用的都是PhpRedis扩展来实现的。 内存...

View Article

Image may be NSFW.
Clik here to view.

模式物语之装饰器

所谓装饰器,英文称之为Decorator,亦或者Wrapper。如果让我选择最喜爱的模式,我想我会毫不犹豫的投它一票。那到底什么是装饰器呢?且听我慢慢道来。...

View Article

Unserialize与Autoload

但凡是一个合格的PHP程序员,就应该知道Unserialize与Autoload,但是要说起二者之间的关系,恐怕一清二楚的人就不多了。 说个例子,假设我们可以拿到第三方的序列化数据,但没有相应的类定义,代码如下: <?php $string = 'O:6:"Foobar":2:{s:3:"foo";s:1:"1";s:3:"bar";s:1:"2";}'; $result =...

View Article

PHP中的错误处理

程序只要在运行,就免不了会出现错误!或早或晚,只是时间问题罢了。 错误很常见,比如Notice,Warning等等。此时一般使用set_error_handler来处理: <?php set_error_handler(function($errno, $errstr, $errfile, $errline) { var_dump($errno, $errstr, $errfile,...

View Article


PHP与Recursion

在程序设计中,递归(Recursion)是一个很常见的概念,合理使用递归,可以提升代码的可读性,但同时也可能会带来一些问题。 下面以阶乘(Factorial)为例来说明一下递归的用法,实现语言是PHP: <?php function factorial($n) { if ($n == 0) { return 1; } return factorial($n - 1) * $n; }...

View Article

Image may be NSFW.
Clik here to view.

使用PHP解析行政区划代码

话说这个PHP脚本我已经写过好多次了,不过由于国家统计局提供的数据格式有些许的变化,所以我又重写了一遍,问题既涉及到PHP,同时也涉及到MySQL,感觉很适合做面试题,这类问题往往最能反映出求职者的基本素质。 准备工作:需要下载最新县及县以上行政区划代码,并保存成data.txt文件。 最新县及县以上行政区划代码 首先创建MySQL表: 需要注意的是表的字符集和文件的字符集需要一致。 CREATE...

View Article


Nginx与Lua

火云邪神语录:天下武功,无坚不破,唯快不破!Nginx的看家本领就是速度,Lua的拿手好戏亦是速度,这两者的结合在速度上无疑有基因上的优势。...

View Article

Image may be NSFW.
Clik here to view.

实现一个简单的服务端推方案

客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling;如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling。 注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹。 先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示: Polling...

View Article


管理Gearman

通常,Gearman被用来分发任务,以便实现异步操作。下面捋捋如何管理Gearman。 说明:请自行安装好Gearman和PHP PECL Gearman。 准备 我们先来创建一个Worker,实现一个简单的显示功能: <?php $worker= new GearmanWorker(); $worker->addServer('127.0.0.1', '4730');...

View Article

SWAP的罪与罚

说个案例:一台Apache服务器,由于其MaxClients参数设置过大,并且恰好又碰到访问量激增,结果内存被耗光,从而引发SWAP,进而负载攀升,最终导致宕机。 正所谓:SWAP,性能之大事,死生之地,存亡之道,不可不察也。 哪些工具可以监测SWAP 最容易想到的就是free命令了,它指明了当前SWAP的使用情况: shell> free -m total used free Swap:...

View Article

Memcached二三事儿

Memcached绝对称得上是NoSQL老兵!可惜随着时间的推移,Redis等后起之秀羽翼渐丰,Memcached相比之下已呈颓势。那我们还用不用学习它?答案是肯定的!毕竟仍然有很多项目依赖着它,如果忽视它,一旦出了问题就只有干瞪眼的份儿了。...

View Article
Browsing all 151 articles
Browse latest View live




Latest Images