理论上32位操作系统支持约3.3G,64位操作系统理论最大支持128G,但是一般主板上有四个内存插槽,而两种插槽支持的频率不同,市场上常见的内存最大2G,所以一般的电脑最大内存也就4G,还必须是64位操作系统才能识别出全部4G内存。
这个要根据楼主使用的主板芯片组。因为主板决定可以支持多大的内存容量。楼主可以查看自己的主板说明书,或者安装CPU-Z测试软件,查看主板型号,然后对照如下的:
INTEL P35/P31/P43/P45等最大内存8G,而945等是4G;
AMD 770、780、790部分是4G,部分是8G;
这个要根据楼主使用的主板芯片组。因为主板决定可以支持多大的内存容量。楼主可以查看自己的主板说明书,或者安装CPU-Z测试软件,查看主板型号,然后对照如下的:
INTEL P35/P31/P43/P45等最大内存8G,而945等是4G;
AMD 770、780、790部分是4G,部分是8G;
如何查看nginx 安装了哪些模块,及其nginx安全模块安装使用。
nginx的安全模块ngx_http_secure_link_module,想查看下,发现这个无非是当时编译时的那些参数,但也给我们提供了升级重新编译的线索喔,还是安一个吧,免得会有人注入,拿Webserver权限。
注意:要使用到这个模块,需要在configure的时候,加入--with-http_secure_link_module选项.
看下示例:
自己加入安全模块的编译选项:
编译:
配置nginx.conf:
ngx_http_secure_link_module.
下面是一个简单的配置示例:
location /p/ {
secure_link_secret some_secret_word;
if ($secure_link = "") {
return 403;
}
}
注意:要使用到这个模块,需要在configure的时候,加入--with-http_secure_link_module选项.
下面是说明:
syntax: secure_link_secret (后跟字词)
default: 不包含在默认的编译选项中
context: location
使用规定的加密字串来验证连结.完整的URL加密参考:
/prefix/hash/一个hash示例:
md5(路径(或连接), 参数(或选项));
注:前缀可以有任意行,但不包括斜线.
看了下俄文翻译的结果,晕忽忽,不太懂......
也许是因为才加入的新特性的缘故(0.7.18+),使用方法写得不是很详细,需要自己去摸索. !
希望这个模块能够对那些安全高手有作用!
思路来自下面:
阅读全文
nginx的安全模块ngx_http_secure_link_module,想查看下,发现这个无非是当时编译时的那些参数,但也给我们提供了升级重新编译的线索喔,还是安一个吧,免得会有人注入,拿Webserver权限。
注意:要使用到这个模块,需要在configure的时候,加入--with-http_secure_link_module选项.
看下示例:
自己加入安全模块的编译选项:
编译:
配置nginx.conf:
ngx_http_secure_link_module.
下面是一个简单的配置示例:
location /p/ {
secure_link_secret some_secret_word;
if ($secure_link = "") {
return 403;
}
}
注意:要使用到这个模块,需要在configure的时候,加入--with-http_secure_link_module选项.
下面是说明:
syntax: secure_link_secret (后跟字词)
default: 不包含在默认的编译选项中
context: location
使用规定的加密字串来验证连结.完整的URL加密参考:
/prefix/hash/一个hash示例:
md5(路径(或连接), 参数(或选项));
注:前缀可以有任意行,但不包括斜线.
看了下俄文翻译的结果,晕忽忽,不太懂......
也许是因为才加入的新特性的缘故(0.7.18+),使用方法写得不是很详细,需要自己去摸索. !
希望这个模块能够对那些安全高手有作用!
思路来自下面:
阅读全文
http://fellow.51cto.com/art/200903/114437_3.htm
This doucment is about how to add mysql driver into QT and about database connections
由于之前安装RedHat的时候是自动选择安装了mysql数据库以及QT designer,这一阵子用它的时候却因为它在数据库连接中遇到了很大的困难。阅读全文
由于之前安装RedHat的时候是自动选择安装了mysql数据库以及QT designer,这一阵子用它的时候却因为它在数据库连接中遇到了很大的困难。阅读全文
近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎。我怀着无比崇敬的态度,拜读了一下牛人们的发言。里面有个哥们发起一个话题:“CTO, 你多久没有写程序了?”。有人回答:“不写代码的CTO,属于......这公司问题大了!”。看到这里,我就赶紧撤了,怕忍不住反驳几句,反而遭到牛人们的群殴。试想,一个上点规模的IT公司,还得靠CTO来写程序的话,那是不是才叫问题大了呢。当然,我没有做过CTO,所以我有我的不同看法,而且还愿意表达出来,无知者无畏。我情愿相信:我所理解的CTO跟这位CTO所理解的是两回事。所以我想,如果有人能把CTO的职责给标准化了,也许就不会有这么多的争论了。
同样的道理,关于架构师的定义,大家也有着不同的理解。什么是架构师?架构师有哪些职责?我觉得有必要提前明确一下,要不然大家沟通起来也会产生类似问题,子说子理,卯说卯理,但是压根说得不是一码子事。
3.1 什么是架构师
曾经有这么个段子:
甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我。
乙:羡慕ing,都什么人来了?
甲:CEO、COO、CTO、All of 程序员,还有会计、司机都来了。
乙:哇,他们太重视你了,人才啊,这么多人迎接你!
甲:没有啊,就一个人!
乙:靠,#%¥$%...
很多的创业公司,一人身兼数职的情形还是很常见的。至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝、骑独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开始变得无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这种现象不是中国特色,跟国外是完全接轨的。我曾经跟米国的一个工程师在msn中聊过类似的话题,发现他们跟咱们没什么不同,在IT这个行业,我们跟他们的差距只有1天,他们刚出来的东西,我们保准第2天就能找得到。
架构师这个称呼不是你我杜撰出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,他们把架构师分为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。微软的这个分类实际上是按照架构师专注的不同方向和领域划分的。
EA的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title就是首席软件架构师,网易丁磊也喜欢这么称呼自己,这实际上就是一个EA的角色;IA的工作就是不断地提炼和优化技术团队积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之一;特定技术架构师TSA,他们主要从事类似安全架构、存储架构等专项技术的规划和设计工作;SA的工作则专于解决方案的规划和设计,“解决方案”这个词在中国已经到了严重泛滥的程度,大忽悠们最喜欢把它挂在嘴边。所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。售前工程师一般都是带着它到客户那里去发挥的。
大公司会把各种类型的架构师分得很清楚,小公司一般就不那么讲究了,架构师多数是是IA+TSA+SA,一人包打天下,所以说大公司出专才,小公司出全才。
实际工作中,我们也经常会见到另一种比较简单的分类方式,把架构师分为软件架构师和系统架构师。软件架构师基本上是TSA+IA,这也是程序员最容易突破,最可能走上的一条道路,比如JAVA架构师、DotNet架构师、LAPM架构师等等,我后面所讲的内容都是与软件架构师的相关的话题。系统架构师实际上是SA+TSA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。系统架构师要求通晓软、硬件两方面的知识,所以它的知识体系相对庞杂。关于系统架构师的话题,我们可以稍后再作讨论。
3.2 架构师的职责
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。
架构师主要职责有4条:
1、确认需求
在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。
2、系统分解
依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
软件架构师的功力基本体现于此,这是一项相对复杂的工作。
3、技术选型
架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。
Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。
架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。
4、制定技术规格说明
架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。
架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。通过架构师提供的技术规格说明书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。
架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至与最终用户保持沟通。所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。
3.3 架构师的误区
1、架构师就是项目经理
架构师不是项目经理。项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能。一般小型项目中,常见项目经理兼架构师。
2、架构师负责需求分析
架构师不是需求分析员。需求分析人员的工作是收集需求和分析需求,并与最终用户、产品经理保持联系。架构师只对最终的需求审核和确认,提出需求不清和不完整的部分,他会跟需求分析员时刻保持联系。架构师是技术专家,不是业务专家。
3、架构师从来不写代码
这是一个尚存争论的问题。目前有两种观点:
观点1:架构师不写代码,写代码纯体力活,架构师写代码大材小用。架构师把UML的各种视图交给开发人员,如果有不明确的地方,可以与架构师随时沟通。
观点2:架构师本来自于程序员,只是比程序员站的层面更高,比程序员唯一多的是经验和知识,所以架构师也免不了写代码。
我个人觉得这两种说法是与架构师的出身和所处的环境有关。
架构师首先是一个技术角色,所以一定是来自于技术人员这个群体,比如系统架构师,多是来自于运维人员,可能本身代码写得并不多,或者说写不出来很漂亮的代码。软件架构师多是来自于程序员,有着程序员的血统和情怀,所以在项目开发过程中,可能会写一些核心代码。我们的理想是架构师不用写代码,但事实上有时候过于理想。架构师写不写代码,可能取决于公司的规模、文化、开发人员的素质等现实情况。
3.4 架构师的基本素质
周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。
1、沟通能力
为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。沟通能力是人类最普遍性的素质要求,技术人员好像容易忽略,架构师不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间长了总会被人发现的。还是天桥上卖大力丸的哥们说得对:光说不练假把式,光练不说傻把式。看看你周围的头头脑脑们,哪一个不是此中高手,我们不要鄙视,认为是阿谀奉承、投机钻营,你要看到积极的一面,这的确是一种能力。我自认为自己是一个略内向的人,因为我是农村出来的孩子,总带有点自卑感,总想着是金子就会发光,职业道路中确实吃了不少亏。现在,我懂得了沟通的重要性,而且也很主动跟同事们,跟老大们定时沟通,工作起来顺畅多了。这一条我认为最重要,所以排在首位。我甚至于认为下面几条忽略都行,就是这一条得牢记,有意识的提醒自己。
阅读全文
同样的道理,关于架构师的定义,大家也有着不同的理解。什么是架构师?架构师有哪些职责?我觉得有必要提前明确一下,要不然大家沟通起来也会产生类似问题,子说子理,卯说卯理,但是压根说得不是一码子事。
3.1 什么是架构师
曾经有这么个段子:
甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我。
乙:羡慕ing,都什么人来了?
甲:CEO、COO、CTO、All of 程序员,还有会计、司机都来了。
乙:哇,他们太重视你了,人才啊,这么多人迎接你!
甲:没有啊,就一个人!
乙:靠,#%¥$%...
很多的创业公司,一人身兼数职的情形还是很常见的。至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝、骑独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开始变得无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这种现象不是中国特色,跟国外是完全接轨的。我曾经跟米国的一个工程师在msn中聊过类似的话题,发现他们跟咱们没什么不同,在IT这个行业,我们跟他们的差距只有1天,他们刚出来的东西,我们保准第2天就能找得到。
架构师这个称呼不是你我杜撰出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,他们把架构师分为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。微软的这个分类实际上是按照架构师专注的不同方向和领域划分的。
EA的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title就是首席软件架构师,网易丁磊也喜欢这么称呼自己,这实际上就是一个EA的角色;IA的工作就是不断地提炼和优化技术团队积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之一;特定技术架构师TSA,他们主要从事类似安全架构、存储架构等专项技术的规划和设计工作;SA的工作则专于解决方案的规划和设计,“解决方案”这个词在中国已经到了严重泛滥的程度,大忽悠们最喜欢把它挂在嘴边。所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。售前工程师一般都是带着它到客户那里去发挥的。
大公司会把各种类型的架构师分得很清楚,小公司一般就不那么讲究了,架构师多数是是IA+TSA+SA,一人包打天下,所以说大公司出专才,小公司出全才。
实际工作中,我们也经常会见到另一种比较简单的分类方式,把架构师分为软件架构师和系统架构师。软件架构师基本上是TSA+IA,这也是程序员最容易突破,最可能走上的一条道路,比如JAVA架构师、DotNet架构师、LAPM架构师等等,我后面所讲的内容都是与软件架构师的相关的话题。系统架构师实际上是SA+TSA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。系统架构师要求通晓软、硬件两方面的知识,所以它的知识体系相对庞杂。关于系统架构师的话题,我们可以稍后再作讨论。
3.2 架构师的职责
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。
架构师主要职责有4条:
1、确认需求
在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。
2、系统分解
依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
软件架构师的功力基本体现于此,这是一项相对复杂的工作。
3、技术选型
架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。
Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。
架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。
4、制定技术规格说明
架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。
架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。通过架构师提供的技术规格说明书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。
架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至与最终用户保持沟通。所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。
3.3 架构师的误区
1、架构师就是项目经理
架构师不是项目经理。项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能。一般小型项目中,常见项目经理兼架构师。
2、架构师负责需求分析
架构师不是需求分析员。需求分析人员的工作是收集需求和分析需求,并与最终用户、产品经理保持联系。架构师只对最终的需求审核和确认,提出需求不清和不完整的部分,他会跟需求分析员时刻保持联系。架构师是技术专家,不是业务专家。
3、架构师从来不写代码
这是一个尚存争论的问题。目前有两种观点:
观点1:架构师不写代码,写代码纯体力活,架构师写代码大材小用。架构师把UML的各种视图交给开发人员,如果有不明确的地方,可以与架构师随时沟通。
观点2:架构师本来自于程序员,只是比程序员站的层面更高,比程序员唯一多的是经验和知识,所以架构师也免不了写代码。
我个人觉得这两种说法是与架构师的出身和所处的环境有关。
架构师首先是一个技术角色,所以一定是来自于技术人员这个群体,比如系统架构师,多是来自于运维人员,可能本身代码写得并不多,或者说写不出来很漂亮的代码。软件架构师多是来自于程序员,有着程序员的血统和情怀,所以在项目开发过程中,可能会写一些核心代码。我们的理想是架构师不用写代码,但事实上有时候过于理想。架构师写不写代码,可能取决于公司的规模、文化、开发人员的素质等现实情况。
3.4 架构师的基本素质
周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。
1、沟通能力
为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。沟通能力是人类最普遍性的素质要求,技术人员好像容易忽略,架构师不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间长了总会被人发现的。还是天桥上卖大力丸的哥们说得对:光说不练假把式,光练不说傻把式。看看你周围的头头脑脑们,哪一个不是此中高手,我们不要鄙视,认为是阿谀奉承、投机钻营,你要看到积极的一面,这的确是一种能力。我自认为自己是一个略内向的人,因为我是农村出来的孩子,总带有点自卑感,总想着是金子就会发光,职业道路中确实吃了不少亏。现在,我懂得了沟通的重要性,而且也很主动跟同事们,跟老大们定时沟通,工作起来顺畅多了。这一条我认为最重要,所以排在首位。我甚至于认为下面几条忽略都行,就是这一条得牢记,有意识的提醒自己。
阅读全文
一个公司或者团队都会遇到过人员流失的问题,可能小公司可能更为严重。最可怕的是团队中重要成员的流失,将对公司的业务或者项目造成不小的麻烦。究竟怎么看待这个问题呢?很多人都发表过自己的见解,争论也很大。
阅读全文
阅读全文
php底层深度探索(1)---开篇 王泽宾 收藏
一、开篇
在开始这个专题之前,先说一点题外话。大多数人学习编程语言的时候,首先关注的是这种语言的语法及其常用函数。我学习C,Java,Php等语言就是按照这样的方式开始的。一般情况下,这个阶段需要一个月左右的时间就会完全掌握,并能基本熟练地使用。对于已有经验的同学,可能时间更短。其实各种语言的语法和常用函数都差别不大,有很多相通的地方。如果您在学习一种编程语言的时候,拿一些真正的项目任务作为实践,效果更佳,实践远胜于理论。
我们在掌握了一门编程语言之后,又会向两个方向发展:一个方向是向上延伸,从事系统框架结构的探索;另一方向是向下延伸,从事系统底层方面的研究,我大体画了一下这个学习演变过程的示意图。
注:虽然我的形象一直用着“高高手”,但我只是个菜鸟,如有雷同,纯属巧合,欢迎善意拍砖。
php的语法非常简单,正是它的简单性,使它成为了当前互联网第一编程语言。你不需要具备很多的知识就能上手,比如:你学习C语言,就必须非常了解各个变量如何定义,指针如何操作,内存如何创建销毁等等。再比如:你学习Java语言,就必须具有面向对象(OO)的基础,就必须清楚是什么时候需要封装,什么时候需要继承,什么时候需要多态,要做项目,怎么还得懂点SSH。Php的大部分使用者可能根本就没这么多讲究,有的人喜欢面向过程,那你就用面向过程的方式来写代码;有的人喜欢面向对象,那你就用面向对象的方式写代码。Php的产生缘于互联网,目前也是互联网Web2.0第一编程语言。满足用户需求永远是第一位的,可维护性暂且可以放在第二位。我们通常说Web应用永远是β版的,计划远没有变化快。
我们公司里有很多phper,我曾经问过他们:“php程序到底是如何被执行的?”,多数人似乎很难说得清楚。这种情况,其实并不奇怪,我曾经拿类似的问题问过Javaer,Javaer的回答也是如此。有的同学会问:“研究这样的问题有没有实际意义呢?”我说:“有!”。理解系统的底层,有助于你写出高效健壮的代码,你会更清楚程序的代码到底该怎么去写。另外,如果你有志去做php扩展,那就更不必说,责无旁贷。
要回答以上问题,我觉得最好的办法是阅读一下php的源码,从“根”上解决。近来我找了点时间,粗读了一遍,愿意与各位共享。
关于php的底层工作原理,一定绕不开webserver,象apache,lighttpd,nginx,iis等。我这里就选择apache为例吧。以下内容将结合apache的源码、工作原理和扩展来逐步切入php的解析过程。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/02/11/3877552.aspx
http://blog.csdn.net/wanghao72214/archive/2009/02/11/3877552.aspx
一、开篇
在开始这个专题之前,先说一点题外话。大多数人学习编程语言的时候,首先关注的是这种语言的语法及其常用函数。我学习C,Java,Php等语言就是按照这样的方式开始的。一般情况下,这个阶段需要一个月左右的时间就会完全掌握,并能基本熟练地使用。对于已有经验的同学,可能时间更短。其实各种语言的语法和常用函数都差别不大,有很多相通的地方。如果您在学习一种编程语言的时候,拿一些真正的项目任务作为实践,效果更佳,实践远胜于理论。
我们在掌握了一门编程语言之后,又会向两个方向发展:一个方向是向上延伸,从事系统框架结构的探索;另一方向是向下延伸,从事系统底层方面的研究,我大体画了一下这个学习演变过程的示意图。
注:虽然我的形象一直用着“高高手”,但我只是个菜鸟,如有雷同,纯属巧合,欢迎善意拍砖。
php的语法非常简单,正是它的简单性,使它成为了当前互联网第一编程语言。你不需要具备很多的知识就能上手,比如:你学习C语言,就必须非常了解各个变量如何定义,指针如何操作,内存如何创建销毁等等。再比如:你学习Java语言,就必须具有面向对象(OO)的基础,就必须清楚是什么时候需要封装,什么时候需要继承,什么时候需要多态,要做项目,怎么还得懂点SSH。Php的大部分使用者可能根本就没这么多讲究,有的人喜欢面向过程,那你就用面向过程的方式来写代码;有的人喜欢面向对象,那你就用面向对象的方式写代码。Php的产生缘于互联网,目前也是互联网Web2.0第一编程语言。满足用户需求永远是第一位的,可维护性暂且可以放在第二位。我们通常说Web应用永远是β版的,计划远没有变化快。
我们公司里有很多phper,我曾经问过他们:“php程序到底是如何被执行的?”,多数人似乎很难说得清楚。这种情况,其实并不奇怪,我曾经拿类似的问题问过Javaer,Javaer的回答也是如此。有的同学会问:“研究这样的问题有没有实际意义呢?”我说:“有!”。理解系统的底层,有助于你写出高效健壮的代码,你会更清楚程序的代码到底该怎么去写。另外,如果你有志去做php扩展,那就更不必说,责无旁贷。
要回答以上问题,我觉得最好的办法是阅读一下php的源码,从“根”上解决。近来我找了点时间,粗读了一遍,愿意与各位共享。
关于php的底层工作原理,一定绕不开webserver,象apache,lighttpd,nginx,iis等。我这里就选择apache为例吧。以下内容将结合apache的源码、工作原理和扩展来逐步切入php的解析过程。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/02/11/3877552.aspx
http://blog.csdn.net/wanghao72214/archive/2009/02/11/3877552.aspx
人常说:“铁打的营盘流水的兵”,网络江湖更是如此,能在一个公司待十年的,几乎是凤毛麟角。君不见这个总那个牛的,拉点风投就立个山头,等混不下去了,就挪挪窝,继续忽悠,于是造就了遍地的互联网公司,那数量跟卖菜的摊差不离。新浪的总编陈彤可以算是这个行业内的奇迹了,新浪走了多少年,他就待了多少年。他一手缔造了新浪作为新闻网站NO.1的地位,被称为“新浪文胆”,在众多的Portal中跑赢了Web1.0。
。。。。。。。。。。。
再往后,曹国伟成了老大,江湖盛传陈彤因为与杜红的恩怨,负气出走,这些就有些谣传的成分了。
正应了那一句“时势造英雄”,互联网造就陈彤,陈彤造就了新浪模式。
来源:
http://blog.csdn.net/wanghao72214/archive/2009/01/21/3848819.aspx
。。。。。。。。。。。
再往后,曹国伟成了老大,江湖盛传陈彤因为与杜红的恩怨,负气出走,这些就有些谣传的成分了。
正应了那一句“时势造英雄”,互联网造就陈彤,陈彤造就了新浪模式。
来源:
http://blog.csdn.net/wanghao72214/archive/2009/01/21/3848819.aspx
我是一个高素质的程序员。程序员,你们懂吗?白领。我知道这工作无比神圣,但我从来不炫耀,因为我很高雅,就连吃面条都很优雅。
下班了,我就在街边的一个豪华的拉面馆,要了一碗面,可口的味道使我大脑浮现出一个个表示赞美的英语单词“delicious”、“good”、“wonderful”…… 。突然,这美妙的画面被打破了。
几个民工走了进来,坐在 离我不远的桌子上,嚷嚷着要大碗牛肉面,面要多,油要多。嚷嚷完之后,又一起低声嘀咕面太贵,工钱太少什么的。 我美好的心情完全被破坏了,但我并不直接指责,我叫来服务员,对她说,给我加一个煎鸡蛋。
民工们沉默了,低下了头,为适才的表现感到羞愧,显然他们也曾经打听过加蛋的价格,明白这不是一个普通人能够承受的,他们偷偷地打量我,七匹狼皮带扣折射的阳光令他们睁不开眼。
在他们故意强压但仍显粗鲁的吃面声中,我付了钱。随着一个优美的手势,一辆蓝色的TAXI谦卑地停在我的身前。 这一切,让他们明白了自己的身份。 特别是,桌子上,白碗里,那个静浮着的完整的煎鸡蛋。我在阿嫂面馆用完晚餐后,拦下一辆TAXI,径直往全市最豪华的网吧——新时空网吧驶去。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/01/20/3839508.aspx
下班了,我就在街边的一个豪华的拉面馆,要了一碗面,可口的味道使我大脑浮现出一个个表示赞美的英语单词“delicious”、“good”、“wonderful”…… 。突然,这美妙的画面被打破了。
几个民工走了进来,坐在 离我不远的桌子上,嚷嚷着要大碗牛肉面,面要多,油要多。嚷嚷完之后,又一起低声嘀咕面太贵,工钱太少什么的。 我美好的心情完全被破坏了,但我并不直接指责,我叫来服务员,对她说,给我加一个煎鸡蛋。
民工们沉默了,低下了头,为适才的表现感到羞愧,显然他们也曾经打听过加蛋的价格,明白这不是一个普通人能够承受的,他们偷偷地打量我,七匹狼皮带扣折射的阳光令他们睁不开眼。
在他们故意强压但仍显粗鲁的吃面声中,我付了钱。随着一个优美的手势,一辆蓝色的TAXI谦卑地停在我的身前。 这一切,让他们明白了自己的身份。 特别是,桌子上,白碗里,那个静浮着的完整的煎鸡蛋。我在阿嫂面馆用完晚餐后,拦下一辆TAXI,径直往全市最豪华的网吧——新时空网吧驶去。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/01/20/3839508.aspx
前一段时间我们公司的mail系统客户,一直反映我们的mail系统有问题,销售、客服人员以及运维人员都搞不定。具体的症状大体是这样:“通过webmail系统收发邮件非常慢,很多时候直接断掉了”。这个客户是我们的一个大客户,属于中字头的公司,态度强硬,巨牛。运维人员反映说:客户的网络是光纤接入,速度非常快,ping值不超过5ms,而且没有丢包现象,所以应该不是网络的原因。阅读全文
"在我们这网吧的客人98%都TM的SB,开机不会,输入法切换不会,字母大小写转换不会,玩私服登陆器怎么用不会,QQ开语音不会,进了游戏不会退出,私服服务器关了说我机子问题,我草,老子真想一把捏死他,捏死再揉成一团,再搓成麻花,放油锅里炸,再拿出来一脚踩的粉碎。
阅读全文
阅读全文
Apache Hook机制
Apache的Hook机制是指:Apache 允许模块(包括内部模块和外部模块,例如mod_php5.so,mod_perl.so等)将自定义的函数注入到请求处理循环中。换句话说,模块可以在Apache的任何一个处理阶段中挂接(Hook)上自己的处理函数,从而参与Apache的请求处理过程。
mod_php5.so/ php5apache2.dll就是将所包含的自定义函数,通过Hook机制注入到Apache中,在Apache处理流程的各个阶段负责处理php请求。
关于Hook机制在Windows系统开发也经常遇到,在Windows开发既有系统级的钩子,又有应用级的钩子。常见的翻译软件(例如金山词霸等等)的屏幕取词功能,大多数是通过安装系统级钩子函数完成的,将自定义函数替换gdi32.dll中的屏幕输出的绘制函数。
Apache 服务器的体系结构的最大特点,就是高度模块化。如果你为了追求处理效率,可以把这些dso模块在apache编译的时候静态链入,这样会提高Apache 5%左右的处理性能。
Apache概述
Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台、高效和稳定而闻名。按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额。尤其是在X(Unix/Linux)平台上,Apache是最常见的选择。其它的Web Server产品,比如IIS,只能运行在Windows平台上,是基于微软.Net架构技术的不二选择。
Apache并不是没有缺点,它最为诟病的一点就是变得越来越重,被普遍认为是重量级的WebServer。所以,近年来又涌现出了很多轻量级的替代产品,比如lighttpd,nginx等等,这些WebServer的优点是运行效率很高,但缺点也很明显,成熟度往往要低于Apache,通常只能用于某些特定场合,。
l Apache组件逻辑图
Apache是基于模块化设计的,总体上看起来代码的可读性高于php的代码,它的核心代码并不多,大多数的功能都被分散到各个模块中,各个模块在系统启动的时候按需载入。你如果想要阅读Apache的源代码,建议你直接从main.c文件读起,系统最主要的处理逻辑都包含在里面。MPM(Multi -Processing Modules,多重处理模块)是Apache的核心组件之一,Apache通过MPM来使用操作系统的资源,对进程和线程池进行管理。Apache为了能够获得最好的运行性能,针对不同的平台(Unix/Linux、Window)做了优化,为不同的平台提供了不同的MPM,用户可以根据实际情况进行选择,其中最常使用的MPM有prefork和worker两种。至于您的服务器正以哪种方式运行,取决于安装Apache过程中指定的MPM编译参数,在X系统上默认的编译参数为prefork。由于大多数的Unix都不支持真正的线程,所以采用了预派生子进程(prefork)方式,象Windows或者Solaris这些支持线程的平台,基于多进程多线程混合的worker模式是一种不错的选择。对此感兴趣的同学可以阅读有关资料,此处不再多讲。Apache中还有一个重要的组件就是APR(Apache portable Runtime Library),即Apache可移植运行库,它是一个对操作系统调用的抽象库,用来实现Apache内部组件对操作系统的使用,提高系统的可移植性。Apache对于php的解析,就是通过众多Module中的php Module来完成的。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/02/13/3886696.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/02/21/3916825.aspx
Apache的Hook机制是指:Apache 允许模块(包括内部模块和外部模块,例如mod_php5.so,mod_perl.so等)将自定义的函数注入到请求处理循环中。换句话说,模块可以在Apache的任何一个处理阶段中挂接(Hook)上自己的处理函数,从而参与Apache的请求处理过程。
mod_php5.so/ php5apache2.dll就是将所包含的自定义函数,通过Hook机制注入到Apache中,在Apache处理流程的各个阶段负责处理php请求。
关于Hook机制在Windows系统开发也经常遇到,在Windows开发既有系统级的钩子,又有应用级的钩子。常见的翻译软件(例如金山词霸等等)的屏幕取词功能,大多数是通过安装系统级钩子函数完成的,将自定义函数替换gdi32.dll中的屏幕输出的绘制函数。
Apache 服务器的体系结构的最大特点,就是高度模块化。如果你为了追求处理效率,可以把这些dso模块在apache编译的时候静态链入,这样会提高Apache 5%左右的处理性能。
Apache概述
Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台、高效和稳定而闻名。按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额。尤其是在X(Unix/Linux)平台上,Apache是最常见的选择。其它的Web Server产品,比如IIS,只能运行在Windows平台上,是基于微软.Net架构技术的不二选择。
Apache并不是没有缺点,它最为诟病的一点就是变得越来越重,被普遍认为是重量级的WebServer。所以,近年来又涌现出了很多轻量级的替代产品,比如lighttpd,nginx等等,这些WebServer的优点是运行效率很高,但缺点也很明显,成熟度往往要低于Apache,通常只能用于某些特定场合,。
l Apache组件逻辑图
Apache是基于模块化设计的,总体上看起来代码的可读性高于php的代码,它的核心代码并不多,大多数的功能都被分散到各个模块中,各个模块在系统启动的时候按需载入。你如果想要阅读Apache的源代码,建议你直接从main.c文件读起,系统最主要的处理逻辑都包含在里面。MPM(Multi -Processing Modules,多重处理模块)是Apache的核心组件之一,Apache通过MPM来使用操作系统的资源,对进程和线程池进行管理。Apache为了能够获得最好的运行性能,针对不同的平台(Unix/Linux、Window)做了优化,为不同的平台提供了不同的MPM,用户可以根据实际情况进行选择,其中最常使用的MPM有prefork和worker两种。至于您的服务器正以哪种方式运行,取决于安装Apache过程中指定的MPM编译参数,在X系统上默认的编译参数为prefork。由于大多数的Unix都不支持真正的线程,所以采用了预派生子进程(prefork)方式,象Windows或者Solaris这些支持线程的平台,基于多进程多线程混合的worker模式是一种不错的选择。对此感兴趣的同学可以阅读有关资料,此处不再多讲。Apache中还有一个重要的组件就是APR(Apache portable Runtime Library),即Apache可移植运行库,它是一个对操作系统调用的抽象库,用来实现Apache内部组件对操作系统的使用,提高系统的可移植性。Apache对于php的解析,就是通过众多Module中的php Module来完成的。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/02/13/3886696.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/02/21/3916825.aspx
经常有朋友对几种开发语言进行争论,有的说Java好,有的说.Net好,还有的说Php好,最后往往是变成了互相攻击,不欢而散。关于开发语言之争本质上是技术体系之争,开发语言也不过是某种技术体系里构建应用的工具。实际上,对于一个问题往往有多种多样的解决方案,可能每一种技术体系都能最终实现,但“能不能”跟“好不好”是两回事,这里面有个性价比的问题。就象我们打蚊子一样,我们可以用苍蝇拍去拍,也可以用大炮去轰,最后都能把蚊子给打死。大炮威力无比,无所不能,杀伤力极大,但对于打蚊子而言,还真不如苍蝇拍好用。采用重量级的的Java技术去做Web2.0的网站,就跟大炮轰蚊子的效果差不多。当然,反过来,也有的时候会出现“小马拉大车,瘦驴拉硬屎”的情况,比如用Php去开发一个银行结算系统,肯定也能做出来,速度倒是刷刷的,但一种弱类型的语言可能在运行时充满了变数,又有哪家银行敢冒这样的风险,他们宁可选用比较成熟的Java技术解决方案,速度虽慢,但用着心里踏实。
那么我们到底应该选择什么样的技术体系呢?技术体系的选择,对于一个IT公司而言,主要取决于它的商业目标,反过来说,商业目标需要一个合适的技术体系去推动。比如,公司是做电信项目系统集成的,那就基本确定以J2EE平台技术为主了;如果公司准备运营Web2.0网站,那么LAMP就是最好的选择,以后开发的语言就是3P(Php/Perl/Python)了。一个IT公司只有选择了合适的技术体系,才能更好更快地实现公司的商业目标。对于个人而言,技术体系的选择,可能会在很长时间内,决定了你的职业发展目标,比如以后你是做网站还是企业应用,你是做产品还是做项目。
技术体系的选择和确定一般是由CTO或者首架依照公司的商业目标确定,也有时候取决于客户或者行业的要求。当然,如果只以系统实现作为目的的话,架构师就可以参与实现技术的确定了,一旦选定了某种技术体系的话,所有的开发活动都被限定这种技术范围之内。作为架构师而言,必须具备较为宽广的知识体系,技术体系的基本知识便是其中之一。后面略。。。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/03/20/4006628.aspx
那么我们到底应该选择什么样的技术体系呢?技术体系的选择,对于一个IT公司而言,主要取决于它的商业目标,反过来说,商业目标需要一个合适的技术体系去推动。比如,公司是做电信项目系统集成的,那就基本确定以J2EE平台技术为主了;如果公司准备运营Web2.0网站,那么LAMP就是最好的选择,以后开发的语言就是3P(Php/Perl/Python)了。一个IT公司只有选择了合适的技术体系,才能更好更快地实现公司的商业目标。对于个人而言,技术体系的选择,可能会在很长时间内,决定了你的职业发展目标,比如以后你是做网站还是企业应用,你是做产品还是做项目。
技术体系的选择和确定一般是由CTO或者首架依照公司的商业目标确定,也有时候取决于客户或者行业的要求。当然,如果只以系统实现作为目的的话,架构师就可以参与实现技术的确定了,一旦选定了某种技术体系的话,所有的开发活动都被限定这种技术范围之内。作为架构师而言,必须具备较为宽广的知识体系,技术体系的基本知识便是其中之一。后面略。。。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/03/20/4006628.aspx
为什么要讲这样一个话题,主要源于最近碰到的几件事情。一个朋友想要做网站,给我讲了讲他的初步方案,毫无疑问,这是一个非常宏伟的综合性的网站,但我只听了一部分就让他打住了。我问他:你的网站到底跟别人有什么不同?他说:我的网站很专业很全面。我说:这没有意义,如果你还没有找到跟别人不同的话,建议你不要浪费那个精力和投入了。
如果个人或者小公司去做综合类网站,这是很不靠谱的事。现如今小网站的存活之道一定是垂直的,而且必须要有一个非常显著的亮点,只有把这个亮点深挖进去,吃透了,而且还能将它做到极致才行。从一开始就想搞一个大而全的网站,设置那么多的频道,这不仅对于拉动流量没有效果,而且还会把你的亮点给淹没了。如果你要做综合类网站,那么你需要有实力、不差钱才行,推广手段就是用钱去砸,小网站绝对不会有这么大的财力去拼。
最近比较热的一个网站要算是Twitter了,这个网站也太简单了,就是一个微型博克,但就是这么简单的一个产品,竟然火了,我一直搞不清楚到底有啥用,后来有个朋友帮我分析了一下:Twitter即时性非常强,比如有个突发性的事件发生,你到Twitter看看去,不出几分钟就会很多人更新这方面的内容,等到新闻类网站开始发布的时候,Twitter上的有关信息都几乎满了。新闻新闻,不新还叫什么新闻。还有,如果你在上面发一个求助信息,顷刻之间很多答案扑面而来,这是一种多么好的体验啊。想一想,这么发展下去,也确实让google感到了一丝威胁。简单的产品,专注于信息的即时性,简单到脖子上扛个脑袋就会用。
被称为“互联网公敌”的腾讯,在任何一个领域的动作,都会令该领域的对手们不寒而栗,想想也是,被QQ粘住了几个亿的用户,就跟挟持一样,跟谁干谁能不怕,它在每一个领域的发展都是摧枯拉朽之势。我们得承认:腾讯的所有产品的成功首先得归功于QQ以前的积累。QQ又是怎么起家的?一句话:简单和专注。QQ的初期界面不花哨,操作也很方便,而且就专注于IM。就是这样的一个产品,让腾讯成为今天的巨无霸。
你如果再仔细想想,其实腾训的每一款产品后面都有一个独立的团队在运营,都有一个团队在专注于这个产品,本质上跟一个公司没有太大的区别。它们的产品向来不花哨,但用户体验都不错,有人说腾训擅长抄袭,对!抄袭领头羊的产品实际上意味着沿袭了用户已经形成的使用习惯,这样的捷径干嘛不走呢,难道非得把用户的使用习惯再重新教育一遍吗。马化滕为什么把自己封为首席体验师,因为他已经尝到了甜头,只是把成功的经验不断地复制,简单和关注是一个产品成功的法宝。再看看,像新浪这样的门户,如果把每一个频道切出来看,是不是比某些专业网站更专业,是不是比它们更关注于某一领域。
这几天跟一个专注于移动领域产品的公司谈合作,真的是让我更体验了一把专注和简单的力量,由于涉及商业秘密,暂且不谈细节,但他们竟然将一个小小的功能做到如此之深,实在是令人佩服。每一个公司都有自己的定位,没有做大之前,切不要全面开花,先把一个领域做深,然后围绕这个领域往外扩展,这才是产品的发展之道。当你在某个领域达到绝对的领先之后,就会逐渐产生马太效应,从而达到强者越强,弱者越弱,那时候就有了大而全的资本了。
其实做人做事也是有这个道理,做技术的人往往开始很茫然,做几年之后会更茫然,Java搞搞,.net学学,php也玩玩,很快就迷失了方向。计算机软件的知识体系是一个典型的倒金子塔形状,基础就是那么一点点数学知识,但是往上发展却出现了无数的分支。所以,只要你把基础打牢了,专注于某一种技术体系,深入下去,成为本领域的技术专家,其它领域定会触类旁通,切不可眉毛胡子一把抓。这才是技术人员的发展之道。借用高人的一句话送给大家:不要边跑边撒尿,这样的结果就是跑也没跑快,尿也没撒好,到头来还弄了一身的臊。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/03/25/4023858.aspx
如果个人或者小公司去做综合类网站,这是很不靠谱的事。现如今小网站的存活之道一定是垂直的,而且必须要有一个非常显著的亮点,只有把这个亮点深挖进去,吃透了,而且还能将它做到极致才行。从一开始就想搞一个大而全的网站,设置那么多的频道,这不仅对于拉动流量没有效果,而且还会把你的亮点给淹没了。如果你要做综合类网站,那么你需要有实力、不差钱才行,推广手段就是用钱去砸,小网站绝对不会有这么大的财力去拼。
最近比较热的一个网站要算是Twitter了,这个网站也太简单了,就是一个微型博克,但就是这么简单的一个产品,竟然火了,我一直搞不清楚到底有啥用,后来有个朋友帮我分析了一下:Twitter即时性非常强,比如有个突发性的事件发生,你到Twitter看看去,不出几分钟就会很多人更新这方面的内容,等到新闻类网站开始发布的时候,Twitter上的有关信息都几乎满了。新闻新闻,不新还叫什么新闻。还有,如果你在上面发一个求助信息,顷刻之间很多答案扑面而来,这是一种多么好的体验啊。想一想,这么发展下去,也确实让google感到了一丝威胁。简单的产品,专注于信息的即时性,简单到脖子上扛个脑袋就会用。
被称为“互联网公敌”的腾讯,在任何一个领域的动作,都会令该领域的对手们不寒而栗,想想也是,被QQ粘住了几个亿的用户,就跟挟持一样,跟谁干谁能不怕,它在每一个领域的发展都是摧枯拉朽之势。我们得承认:腾讯的所有产品的成功首先得归功于QQ以前的积累。QQ又是怎么起家的?一句话:简单和专注。QQ的初期界面不花哨,操作也很方便,而且就专注于IM。就是这样的一个产品,让腾讯成为今天的巨无霸。
你如果再仔细想想,其实腾训的每一款产品后面都有一个独立的团队在运营,都有一个团队在专注于这个产品,本质上跟一个公司没有太大的区别。它们的产品向来不花哨,但用户体验都不错,有人说腾训擅长抄袭,对!抄袭领头羊的产品实际上意味着沿袭了用户已经形成的使用习惯,这样的捷径干嘛不走呢,难道非得把用户的使用习惯再重新教育一遍吗。马化滕为什么把自己封为首席体验师,因为他已经尝到了甜头,只是把成功的经验不断地复制,简单和关注是一个产品成功的法宝。再看看,像新浪这样的门户,如果把每一个频道切出来看,是不是比某些专业网站更专业,是不是比它们更关注于某一领域。
这几天跟一个专注于移动领域产品的公司谈合作,真的是让我更体验了一把专注和简单的力量,由于涉及商业秘密,暂且不谈细节,但他们竟然将一个小小的功能做到如此之深,实在是令人佩服。每一个公司都有自己的定位,没有做大之前,切不要全面开花,先把一个领域做深,然后围绕这个领域往外扩展,这才是产品的发展之道。当你在某个领域达到绝对的领先之后,就会逐渐产生马太效应,从而达到强者越强,弱者越弱,那时候就有了大而全的资本了。
其实做人做事也是有这个道理,做技术的人往往开始很茫然,做几年之后会更茫然,Java搞搞,.net学学,php也玩玩,很快就迷失了方向。计算机软件的知识体系是一个典型的倒金子塔形状,基础就是那么一点点数学知识,但是往上发展却出现了无数的分支。所以,只要你把基础打牢了,专注于某一种技术体系,深入下去,成为本领域的技术专家,其它领域定会触类旁通,切不可眉毛胡子一把抓。这才是技术人员的发展之道。借用高人的一句话送给大家:不要边跑边撒尿,这样的结果就是跑也没跑快,尿也没撒好,到头来还弄了一身的臊。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanghao72214/archive/2009/03/25/4023858.aspx
先说本人,俺对c,php,perl都有过几年开发经验。 说实话java我并不精通。讨论的重点java在利用spring等架构的web开发,对比php等在开发运维和性能方面有那些优势。尤其在电子商务等稍稍复杂一些的网站,java在业务实现上有那些优势。阅读全文
在PHPChina的周末主题讨论会中,来自PEA(PHPChina推广的PHP策进会)的PHP爱好者们也有幸与技术总监们进行了面对面的对话。这里我们向大家分享其中精彩的一部分。
PHPer李恩洪是一个SOHO族的PHP使用者,他经常用PHP来做外包项目,因此,他的项目经验比较丰富。今天他提出了如何实现HTTP长链接,以便实现聊天室等即时交流平台。
对于这个问题,搜狐社区的技术总监董江明说:“并不是所有的平台都必须用PHP去搭建。比如说在搜狐,他们可以用C来实现一个HTTP的长链接系统,让这个系统来保持与客户端的即时通讯。例如,这个系统可以1秒钟与客户端联系一次,如果需要发送数据的话,就去后台调用PHP获取。这么做的原因是因为Apache从本质上来说不适合做这种长链接的业务,而保持长连接的事情让适合它的系统去操作。
粉丝网的技术总监孙翯也表示,HTTP本身就不是为了保持长链接存在的。所以不能考虑用标准的LAMP架构来实现这个功能,只能让浏览器认为这个页面永远没有传输完成。另外,Comsenz的CEO戴志康也说到,如果要实现这种长链接最好不要用Web Server来处理,而且如果用PHP来定义接口协议的话,也是可以实现的。
关于PHPer的发展,来自北京PEA的周伟伟说到。他目前的工作很难让他有进一步的学习的可能,所以他向大家询问如何才能进一步地发展自己。
对此,新浪的陈理捷说到,你可以利用平时的业务时间多接触开源的项目。这些项目可以在很多PHP站点上找到,比如PHPChina.com、PHPe.net等等。粉丝网总监孙翯表示初学者应该多读些开源的代码,在这个方面是没有捷径可以走的。看代码的时候要学习别人是怎么解决的,这样自己再遇到类似问题的时候就会有比较清晰的思路。
最后,PHPer江宁说到,PHP代码给他的感觉是比较松散,没有好的代码框架。
在框架问题上,Comsenz的戴志康说到,对于初学者来说,可以先选择一个框架来写。慢慢地就会发现一些问题,然后再逐步改进。尤其是在使用框架的时候要注意速度的问题和安全性。比如用户输入的过滤流程就需要特别注意。每一个PHPer将来如果有一个自己收集整理出来的代码框架是比较幸运的事情。
最后,技术总监们也对PHPer们提出,虽然PHP可以很快地入门上手,但是在学习的过程中需要掌握扎实的Web网络编程的知识,协调好客户端与服务器之间的关系与流程,这样才能平衡地发展自己的技术能力。
PHPer李恩洪是一个SOHO族的PHP使用者,他经常用PHP来做外包项目,因此,他的项目经验比较丰富。今天他提出了如何实现HTTP长链接,以便实现聊天室等即时交流平台。
对于这个问题,搜狐社区的技术总监董江明说:“并不是所有的平台都必须用PHP去搭建。比如说在搜狐,他们可以用C来实现一个HTTP的长链接系统,让这个系统来保持与客户端的即时通讯。例如,这个系统可以1秒钟与客户端联系一次,如果需要发送数据的话,就去后台调用PHP获取。这么做的原因是因为Apache从本质上来说不适合做这种长链接的业务,而保持长连接的事情让适合它的系统去操作。
粉丝网的技术总监孙翯也表示,HTTP本身就不是为了保持长链接存在的。所以不能考虑用标准的LAMP架构来实现这个功能,只能让浏览器认为这个页面永远没有传输完成。另外,Comsenz的CEO戴志康也说到,如果要实现这种长链接最好不要用Web Server来处理,而且如果用PHP来定义接口协议的话,也是可以实现的。
关于PHPer的发展,来自北京PEA的周伟伟说到。他目前的工作很难让他有进一步的学习的可能,所以他向大家询问如何才能进一步地发展自己。
对此,新浪的陈理捷说到,你可以利用平时的业务时间多接触开源的项目。这些项目可以在很多PHP站点上找到,比如PHPChina.com、PHPe.net等等。粉丝网总监孙翯表示初学者应该多读些开源的代码,在这个方面是没有捷径可以走的。看代码的时候要学习别人是怎么解决的,这样自己再遇到类似问题的时候就会有比较清晰的思路。
最后,PHPer江宁说到,PHP代码给他的感觉是比较松散,没有好的代码框架。
在框架问题上,Comsenz的戴志康说到,对于初学者来说,可以先选择一个框架来写。慢慢地就会发现一些问题,然后再逐步改进。尤其是在使用框架的时候要注意速度的问题和安全性。比如用户输入的过滤流程就需要特别注意。每一个PHPer将来如果有一个自己收集整理出来的代码框架是比较幸运的事情。
最后,技术总监们也对PHPer们提出,虽然PHP可以很快地入门上手,但是在学习的过程中需要掌握扎实的Web网络编程的知识,协调好客户端与服务器之间的关系与流程,这样才能平衡地发展自己的技术能力。
以下只是网络转载而来,本人不对其真实性做任何保证,操作有风险,本人不负任何责任
1.给PSP3K充电到100%
2.有条件的最好再外接直流电源
3.在电力充足的条件下升级到官方5.03固件
下载地址:http://psp.cngba.com/pspsoft/official/2009012161352.shtml
4.下载HEN2
http://psp.cngba.com/pspsoft/dark_alex/2009052671551.shtml
5.下载5.03GEN for HEN-APSP破解系统
http://psp.cngba.com/pspsoft/dark_alex/2009060672473.shtml
6.恢复出厂设置
7.主题一定要改成“CLASSIC”,也就是“经典”,彻底关机!
8.阅读http://www.cngba.com/thread-17961535-1-1.html
===========华丽的V V分割线===========
我是按照插件作者提供的官方方法自己动手破解的,走了很多弯路,幸运的是PSP没成砖,现在已经可以顺利玩ISO游戏了,想在回头想想其实真的很简单.如果你是新买的PSP一般商家都会帮助你破解,如果你买的很早,一般不超过1年,商家也会义务帮助你破解的.如果你像我一样喜欢自己动手体会那种刺激感觉,那么你要做好充分的思想准备哦
1.主机设定-》系统语言-》english -》文字设定->选择:850
2.phto->memery stick 2秒左右再点击一次确认键,屏幕变为绿屏表示成功(自动重启),如不成功会死机,就按下关机键向上定住10秒。
3.到game选择memery stick进去:点击5.03GEMC就完成。
严重警告:本主机不能上网升级,而改变主机程序如升级后就不能再运行下载的游戏,操作错误:升级的话会变砖头机,本店不保修。
1.给PSP3K充电到100%
2.有条件的最好再外接直流电源
3.在电力充足的条件下升级到官方5.03固件
下载地址:http://psp.cngba.com/pspsoft/official/2009012161352.shtml
4.下载HEN2
http://psp.cngba.com/pspsoft/dark_alex/2009052671551.shtml
5.下载5.03GEN for HEN-APSP破解系统
http://psp.cngba.com/pspsoft/dark_alex/2009060672473.shtml
6.恢复出厂设置
7.主题一定要改成“CLASSIC”,也就是“经典”,彻底关机!
8.阅读http://www.cngba.com/thread-17961535-1-1.html
===========华丽的V V分割线===========
我是按照插件作者提供的官方方法自己动手破解的,走了很多弯路,幸运的是PSP没成砖,现在已经可以顺利玩ISO游戏了,想在回头想想其实真的很简单.如果你是新买的PSP一般商家都会帮助你破解,如果你买的很早,一般不超过1年,商家也会义务帮助你破解的.如果你像我一样喜欢自己动手体会那种刺激感觉,那么你要做好充分的思想准备哦
1.主机设定-》系统语言-》english -》文字设定->选择:850
2.phto->memery stick 2秒左右再点击一次确认键,屏幕变为绿屏表示成功(自动重启),如不成功会死机,就按下关机键向上定住10秒。
3.到game选择memery stick进去:点击5.03GEMC就完成。
严重警告:本主机不能上网升级,而改变主机程序如升级后就不能再运行下载的游戏,操作错误:升级的话会变砖头机,本店不保修。