WINDOWSPERL,新人求助windows下netsnmp怎么连接Python?
由于需要练手,准备将nagios的bash shell/perl监控脚本改用Python写,而监控机上yum安装的net-snmp默认没有启用python模块,这里重新编译安装一个。

需要准备的安装包包括:
setuptools-0.6c11-py2.4.egg //提供easy_install指令用来直接在线安装python模块,类似于perl的 cpan install;
net-snmp-5.7.2.tar.gz //net-snmp的源码包。
先安装setuptools-0.6c11-py2.4.egg,否则net-snmp编译安装无法通过。
#chmod 755 setuptools-0.6c11-py2.4.egg
#./setuptools-0.6c11-py2.4.egg
接着,安装net-snmp
#tar -zxvf net-snmp-5.7.2.tar.gz
#cd net-snmp-5.7.2
#./configure --prefix=/usr/local/netsnmp --with-python-modules
#make
#make install
#cd python
#python setup.py build
#python setup.py test
出现以下错误:
ImportError: libnetsnmp.so.30: cannot open shared object file: No such file or directory
由于net-snmp是编译安装,且安装路径为/usr/local/netsnmp,以至于找不到相应模块,解决方法:
#echo "/usr/local/netsnmp/lib" >> /etc/ld.so.conf
#ldconfig
#python setup.py test//出现类似下图内容即正常:
#python setup.py install
测试net-snmp的python模块的导入:
#python
>>>import netsnmp //如果没有报错的话,则net-snmp的python模块启用成功。https://iknow-pic.cdn.bcebos.com/caef76094b36acaf01099f4177d98d1000e99ca5
苹果mac电脑为啥如此受欢迎?
苹果电脑一直谈不上有多受欢迎吧,毕竟MacBook Air/pro分辨7999元和9999元的基础售价,实在谈不上多又好,而且这个售价的电脑居然不带独显,相对于同价位别的品牌,都能买到市场上的中高端配置的游戏本了,另外还有Mac系统,喜欢的人觉得像婴儿般的肌肤丝滑流畅,不喜欢的人觉得反人类。
所以即使从市场占比上看,苹果电脑也谈不上多么受欢迎,使用人群还是偏小众了一点。
你以为我是果黑吗,其实不是,从2015款到2017款/2019款/2020 m1款一路用来的老用户,只有一句赞叹,苹果Mac电脑yysd。
接下来说说对于一名多年使用的老用户来说,自行划分的苹果电脑的三个时代。
2015款MacBook Pro最后一代信仰 MacBook Pro 2015第一台电脑其实是2015款 MacBook Air,用了半年多之后实在受不了那个泛白的屏幕和颗粒感,加钱换了MacBook Pro。
相当于同一年都上手了2015款的Air/pro,其实大部分人上手苹果电脑的原因很简单,非常非常有腔调(还是觉得那两个字形容起来酣畅淋漓,但怕被说是脏话),当时市场上几乎还都是塑料质感的黑色机身,只有苹果是精致的银色一体化铝合金机身,还带着白色的信仰灯,星巴克最强氛围组这个称号,还有谁能配得上。
其实用的时间长了之后,你会发现2015款MacBook Pro,真的是最后一代信仰了,在当时的工业设计及制造工艺上,这款电脑是当之无愧的巅峰,抛开信仰灯不说,极其好用的磁吸充电接口,单手开合的屏幕,p3广色域级别的视网膜屏幕,完善的接口,流畅的系统,吊打同行6-8小时的续航时间,在那个时代做到极致的机身厚度和重量等等等等,即使在2021年的今天再次打开朋友的这款电脑(后面出给朋友了),依然是好不落后的体验和外观,满满的情怀。
只说接口,后面的都是弟弟当然这款电脑也不是没有缺点,最明显的就是屏幕涂层,一旦保护不好就像白癜风一样这边一块那边一块,另外还有软件兼容性,当时wps还没有适配,微软的office跨平台文件格式兼容性又极度不友好,就连基础的办公可能有时候都让人绞尽脑汁,但这些都没办法阻挡它的出色,在那时候就外观设计而言,这是一款最好的电脑,没有之一。
开始向未来改变的2017/2019款MacBook Pro说句走心的话,有时候真的不能只看网上的评测,衣服合不合适,要穿上身才知道,2015款之后的Mac电脑也是这样。
没了信仰灯,没了丰富又实用的接口,没了磁吸充电接口之后,几乎所有网友包括我在内,对苹果充满了深深的失望,当时计划2015款电脑用到寿命结束后就更换戴尔的xps系列了,但是当时准备换电脑的时候,刚好朋友买了xps13,带着出差用了20多天,感觉还是不适合,于是最终还是选择入手了2017款MacBook Pro(因为穷,所以每个系列只入手乞丐版,不带Touch Bar),用了一年的时候刚好有机会,朋友不习惯Touch Bar,加了1千多换成了2019款带Touch Bar的MacBook Pro。
说实话,拿到手上不仅没有失望,反而充满了惊喜,虽然没有信仰灯,但是金属抛光的logo更显质感也更绅士,而且我终于可以选择自己喜欢的黑色了,也更加低调和沉稳,携带出差的时候比之前的电脑更薄更轻,几乎达到了Air的厚度,虽然磁吸接口没有了,接口也不够丰富,但对日常来说几乎没有影响。
不得不说苹果是一个非常会做减法的公司,又或者是消费者会随着产品的设计做改变,虽然因为接口原因配备了转换坞,但实际用上的时候很少,基本都是在线传文件或者iCloud解决,u盘和硬盘除了备份资料的时候拿出来用下,平常已经吃灰很久了。
一直以来苹果在屏幕上的调教就没有对手,最大的对手就是自己,2019款屏幕除了保持之前屏幕优势的同时,还增加了手机上的原彩显示自动调节,另外Touch Bar在视频剪辑或看视频的时候非常好用,开盖自动唤醒屏幕后指纹解锁,也让电脑变得比之前更加方便。
最需要说的是,到2019款的时候,软件兼容性基本已经得到了非常大的改善,对于我来说,常规办公已经没有什么不方便的地方了,这个时候的mac电脑,我觉得像一个青年,有朝气,有好看的外形,也有足够用的内在。
唯一需要啰嗦的,还是那个经常有跳水可能的intel芯片和可怜的集成显卡,每次看着朋友欢快地用笔记本打游戏,看看自己的机子只能安慰说这把年纪了,还打什么游戏。
这就是未来 M1 2020 MacBook Air没错,这就是未来,从m1开始。
为什么从这款开始选择入手Air,原因是因为这代的Air足够好(没错,就是因为贫穷限制了想象力),相较于之前的Air,从这款开始最大的短板屏幕得到了补齐,至于Touch Bar,那个也不是刚需(主要还是能省下来2k),至于被阉割了一个核心的显卡,拜托,集成显卡这么多年也都习惯了,被阉割了10%左右的性能,而且还不是物理阉割,只是软件屏蔽,有什么不能接受的。
万一之后能软件绕过封锁,岂不是赚了?
相当于桌面级的i9处理器➕gtx1050显卡的性能,无风扇设计,p3广色域➕视网膜级别➕原彩显示的屏幕,续航时间长达18个小时,基本3天左右充一天电的办公强度,香不香,谁还敢说苹果没有性价比,从这代开始就有了。
更加重要的是,一直以来Mac系统下的兼容性,从m1开始就可以说再见了,大部分的iOS软件都能在电脑上运行,而这个时候的微软,才开始win11上运行安卓的最初测试,这就是m1下的mac划时代的未来,如果你非要抬杠说iOS软件质量好但我就是想用win11玩安卓,那么也是可以的,只要你开心,愿意动手安装win11.
当然苹果的老毛病,每一款划时代的产片都有些毛病,表现在m1上面的就是硬盘磨损,据说因为新款芯片的原因,会导致硬盘读取数据异常,造成不可挽回的损耗,有网友说可能硬盘使用寿命就是3年的左右的时间。
所以你觉得我会在乎吗,我当然在乎,所以一般没有移动办公需求的时候就外挂硬盘,吃灰吃了很久的扩展坞和硬盘也终于有了用武之地。
这就是我为什么说苹果Mac电脑没有想象中那么受欢迎,毕竟太小众,生活中实际用Mac电脑的人群不多,但又确实受欢迎,对于忠实粉丝来说,尤其是m1芯片的mac电脑,不仅保证了传统的品质,还增强了内功,我不会说它完美,但我愿称m1芯片的Mac电脑为历代以来的最强。
qt编程语言是什么?
Qt是一种跨平台的C++应用程序开发框架,是由挪威Trolltech公司(现在是Qt公司)创建的。它提供了一组工具和类库,可用于开发图形界面应用程序、数据库应用程序、网络应用程序和其他类型的软件。Qt提供了一种高效、易于使用、灵活的编程方式,支持Windows、Linux、Mac OS、Android等多个操作系统平台,并且可以生成本地化的代码。
Qt已经成为许多领域中应用广泛的开发工具,如移动设备应用程序、汽车娱乐系统、工控系统、航空航天应用程序等。相比其他应用程序开发框架,Qt最大的优点之一是其跨平台性能,使得开发人员只需要编写一次代码,就可以在多个平台上运行他们的应用程序。
需要注意的是,尽管Qt主要使用C++编程语言,但也支持其他编程语言,如Python、Java、Perl等。如果您对Qt有兴趣,可以参考相关文献或在线资源,了解更多关于Qt的信息和使用方法。
c语言现在还有必要学吗?
C语言是计算机体系结构的基础,很多新人将C语言作为学习计算机的入门语言。作为新入门的新人,肯定会感到迷茫,很混乱,这时我们就需要适当的引导。本文教你如何滴水不漏地学完C语言,学好基础知识,把握重点,不断深入学习。
一、背景
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它诞生于美国的贝尔实验室,是由丹尼斯·里奇以肯尼斯·蓝·汤普森设计的B语言为基础发展而来。UNIX 系统是世界上第一个真正的操作系统。而UNIX 操作系统是用C语言编写的,在当时这个系统很流行,于是C语言也跟着流行起来。而 UNIX 操作系统是开源的,所以别人要想学习,就要先学C语言。B语言被C语言改写后,C语言流行了而B语言就被淘汰了。而且后来发现,C语言的确非常好,它是面向过程语言的代表,是有史以来最重要的一门计算机语言。二、学习方法
C语言是计算机体系结构的基础,很多新人将C语言作为学习计算机的入门语言。作为新入门的新人,肯定会感到迷茫,很混乱,这时我们就需要适当的引导。对于一门语言的学习,不同的人有不同的方法,不过别人好的学习方法我们是可以拿来借鉴参考的。(1)看书
看书就是学习基础知识,学习一门语言首先就是学习基本语法,学会了基础知识才能有更加深入的发展。除了看一些书籍之外,还可以看一些教学视频入门,毕竟别人讲解演示学起来更加轻松一点。后文我也会推荐一些好的学习书籍和视频,供大家参考学习。(2)敲代码
想要学习好一门计算机语言,光看书籍学习知识点是远远不够的。在学习知识点的同时一定要自己敲代码进行练习。开始学习敲代码的时候可以用一些轻便的编译器,比如Dev C++,熟练了之后可以使用Visual Studio这些较为大型的编译器。感觉基础知识掌握熟练之后,就可以开始接触算法和数据结构之类的,再然后就可以刷题提高水平了。(3)练习项目
学习完基础知识我们的目的还是实践,所以我们就可以开始练习一些项目了。比如写一个小的记事本、小游戏、计算器等经典的小项目。平时面对那些黑框框肯定会感觉到很枯燥无聊,当你做出一个小作品之后,你就会很有成就感,这也会极大的提升你的学习兴趣。三、学习路线
学习一门语言先了解此语言的发展史,早期的C语言功能其实较为简单,随着应用和场景的变化,C语言的功能在不断升级变化,功能也越来越强大。正式学习C语言之前了解一下计算机系统的组成以及工作原理也是很有必要的,除此之外还包括数据在计算机内部的存储方式,以及进制之间的转换。另外很重要的一点就是编译环境和编译器的学习,学习之初可以选择一些简单易上手的编译器,随着不断深入学习选择一个与时俱进的编译器也是很重要的。学习完这些内容之后,我们就可以开始学习C语言基础知识了。C语言编程离不开数据,几乎所有的程序中都会涉及到数据,其中包含整型、浮点型、字符串等等。而C语言中存在着两种表征数据的形式:常量和变量。常量可以用来表示数据的值,变量不仅可以用来表示数据的值,还可以用来存放数据。变量是用来存放数据,运算符则是用来处理数据。用运算符将变量和常量连接起来的符合C语言语法规则的式子称为表达式。学习完这些之后,就开始接触结构化程序设计语句。C语言基本控制结构有三种,分别是顺序控制、循环控制、选择控制。程序总是为解决某个实际问题而设计的,而问题往往包含多个方面,不同的情况需要有不同的处理,所以这些结构化程序语句在实际应用程序中可以说是无处不在,正确掌握结构化程序设计语句显得尤为重要。如果用基本数据类型来定义某些变量,那么这些变量在内存中将占用各自的内存单元,变量之间的制约关系无法体现,不能表现出这些变量之间的关联性,所以我们把这些变量称为“离散变量”;但是如果我们需要操作100个或者是更多的数呢,定义100个变量就显得不太现实,这时我们就引入了数组。数组是一组同类型的数据项的有序集合,我们就可以把100个要定义的变量存放到数组中。学习指针是学习C语言最重要的一环,能否正确地理解和使用指针是掌握C语言的一个标志,可以说不懂C语言的指针就不懂什么是C语言。指针也是C语言中最难学的一部分,学习时除了要正确理解基本概念,还必须要多编程,多上机敲代码,只要做到这些,指针也是不难掌握的。前面介绍的都是简单的数据类型,只能定义一些简单的数据信息。对于复杂的数据信息是无法用前面所学的某个单一数据来定义的,必须使用C语言中提供的复杂数据类型来定义。复杂数据类型是C语言提供的不同于简单数据类型的又一数据类型,它极大地丰富了C语言对数据信息的处理能力。3.1 C语言基础第一部分是C语言基础,包括预处理指令、函数、变量和语句。即使是编写最简单的C语言程序,也是会用到这些基本概念。用一个经典的c语言程序,介绍c语言的基本构成、格式,使我们对c语言有个初步认识。一个C语言程序只有一个主函数,程序执行时从主函数开始,在主函数内结束;函数由函数说明和函数体两部分构成;函数说明部分包含了对函数名,函数类型,函数参数等的定义和说明;函数体包含了变量说明和执行语句。3.2 选择结构和循环结构
C语言中有三大结构,分别是顺序结构、选择结构和循环结构。C语言顺序结构就是让程序按照从头到尾的顺序依次执行每一条C语言代码,不重复执行任何代码,也不跳过任何代码。C语言选择结构也称分支结构,就是让程序“拐弯” ,有选择性的执行代码;换句话说,可以跳过没用的代码,只执行有用的代码。C语言循环结构就是让程序“杀个回马枪”,不断地重复执行同一段代码。顺序结构很好理解,无需过多阐述,简单概述一下选择语句和循环语句。其中有两个选择语句,if语句和switch语句。循环语句有三种,for循环语句,while循环语句,do……while循环语句。
3.3 数组
数组就是一列具有相同类型的数据的集合,这些数据在内存中依次挨着存放,彼此之间没有缝隙。C 语言数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。数组分为一维数组和二维数组,当数组中每个元素都只带有一个下标时,称这样的数组为一维数组,一维数组实质上是一组相同类型数据的线性集合。二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。3.4 函数
每个C程序都至少有一个函数,即主函数 main() ,如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大繁杂,结构混乱。我们可以根据程序的逻辑和任务的分工把代码划分到不同的自定义函数中,main()函数更关心业务逻辑和处理流程,需要执行具体任务的时候,调用其他的自定义的函数就可以了。引入函数得本质就是把一个复杂的任务分解为子任务,每一个子任务都是一个较小的功能模块,通过实现这些小功能模块来实现复杂的问题,从而使得比较复杂的问题变得简单。3.5 指针
没学指针就是没学 C 语言!指针是 C 语言的精华,也是 C 语言的难点,破解 C 语言指针,会让你的 C 语言水平突飞猛进。所谓指针,也就是内存的地址;所谓指针变量,也就是保存了内存地址的变量。不过,人们往往不会区分两者的概念,而是混淆在一起使用,在必要的情况下,大家也要注意区分。关于指针我们需要重点学习的内容有指针与地址、指针与函数参数、指针与数组、指针数组以及指向指针的指针和指向函数的指针等等。3.6 结构体
C 语言结构体从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。结构体部分重点学习包括结构体的定义方法、结构体的引用方法、结构体数组、结构体指针的概念及应用、结构体与函数。在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。四、学习资料
4.1 经典书籍
《C Primer Plus(第6版)中文版》是非常经典的一本书籍,此书共17章。第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入输出、结构、位操作等。第16章、17章介绍C预处理器、C库和高级数据表示。本书以完整的程序为例,讲解C语言的知识要点和注意事项。每章末设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。附录给出了各章复习题的参考答案和丰富的参考资料。《C和指针》本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。4.2 学习视频
现在网络如此发达,网上的学习资源也是非常的丰富。大家可以自行上网查找适合自己的学习视频,这里给大家推荐的是大学MOOC上的浙江大学翁恺老师讲的C语言程序设计。这位老师讲课非常的不错, C语言基础理论知识讲解完善;循序渐进,从易到难,学习很轻松;语言组织严谨,风趣,很容易接受,让你有一直学下去的动力。4.3 华为云C++语言实战进阶学习资源(免费)
本课程从基础语法、 面向对象特性、 异常处理、 模板编程基础、 C++11新特性、STL标准库容器和算法、并发编程、 C++未来发展趋势几大模块解构知识点,实战场景+学习+练,精炼干货讲解帮助你快速掌握知识短板。立即点击报名学习五、结语
C语言是国际上最流行的、应用最广泛的高级编程语言之一。时至今日,它依然保持着旺盛的生命力,深受广大程序员的欢迎。作为一种“个性鲜明”的编程语言,C语言既具有高级语言的优点,又有着低级语言的特性。很多大学或者是新入门的程序员都将C语言作为学习计算机的入门语言,学好C语言显得尤为重要。我们一定要学号基础知识,把握学习重点,不断深入的学习。本文分享自华为云社区《【云驻共创】如何滴水不漏地学完C语言?》,作者:静Yu 。
详细全面介绍什么是Apache服务器?
apache,一种开放源码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性(注1)被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,Perl/Python等解释器可被编译到服务器中。
历史
Apache
起初由 Illinois 大学 Urbana-Champaign 的国家高级计算程序中心开发。此后,Apache
被开放源代码团体的成员不断的发展和加强。Apache
服务器拥有牢靠可信的美誉,已用在超过半数的因特网站中-特别是几乎所有最热门和访问量最大的网站。
开始,Apache只是Netscape网页服务器(现在是Sun
ONE)的之外的开放源代码选择。渐渐的,它开始在功能和速度。超越其他的基于Unix的HTTP服务器。1996年4月以来,Apache一直是
Internet上最流行的HTTP服务器: 1999年5月它在 57% 的网页服务器上运行;到了2005年7月这个比例上升到了69%。
作
者宣称因为这个名字好记才在最初选择它,但是流传最广的解释是(也是最显而易见的):这个名字来自这么一个事实:当Apache在1995年初开发的时
候,它是由当时最流行的HTTP服务器NCSA HTTPd 1.3 的代码修改而成的,因此是“一个修补的(a
patchy)”服务器。然而在服务器官方网站的FAQ中是这么解释的:“‘Apache’这个名字是为了纪念名为Apache(印地语)的美洲印第安人
土著的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论怎么样,Apache 2.x 分支不包含任何 NCSA 的代码。
特性
Apache
支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl,Python, Tcl,
和 PHP。流行的认证模块包括 mod_access, mod_auth 和 mod_digest。其他的例子有 SSL 和 TLS 支持
(mod_ssl), proxy 模块,很有用的URL重写(由 mod_rewrite 实现),定制日志文件
(mod_log_config),以及过滤支持(mod_include 和
mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。
2.x版本
Apache 的2.x版本核心在Apache 1.x版本之上作出了重要的加强。这包括:线程,更好的支持非UNIX平台(例如Windows),新的 Apache API,以及IPv6支持。
评价
《PC Magazine》2004年8月评出了近30年以来的10款最佳软件产品。
他们其中或者是有过最辉煌的历史,或者是最具创意。其对apache的评价是:第三名:Apache(阿帕奇,1995年推出)Apache目前已经演变
成了“LAMP”,即Linux、Apache、MySQL和PHP的联合体。这是一个开放源代码软件项目,已经对微软的“.NET”战略构成严重威胁。
尤其是Apache网络服务器,让用户充分体验到开发源码软件的稳定性、可靠性和可定制性。
Apple.com评价apache时
说:Apache是服务器软件始终不断进化的大块部件,它免费但又是无价之宝。Apache
是在资源开放运动中出现的绝对珍品,因为不属于个人专利而是对公共免费。一旦拥有这些源码,程序员能够自由完成所想——能在其它程序员接替工作时被赋予同
样的权限来改变和修改自己的源代码。
注释
尽管不断有新的漏洞被发现,但由于其OpenSource的特点,漏洞总能被很快修补。因此总的来说,其安全性还是相当高的。
() [#page_#][#page_#]AddHandler cgi-script .cgi
AddHandler server-parsed .shtml
Sethandler cgi-script
AddHandler定义了何种扩展名用那一个字符串进行描述.
SetHandler把一个目录下的文件都指定用这一个字符串描述.
我在这里提到的命令都是与其结构密切相关的. Handler和Type的关系在下面会描述的. 许多的东东从外面是看不清楚的, 下面, 我们从里面看.
三 程序的基本结构
-----------------
Apache有非常好的跨平台性. 为了实现这一目标和简化模块编写者的负担,Apache完成了许多基本的功能如IO, 内存分配等, 这些接口都是与具体平台无关的. 还有一些很有用的例程如: hash table, array 等. 在整个体系中, Apache有一个基本点, 它尽可能的使用简单的结构和算法, 这不仅易于理解和维护, 还提高了它的稳定性.
在
UNIX系统上, Apache采用了多进程模型, 在Window上采用了多线程模型.多进程模型中, 其子进程处理客户请求,
父进程用于管理子进程. 当系统过载时父进程会再启动几个子进程, 当系统空闲时, 父进程会杀掉几个子进程.
子进程的数目在"MinSpareServers"和"MaxSpareServers"之间. 而且, 每个子进程处理的请求个数也是有限制的,
这可以解决诸如内存泄漏等问题. 所有的进程状态都被记录在share memory中. 由于每个进程的状态记录在其中的一小块内存上,
它通常也只读写这一块内存, 因此, Apache没有使用什么同步机制.
在Richard Steve的书上说到的几种多进程服务器模型, Apache都使用了,在不同的系统上根据其特点选择使用不同的方法:
1. accept :
在accept处阻塞, 只有在accept是在内核级实现的才行.
2. select :
在select处阻塞.
3. mutex/lock_file :
使用mutex或lock_file来进行对accpet进行互斥.
三
种方法都要求进行阻塞, 区别在于阻塞与不同的地方. 前两种方法都会由所谓的巨群问题: 多个阻塞在同一个资源上的进程被同时唤醒引发再次竞争.
不过, 按Richard Steve 的评测, 第一种方法最快, 第二种其次, 第三种最慢. 其实, 在linux上第三种方法也会有巨群问题.
Apache虽然并不强调性能, 这并不意味着他们不重视性能. 而是Apache认为在Server端realiable才是第一位的. 但Apache的性能还是不错的.


还没有评论,来说两句吧...