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;
}
}

 

posted @ 2016-06-20 23:07  李寒星  阅读(407)  评论(0编辑  收藏  举报