透彻的掌握Spring中@Transactional的使用
事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP, 将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(XML)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式。注释配置是目前流行的使用方式,因此本文将着重介绍基于 @Transactional 注解的事务管理。
反向代理和正向代理的区别
Java对Zip格式压缩和解压缩
ZIP 和 GZIP 的区别
gzip 是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件。gzip 在压缩文件中的数据时使用的就是 zlib。为了保存与文件属性有关的信息,gzip 需要在压缩文件(*.gz)中保存更多的头信息内容,而 zlib 不用考虑这一点。但 gzip 只适用于单个文件,所以我们在 UNIX/Linux 上经常看到的压缩包后缀都是 *.tar.gz 或 *.tgz,也就是先用 tar 把多个文件打包成单个文件,再用 gzip 压缩的结果。
zip 只是一种数据结构,跟 rar 同类型。zip 是适用于压缩多个文件的格式(相应的工具有 PkZip 和 WinZip 等),因此,zip 文件还要进一步包含文件目录结构的信息,比 gzip 的头信息更多。但需要注意,zip 格式可采用多种压缩算法,我们常见的 zip 文件大多不是用 zlib 的算法压缩的,其压缩数据的格式与 gzip 大不一样。