IT技术博客大学习 共学习 共进步

技术文章

精选技术长文、实践记录与系统化阅读

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT PHP/ 2011-11-14 00:01:24 / 累计浏览 3,135

如何使用PHP编写daemon process

今天下午在segmentfault.com看到一个提问,提问标题是“PHP怎么做服务化”,其中问道php是不是只能以web方式调用。其实很多人对PHP的使用场景都有误解,认为php只能用于编写web脚本,实际上,从PHP4开始,php的使用场景早已不限于处理web请求。 从php的架构体系来说,php分为三个层次:sapi、php core和zend engine。php core本身和web没有任何耦合,php通过sapi与其它应用程序通信,例如mod_php就是为apache编写的sapi...

IT 算法/ 2011-11-14 00:00:10 / 累计浏览 2,573

经典证明:能否在平面上写下不可数个不相交的Y?

    这篇文章收录了 Which Way Did the Bicycle Go 趣题集中一个非常有趣的问题:是否有可能在平面上画不可数个不相交的 8 ?答案是否定的。证明方法非常简单。对于任意一个 8 字形,在两个洞里各取一个有理点 P 、 Q (由于平面上的有理点是稠密的,这是总能办到的),则称这个 8 字形圈住了有理点对 (P, Q) 。注意到由于 8 字形不能相交,因此两个 8 字形不可能圈住同一对有理点。由于平面上的有理点对是可...

IT JavaScript/ 2011-11-13 23:59:31 / 累计浏览 3,055

javascript的String.replace的妙用

作为前端开发人员,总会有点自己的奇技淫巧,毕竟前端开发不同于后端,代码全部暴漏给用户不说,代码冗余了少则影响带宽,多则效率降低。所以今天我也来爆个自己的奇技淫巧。 javascript的String.replace方法应该javascript前端开发工程师都了解,可是你掌握了吗?replace有接受两个参数,第一个参数可以是字符串,也可以是正则表达式,第二个参数除支持字符串之外,还支持$1形式正则匹配的文本,除此之外还支持传入一个处理函数,...

IT 算法/ 2011-11-13 23:57:44 / 累计浏览 1,486

如果对Heron公式求导的话

    Heron 公式是一个已知三角形三边长便能直接求出其面积的经典公式。把三角形的三边长分别记作 a 、 b 、 c ,令三角形的半周长 p = (a + b + c) / 2 ,则三角形的面积可以用 Heron 公式 S = √p(p - a)(p - b)(p - c) 求出。如果把 p = (a + b + c) / 2 代入式子,得到的公式其实也挺对称的: S = √(a + b + c)(a + b - c)(a - b + c)(- [...]

IT PHP/ 2011-11-13 21:41:33 / 累计浏览 1,484

zend_signal in PHP 5.4

在PHP5.4中, 根据由Rasmus提交的RFC, 引入了一套新的信号处理机制, 目的是为了使得信号屏蔽机制可以应用到任何SAPI中, 并且提高在这个过程中的PHP性能. 新的机制, 叫做zend signal, 它的理念, 来自Yahoo的\"延迟信号处理\"(Yahoo signal deferring mechanism), 而后, facebook把这套理念加入了PHP中, 为了提升PHP+Apache 1.X下PHP调用ap_block/ap_unblock的性能. 在详细介绍之前, 我想还是先介绍下引入这个新...

IT 系统架构/ 2011-11-13 21:34:00 / 累计浏览 2,607

quercus记录:php和java的混合型项目建立手记

创业公司参与项目的人口众多、背景不一,目前市场上的主流方向为php与java,很多时候java工程师恨铁不成钢,php工程师也无可奈何。于是便有了此文,讲述如何使用quercus创建php java混合型项目。 quercus是什么? quercus是Caucho公司针对php语言的java实现,100%完成了php5的解析。是resin内建支持的功能。同时,因为使用了resin,使得php可以很容易得到连接池、分布式session、负载均衡等功能。使用...

IT 系统运维/ 2011-11-13 21:31:45 / 累计浏览 2,836

Linux运维利器之ClusterShell

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

IT 编程语言/ 2011-11-13 21:30:39 / 累计浏览 7,394

是返回错误码,还是抛出异常?说说我的选择

昨晚翻了翻《松本行弘的程序世界》这本书,看到他对异常设计原则的讲述,觉得颇为赞同。近期的面试,我有时也问类似的问题,但应聘者的回答大都不能令人满意。有必要理一理,说说我是怎么理解的,以及在编程实践中如何做出合适的选择。当然这只是一家之言,未必就是完全正确的。 首先,要明确一点的是,返回错误码和异常,这两者在程序的表达能力上是等价的。它们都可以向调用者传达“与常规情况不一样的状态”。考虑使用哪一种,...

IT 系统架构/ 2011-11-13 21:23:52 / 累计浏览 2,713

结对编程实践

    不少程序员会说“代码写的太烂了”,说很容易,然后您能告诉别人什么地方需要改进么?其实我也有这样的毛病,单个人代码写的好时偶然的,写的烂是必然的,所以需要借助团队的力量来告诉成员需要改进的地方。由于业务编码工作接近尾声,业务开发人员和我主要从测试代码开始入手来改善代码质量,优化业务流程。     流程:由我通过mock的方式写service层的测试代码(仅仅测试复杂的业务流程,仅仅...

IT PHP/ 2011-11-13 21:23:28 / 累计浏览 3,733

php的异步http请求类

基于上次写的关于php的libevent扩展的应用,我实现了一个异步的http请求类。

IT 系统架构/ 2011-11-13 21:22:49 / 累计浏览 3,786

软件架构模式的种类

在做软件架构设计时,根据不同的抽象层次可分为三种不同层次的模式:架构模式(Architectural Pattern)、设计模式(Design Pattern)、代码模式(Coding Pattern)。 架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏可以影响到总体布局和框架性结构。 设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度组件的行为和它们之间的关系。模式的好坏不会影响到系统的总体布局和总体框...

IT 网络系统/ 2011-11-13 21:12:48 / 累计浏览 5,812

TCP Fast Open by Google 浅析

Google 将在今年 12 月的 ACM CoNEXT 会议上发表他们在改善 Web 应用响应时延方面的一个工作,通过修改 TCP 协议利用三次握手时进行数据交换的“TCP Fast Open”。虽然 paper 是两天前才释出,但相关的 RFC 草案则早在 2011 年 3 月份就提交到了 IETF,并且在两周前进行了一次 UPDATE,这里是 DIFF。

IT 奋斗/ 2011-11-13 21:11:21 / 累计浏览 3,733

我做前端一年半

如果从开始工作那天开始算是入行,到今天也有近一年半了。听到前端这个词,肯定有很多人脑海里浮现出男人,死板的,带着满脸执着的画面。其实不然,我是个活生生例子,嘿嘿。

IT PHP/ 2011-11-13 21:07:02 / 累计浏览 3,656

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们平时开发扩展, 修复PHP的bug的时候, 却对这一部分...

IT PHP/ 2011-11-13 21:06:21 / 累计浏览 2,478

PHP5.4新特性-解引用实例化

PHP的语法分析系统, 是一个历史悠久的系统, 在这个蛮长的的历史中, 不停的修修补补, 或多或少的会造成一些特定的特性. 而如果要重写, 继耗时, 又耗力, 并且很难做到和现在的完全兼容, 所以我想, 要完全重写, 那也只能是PHP6了(替开发组宣布一下, PHP6目前已经停止开发, 也暂时不会有这种提法)

IT 设计思想/ 2011-11-12 21:34:05 / 累计浏览 1,409

新产品的改进不要太寄希望于用户反馈

很多时候,都可以听到产品要“小步快跑”的说法,产品要先上线再迭代,先让用户使用上产品然后才是让用户使用上更好用的产品。这些说法本身没有错,当然基本上关于产品的说法大部分都没有错,错的是在执行上。 产品上线后的迭代,除去计划中尚未设计开发的功能外,还有很重要的一部分是收集线上的意见建议快速的修复及更正,但是线上意见建议的反馈从哪里来呢? 第一反应,理所当然的是反馈信息来自于用户;第二反应是还有自己人的...

IT Linux/ 2011-11-09 22:48:10 / 累计浏览 2,208

Linux下pipe使用注意事项

Linux下的pipe使用非常广泛, shell本身就大量用pipe来粘合生产者和消费者的. 我们的服务器程序通常会用pipe来做线程间的ipc通讯. 由于unix下的任何东西都是文件,只要是文件,在读取的时候,,就会设置last access time, 所以pipe也不例外., 但是这个时间对我们没有意义 如果pipe使用的非常频繁的时候会碰到由于设置访问时间导致的性能问题. 这...

IT MySQL/ 2011-11-06 22:55:23 / 累计浏览 2,227

MySQL 数据库性能优化之缓存参数优化

在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣的朋友们有所帮助。这是本系列的第一篇文章:MySQL 数据库性能优化之缓存参数优化数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在...

IT MySQL/ 2011-11-06 22:48:23 / 累计浏览 4,420

MySQL 数据库性能优化之表结构

这是 MySQL数据库性能优化专题 系列的第二篇文章:MySQL 数据库性能优化之表结构很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设计3范式早就已经不完全适用了。这里我整理了一些比较常见的数据库表结构设计方面的优...