多线程的两种方法 thred,runable,终究是实现的哪个方法 都是重写run方法。
spring实例化bean的过程
要想获取到一个bean对象,得先通过BeanFactory的getBean()方法获取,期间会经过一系列步骤来实例化这个bean对象:
第一步:调用Bean的默认构造方法(当然也可以是指定的其它构造方法),生成bean实例:bean1。
第二步:检查Bean配置文件中是否注入了Bean的属性值,如果有注入,则在bean1实例的基础上对其属性进行注入,把原来的bean1给覆盖掉形成新的bean实例:bean2。
第三步:检查Bean是否实现了InitializingBean接口,如果实现了此接口,则调用afterPropertiesSet()方法对bean2进行相应操作后,把bean2覆盖形成新的bean实例:bean3。
第四步:检查Bean配置文件中是否指定了init-method此属性,如果已指定,则调用此属性对应方法并对bean3进行相应操作后,最终把bean3覆盖形成新的实例:bean4。
spring 的注解有哪几种
我回答的requestMaping,responsebody,requestparam,contooler,service,
还有@Repository,entity,table,@Column
spring 注入是怎么实现的,我回答的xml配置,自己扫描的
接口注入
set,get注入
构造注入
spring 的ioc是什么,控制权转移到底是什么
有人理解说是面向接口编程
所谓控制反转就是应用本身不负责依赖对象的创建和维护,而是交由外部容器负责.这样控制权就转移到了外部容器
控制权的转移就是所谓的控制反转.
排序有哪几种,写快速排序
冒泡排序:效率最低
快速排序:递归的排序,很好的选择
归并排序:比堆排序多一倍的空间,因为要多出来一个数组
堆排序:堆排序适合于数据量非常大的场合(百万数据)
希尔排序:比冒泡快5陪,快速快2倍,是5000以下小数据的好选择
插入排序:比冒泡快两倍,但是最好用在1000以下的
交换排序和选择排序:实际应用较少
基数排序:耗费存储空间,适用于整数
排序法 | 平均时间 | 最差情形 | 稳定度 | 额外空间 | 备注 |
冒泡 | O(n2) | O(n2) | 稳定 | O(1) | n小时较好 |
交换 | O(n2) | O(n2) | 不稳定 | O(1) | n小时较好 |
选择 | O(n2) | O(n2) | 不稳定 | O(1) | n小时较好 |
插入 | O(n2) | O(n2) | 稳定 | O(1) | 大部分已排序时较好 |
基数 | O(logRB) | O(logRB) | 稳定 | O(n) | B是真数(0-9),R是基数(个十百) |
Shell | O(nlogn) | O(ns) 1<s<2 | 不稳定 | O(1) | s是所选分组 |
快速 | O(nlogn) | O(n2) | 不稳定 | O(nlogn) | n大时较好 |
归并 | O(nlogn) | O(nlogn) | 稳定 | O(1) | n大时较好 |
堆 | O(nlogn) | O(nlogn) | 不稳定 | O(1) | n大时较好 |
cookie session
cookie是客户端保存数据,扩展HTTP协议实现
session,在服务器端保存,类似于散列表的结构(也可能就是使用散列表)来保存信息。
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
cokkie在哪个文件,本地文件夹
session是在服务器端,关闭浏览器和超过时间都会自动释放
表结构,
垃圾回收机制的finalize是怎么实现的
sockt 的服务器端和客户端通讯过程
listin 和 filter的区别
web.xml里面可以配置Filter和Listener,他们有什么区别,有什么共同点吗?应该在什么情况下使用他们?
Filter是过滤器,过滤一些不友好或是你不想要的东东, Listener是Servlet的监听器,可以监听客户端的请求、服务端的操作等。
通过监听器,可以自动激发一些操作。
Filter可以实现对请求的过滤和重定向等,也就是说可以操作request和response,session等对象,listner只能监听到以上对象的属性的修改。
Filter 是struts的核心控制器,负责拦截所有用户请求。
listener是监听器,通常都是监听并加载一些插件用的,比如spring。
log4j等 Filter(过滤器):你可以写个类实现Filter接口,然后配置到web.xml中,那么Tomcat在接受到Http请求后首先会调用FilterChain中的第一个过滤器,为了能调用下个过滤器或真正的请求(servlet or jsp),所以你的实现类所实现的方法中必须要调用chain.doFilter(request,response),不然会得到空白页面!
过滤器通常用做处理乱码,权限控制,也可以管理Hibernate中的session! Listener(监听器):利用观察者模式实现,在Tomcat中,如果要对application,session,request,response等对象监听,要实现类似 ****Listener接口,再配置到web.xml中,那么Tomcat在启动的时候就会把你写的这些监听类实例化成对象加入到一个集合中,此后对你要监听的对象操作时,都将会调用listener中的方法,比如HttpSessionListener 可以用来监听当前在线的所有用户!
Filter和servlet基本类似 可以用做servlet来用(struts2.0就是这么干的) 有reqeust请求才能运行 listener是监听器 是系统启动就运行 一般监听都是用来事先加载系统文件的
集群
Cluster集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可*性的服务。大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。Cluster必须可以协调管理各分离的组件的错误和失败,并可透明地向Cluster中加入组件。一个Cluster包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用 程序文件存储在其各自的本地储存空间上。Cluster内各节点服务器通过一内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上的任一故障发生时,客户都将能很快连接到新的应用服务上.
项目部署
ant工具
1、导出为war包后上传到服务器,放到tomcat的webapps下
2、写个Ant脚本,在tomcat所在的服务器上运行脚本,脚本自动执行:
1)取下svn、cvn等版本库上的应用程序
2)编译、拷贝到指定目录
3)将编译好的项目内容打为war包
4)停止tomcat,将war拷贝到tomcat中,启动tomcat。这一步可以自己操作,也可以用ant来做
js异步回调
1,回调函数
2,事件监听
3,发布,订阅
js渲染
js是并发还是串发
浏览器兼容问题
css margin pangding
了解jvm吗
自己职业的规划
扩展:
spring三种实例方式
1,构造器实例
2,静态工厂
3,动态工厂
IDE(Integrated Drive Electronics)即集成驱动电子设备,一般作为ATA(Advanced Technology Attachment高技术配置)硬件的接口,主要用于硬盘和光驱。
Apache Ant 是一个基于 Java的生成工具。
生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本