Java高手必会的--多线程编程、事务编程、安全(加密)--教程

本文探讨了多线程在软件开发中的应用及其重要性,同时深入介绍了事务处理的概念,特别是JDBC和JTA在数据库操作中的作用。此外,还讨论了事务管理中的常见陷阱及如何避免。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程:

个人认为主要是线程并发,线程同步的处理,几乎所有的应用程序(比较大型的)都要用到多线程,所以多线程的开发是很能体现一个程序员的技术水平的。java中的并行框架我个人认为是非常好的一个线程并行框架

http://blog.youkuaiyun.com/neusoftware_20063500/archive/2009/04/13/4069281.aspx

 

事务:(我的技术范围,是JDBC、JTA、Spring、EJB都对事务有很好的支持.

在这里,我们只介绍JDBC事务 和JTA(java transaction api),JDBC是一个数据库连接的事务,而JTA是多个数据库的事务,也就是说,JDBC不是两阶段提交协议,而JTA是

http://www.ibm.com/developerworks/cn/java/j-dao/

https://www.ibm.com/developerworks/cn/java/l-transation/part1/

https://www.ibm.com/developerworks/cn/java/l-transation/part2/

 

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0505weber/index.html?ca=dwcn-newsletter-db2

 

事务陷阱:对于你处理事务问题很有帮助,主要从JDBC和ORM框架,以及Spring的@Transactional注解进行解释,包括这个注解的readonly属性和propagation属性 和 JDBC和ORM框架的配合使用容易出现的陷阱

陷阱一:基于 ORM 的框架需要一个事务来触发对象缓存与数据库之间的同步

我发现许多开发人员在使用 @Transactional 注释时并没有花时间理解它的作用,比如事务传播模式被设置成什么呢?只读标志被设置成什么呢?事务隔离级别的设置是怎样的?更重要的是,事务应何时回滚工作?理解如何使用这个注释对于确保在应用程序中获得合适的事务支持级别非常重要。

http://www.ibm.com/developerworks/cn/java/j-ts1.html 

 

Tomcat服务器配置JTA支持

http://www.blogjava.net/zhanglijun33/archive/2006/09/21/jta.html

服务器配置了JTA支持以后(tomcat配置的是JOTM),在一个web应用程序提出多个数据库在一个事务范围内进行操作的请求以后(这个请求就是通过UserTransaction发出),就会发送到Tomcat上,而Tomcat中已经配置了事务管理器(就是TransactionManager),那么就由这个事务管理器处理这个请求,执行两阶段提交协议,想各个数据库进行提交,而这些数据库驱动和以往的数据库驱动有不同,是支持JTA的驱动,下面是一段示例代码

 

不需要事务管理器和应用程序服务器的一段代码,对JTA的工作原理进行入门

 

安全(加密):

 

1.1. 单钥密码体制

单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密。

通常,使用的加密算法比较简便高效,密钥简短,加解密速度快,破译极其困难。但是加密的安全性依靠密钥保管的安全性,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并且如果在多用户的情况下密钥的保管安全性也是一个问题。

单钥密码体制的代表是美国的DES

1.2. 消息摘要

一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。

消息摘要有两个基本属性:

  • 两个不同的报文难以生成相同的摘要
  • 难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要

代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5

1.3. Diffie-Hellman密钥一致协议

密钥一致协议是由公开密钥密码体制的奠基人Diffie和Hellman所提出的一种思想。

先决条件,允许两名用户在公开媒体上交换信息以生成"一致"的,可以共享的密钥

代表:指数密钥一致协议(Exponential Key Agreement Protocol)

1.4. 非对称算法与公钥体系

1976年,Dittie和Hellman为解决密钥管理问题,在他们的奠基性的工作"密码学的新方向"一文中,提出一种密钥交换协议,允许在不安全的媒体上通过通讯双方交换信息,安全地传送秘密密钥。在此新思想的基础上,很快出现了非对称密钥密码体制,即公钥密码体制。在公钥体制中,加密密钥不同于解密密钥,加密密钥公之于众,谁都可以使用;解密密钥只有解密人自己知道。它们分别称为公开密钥(Public key)和秘密密钥(Private key)。

迄今为止的所有公钥密码体系中,RSA系统是最著名、最多使用的一种。RSA公开密钥密码系统是由R.Rivest、A.Shamir和L.Adleman俊教授于1977年提出的。RSA的取名就是来自于这三位发明者的姓的第一个字母

1.5. 数字签名

所谓数字签名就是信息发送者用其私钥对从所传报文中提取出的特征数据(或称数字指纹)进行RSA算法操作,以保证发信人无法抵赖曾发过该信息(即不可抵赖性),同时也确保信息报文在经签名后末被篡改(即完整性)。当信息接收者收到报文后,就可以用发送者的公钥对数字签名进行验证。 

在数字签名中有重要作用的数字指纹是通过一类特殊的散列函数(HASH函数)生成的,对这些HASH函数的特殊要求是:

  1. 接受的输入报文数据没有长度限制;
  2. 对任何输入报文数据生成固定长度的摘要(数字指纹)输出
  3. 从报文能方便地算出摘要;
  4. 难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要;
  5. 两个不同的报文难以生成相同的摘要

代表:DSA

http://www.ibm.com/developerworks/cn/java/l-security/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值