全国报名热线:0755-23061965

Java入门知识点整理(合集)

时间:2019-06-28 09:27:04   来源:百战程序员   阅读:

1.springCloud是什么?

 

springcloud是一个微服务框架,并提供全套分布式系统解决方案。支持配置管理,熔断机制,leader选举,服务治理,分布式session,微代理,控制总线,智能路由,一次性token。

 

2.Spring事务传播行为

 

所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了如下几个表示传播行为的常量:

 

TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是默认值。

 

TransactionDefinition.PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。

 

TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。

 

TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。

 

TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。

 

TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。

 

TransactionDefinition.PROPAGATION_NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。

 

3.spring MVC与struts2的区别

 

(1)、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截

 

(2)、SpringMVC的方法之间基本上独立的,独享request response数据

 

(3)、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的

 

(4)、拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式

 

(5)、SpringMVC的入口是servlet,而Struts2是filter

 

(6)、SpringMVC集成了Ajax

 

(7)、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱

 

(8)、Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高

 

(9)、Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展

 

(10)、SpringMVC开发效率和性能高于Struts2

 

(11)、SpringMVC可以认为已经100%零配置

 

4.HashMap和Hashtable的区别

 

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。

 

HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。

 

HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。

 

另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。

 

由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。

 

HashMap不能保证随着时间的推移Map中的元素次序是不变的。

 

5.黑盒测试、灰盒测试、白盒测试、单元测试有什么区别

 

黑盒测试关注程序的功能是否正确,面向实际用户;

 

白盒测试关注程序源代码的内部逻辑结构是否正确,面向编程人员;

 

灰盒测试是介于白盒测试与黑盒测试之间的一种测试。

 

单元测试(Unit Testing)是对软件基本组成单元进行的测试,如函数或是一个类的方法。这里的单元,就是软件设计的最小单位。

 

6. Spring Bean的生命周期

 

Bean的建立, 由BeanFactory读取Bean定义文件,并生成各个实例

 

Setter注入,执行Bean的属性依赖注入

 

BeanNameAware的setBeanName(), 如果实现该接口,则执行其setBeanName方法

 

BeanFactoryAware的setBeanFactory(),如果实现该接口,则执行其setBeanFactory方法

 

BeanPostProcessor的processBeforeInitialization(),如果有关联的processor,则在Bean初始化之前都会执行这个实例的processBeforeInitialization()方法

 

InitializingBean的afterPropertiesSet(),如果实现了该接口,则执行其afterPropertiesSet()方法

 

Bean定义文件中定义init-method

 

BeanPostProcessors的processAfterInitialization(),如果有关联的processor,则在Bean初始化之前都会执行这个实例的processAfterInitialization()方法

 

DisposableBean的destroy(),在容器关闭时,如果Bean类实现了该接口,则执行它的destroy()方法

 

Bean定义文件中定义destroy-method,在容器关闭时,可以在Bean定义文件中使用“destory-method”定义的方法

 

简单回答springbean生命周期:

 

(1)实例化(必须的)构造函数构造对象

 

(2)装配(可选的)为属性赋值

 

(3)回调(可选的)(容器-控制类和组件-回调类)

 

(4)初始化(init-method=" ")

 

(5)就绪

 

(6)销毁(destroy-method=" ")

 

7.SpringCloud都有哪些组件

 

Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等

 

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

 

Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

 

Netflix Eureka:一个基于rest服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。

 

Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。

 

Netflix Ribbon:客户端负载均衡的服务调用组件。

 

Netflix Feign:基于Ribbon和Hystrix的声明式服务调用组件。

 

Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。

 

Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

 

Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

 

Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

 

Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

 

Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

 

Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

 

Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

 

Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

 

Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
分享:0
开班计划
热门文章
学员感言

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

0755-23061965

微信扫一扫