1、Redis五大数据类型使用场景
2、RabbitMQ、ActiveMQ、 RocketMQ、Kafka对比
3、JSP 9大内置对象
(1)request
封装客户端的请求,其中包含来自GET或POST请求的参数。
(2)response
封装服务器对客户端的响应。
(3)pageContext
通过该对象可以获取其他对象。
(4)session
封装用户会话的对象。
(5)application
封装服务器运行环境的对象。
(6)out
输出服务器响应的输出流对象。
(7)config
Web应用的配置对象。
(8)page
JSP页面本身(相当于Java程序中的this)。
(9)exception
封装页面抛出异常的对象。
4、Spring 支持的5种作用域
(1)singleton
spring ioc容器中只存在一个bean实例,bean以单例模式存在,是系统默认值。
(2)prototype
每次从容器调用bean时都会创建一个新的示例,既每次getBean()相当于执行new Bean()操作。
Web环境下的作用域:
(3)request
每次http请求都会创建一个bean。
(4)session
同一个http session共享一个bean实例。
(5)global-session
用于portlet容器,因为每个portlet 有单独的session,globalsession 提供一个全局性的http session。
注意:
使用prototype作用域需要慎重的思考,因为频繁创建和销毁bean会带来很大的性能开销。
5、Spring五个事务隔离级别和七个事务传播行为
五种事务设置:
DEFAULT (默认)
使用数据库设置的隔离级别(默认),由DBA默认的设置来决定隔离级别。
READ_UNCOMMITTED (读未提交)
会出现脏读、不可重复读、幻读(隔离级别最低,并发性能高)。
READ_COMMITTED (读已提交)
会出现不可重复读、幻读问题(锁定正在读取的行)。
REPEATABLE_READ(可重复读)
会出幻读(锁定所读取的所有行)。
SERIALIZABLE (序列化)
保证所有的情况不会发生(锁表)。
注意:
不可重复读的重点是修改:同样的条件,你读取过的数据,再次读取出来发现值不一样了。 幻读的重点在于新增或者删除同样的条件,第1次和第2次读出来的记录数不一样。
五个事务隔离级别:
在TransactionDefinition接口中定义了五个不同的事务隔离级别。
ISOLATION_DEFAULT
Platfrom TransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应。
ISOLATION_READ_UNCOMMITTED
事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
ISOLATION_READ_COMMITTED
保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
ISOLATION_REPEATABLE_READ
这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
ISOLATION_SERIALIZABLE
这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻读。
七个事务传播行为:
在TransactionDefinition接口中定义了七个事务传播行为。
PROPAGATION_REQUIRED
如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
PROPAGATION_SUPPORTS
如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。
PROPAGATION_MANDATORY
如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
PROPAGATION_REQUIRES_NEW
总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
PROPAGATION_NOT_SUPPORTED
总是非事务地执行,并挂起任何存在的事务。
PROPAGATION_NEVER
总是非事务地执行,如果存在一个活动事务,则抛出异常。
PROPAGATION_NESTED
如果一个活动的事务存在,则运行在一个嵌套的事务中.如果没有活动事务,则按TransactionDefinition.PROPAGATION_REQUIRED属性执行。