1.
依赖注入目的是减少组件之间的耦合度,使开发变得简单。 IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。 比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。
2.
static属性是属于类的,所以对象共同拥有。所以既可以通过类名.变量名进行操作,也可用对象.变量名进行操作。
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。 非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
3.
创建泛型对象的时候,一定要指出类型变量T的具体类型。争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。 2、JVM如何理解泛型概念 —— 类型擦除。事实上,JVM并不知道泛型,所有的泛型在编译阶段就已经被处理成了普通类和方法。 处理方法很简单,我们叫做类型变量T的擦除(erased) 。
4.
Java鲁棒性的特点如下:Java在编译和运行程序时都要对可能出现的问题进行检查,以防止错误的产生。Java编译器可以查出
许多其他语言运行时才能发现的错误。Java不支持指针操作,大大减少了错误发生的可能性。Java具有异常处理的功能,当程
序异常时,它能捕获并响应意外情况,以保证程序能稳妥地结束,计算机系统不会崩溃。而Java能运行虚拟机实现跨平台是
Java的与平台无关性的特点。
5.
会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。
HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当 用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在 多个页面间切换时,服务器会保存该用户的信息。
6.Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话 HTTP是“无状态”协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息。即使那些支持持续性 HTTP 连接 的服务器,尽管多个客户请求连续发生且间隔很短时它们会保持 socket 打开, 但是,它们也没有提供维护上下文信息的内建支 持。上下文的缺失引起许多困难。