基于Redis的Session共享示例
原文地址: 基于Redis的Session共享示例
閱讀之前夯缺,腦補的畫面是:在負載均衡的場景下,各個單機統(tǒng)一通過在業(yè)務代碼中通過redis客戶端存取session漩仙。
本文中提到的思路是,在Tomcat中,通過配置Session-Manager來實現(xiàn)讯赏。這里會用到jedis客戶端jar包垮兑,common-pool2,以及tomcat-redis-session-manager的包漱挎。完全是通過配置的方式就實現(xiàn)了多個Tomcat的session共享系枪。
所以本文的重點在于配置:如何配置在一臺機器上啟動多個Tomcat(通過指定不同的端口),如何安裝和啟動redis磕谅,如何配置Session-Manager私爷。
Spring的事務管理機制
原文地址: Spring的事務管理機制
本文首先提到spring是通過內(nèi)置的事務管理器來實現(xiàn)事務管理的。比如下面的列表:
- DataSourceTransactionManager 數(shù)據(jù)源事務管理器膊夹,提供對單個javax.sql.DataSource事務管理衬浑,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事務管理放刨;
- HibernateTransactionManager 提供對單個org.hibernate.SessionFactory事務支持工秩,用于集成Hibernate框架時的事務管理
- .....
事務管理器是我們在spring的配置文件中來定義的:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
spring支持編碼式事務和聲明式事務。
編碼式事務其實就是在程序內(nèi)部硬編碼进统,最常見的例子就是在JDBC中手動開啟事務助币,手動提交。這個不再贅言螟碎。
聲明式事務基于AOP眉菱,允許通過配置的方式(配置文件或者注解)來實現(xiàn)事務的管理。
聲明式事務涉及到的一些屬性:
- 傳播行為:Propagation 定義了當存在多個事務的時候的一些處理機制掉分〖蠡海或者定義是否啟用事務等等。
- 隔離級別 定義了一個事務可能受其他并發(fā)事務影響的程度
- 回滾規(guī)則
- 事務超時
- 是否只讀
這篇文章算是對之前spring一些零散知識的小匯總酥郭,感覺有些收獲华坦。因為在日常開發(fā)中,經(jīng)常會忽略上面提到的這些概念不从。
Java對象的序列化與反序列化
原文地址: Java對象的序列化與反序列化
按照以往的知識積累惜姐,在Java中這個話題主要涉及到Serializable接口、幾個對象流(比如ObjectOutputStream)消返、Transient關鍵字载弄、序列化ID耘拇。
這些知識點在本文中都有介紹撵颊,現(xiàn)粗略整理一下個人感覺不錯的點。
- Transient 關鍵字的作用是阻止被修飾的變量被序列化到文件中惫叛。
- 虛擬機是否允許反序列化倡勇,不僅要求類路徑一致,還要求兩個類的序列化ID一致。通常我們在IDE中會自動生成隨機的序列化ID妻熊。 可以考慮用固定的1L夸浅。