自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(165)
  • 资源 (13)
  • 收藏
  • 关注

原创 分布式设计与开发(四)------数据拆分

<br />一个大型系统里各个环节中最容易出性能和可用性问题的往往是数据库,因此分布式设计与开发的一个重要领域就是如何让数据层具有可扩展性,数据库的扩展分为Scale Up 和Scale Out,而Scale Up说白了是通过升级服务器配置来完成,因此不在分布式设计的考虑之内。Scale Out是通过增加机器的方式来提升处理能力,一般需要考虑以下两个问题:数据拆分数据库高可用架构<br />数据拆分是最先会被想到的,原理很简单,当一个表的数据达到无法处理的时候,就需要把它拆成多个表,说起来简单,真正在项目里

2010-08-26 16:50:00 27736 6

原创 单点登录SSO的实现原理

<br />单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因

2010-08-25 21:46:00 349455 60

原创 系统学习TCP/IP协议(二)------连接建立与关闭

 TCP三次握手建立连接TCP半关闭TCP的状态变迁TCP服务端监听和处理设计TCP三次握手建立连接TCP为了通信双方确认建立起连接,设计了三次握手的策略,三次握手的过程如下:1) 请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。2) 服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。3) 客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认举一个实

2010-08-22 13:26:00 9877 1

原创 系统学习TCP/IP协议(一)------有用的策略和模式

协议实际上就是一种解决某些问题的策略和模式,在经典的TCP/IP协议中就有很多策略和模式值得学习。归纳起来有以下一些:分层封装和分用分层分层是TCP/IP乃至网络通信最核心的策略和模式,分层使得所有的网络应用程序不用关心底层链路传输的细节,也使得不同类型的网络有效地互通。这是一种典型的化繁为简,把复杂的事情分解到不同层面的策略,层与层之间是服务与被服务的关系,每层只需关注所在维度的事情。例如,通过网络层IP协议的抽象和处理,把不同类型的网络互连起来,并且这些底层传输的差异对于上层(运输层和应用层)是透明的,

2010-08-21 15:36:00 7236 2

原创 基于Jupiter建立code review机制

<br />code review是项目过程中一项非常重要的工作,可以有效检查出代码层面的问题,而这些问题常常是QA难以发现的。但在现实工作中code review常常因为无法量化而流于形式,无法形成有效地闭环,很多时候只是在PM提醒下互相看两眼,或是组织大家开code review会议,在会议上大伙一起对着投影做集体review,效果可想而知不会太好。<br />解决以上的问题关键在于形成一个机制并且借助有效的工具去实施,这一点上可以借鉴QA的bug系统,对每一个有问题的点建立问题发现、问题分配和问题解决

2010-08-19 17:10:00 9105 1

原创 分布式设计与开发(三)------高一致性服务ZooKeeper

分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如naming service、分布式lock等,这些分布式的基础服务有以下要求:高可用性高一致性高性能对于这种有些挑战CAP原则的服务该如何设计,是一个挑战,也是一个不错的研究课题,Apache的ZooKeeper也许给了我们一个不错的答案。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它暴露了一个简单的原语集,分布式应用程序可以基于它实现同步服

2010-08-18 22:57:00 64170 8

原创 分布式设计与开发(二)------几种必须了解的分布式算法

<br />分布式设计与开发中有些疑难问题必须借助一些算法才能解决,比如分布式环境一致性问题,感觉以下分布式算法是必须了解的(随着学习深入有待添加):Paxos算法一致性Hash算法<br />Paxos算法<br />1)问题描述<br /><br />分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各个服务端节点是互为同步数据的,所以运行完客户端这系列消息指令后各服务端节点的数据应该是一致的,但由于网络或其他原因,各个服务端节点接收到消息的序列可能不

2010-08-15 11:53:00 79082 7

原创 分布式设计与开发(一)------宏观概述

在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上早已悄悄地成为了时代的主流,吵得很热的云计算实际上只是包装在分布式之外的商业概念,很多开发者(包括我)都想加入研究云计算这个潮流,在google上通过“云计算”这个关键词来查询资料,查到的都是些概念性或商业性的宣传资料,其实真正需要深

2010-08-14 13:07:00 97044 45

原创 几种经典算法回顾

今天无意中从箱子里发现了大学时学算法的教材《算法设计与分析》,虽然工作这么几年没在什么地方用过算法,但算法的思想还是影响深刻的,可以在系统设计时提供一些思路。大致翻了翻,重温了一下几种几种经典的算法,做一下小结。分治法动态规划贪心算法回溯法分支限界法分治法1)基本思想将一个问题分解为多个规模较小的子问题,这些子问题互相独立并与原问题解决方法相同。递归解这些子问题,然后将这各子问题的解合并得到原问题的解。2)适用问题的特征该问题的规模缩小到一定的程度就可以容易地解决该问题可以分解为若干个规模较小的相同问题,即

2010-08-13 16:36:00 13981 6

原创 设计与开发应用服务器(二)------相关技术

服务器的设计与开发涉及到诸多技术和问题,归纳一下大致可以分为以下几种: * 服务器启动和接收数据过程 * 多线程策略 * NIO * 长连接 * 同步与异步 * 配置化支持 * 责任链模式 * 集群与负载均衡 * 数据包设计 * 服务端连接协议 * 客户端连接技术

2010-08-10 09:09:00 10837 12

原创 探索并发编程(七)------分布式环境中并发问题

<br />在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么在分布式环境中,可以采取一下策略和方式来处理:避免并发时间戳串行化数据库行锁统一触发途径<br />避免并发<br />在分布式环境中,如果存在并发问题,那么很难通过技术去解决,或者解决的代价很大,所以我们首先要想想是不是可以通过某些策略和业务设计来避免并发。比如通过合理的时间调度,避开共享资源的存取冲突。另外,在并行任务设计上可以通过适当的策略,保证任务与任务之间不存在共享资源,比如在以前博文中提到的例子,我们需要用多线

2010-08-05 17:39:00 20673 10

原创 探索并发编程(六)------Java多线程性能优化

大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点:死锁过多串行化过多锁竞争切换上下文内存同步下面分别解析以上性能隐患死锁关于死锁,我们在学习操作系统的时候就知道它产生的原因和危害,这里就不从原理上去累述了,可以从下面的代码和图示重温一下死锁产生的原因:public class LeftRightDeadlock { private final Object left = new Object();

2010-08-05 16:02:00 31868 14

原创 探索并发编程(五)------Java多线程开发技巧

很多开发者谈到Java多线程开发,仅仅停留在new Thread(...).start()或直接使用Executor框架这个层面,对于线程的管理和控制却不够深入,通过读《Java并发编程实践》了解到了很多不为我知但又非常重要的细节,今日整理如下。不应用线程池的缺点有些开发者图省事,遇到需要多线程处理的地方,直接new Thread(...).start(),对于一般场景是没问题的,但如果是在并发请求很高的情况下,就会有些隐患:新建线程的开销。线程虽然比进程要轻量许多,但对于JVM来说,新建一个线程的代价还是

2010-08-04 16:58:00 18350 3

原创 设计与开发应用服务器(一)------常见模式

设计与开发服务器算是一个技术含量比较高的领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂的技术细节,比起JSP/servlet或SSH框架开发业务系统来说,开发服务器比较偏重于技术一些,许多开发人员会有些束手无措,但却无法避免,比如基于HTTP协议的服务不适用时,或需要提供某种协议的容器时

2010-08-02 17:15:00 18297 8

原创 探索并发编程(四)------Java并发工具

基于线程安全的一些原则来编程当然可以避免并发问题,但不是所有人都能写出高质量的线程安全的代码,并且如果代码里到处都是线程安全的控制也极大地影响了代码可读性和可维护性。因此,Java平台为了解决这个问题,提供了很多线程安全的类和并发工具,通过这些类和工具就能更简便地写线程安全的代码。归纳一下有以下几种:同步容器类并发容器类生产者和消费者模式阻塞和可中断方法Synchronizer这些类和方法的使用都可以从JDK DOC查到,但在具体使用中还是有很多问题需要注意同步容器类同步容器类就是一些经过同步处理了的容

2010-08-01 13:12:00 17803 2

原创 探索并发编程(三)------Java存储模型和共享对象

很多程序员对一个共享变量初始化要注意可见性和安全发布(安全地构建一个对象,并其他线程能正确访问)等问题不是很理解,认为Java是一个屏蔽内存细节的平台,连对象回收都不需要关心,因此谈到可见性和安全发布大多不知所云。其实关键在于对Java存储模型,可见性和安全发布的问题是起源于Java的存储结构。Java存储模型原理有很多书和文章都讲解过Java存储模型,其中一个图很清晰地说明了其存储结构:由上图可知, jvm系统中存在一个主内存(Main Memory或Java Heap Memory),Java中所有变量

2010-08-01 10:07:00 15492 21

原创 探索并发编程(二)------写线程安全的Java代码

在写Java程序的时候,何时需要进行并发控制,关键在于判断这段程序或这个类是否是线程安全的。当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步,这个类的行为仍然是正确的,那么称这个类是线程安全的。我们设计类就是要在有潜在并发问题存在情况下,设计线程安全的类。线程安全的类可以通过以下手段来满足:不跨线程共享变量使状态变量为不可变的在任何访问状态变量的时候使用同步。每个共享的可变变量都需要由唯一一个确定的锁保护。满足线程安全的一些思路1)从源头避免并发问题很多开发者

2010-07-31 18:54:00 15573 17

原创 探索并发编程(一)------操作系统篇

在多线程、多处理器甚至是分布式环境的编程时代,并发是一个不可回避的问题,很多程序员一碰到并发二字头皮就发麻,也包括我。既然并发问题摆在面前一个到无法回避的坎,倒不如拥抱它,把它搞清楚,决心花一定的时间从操作系统底层原理到Java的基础编程再到分布式环境等几个方面深入探索并发问题。先就从原理开始吧。并发产生的原因虽然从直观效果上,处理器是并行处理多项任务,但本质上一个处理器在某个时间点只能处理一个任务,属于串行执行。在单处理器的情况下,并发问题源于多道程序设计系统的一个基本特性:进程的相对执行速度不可预测,它

2010-07-31 16:58:00 25883 12

原创 基于maven和hudson打造持续集成环境

<br />对持续集成的需求<br />对持续集成的需求主要来自项目过程的痛,在代码控制和管理方面我有以下几个方面的痛:环境时好时坏,开发人员对commit代码不够慎重缺乏一个统一集成的报告来反映项目质量各个方面各种代码检查工具运用门槛高无法量化开发人员的代码质量缺乏一种推进单元测试的有效手段<br />正因为有了上面的疼,让我想到了持续集成<br />持续集成原理和相应工具<br />持续集成的结构和原理由下图所示:<br /><br /> <br />说起来就一句话,持续集成就是用一套工具自动化地接管代

2010-07-28 21:29:00 14843 4

原创 架构师的行为准则(四)

原则大于个人口味很多架构师都有着丰富的经验和个人风格,以至于在平常工作中常以个人口味作为决策的依据,对于普通的开发人员也许是可行的,我们鼓励大家有个人特色,但架构师更应该依据原则办事,需要维护和遵守一套大家公认的原则,以此作为判断是非的工具从“可行走骨架”开始敏捷管理崇尚尽早集成,在架构设计这一块,这个原则也行之有效。架构师在开始阶段无需陷入某些难题或细节里,应该尽快地把各个核心模块串接起来,并能发动开发人员使其简单地运转起来,骨架一旦就绪,再进入健身环节。这样做的好处,一方面可以尽早消除大家之间的误解,也

2010-07-27 09:34:00 5822 2

原创 架构师的行为准则(三)

让开发人员自己做主架构师虽然需要为系统的设计负责,但无须包揽所有的设计工作,应该给予团队成员足够的自主权,让他们发挥自己的创意和能力,你的工作是确保大家的工作能很好的组合在一起,帮助他人解决棘手困难。当你发现同事遇到麻烦时,可以主动给出建议,但更可取的做法是创造良好的氛围,让大家主动向你征求意见。控制项目规模架构师要试图避免做那种“超大型”系统,因为这种系统往往难以控制,控制项目规模的办法通常有:抓住真正需求分而治之设置优先级尽快交付原则架构师不是演员,而是管家有些架构师误解了证明自己价值的含义,以为是炫耀

2010-07-25 23:56:00 6085 3

原创 架构师的行为准则(二)

先确保解决方案简单可用,再考虑通用性和复用性系统的复杂性往往是架构师基于通用性和复用性的设计而引入的,很多具体问题往往不需要通用性和复用性的解决方案。如果存在多个可实施方案难以取舍,先简单后通用原则可以成为最终的评判标准。架构师提供具体解决方案时,无需排斥通用和灵活,但是如果过早脱离具体情况,只会迷失在无限的可能性里,被复杂的配置选项、超负荷的参数列表、冗长罗嗦的接口,以及存在缺陷的抽象所淹没。先简单满足需求,当重复需求再次发生时,通过重构来达到复用是一种不错的方式架构师应该亲力亲为架构师干久了往往会脱离技

2010-07-25 20:11:00 7699 4

原创 架构师的行为准则(一)

最近看了一本书《软件架构师应该知道的97件事》,本来并没对它抱有太多期望和兴趣,毕竟这种讲大道理的书不可能带来什么实际收获,但看的过程中被里面中肯实在的建议给吸引,对于我这种在走向架构师这条路上常常迷失方向的人,实在是雪中送炭。读完后,决定选择其中对我有触动的条目,加上实际工作中的感悟,形成一套自认为正确的架构师行为准则吗,以此来矫正自己的行为。客户需求高于一切不要为了自己的项目经历上添加光彩而去一味追求时髦而光鲜的方案,而是应该扎根客户需求,脚踏实地地为客户着想,这样才能更体现技术的价值,不至于迷失方向简

2010-07-25 18:02:00 16593 11

原创 敏捷开发的45个好习惯

<br />今天把《高效程序员的45个习惯:敏捷开发修炼之道》翻了一遍,讲的基本是敏捷开发的一些原则,虽然没有焕然大悟的感觉,但定期来出来提醒自己一遍也不错,这些道理虽然简单易懂,但真正要在项目中实施起来还是很有挑战性的,一些成功的项目总结经验起来也无非出于这么些简单的原则:<br />   1. 做事 <br /> 2. 欲速则不达 <br /> 3. 对事不对人 <br /> 4. 排除万难,奋勇前进 <br /> 5. 跟踪变化 <br /> 6. 对团队投资 <br /> 7

2010-07-18 19:51:00 3900

原创 由操作系统的存储结构和CAP原则想到架构中的权衡

<br />架构实际上一种权衡的艺术,它的美往往体现在众多矛盾体间的周旋和则中。可以说,没有最好的架构,只有最合适的架构。<br />在一些经典的系统中常常存在多个矛盾因素并存的情况,而这些系统的经典架构就反映出如何解决这些矛盾而相克的因素的方案,比如操作系统的存储结构和分布式系统中CAP原则就是典型的例子。<br />1. 操作系统的存储要达到的目的有以下三个:快速存取大容量单位容量的低成本<br />而这三个目的是相互矛盾和牵制的,存取越快单位容量成本越高;容量越大,存取速度越慢;容量越大,价格越低。既

2010-07-18 14:22:00 3277

原创 阿里土话------记录职场经典语录

总是想要证明自己时,就没有了投入工作的心态你感觉不舒服的时候,就是成长的时候自得其乐是一种能力不要太把自己当回事,也别把自己太当回事与其怕失败,不如狠狠地失败一回不要总认为自己比别人聪明心中无敌,方能无敌于天下不要害怕把自己的弱点暴露给他人你自己觉得有,别人感觉不到你有,你就是没有别把沙子放大为绊脚石活力四射是激情,深水静流也是激情快乐和烦恼都是自己给的刚工作几年比谁更踏实,再过几年比谁更有激情不难,要你干嘛?不给失败找理由,要给成功找方向用勇气改变可以改变的事,用胸怀去接受不可改变的事,用智慧去分辨两者的

2010-07-12 20:05:00 10070 2

原创 构建高性能web之路------mysql读写分离实战

一个完整的mysql读写分离环境包括以下几个部分:应用程序clientdatabase proxydatabase集群在本次实战中,应用程序client基于c3p0连接后端的database proxy。database proxy负责管理client实际访问database的路由策略,采用开源框架amoeba。database集群采用mysql的master-slave的replication方案。整个环境的结构图如下所示:实战步骤与详解一.搭建mysql的master-slave环境1)分别在host1

2010-07-03 12:05:00 106561 14

原创 PM工作中常见问题及解决方法

如何在一般情况下进行工作量的评估?类比估算法:根据类似的项目工作量进行预估,再对估计值根据具体情况进行调整。参数估算法:我们公司可能缺乏这方面的数据支持,比如通过估计某个项目可能会有的代码行数,配备的成员技能,来进行估计。举个例子,某个项目的代码行估计可能会有10000行,一个一般技能的开发工程师一天可以完成的代码行为500行,那么开发需要的时间可能就是20人日。三点估算法:目的是为了尽量降低估算的不确定性。估算时对一个功能点分别估算最悲观的估算值、最乐观的估算值、最可能的估算值,最后确定的估算值=(最悲观

2010-06-22 10:01:00 6704 1

原创 认识SaaS的历程

<br />SaaS已在口边说了好几年,当初还在学校的时候就认识了SaaS,以为是个技术新潮流,认定它是一个可以专研的技术方向,毕业论文就以它为题,还闷在家里9个月,做了个号称基于SaaS的在线租赁CRM系统,当时把xtools、800crm当做楷模,认为他们是中国搞SaaS鼻祖。后来去了阿里软件,冲的就是它号称中国SaaS管理软件第一的名号,当时大家把Salesforce当楷模,极力模仿。再后来大家一锅端到了阿里巴巴,延续SaaS之路,但认识和提法有了很大的改变。因此,这几年下来,我对SaaS的认识随着知

2010-06-05 11:23:00 3600

转载 java集合框架

<br /><br />简化图:<br /><br />Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。<br /><br /><br />Java 2集合框架图<br /><br />集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。<br /><br />抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。<br /><br />实现类:8个实现类(实线表示),对接口的具体实现

2010-05-31 16:06:00 4018 3

转载 linux系统调用列表

一、进程控制:fork创建一个新进程clone按指定条件创建子进程execve运行可执行文件exit中止进程_exit立即中止当前进程getdtablesize进程所能打开的最大文件数getpgid获取指定进程组标识号setpgid设置指定进程

2010-05-30 19:53:00 3658 1

转载 佳文分享:CAP定理

1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall,Sex Pistols乐队(注:Sex Pistols的经理人Malcolm McLaren 2010.4.8去世)开始了他们的第一次演出(gig,注:规模太小称不上演唱会)。关于当晚谁出席了那场演出有些混乱,部分是因为6周后的另一场音乐会

2010-05-25 09:11:00 23040 3

转载 佳文分享:我个人比较受用的一些习惯

1.长期的任务,要尽早开始一般来说,长期任务总是比较烦人,也有难度,而人心里总有逃避困难的趋势,最后的结果或者是最后干脆放弃,或者是剩下一点点时间手忙脚乱地赶工;我自己之前也有这样的教训,自欺欺人地说“要轻松生活,抛开烦扰”,到最后几天才着急办理,搞得狼狈不堪。后来,我发现这做法其实是事与愿违的,如果调整好心理状态,尽早了解情况并不必然带来的心理压力,反而因为时间充裕,有信心把握进度,即便

2010-05-24 14:17:00 2747 2

原创 构建高性能web之路------web服务器长连接

web服务器都提供长连接的方式,所谓长连接就是客户端一次请求完后,不关闭连接,保持一段时间的连接,下次此客户端再次请求时,不用创建新连接,复用所保持的连接即可。从理论上,长连接可以免去大量建立和关闭连接的资源消耗,但同时也有大量连接被占用的代价。因此可以初步判断长连接比短连接能带来更高的TPS,更低的CPU消耗,更少的IO,更高的内存占用,下面通过实战来验证。服务器环境和测试工具可以见工具和环

2010-05-08 18:44:00 22280 6

原创 构建高性能web之路------工具和环境准备篇

一.web服务器1)apacheapache分为很多模式,大家最熟悉有prefork和worker两种,在linux上安装apache可见文档值得注意的是prefork和worker的选择是在编译期,在make之前就需要选定安装的模式,如:./configure --with-mpm=prefork./configure --with-mpm=worker二.压

2010-05-08 17:52:00 7078

转载 佳文分享:Refactor and reason for ReArchitecture

经历过大规模架构重构(ReArchitecture)的同学都知道:ReArchitecture是一个极其痛苦的过程,要想将原有的working的代码,彻底地用新的架构,新的技术重新写一遍,其工作量是令人望而生畏的。最复杂的莫过于业务逻辑的梳理,如果你有精力将原有的代码从头读一遍,那是最lucky的事,但大多数情况下,别人写的代码需要你自己重新写一遍,大多

2010-05-06 14:56:00 2411

原创 解析phpwind团购模块实现

前面我专门解析过phpwind的主题定制化设计,本以为团购功能是基于主题定制化配置出来的,结果看源码和表结构才发现团购是单独来实现的,但实现机理与定制化主题这块类似,可能是不同时期的产物,发现定制化主题满足不了团购的需求,这也许是phpwind设计中不够完善的小瑕疵吧。不扯那么多了,先看看团购这块的表结构设计:pw_pcfield:团购活动字段表,用于存放团购定制化字段,因此团购和主题定制

2010-04-20 21:56:00 6254 1

原创 构建高性能web之路------读《构建高性能web站点》有感

一直想在web性能、可扩展性和可用性提升领域有所深入,但由于这些经验的沉淀,没有比较集中的学习资料辅助,并且也一直没有接触过有大规模访问需求的web项目,因此总是在这个领域门外徘徊。上星期读到一本书,《构建高性能web站点》,感觉有点如获至宝,完全可以称为高性能web的入门宝典,虽然内容不够深入,但基本涵盖了高性能web需要考虑的方方面面,并且书中附有大量实验过程和数据,全然不是那种高高在上的姿态

2010-04-20 14:18:00 11490 4

原创 phpwind源码解析------index.php

phpwind的功能很强悍,设计理念也非常不错,但代码写得有些乱,不过可能是php本身的特点导致,让我们这些写惯了java的开发人员看起来极不习惯,并且源码里的注释少得可怜,只能自己边看边加了,今天看了看了根目录下的index.php,带注释的源码如下:<?phpdefine(SCR,index);require_once(global.php);include_onc

2010-04-18 11:14:00 12297 5

原创 解析phpwind的插件体系

看phpwind的官方网站,发现有个很重要版块为“phpwind 插件开发”,第一感觉是phpwind有个很完善的插件体系,吸引开发者来基于插件体系进行二次开发。于是乎我饶有兴趣地解析一下phpwind的插件体系的实现。我先说说在我看来插件体现比较重要的两个特征:插件维护体系插件能插入的粒度对于第一个特征phpwind体现得还不错,在后台有个专门的栏目是管理插件,能够对放在ha

2010-04-17 22:05:00 5865 3

Oracle 9i 10g编程艺术:深入数据库体系结构

Oracle 9i 10g编程艺术:深入数据库体系结构

2011-01-17

Pro HTML5 Programming

Pro HTML5 Programming

2011-01-17

Comet And Reverse Ajax

Comet And Reverse Ajax

2011-01-17

Lucene 3.0 原理与代码分析完整版

Lucene 3.0 原理与代码分析完整版

2011-01-17

Hibernate In Action(英文)

Hibernate In Action(英文).

2010-02-04

Java Development with Ant

Java Development with Ant

2010-02-04

OReilly - Creating Effective JavaHelp

OReilly - Creating Effective JavaHelp

2010-02-04

AJAX In Action

AJAX In Action,AJAX In Action

2010-02-04

Java2参考大全(第四版)

Java2参考大全(第四版)Java2参考大全(第四版)

2010-02-04

Database Programming with JDBC and JAVA

Database Programming with JDBC and JAVA

2010-02-04

Data Structures and Algorithms In Java

Data Structures and Algorithms In Java

2010-02-04

Advanced Java Networking

Advanced Java Networking

2010-02-04

空空如也

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

TA关注的人

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