发布新日志

  • 各种web服务器的区别

    2011-09-26 09:27:41

    JBoss含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器
    JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web操作系统(operating systemfor web),它体现了J2EE规范中最新的技术,含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器.



    Weblogic是BEA公司的产品,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器
    WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 
    用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 
    开发、集成、部署和管理之中。



    Websphere是IBM公司的产品,基于J2EE的,对Jsp,Servlet,ejb的支持非常好!不过挺复杂的!
    WebSphere 是随需应变的电子商务时代的最主要的软件平台。它使您的公司可以开发、部署和整合新一代的电子商务应用,如B2B 电子商务,并支持从简单的网页内容发布到企业级事务处理的商业应用,含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器



    IIS是微软的Internet Information Server的简称!主要是用来提供Web服务的,当然是针对它自己的产品asp的
    什么是IIS 
    首先,Internet Information Server的缩写为(IIS)是一个World Wide Web server。Gopher server和FTP server全部包容在里面。 IIS意味着你能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。IIS支持一些有趣的东西,象有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW) 
    其次,IIS是随Windows NT Server 4.0一起提供的文件和应用程序服务器,是在Windows NT Server上建立Internet服务器的基本组件。它与Windows NT Server完全集成,允许使用Windows NT Server内置的安全性以及NTFS文件系统建立强大灵活的Internet/Intranet站点。



    Tomcat含有Jsp和Servlet容器,但不包含EJB容器
    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.0.14。
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。



    Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。
    Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。 
    本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面
    JBoss含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器
    JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web操作系统(operating systemfor web),它体现了J2EE规范中最新的技术,含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器.



    Weblogic是BEA公司的产品,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器
    WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 
    用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 
    开发、集成、部署和管理之中。



    Websphere是IBM公司的产品,基于J2EE的,对Jsp,Servlet,ejb的支持非常好!不过挺复杂的!
    WebSphere 是随需应变的电子商务时代的最主要的软件平台。它使您的公司可以开发、部署和整合新一代的电子商务应用,如B2B 电子商务,并支持从简单的网页内容发布到企业级事务处理的商业应用,含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器



    IIS是微软的Internet Information Server的简称!主要是用来提供Web服务的,当然是针对它自己的产品asp的
    什么是IIS 
    首先,Internet Information Server的缩写为(IIS)是一个World Wide Web server。Gopher server和FTP server全部包容在里面。 IIS意味着你能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。IIS支持一些有趣的东西,象有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW) 
    其次,IIS是随Windows NT Server 4.0一起提供的文件和应用程序服务器,是在Windows NT Server上建立Internet服务器的基本组件。它与Windows NT Server完全集成,允许使用Windows NT Server内置的安全性以及NTFS文件系统建立强大灵活的Internet/Intranet站点。



    Tomcat含有Jsp和Servlet容器,但不包含EJB容器
    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.0.14。
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。



    Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。
    Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。 
    本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面
    JBoss含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器
    JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web操作系统(operating systemfor web),它体现了J2EE规范中最新的技术,含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器.



    Weblogic是BEA公司的产品,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器
    WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 
    用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 
    开发、集成、部署和管理之中。



    Websphere是IBM公司的产品,基于J2EE的,对Jsp,Servlet,ejb的支持非常好!不过挺复杂的!
    WebSphere 是随需应变的电子商务时代的最主要的软件平台。它使您的公司可以开发、部署和整合新一代的电子商务应用,如B2B 电子商务,并支持从简单的网页内容发布到企业级事务处理的商业应用,含有Jsp和Servlet容器,也就可以做web容器,也包含EJB容器,是完整的J2EE应用服务器



    IIS是微软的Internet Information Server的简称!主要是用来提供Web服务的,当然是针对它自己的产品asp的
    什么是IIS 
    首先,Internet Information Server的缩写为(IIS)是一个World Wide Web server。Gopher server和FTP server全部包容在里面。 IIS意味着你能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。IIS支持一些有趣的东西,象有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW) 
    其次,IIS是随Windows NT Server 4.0一起提供的文件和应用程序服务器,是在Windows NT Server上建立Internet服务器的基本组件。它与Windows NT Server完全集成,允许使用Windows NT Server内置的安全性以及NTFS文件系统建立强大灵活的Internet/Intranet站点。



    Tomcat含有Jsp和Servlet容器,但不包含EJB容器
    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.0.14。
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。



    Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。
    Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。 
    本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面

    tomcat/jboss/weblogic/apache/websphere/IIS这几种服务器的区别:

    http://topic.csdn.net/u/20080424/23/b49a1f78-c5c9-4977-812e-ead841aff3ba.html

  • LR: 两台PC联合加压测试

    2010-12-07 15:47:39


    两台机器: A,B
    并发登陆,并发400用户,A 机器上运行时cpu达到100%不能进行下去,所以我想同样的脚本在B机器上运行,在A 机器上调用B机器,同时对服务器加压。
    A 加压100B加压300

    具体的设置步骤(1B机器要进行设置LOADrunner agent setting configure (2)A机器上填写B机器的IP 3)点击连接

     

    -----

    谢谢,已经解决。
    解决办法:
    “unable to install magent service”
    的两种情况 
    (1) B
    机器没有安装LR AGENT,(2)B机器没有开启agent服务。只要先安装,再开启服务就好了。

    在设置LOADrunner agent setting configure 时不启动防火墙

  • 如何制作.chm文件

    2010-11-12 15:48:49

    如何制作.chm文件

    http://zhidao.baidu.com/question/14371659

  • 关于socket接收是ascii码问题

    2010-10-12 14:19:40

    http://bbs.51testing.com/thread-192386-1-1.html

    问:

    最近在做公司服务器性能测试。soket接口。遇到下面一个问题;
    lrs_receive("socket0", "buf100", LrsLastArg);后
    接到的是这样一个包:
    "\x00\x00\v\x98…………(省略若干字)
    开发人员交流后得知,这4位返回的是这个包的长度:2968
    也就是说是十六进制的00 00 0B 98。
    loadrunner自动\x0B转换成了ascii码对应的垂直制表符\v。。。。。。

    这种情况出现很多,还有把\x0A变成\n\x40变成@
    请教高手能否转回来……
    能给出例子就最好不过了

    答:

    用lrs_ascii_to_ebcdic可以做编码转化,例如:

    char *UserBufferPtr;
    /* Get the whole last received buffer (the offset parameter is ignored) in ascii format*/
    UserBufferPtr = lrs_get_received_buffer("socket0", 0, -1, "ascii");
    /* Convert the buffer to ebcdic format */
    UserBufferPtr = lrs_ascii_to_ebcdic("socket0",
            UserBufferPtr,
            lrs_get_user_buffer_size("socket0"));

  • lr_convert_string_encoding()

    2010-05-04 16:42:39

    http://www.51testing.com/?uid-104-action-viewspace-itemid-201075

    lr_convert_string_encoding函数的小技巧

    上一篇 / 下一篇  2009-12-22 17:19:45 / 个人分类:《性能测试进阶指南》

    51Testing软件测试网&w2E`O0c

    在前几天的一个帖子谈到utf-8的一些处理,其中说到了lr_convert_string_encoding函数,但是在使用这个函数的时候会有个小问题,就是用该函数转出来的内容会自动附加一个/x00的结尾,导致如果用他来做关联或者检查点的匹配会错误。

    | P4kN|zL)_0 51Testing软件测试网v)lz4Z+n^4`

    lr_convert_string_encoding("登陆成功",NULL,"UTF-8","temp");51Testing软件测试网3`#V:im5z;AB0N WT D W

    X)Wg/Qy#}$n/K'n0如果这样用得出的结果是

    4@$\4rjK[;C0

    /}U5{-LQ g[%s0登录成功\x0051Testing软件测试网-O;q#tBo,^)z

    51Testing软件测试网8xiKJ#ZOnt1w

    而正确的结果应该是51Testing软件测试网&CiF{;gq:?I"j F

    51Testing软件测试网X|Kf$[E [

    登录成功

    l6d,?t Q`{0 51Testing软件测试网7b1j XRF;e(duz

    为了去掉这个最后的\x00,可以通过下面这个办法去掉51Testing软件测试网`rc5Q:@ d1^\e1a
    lr_save_string(lr_eval_string("{temp}"),"temp");51Testing软件测试网'LMcGR#s

    51Testing软件测试网f$S3d[g(h/gBgx^

    当你对一个带有/x00的参数取值时,会自动去除掉,所以只需要再存一次就行了

  • lrs_accept_connection获取data.ws中端口号

    2010-04-20 14:39:20


    关于LR中lrs_accept_connection函数中获取data.ws中端口号问题

    1、找到lrs_create_socket("socket6".....)在该语句下添加
       /* 获取创建socket6时,创建的本地端口号5030(每次回放时该端口都会变)
    newport=lrs_get_socket_attrib("socket6", LOCAL_PORT);

    lr_save_string(newport, "newport0");

    lr_output_message("Local port%s",newport);

    2、接下来添加语句
       /* 将该端口号分解成高位19和低位166(19*256+166=5030),并将转换后的在转换成16进制13和a6
    ival=atoi(newport);

    ilowval=(WORD)(ival)&0xff;

    ihighval=(WORD)(((DWORD)(ival)>>8))&0xff;

    strcpy (buf0, itoa( ihighval, tmp, 16 ));

    lr_save_string(buf0, "portnum0");

    strcpy (buf, itoa( ilowval, tmp, 16 ));

    lr_save_string(buf, "portnum");

    3、在lrs_create_socket("socket6".....)下lrs_create_socket("socket7".....)的最近的sent语句中的data.ws中的buf去找到要替代的端口号,用参数portnum0和portnum将其替代
    (替代时在参数名前加上十六进制的表示法\x);还要在data.ws中找到所有该端口号
    (如何在Data.ws中找要替换的端口号:该端口号在找到的buf中的你机器的ip地址后如:\x0f\xa6  替换成:\x{portnum0}\x{portnum};在data.ws中搜索\x0f\xa6,将其全部替换。)

    4、屏蔽该语句lrs_accept_connection("socket6", "socket9")

    5、将lrs_accept_connection("socket6", "socket9")该语句下最近的lrs_create_socket中的端口号用参数newport代替;并将该语句下所有的
    socket9用最近的lrs_create_socket(以newport为参数代替端口号)中的socket代替

    注:只要出现lrs_accept_connection的地方都按以上步骤代替

  • 利用FTP,实现Linux与windows文件互传

    2010-04-15 09:20:36

    利用FTP,实现Linux与windows文件互传

    http://www.ieehoo.com/Tech/83/View_10209.html

  • FIFO 、LRU、LFU三种算法

    2010-04-01 09:10:50

  • 使用LR过程中犯过的错误

    2010-03-24 09:12:01

    1. 录制不到脚本。
    选择“多协议-Windows Socket”后,无法录制sipsample.exe的脚本。
    改为:选择“单协议-Windows Socket”后,才录制到sipsample.exe的脚本。
     
    2. 自己加的脚本,注意检查末尾是否忘记带“;”号。
     
    3. 方法名必须用大写的。
  • LR知识点

    2010-03-17 11:42:12

    lr.end_transaction()时,有4种状态(LR_AUTO、 LR_PASS、 LR_FAIL、 LR_STOP)供选择,它们代表的意义:

    LR_AUTO:事物的状态被自动设置。如果事务执行成功,状态设置为PASS;如果执行失败,状态设置为FAIL;如果由于异常中断,状态被设置成STOP。

    LR_PASS:事务如果执行成功,代码的返回状态就是PASS。

    LR_FAIL:事务如果执行失败,代码的返回状态就是FAIL。

    LR_STOP:如果由于异常中断,代码的返回状态就是STOP。

  • loadrunner与Winsock

    2010-03-15 13:28:29

  • lr中加载动态库

    2010-03-12 17:43:57

  • 关于C/S架构的性能测试

    2010-03-12 15:27:43

  • P2P网络“自由”穿越NAT的“秘密”

    2010-03-03 10:38:35


     
     1. Full Cone:来自相同的内部地址的请求消息映射为相同的外部地址,与外部地址(目的地址)无关。映射关系为P:p↔A:b,任何外部主机可通过(A:b)发送到数据到(P:p)上。

      2. Restricted Cone:来自相同的内部地址的请求消息映射为相同的外部地址,返回的数据只接受该内部节点曾发数据的那个目的计算机地址X。映射关系为P:p↔A:b↔X,只有来自X的数据包才可通过(A:b)发送到数据到(P:p)上。

      3. Port Restricted Cone:来自相同的内部地址的请求消息映射为相同的外部地址,返回的数据只接受该内部节点曾发数据的那个目的地址X:x。映射关系为P:p↔A:b↔X:x,只有来自X:x的数据包才可通过(A:b)发送到数据到(P:p)上。

      4. Symmetric(对称) NAT:只有来自相同的内部地址(P:p),并且发送到同一个地址(X:x) 的请求消息,才被映射为相同的外部地址(A:b),返回的数据只接受该内部节点曾发数据的那个目的地址X:x。映射关系为P:p↔A:b↔X:x,当(P:p)访问(Y:y)时,映射为P:p↔B:c↔Y:y。


    http://www.ppcn.net/n4366c2.aspx

  • IETF

    2010-03-03 10:02:18

     
    IETF(互联网工程任务组—The Internet Engineering Task Force)是松散的、自律的、志愿的民间学术组织,成立于1985年底, 其主要任务是负责互联网相关技术规范的研发和制定。
      IETF是一个由为互联网技术工程及发展做出贡献的专家自发参与和管理的国际民间机构。它汇集了与互联网架构演化和互联网稳定运作等业务相关的网络设计者、运营者和研究人员,并向所有对该行业感兴趣的人士开放。任何人都可以注册参加IETF的会议。IETF大会每年举行三次,规模均在千人以上。
      IETF体系结构分为三类,一个是互联网架构委员会(IAB),第二个是互联网工程指导委员会(IESG),第三个是在八个领域里面的工作组(Working Group)。标准制定工作具体由工作组承担,工作组分成八个领域,分别是Internet路由、传输、应用领域等等。。IAB成员由IETF参会人员选出,主要是监管各个工作组的工作状况,它必须非常认真的考虑Internet是什么,它正在发生什么变化以及我们需要它做些什么等问题。互联网工程指导委员会(IESG)主要的职责是接收各个工作组的报告,对他们的工作进行审查,然后对他们提出的各种各样的标准、各种各样的建议提出指导性的意见,甚至从工作的方向上、质量上和程序上给予一定的指导。
      IETF基本上不太涉及应用领域,但仍设立了一个应用领域。另外凡是没有归到以上那些领域的研究课题,都把它归至此类。IETF实际上有上百个工作组,这里是真正完成工作的地方。
      IETF大量的技术性工作均由其内部的各类工作组协作完成。这些工作组按不同类别,如路由、传输、安全等专项课题而分别组建。IETF的交流工作主要是在各个工作组所设立的邮件组中进行,这也是IETF的主要工作方式。
      Internet Draft任何人都可以提交,没有任何特殊限制,而且其他的成员也可以对它采取一个无所谓的态度,而IETF的一些很多重要的文件都是从这个Draft开始。需要说明的是,仅仅为成为Internet Draft毫无意义。Internet Draft实际上有几个用途,有一些提交上来变成RFC,有些提出来讨论,有一些拿出来就想发表一些文章。
      RFC更为正式,而且它历史上都是存档的,它的存在一般来讲,被批准出台以后,它的内容不做改变。RFC也有好多种,第一个就是它是一种标准,第二个它是一种试验性的,RFC无非是说人们在一起想做这样一件事情,尝试一下,还一个就是文献历史性的,这个是记录了人们曾经做过一件事情是错误的,或者是不工作的。再有一种就是叫做介绍性信息。
      目前,IETF已成为全球互联网界最具权威的大型技术研究组织。但是它有别于像国际电联(ITU-International Telecommunication Union)这样的传统意义上的标准制定组织。IETF的参与者都是志愿人员,他们大多是通过IETF每年召开的三次会议来完成该组织的如下使命:
      1.鉴定互联网的运行和技术问题,并提出解决方案;
      2.详细说明互联网协议的发展或用途,解决相应问题;
      3.向IESG提出针对互联网协议标准及用途的建议;
      4.促进互联网研究任务组(IRTF)的技术研究成果向互联网社区推广;
      5.为包括互联网用户、研究人员、行销商、制造商及管理者等提供信息交流的论坛。
  • Peer-to-Peer Communication

    2010-02-25 11:39:19

    Peer-to-Peer Communication Across Network Address Translators:
     
  • sip & rtp 协议

    2010-02-09 16:21:46

  • 关于多播地址

    2009-12-25 16:41:41

     
    IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。其中,局部链接多播地址范围在224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;预留多播地址为224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;管理权限多播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。

    使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。一个多播组的成员是随时变动的,一台主机可以随时加入或离开多播组,多播组成员的数目和所在的地理位置也不受限制,一台主机也可以属于几个多播组。此外,不属于某一个多播组的主机也可以向该多播组发送数据包。

  • Python 有哪些技术上的优点

    2009-12-18 10:34:27

    1.6 Python 有哪些技术上的优点

     
    显然,这是开发者关心的问题。如果你目前还没有程序设计背景,接下来的这些章节可能会显得有些令人费解:别担心,在本书中我们将会对这些内容逐一做出详细解释。那么对于开发者来说,这将是对Python 一些最优的技术特性的快速介绍。

    面向对象

    从根本上讲,Python 是一种面向对象的语言。它的类模块支持多态、操作符重载和多重继承等高级概念,并且以Python 特有的简洁的语法和类型,OOP 十分易于使用。事实上,即使你不懂这些术语,仍会发现学习Python 比学习其他OOP 语言要容易得多。

    除了作为一种强大的代码构建和重用手段以外,Python 的OOP 特性使它成为面向对象系统语言如C++ 和Java 的理想脚本工具。例如,通过适当的粘接代码,Python 程序可以对C++ 、Java 和C# 的类进行子类的定制。

    OOP 是Python 的一个选择而已,这一点非常重要。不必强迫自己立马成为一个面向对象高手,你同样可以继续深入学习。就像C++ 一样,Python 既支持面向对象编程也支持面向过程编程的模式。如果条件允许的话,其面向对象的工具即刻生效。这对处于预先设计阶段的策略开发模式十分有用。

    免费

    Python 的使用和分发是完全免费的。就像其他的开源软件一样,例如,Tcl 、Perl 、Linux 和Apache 。你可以从Internet 上免费获得Python 系统的源代码。复制Python ,将其嵌入你的系统或者随产品一起发布都没有任何限制。实际上,如果你愿意的话,甚至可以销售它的源代码。

    但请别误会:"免费"并不代表"无支持"。恰恰相反,Python 的在线社区对用户需求的响应和商业软件一样快。而且,由于Python 完全开放源代码,提高了开发者的实力,并产生了一个很大的专家团队。尽管学习研究或改变一个程序语言的实现并不是对每一个人来说都那么有趣,但是当你知道还有源代码作为最终的帮助和无尽的文档资源是多么的令人欣慰。你不需要去依赖商业厂商。

    Python 的开发是由社区驱动的,是Internet 大范围的协同合作努力的结果。这个团体包括Python 的创始者Guido van Rossum:Python 社区内公认的"终身的慈善独裁者"[Benevolent Dictator for Life (BDFL) ] 。Python 语言的改变必须遵循一套规范的有约束力的程序(称作PEP 流程),并需要经过规范的测试系统和BDFL 进行彻底检查。值得庆幸的是,正是这样使得Python 相对于其他语言可以保守地持续改进。

    可移植

    Python 的标准实现是由可移植的ANSI C 编写的,可以在目前所有的主流平台上编译和运行。例如,如今从PDA 到超级计算机,到处可以见到Python 在运行。Python 可以在下列平台上运行(这里只是部分列表):

    Linux 和UNIX 系统。

    微软Windows 和DOS (所有版本)。

    Mac OS (包括OS X 和Classic )。

    BeOS 、OS/2 、VMS 和QNX 。

    实时操作系统,例如,VxWorks 。

    Cray 超级计算机和IBM 大型机。

    运行Palm OS 、PocketPC 和Linux 的PDA 。

    运行Windows Mobile 和Symbian OS 的移动电话。

    游戏终端和iPod 。

    还有更多。

    除了语言解释器本身以外,Python 发行时自带的标准库和模块在实现上也都尽可能地考虑到了跨平台的移植性。此外,Python 程序自动编译成可移植的字节码,这些字节码在已安装兼容版本Python 的平台上运行的结果都是相同的。

    这些意味着Python 程序的核心语言和标准库可以在Linux 、Windows 和其他带有Python 解释器的平台无差别的运行。大多数Python 外围接口都有平台相关的扩展(例如,COM 支持Windows ),但是核心语言和库在任何平台都一样。就像之前我们提到的那样,Python 还包含了一个叫做Tkinter 的Tk GUI 工具包,它可以使Python 程序实现功能完整的无需做任何修改即可在所有主流GUI 平台运行的用户图形界面。

    功能强大

    从特性的观点来看,Python 是一个混合体。它丰富的工具集使它介于传统的脚本语言(例如,Tcl 、Scheme 和Perl )和系统语言(例如,C、C++ 和Java) 之间。Python 提供了所有脚本语言的简单和易用性,并且具有在编译语言中才能找到的高级软件工程工具。不像其他脚本语言,这种结合使Python 在长期大型的开发项目中十分有用。下面是一些Python 工具箱中的工具简介。

    动态类型Python 在运行过程中随时跟踪对象的种类,不需要代码中关于复杂的类型和大小的声明。事实上,你将在第6章中看到,Python 中没有类型或变量声明这回事。因为Python 代码不是约束数据的类型,它往往自动地应用了一种广义上的对象。

    自动内存管理Python 自动进行对象分配,当对象不再使用时将自动撤销对象("垃圾回收"),当需要时自动扩展或收缩。Python 能够代替你进行底层的内存管理。

    大型程序支持为了能够建立更大规模的系统,Python 包含了模块、类和异常等工具。这些工具允许你组织系统为组件,使用OOP 重用并定制代码,并以一种优雅的方式处理事件和错误。

    内置对象类型Python 提供了常用的数据结构作为语言的基本组成部分。例如,列表(list )、字典(dictionary )、字符串(string )。我们将会看到,它们灵活并易于使用。例如,内置对象可以根据需求扩展或收缩,可以任意地组织复杂的信息等。

    内置工具为了对以上对象类型进行处理,Python 自带了许多强大的标准操作,包括合并(concatenation )、分片(slice )、排序(sort )和映射(mapping )等。

    库工具为了完成更多特定的任务,Python 预置了许多预编码的库工具,从正则表达式匹配到网络都支持。Python 的库工具在很多应用级的操作中发挥作用。

    第三方工具由于Python 是开放源代码的,它鼓励开发者提供Python 内置工具之外的预编码工具。从网络上,可以找到COM 、图像处理、CORBA ORB 、XML 、数据库等很多免费的支持工具。

    除了这一系列的Python 工具外,Python 保持了相当简洁的语法和设计。综合这一切得到的就是一个具有脚本语言所有可用性的强大编程工具。

    可混合

    Python 程序可以以多种方式轻易地与其他语言编写的组件"粘接"在一起。例如,Python 的C语言API 可以帮助Python 程序灵活地调用C程序。这意味着可以根据需要给Python 程序添加功能,或者在其他环境系统中使用Python 。例如,将Python 与C或者C++ 写成的库文件混合起来,使Python 成为一个前端语言和定制工具。就像之前我们所提到过的那样,这使Python 成为一个很好的快速原型工具;首先出于开发速度的考虑,系统可以先使用Python 实现,之后转移至C,根据不同时期性能的需要逐步实现系统。

    使用简单

    运行Python 程序,只需要简单地键入Python 程序并运行就可以了。不需要其他语言(例如,C或C++ )所必须的编译和链接等中间步骤。Python 可立即执行程序,这形成了一种交互式编程体验和不同情况下快速调整的能力,往往在修改代码后能立即看到程序改变后的效果。

    当然,开发周期短仅仅是Python 易用性的一方面的体现。Python 提供了简洁的语法和强大的内置工具。实际上,Python 曾有种说法叫做"可执行的伪代码"。由于它减少了其他工具常见的复杂性,当实现相同的功能时,用Python 程序比采用C、C++ 和Java 编写的程序更为简单、小巧,也更灵活。

    Python 是工程,不是艺术

    当Python 于20 世纪90 年代初期出现在软件舞台上时,曾经引发其拥护者和另一个受欢迎脚本语言Perl 的拥护者之间的冲突,但现今已成为经典的争论。我们认为今天这种争论令人厌倦,也没有根据,开发人员都很聪明,可以找到他们自己的结论。然而,这是我在培训课程上时常被问到的问题之一,所以在此对这个话题说几句话,似乎是合适的。

    故事是这样的:你可以用Python 做到一切用Perl 能做到的事,但是,做好之后,还可以阅读自己的程序代码。就是因为这样,两者的领域大部分重叠,但是,Python 更专注于产生可读性的代码。就大多数人而言,Python 强化了可读性,转换为了代码可重用性和可维护性,使得Python 更适合用于不是写一次就丢掉的程序。Perl 程序代码很容易写,但是很难读。由于多数软件在最初的创建后都有较长的生命周期,所以很多人认为Python 是一种更有效的工具。

    这个故事反应出两个语言的设计者的背景,并体现出了人们选择使用Python 的一些主要原因。Python 的创立者所受的是数学家的训练,因此,他创造出来的语言具有高度的统一性,其语法和工具集都相当一致。再者,就像数学一样,其设计也具有正交性(orthogonal ),也就是这门语言大多数组成部分都遵循一小组核心概念。例如,一旦掌握Python 的多态,剩下的就只是细节而已。

    与之相对比,Perl 语言的创立者是语言学家,而其设计反应了这种传统。Perl 中,相同任务有很多方式可以完成,并且语言材料的交互对背景环境敏感,有时还有相当微妙的方式,就像自然语言那样。就像著名的Perl 所说的格言:"完成的方法不止一种。"有了这种设计,Perl 语言及其用户社群在编写代码时,就一直在鼓励表达式的自由化。一个人的Perl 代码可能和另一个人的完全不同。事实上,编写独特、充满技巧性的代码,常常是Perl 用户之间的骄傲来源。

    但是,任何做过任何实质性的代码维护工作的人,应该都可以证实,表达式自由度是很棒的艺术,但是,对工程来说就令人厌恶了。在工程世界中,我们需要最小化功能集和可预测性。在工程世界中,表达式自由度会造成维护的噩梦。不止一位Perl 用户向我们透漏过,太过于自由的结果通常就是程序很容易重头写起,但修改起来就不是那么容易了。

    考虑一下:当人们在作画或雕塑时,他们是为自己做,为了纯粹美学考虑。其他人日后去修改图画或雕像的可能性很低。这是艺术和工程之间关键的差异。当人们在编写软件时,他们不是为自己写。事实上,他们甚至不是专门为计算机写的。而实际上,优秀的程序员知道,代码是为下一个会阅读它而进行维护或重用的人写的。如果那个人无法理解代码,在现实的开发场景中,就毫无用处了。

    这就是很多人认为Python 最有别于Perl 这类描述语言的地方。因为Python 的语法模型几乎会强迫用户编写可读的代码,所以Python 程序会引导他们往完整的软件开发循环流程前进。此外,因为Python 强调了诸如有限互动、统一性、规则性以及一致性这些概念,因此,会更进一步促进代码在首次编写后能够长期使用。

    长期以来,Python 本身专注于代码质量,提高了程序员的生产力,以及程序员的满意度。Python 程序员也变得富有创意,以后就知道,语言本身的确对某些任务提供了多种解决办法。不过,本质上,Python 鼓励优秀的工程的方式,是其他脚本语言通常所不具备的。

    至少,这是许多采用Python 的人之间所具有的共识。当然,你应该要自行判断这类说法,也就是通过了解Python 提供了什么给你。为了帮助你们入门,让我们进行下一章的学习吧。

    简单易学

    这一部分引出了本书的重点:相对于其他编程语言,Python 语言的核心是惊人的简单易学。实际上,你可以在几天内(如果你是有经验的程序员,或许只需要几个小时)写出不错的Python 代码。这对于那些想学习语言可以在工作中应用的专业人员来说是一个好消息,同样对于那些使用Python 进行定制或控制系统的终端用户来说也是一个好消息。如今,许多系统依赖于终端用户可以很快地学会Python 以便定制其代码的外围工具,从而提供较少的支持甚至不提供支持。尽管Python 还是有很多高级编程工具,但不论对初学者还是行家高手来说,Python 的核心语言仍是相当简单的。

    名字来源于Monty Python

    Python 名字的来源这不算是一项技术,但是,这似乎是令人很惊讶、保护得很好的秘密,而我们希望把它全盘托出。尽管Python 世界中都是蟒蛇的图标,但事实是,Python 创立者Guido van Rossum 是以BBC 喜剧Monty Python's Flying Circus 来命名的。他是Monty Python 的大影迷,而很多软件开发人员也是(事实上,这两个领域似乎有种对称)。

    这给Python 代码的例子加入一种幽默的特质。比如,一般来说,传统常规的变量名为"foo "和"bar ",在Python 的世界中变成了"spam "和"eggs "。而有时出现的"Brian "、"ni "、"shrubbery "等也是这样来的。这种方式甚至很大程度上影响了Python 社区:Python 会议上的演讲往往叫做"The Spanish Inquisition "。

    当然,如果你熟悉这个幽默剧的话,所有这些你都会觉得很有趣,否则就没那么有意思了。你没有必要为了理解引自Monty Python (也许本书中你就会找到)的例子而刻意去熟悉这一串剧情,但是至少你现在应该知道它们的来源。

    http://book.51cto.com/art/200907/137348.htm


  • 诺基亚 E71的参数

    2009-12-16 16:29:21

1101/6123456>
Open Toolbar