java基础知识第四篇

1,使用Spring框架的好处是什么?

答:1,一个轻量级的框架,大概只有2M

2,IOC 依赖注入,不需要创建对象,只需用的时候将对象注入

3,AOP切面编程,将业务逻辑和系统逻辑分开处理 

4,springMVC,是一个经过精心编制的web框架,可以更加方便web开发

5,spring的容器可以对对象进行生命周期的管理和配置

2,ApplicationContext通常的实现是什么?

答:1>FileSystemXmlApplicationContext:此容器从一个XML文件中加载bean的定义,XML Bean配置文件的全路径名必须提供给它的构造函数

2>ClassPathXmlApplicationContext:此容器也从一个XML文件中加载bean的定义,这里需要正确设置classpath因为这个容器将在classpath里找bean配置

3>WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean

3,什么是Spring的依赖注入?有哪些方法进行依赖注入

答:依赖注入也叫控制翻转,就是对对象的创建不需要开发人员去创建,只需要注入被调用放,由spring的容器创建对象,注入的方式有set注入,构造器注入,还有就是接口注入。我们接下来会有一章专门讲spring的ioc以及ao'p。

4,什么是Spring beans?

答:表示被spring管理的对象,具体说来,它是被Spring框架容器初始化、配置和管理的对象。Spring bean是在Spring的配置文件中定义(现在也可以通过annotation注解来定义),在Spring容器中初始化,然后注入到应用程序中的。

5,解释Spring支持的几种bean的作用域

答:支持5中bean的作用域

1,single,单例是默认的模式非线性安全的但是不是每次请求都创建对象。

2,property,这个每次getBean的时候都会创建一个,但是创建后spring就不管了

3,request,web应用跟property一样,只是创建后spring实时监听

4,session,http的session请求每次请求都创建创建后spring实时监听

5,Globalsession每个全局的HTTP Session

6,解释Spring框架中bean的生命周期。

答:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁

7,在 Spring中如何注入一个java集合?

答:  看下这个配置就懂了

<!-- Bean Definition to handle references and values -->

  <beanid="..."class="...">


   <!-- Passing bean reference for java.util.List -->

   <propertyname="addressList">

    <list>

      <refbean="address1"/>

      <refbean="address2"/>

      <value>Pakistan</value>

    </list>

   </property>

8,解释不同方式的自动装配 。

答:no:默认的方式是不进行自动装配,通过显式设置ref 属性来进行装配。

byName:通过参数名 自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同名字的bean。

byType::通过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType,之后容器试图匹配、装配和该bean的属性具有相同类型的bean。如果有多个bean符合条件,则抛出错误。

constructor:这个方式类似于byType, 但是要提供给构造器参数,如果没有确定的带参数的构造器参数类型,将会抛出异常。

autodetect:首先尝试使用constructor来自动装配,如果无法工作,则使用byType方式

9,Spring框架的事务管理有哪些优点?
答:Spring 框架的事务有声明式事务和编程式事务,拥有ACID4大特性,使用起来简单方便,只需在配置文件中添加事务类,使用的时候不需要手动的开启和提交,Spring将其封装好类已经甚至异常回滚就可以直接调用。

10,什么是基于Java的Spring注解配置? 给一些注解的例子?

答:基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分

Spring配置而非通过XML文件。以@Configuration 注解为例,它用来标记类可以当做一个

bean的定义,被Spring IOC容器使用。另一个例子是@Bean

注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文

11,什么是ORM?

答:对象关系映射,就是标准的mvc 中的model定制的,使代码层次结构清晰,通过对象去操作数据库,提高sql语句的复用。

12,Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?

答:参照

https://blog.csdn.net/chenggang_zh/article/details/79593538

 SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。

   Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元

13,MyBatis中使用#和$书写占位符有什么区别?

答:#传入的数据作为字符串,$传入的数据直接显示,ordeby 语句中用的是$

14,解释一下MyBatis中命名空间(namespace)的作用?
答:MyBatis中命名空间(namespace)对应的是dao层接口的包名+类名,mybatis 通过这个命名空间不用进行接受的实现,既可以找到对应的sql语句。

15,MyBatis中的动态SQL是什么意思?

答:根据需要动态的改变查询条件,动态标签有if,choose,where ,set 等

16,JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?

答:1,JDBC不停的对数据库进行链接释放对系统性能造成压力,MyBatis运用链接池解决这个问题

2,JDBC直接操作数据库繁琐,MyBatis将对象和mapper.xml文件分开可重复复用,并动态执行语句,对返回结果也有比较好的维护。

17,简单的说一下MyBatis的一级缓存和二级缓存?

答 :sqlsession 为一级缓存,session为二级缓存,二次执行sql 的时候一般从session中获取DML(增删改)会将二级缓存清除,默认二级缓存是不开启的需要进行配置,而且二级缓存如果开启对象应该实现序列化。

参考

https://www.cnblogs.com/happyflyingpig/p/7739749.html

17,请简述在浏览器中输入一个 URL 至页面呈现,网络上都发生了什么事?

答:首先拿到这个地址的时候要进行本地host解析,如果本地hosts没有则用dns解析成ip,通过tcp 三次握手建立链接,发送到服务器上,服务器收到请求以后处理返回,页面收到返回请求进行浏览器解析分析数据请求需要的外部文件,jpg,css,js什么的,进行页面的渲染。

18,hashmap 为什么是线程不安全的?

答:hashmap 在进行多线程操作的时候,若简单的put 或者del 都会造成线程安全的问题,当进行put 的时候,若A和B两个线程同时对同一个数组位置下的链表进行put(都是先找到头部从头部插入),若A先找到头部的位置,时间片到了,这个时候B开始进行put也找到了图片的位置并进行put,此时时间片又到了A,A直接进行put,将原先Bput的东西给覆盖了,此时就造成了数据丢失。

还有就是在进行扩容的时候,数组会进行2倍长度的扩容,这个时候会重新进行hashcode,可能将链表中的位置指向改变,此时B记录的指向是相反的,就会形成指向循环,当进行get操作的时候,如果,发现key值对应不上,会继续找下一个指针,这样就一直在两个之间进行循环,造成死循环。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容