java 事务陷阱
这篇文字写的很好,推荐给自己和大家!
事务策略: 了解事务陷阱
在 Java 平台中实现事务时要注意的常见错误
级别: 中级
Mark Richards, 主管和高级技术架构师, Collaborative Consulting, LLC
2009 年 3 月 06 日
事务处理的目标应该是实现数据的高度完整性和一致性。本文是为 Java 平台开发有效事务策略 系列文章 的第一篇,介绍了一些妨碍您实现此目标的常见事务陷阱。本系列作者 Mark Richards 通过使用 Spring Framework 和企业 JavaBeans(Enterprise JavaBeans,EJB)3.0 规范中的代码示例解释了这些极其常见的错误。
在应用程序中使用事务常常是为了维护高度的数据完整性和一致性。如果不关心数据的质量,就不必使用事务。毕竟,Java 平台中的事务支持会降低性能,引发锁定问题和数据库并发性问题,而且会增加应用程序的复杂性。
关于本系列
事务提高了数据的质量、完整性和一致性,使应用程序更健壮。在 Java 应用程序中实现成功的事务处理不是一件容易的事,设计和编码几乎一样重要。在这份新的 系列文章 中,Mark Richards 将带领您设计一个有效的事务策略,适合从简单应用程序到高性能事务处理等各种用例。
但是不关心事务的开发人员就会遇到麻烦。几乎所有与业务相关的应用程序都需要高度的数据质量。金融投资行业在失败的交易上浪费数百亿美元,不好的数据是导致这种结果的第二大因素(请参阅 参考资料)。尽然缺少事务支持只是导致坏数据的一个因素(但是是主要的因素),但是完全可以这样认为,在金融投资行业浪费掉数十亿美元是由于缺少事务支持或事务支持不充分。
忽略事务支持是导致问题的另一个原因。我常常听到 “我们的应用程序中不需要事务支持,因为这些应用程序从来不会失败” 之类的说法。是的,我知道有些应用程序极少或从来不会抛出异常。这些应用程序基于编写良好的代码、编写良好的验证例程,并经过了充分的测试,有代码覆盖支持,可以避免性能损耗和与事务处理有关的复杂性。这种类型的应用程序只需考虑事务支持的一个特性:原子性。原子性确保所有更新被当作一个单独的单元,要么全部提交,要么回滚。但是回滚或同时更新不是事务支持的惟一方面。另一方面,隔离性 将确保某一工作单元独立于其他工作单元。没有适当的事务隔离性,其他工作单元就可以访问某一活动工作单元所做的更新,即使该工作单元还未完成。这样,就会基于部分数据作出业务决策,而这会导致失败的交易
相关文档:
我们不妨设想,为了创建一个新的线程,我们需要做些什么?很显然,我们必须指明这个线程所要执行的代码,而这就是在Java中实现多线程我们所需要做的一切!
作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程。
  ......
原始URL: http://blog.donews.com/dukejoe/archive/2010/04/28/1575574.aspx
package cn.com.hrbb.samples;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
*
* 演示使用 JACOB : Java COM Bridge 操纵 Word 文档
*
* 作者:高宏伟(DukeJoe)
......
直接通过main入口:
arguments设置:-Djava.library.path=动态库所在目录
在Linux上调.so文件:.so文件 必须命名为:libXXX.so,如:libJni.so
在Windows上调.dll文件:.dll文件 命名不要加lib,直接命名为:XXX.dll 如:Jni.dll
例:
动态库:libJniNassirDecrypt.so 或 JniNassirDecrypt.dll
java调用动态库代码:
Str ......
编写一个程序,判断一个字符串是否是合法的Java标识符;
//create string
import java.util.regex.*;
public class Split {
public static void main (String[] args) {
Pattern pattern = Pattern.compile("[,]");
String[] arrStr = pattern.split("abstract,break,byte,boole ......
//传递参数,和c中传地址有点像
public class ArrayParameters {
public static void changeOrNot (int i, double[] x) {
i =-1;
x[0] = -2.0;
double[] y = x;
y[1] = -3.0;
double[] z = {4.0, 4.0, 4.0};
x = z;
}
public static void main (String[] args) {
String s1 = ......