zoukankan      html  css  js  c++  java
  • Y-C

    1.asp.net服务控件生命周期

    11个生命阶段

    (1)初始化:

    初始化在传入Web请求生命周期内所需的设置,、跟踪视图状态。页面框架通过默认方式引发Init事件,并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑。

    此后,页面框架将调用TrackViewState方法来跟踪视图状态。
    (2)加载视图状态:

    主要任务是检查ASP.NET服务器控件是否存在,以及是否需要将其状态恢复到它在处理之前的请求结束的状态。

    因此该过程发生在页面回传过程中,而不是初始化请求过程。在此阶段,页面框架将自动恢复ViewState字典。如果服务器控件不维持其状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员则不必实现任何逻辑。针对那些无法在 ViewState字典中存储的数据类型或者需要自定义状态管理的情况,开发人员可以通过重写LoadViewState方法来自定义状态的恢复和管理。

    (3)处理回发数据:

    处理回发数据的控件参与此阶段。

    若要使控件能够检查客户端发回的窗体数据,那么必须实现System.Web.UI.IPostBackDataHandler接口的 LoadPostData()方法。
    (4)加载:

    ASP.NET服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。

    此时,开发人员可以通过重写OnLoad()方法来实现每个请求共同的逻辑。

    (5)发送回发更改通知:

    ASP.NET服务器控件通过引发事件作为一种信号,表明由于回发而发生的控件状态变化

    为了建立这种信号,开发人员必须再次使用System.Web.UI.IPostBackDataHandler接口,并实现另一方法- RaisePostBackChangedEvent()。其判断过程为:如果控件状态因回发而更改,则LoadPostData()返回true;否则返回false。页面框架跟踪所有返回true的控件并在这些控件上调用RaisePostDataChangedEvent()。

    (6)处理回发事件:

    该阶段处理引起回发的客户端事件。

    为了便于将客户端事件映射到服务器端事件上进行处理,开发人员在此阶段可以通过实现 System.Web.UI.IPostBackEventHandler接口的RaisePostBackEvent()方法来实现该逻辑。由此途径,服务器控件将成功捕获回发的客户端事件进行服务器端的相应处理。

    (7)预呈现:

    该阶段完成在生成控件之前所需要的任何工作。

    通常情况下是通过重写OnPreRender()方法完成该工作。

    需要注意的是:在该阶段,可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段进行的更改则会丢失。

    (8)保存状态:

    如果ASP.NET服务器控件不维持状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员不必在该阶段实现任何逻辑。因为这个保存状态的过程是自动的。如果ASP.NET服务器控件需要自定义状态保存,或者控件无法在ViewState字典中存储特殊的数据类型,则需要通过重写SaveViewState()方法来实现状态保存。

    (9)呈现:

    表示向HTTP输出流中写入标记文本的过程。

    开发人员通过重写Render()方法使其在输出流上自定义标记文本。

    (10)处置:

    在此阶段中,通过重写Dispose ()方法完成释放对昂贵资源的引用,如数据库链接等。

    (11)卸载:

    完成的工作与"处置"阶段相同,但是,开发人员通常在Dispose()方法中执行清除,而不处理Unload事件。

    2.冒泡.排序算法 ,对比性能区别就是时间复杂度

    int [] array = new int
            ;
            int temp = 0 ;
            for (int i = 0 ; i < array.Length - 1 ; i++)
            {
            for (int j = i + 1 ; j < array.Length ; j++)
            {
            if (array[j] < array[i])
            {
            temp = array[i] ;
            array[i] = array[j] ;
            array[j] = temp ;
            }
            }
            }
    3.设计模式熟悉的2种

    如果一个类始终只能创建一个实例,则这个类被称为单例类,这种模式就被称为单例模式。

    单例模式的方法命名为:getInstance(),这个方法的返回类型肯定是单例类的类型了。getInstance方法可以有参数,这些参数可能是创建类实例所需要的参数,当然,大多数情况下是不需要的。

    单例模式主要有如下两个优势:

    1)      减少创建Java实例所带来的系统开销

    2)      便于系统跟踪单个Java实例的生命周期、实例状态等。

    简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

    优势:

    让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可。

    从而避免了对象的调用者与对象的实现类以硬编码方式耦合,以提高系统的可维护性、可扩展性。

    工厂模式的缺陷:当产品修改时,工厂类也要做相应的修改。

    工厂方法

    我们不想在工厂类中进行逻辑判断,程序可以为不同产品类提供不同的工厂,不同的工厂类和产不同的产品。

    当使用工厂方法设计模式时,对象调用者需要与具体的工厂类耦合。

    使用简单工厂类,需要在工厂类里做逻辑判断。而工厂类虽然不用在工厂类做判断。但是带来了另一种耦合:客户端代码与不同的工厂类耦合。

    在工厂类的基础上再增加一个工厂类,该工厂类不制造具体的被调用对象,而是制造不同工厂对象。

    代理模式(Proxy)

    当客户端代码需要调用某个对象时,客户端实际上不关心是否准确得到该对象,它只要一个能提供该功能的对象即可,此时我们就可返回该对象的代理(Proxy)

    4.新的技术你最近再研究哪些
    5.页面间传值方式
    6.数据库性能优化方面
    优化查询语句,使用存储过程;sql语句的执行计划是否正常;
    减少应用和数据库的交互次数、同一个sql语句的执行次数;
    数据库实体的碎片的整理(特别是对某些表经常进行insert和delete动作,尤其注意,索引字段为系列字段、自增长字段、时间字段,对于业务比较频繁的系统,最好一个月重建一次);
    减少表之间的关联,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力;
    对访问频繁的数据,充分利用数据库cache和应用的缓存

    数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能;
    7.结构和类的区别
    8.抽象类和接口区别

    9.WebSocket 的使用

    10.闭包

    11.最近做项目遇到的问题

    12.支付

    13.为什么离职

    14.点击出现行的内容

    $(document).ready(function () {
            $('#ulClick li').click(function () {
               // alert($(this).index('#ulClick li') + 1);
                alert($(this).html())
            });
        });

    15.每个文本赋值:123

     var inputs = document.getElementsByTagName("input");
            var ls = [];
            for (var i = 0; i < inputs.length; i++) {
                var type = inputs[i].getAttribute("type")
                if (!type || type == "" || type == "text") {
                    inputs[i].value = "123";
                }
            }
    16.获取字符串中出现最多的数和它一共出现多少次

    var str = 'asdfssaaasasasasaa'; //定义字符串
    var json = {}; //定义数组用来存储每个字符元素所对应的个数
    for (var i = 0; i < str.length; i++) { //遍历字符串中所有的元素
    if (!json[str.charAt(i)]) { //判断当前元素是否已经在数组中存在 str.charAt(i)//当前元素
    json[str.charAt(i)] = 1; //给对应数组元素中个数赋值
    }
    else
    {
         json[str.charAt(i)]++; //给数组中元素个数赋值
    }
    };
    var iMax = 0;//出现次数
    var iIndex = '';//元素名称
    for(var i in json){ //重新赋值出现最多的数据和个数
    if(json[i]>iMax){
    iMax = json[i];
    iIndex = i;
    }
    }

  • 相关阅读:
    request.getParameter() 和request.getAttribute() 区别
    Java中this和super的用法总结
    jQuery实现列表框双向选择操作
    Eclipse中.setting目录下文件介绍
    通过Ajax方式上传文件,使用FormData进行Ajax请求
    ASP.NET程序中常用的三十三种代码
    计算地球上两个坐标点(经度,纬度)之间距离sql函数
    动态调用WebService(C#) (非常实用)
    带SoapHeader验证的WebServices
    GridView内容详解(转载)
  • 原文地址:https://www.cnblogs.com/hanxingli/p/5602135.html
Copyright © 2011-2022 走看看