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