文章标题

来源:互联网 发布:万德数据库免费账号 编辑:程序博客网 时间:2024/05/04 22:55

1.为什么说http是无连接的,请说明原因?

所谓的无连接即不会保存上次的历史数据,并收到客户的应答后,每次连接完即断开连接,即每次都需重新传输数据,会发生数据的重传等。
http产生于互联网,每各客户端与服务器交换的数据间歇性较大,并且网页浏览的联想性、发散性导致导致两次传输数据的关联性很低,因此http需要在每次连接完即断开连接,将数据资源释放,以用于其他客户端。
而随着时间的推移,htm变得相当复杂,每个页面包含的图片相当多,若每次访问都要建立一次tcp连接就显得很低效,因此提出了Keep-alive,这样客户端与服务器之间的连接就会被保持,不会断开(除非超过keep-alive的时间限制,以及断开电源),当客户端发送另一个请求时,就使用这条已经断开的连接。
无状态是指服务器不知道客户端是什么状态。
HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。
但是,慢慢的人们发现静态的htm着实无趣,增加动态生成的内容才会使web更加有用

在这种客户端与服务器进行动态交互的web应用程序出现后,http的无状态性严重阻碍了这些交互式应用程序的实现,毕竟交互式需要承前启后的,简单的购物程序也要知道用户在之前选择了什么商品。遇事,两种用于保持http状态的技术就营运而生了,一个是cookie,而另一个则是session。

2.## java中static修饰的变量和方法的原理

  1. static的用途
    “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途;
    一句话:方便在没有创建对象的情况下来进行调用(方法/变量)。
    static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。代码块执行严格按照顺序来,且不能写在方法内部。

  2. static关键字的常见误区。
    在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的
    static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
    static能作用于局部变量么?

      在C/C++中static是可以作用域局部变量的,但是在Java中切记:static是不允许用来修饰局部变量。不要问为什么,这是Java语法的规定。

3.TCP与UDP的区别,以及TCP的流量控制、拥塞避免等

4.写出一个设计模式

以最简单的单例模式为例:
Singleton 类
namespace Singleton 

    public class Singleton 
    { 
        //定义一个私有的静态全局变量来保存该类的唯一实例 
        private static Singleton singleton;
        ///  
        /// 构造函数必须是私有的 
        /// 这样在外部便无法使用 new 来创建该类的实例 
        ///  
        private Singleton() 
        { 
        }
       ///  
        /// 定义一个全局访问点 
        /// 设置为静态方法 
        /// 则在类的外部便无需实例化就可以调用该方法 
        ///  
        ///  
        public static Singleton GetInstance() 
        { 
            //这里可以保证只实例化一次 
            //即在第一次调用时实例化 
            //以后调用便不会再实例化 
            if (singleton == null) 
            { 
                singleton = new Singleton(); 
            } 
            return singleton; 
        } 
    } 
}

5.为什么要用多线程?线程越来越多,怎么性能反而会下降?

0 0
原创粉丝点击