2017年02月28号网络文摘阅读笔记

基于Redis的Session共享示例

原文地址: 基于Redis的Session共享示例

阅读之前,脑补的画面是:在负载均衡的场景下,各个单机统一通过在业务代码中通过redis客户端存取session。

本文中提到的思路是,在Tomcat中,通过配置Session-Manager来实现。这里会用到jedis客户端jar包,common-pool2,以及tomcat-redis-session-manager的包。完全是通过配置的方式就实现了多个Tomcat的session共享。

所以本文的重点在于配置:如何配置在一台机器上启动多个Tomcat(通过指定不同的端口),如何安装和启动redis,如何配置Session-Manager。

Spring的事务管理机制

原文地址: Spring的事务管理机制

本文首先提到spring是通过内置的事务管理器来实现事务管理的。比如下面的列表:

  • DataSourceTransactionManager 数据源事务管理器,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理;
  • HibernateTransactionManager 提供对单个org.hibernate.SessionFactory事务支持,用于集成Hibernate框架时的事务管理
  • .....

事务管理器是我们在spring的配置文件中来定义的:


    

spring支持编码式事务和声明式事务。

编码式事务其实就是在程序内部硬编码,最常见的例子就是在JDBC中手动开启事务,手动提交。这个不再赘言。

声明式事务基于AOP,允许通过配置的方式(配置文件或者注解)来实现事务的管理。

声明式事务涉及到的一些属性:

  • 传播行为:Propagation 定义了当存在多个事务的时候的一些处理机制。或者定义是否启用事务等等。
  • 隔离级别 定义了一个事务可能受其他并发事务影响的程度
  • 回滚规则
  • 事务超时
  • 是否只读

这篇文章算是对之前spring一些零散知识的小汇总,感觉有些收获。因为在日常开发中,经常会忽略上面提到的这些概念。

Java对象的序列化与反序列化

原文地址: Java对象的序列化与反序列化

按照以往的知识积累,在Java中这个话题主要涉及到Serializable接口、几个对象流(比如ObjectOutputStream)、Transient关键字、序列化ID。

这些知识点在本文中都有介绍,现粗略整理一下个人感觉不错的点。

  • Transient 关键字的作用是阻止被修饰的变量被序列化到文件中。
  • 虚拟机是否允许反序列化,不仅要求类路径一致,还要求两个类的序列化ID一致。通常我们在IDE中会自动生成随机的序列化ID。 可以考虑用固定的1L。

你可能感兴趣的:(2017年02月28号网络文摘阅读笔记)