Ioc:inversion of control 控制反转 我们不再手动创建对象 而是将对象的创建权交给IOC容器,需要获取对象时直接从IOC容器中获取 DI:dependency injection 依赖注入 IOC的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。 IOC开发中怎么实现?两种方式:xml 注解 ioc XML文件实现方式,注解实现方式 答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。 注解原理是什么 Spring MVC常用的注解有哪些? 通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 : (1)加入Jackson.jar RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构 在RESTful接口中,所有的方法都是返回JSON,没有返回页面的(ModelAndView),因此,所有的方法上都需要添加 AOP(这里的AOP指的是面向切面编程思想,而不是Spring AOP)主要的的实现技术主要有Spring AOP和AspectJ。 AspectJ的底层技术。 AspectJ的底层技术是静态代理,即用一种AspectJ支持的特定语言编写切面,通过一个命令来编译,生成一个新的代理类,该代理类增强了业务类,这是在编译时增强,相对于下面说的运行时增强,编译时增强的性能更好。 Spring AOP spring中常用注解: springboot中常用注解: @SpringbootApplication中包含三个注解 实现方法: 多线程的两种实现方式的区别: 同步的实现方面有两种,分别是synchronized,wait与notify 产生死锁的四个必要条件: 如何避免死锁? #{}表示一个占位符号 ${}表示拼接 sql 串 1.HashMap的特性有哪些? 2.谈一下HashMap的底层原理是什么? 3.谈一下hashMap中put是如何实现的? 4.谈一下hashMap中什么时候需要进行扩容,扩容resize()又是如何实现的? 调用场景: 实现过程:(细讲) 5.谈一下hashMap中get是如何实现的? 6.谈一下HashMap中hash函数是怎么实现的?还有哪些hash函数的实现方式? 相同点:都是存储key-value键值对的。
1、Spring的优点:
一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring 自身也提供了表述层的SpringMVC和持久层的Spring JDBC)。2、 什么是ioc 什么是依赖注入
通过配置Spring.xml文件 或者使用注解
3、请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?
4、Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?
5、常用注解
注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
6、Spring MVC怎么和AJAX相互调用的?
(2)在配置文件中配置json的映射
(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。7、springmvc如何处理异常
三种方法
异常处理的优先级别:本类>外部处理类>配置文件<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.ArithmeticException">error2</prop> <prop key="java.lang.NullPointerException">error2</prop> </props> </property> </bean>
8、SpringMVC怎么样设定重定向和转发的?
9、SpingMVC中函数的返回值是什么?
ModelAndView类把视图和数据都合并的一起的,但一般用String比较好10、SpringMvc中有个类把视图和数据都合并的一起的,叫什么?
11、什么是SpringMVC restful风格,如何在spring mvc实现RESTful 服务
12、springMVC和struts2的区别有哪些?
struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。C.springmvc通过参数解析器将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面,Jsp视图解析器默认使用jstl
Struts采用值栈存储请求和响应的数据,通过OGNL存取数据。13、spring的aop:
Spring AOP采用的是动态代理,在运行期间对业务方法进行增强,所以不会生成新类,对于动态代理技术,Spring AOP提供了对JDK动态代理的支持以及CGLib的支持。
JDK动态代理只能为接口创建动态代理实例,而不能对类创建动态代理。需要获得被目标类的接口信息(应用Java的反射技术),生成一个实现了代理接口的动态代理类(字节码),再通过反射机制获得动态代理类的构造函数,利用构造函数生成动态代理类的实例对象,在调用具体方法前调用invokeHandler方法来处理。
CGLib动态代理需要依赖asm包,把被代理对象类的class文件加载进来,修改其字节码生成子类。但是Spring AOP基于注解配置的情况下,需要依赖于AspectJ包的标准注解,但是不需要额外的编译以及AspectJ的织入器,而基于XML配置不需要。14、@Resource和@AutoWire有什么区别?
(1). 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
(2). 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
(3). 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
(4). 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
另外,由于@Autowired是按照类型进行装配的 所以可以用集合去接收,
比如
@Autowired
Collection xxs;//BaseXxx可为接口或父类,装配的为全部的实现类或子类15、java中常用注解都有哪些,都代表什么意思?
16、多线程有几种实现方法?有什么区别?
Runnable接口实现多线程比继承Thread类更加能描述数据共享的概念
上面列出了死锁的四个必要条件,我们只要想办法破其中的任意一个或多个条件,就可以避免死锁发生,一般有以下几种方法:
17、#{} 和 ${}的区别?
类型转换,#{}可以有效防止 sql 注入。 #{}可以接收简单类型值或 pojo 属性值。 如果 parameterType
传输单个简单类型值,#{}括号中可以是 value 或其它名称。
可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,{}可以接收简单类型值或 pojo 属性值,如果parameterType传输单个简单类型值,可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,{}括号中只能是 value。18、重定向和转发的异同?
19、cookie和session的区别?
cookie数据存放在客户的浏览器上,session数据放在服务器上。
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。数据存储
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。20、get和post请求的区别?
21、arrylist和linklist的区别?
22、string和stringBuffer,stringBuilder的区别?
23、谈一下HashMap的特性?
1.HashMap存储键值对实现快速存取,允许为null。key值不可重复,若key值重复则覆盖。
2.非同步,线程不安全。
3.底层是hash表,不保证有序(比如插入的顺序)
基于hashing的原理,jdk8后采用数组+链表+红黑树的数据结构。我们通过put和get存储和获取对象。当我们给put()方法传递键和值时,先对键做一个hashCode()的计算来得到它在bucket数组中的位置来存储Entry对象。当获取对象时,通过get获取到bucket的位置,再通过键对象的equals()方法找到正确的键值对,然后在返回值对象。
添加的时候进行hashCode计算出backet 然后进行entry对象的存储,获取的时候获取到bucket的位置,通过equals方法找到相对应的值然后返回对象。
hashMap中是如何添加的
(1):key相同 或者内容相同 ,替换旧值
(2):如果是红黑树结构,就调用树的插入方法
(3):链表结构,循环遍历直到链表中某个节点为空,尾插法进行插入,插入之后判断链表个数是否到达变成红黑树的阙值8;也可以遍历到有节点与插入元素的哈希值和内容相同,进行覆盖。
(4):如果桶满了大于阀值,则resize进行扩容
否:进行初始化
是:使用默认的大小和阙值
否:使用构造函数中初始化的容量,当然这个容量是经过tableSizefor计算后的2的次幂数
是,进行扩容,扩容成两倍(小于最大值的情况下),之后在进行将元素重新进行与运算复制到新的散列表中
24、HashMap和HashTable的区别?
不同点:
25、传统hashMap的缺点(为什么引入红黑树?)
O(logn))来优化这个问题。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算