如何避免数据和文件系统因掉电而损坏??阅读全文
由于STL是一个统一的整体,map的很多用法都和STL中其它的东西结合在一起;map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些……
阅读全文
阅读全文
SUSE防火墙查看命令
SUSE防火墙立即停止命令
在SUSE11.2下测试通过。
阅读全文
linux:~ # chkconfig -list|grep -i fire
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SUSE防火墙立即停止命令
linux:~ # SuSEfirewall2 stop
SuSEfirewall2: Warning: ip6tables does not support state matching. Extended IPv6 support disabled.
SuSEfirewall2: batch committing...
SuSEfirewall2: Firewall rules unloaded.
SuSEfirewall2: Warning: ip6tables does not support state matching. Extended IPv6 support disabled.
SuSEfirewall2: batch committing...
SuSEfirewall2: Firewall rules unloaded.
在SUSE11.2下测试通过。
阅读全文
默认 ssh 是 22 端口……
用这个命令netstat -a | grep ssh
或者ps -ef | grep ssh
这个命令都可以
telent 127.0.0.1 22
阅读全文
用这个命令netstat -a | grep ssh
或者ps -ef | grep ssh
这个命令都可以
telent 127.0.0.1 22
linux-jvm6:/home/jackxiang/桌面 # netstat -atlunp|grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6207/sshd
tcp 0 0 :::22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6207/sshd
tcp 0 0 :::22
阅读全文
声明:本人非专业的软件配置管理人员,只是日常工作中经常使用,以下内容均代表个人观点,欢迎专业人士指正、补充。
阅读全文
阅读全文
理论上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