`
aswang
  • 浏览: 836765 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
  参考书籍:《Oracle.Streams.11g数据复制》
要求:使用Oracle Streams捕获某个用户下部分表的DML操作变更,并通过Oracle的AQ(高级队列)对外发布,然后Java端通过JMS来获取变更,并执行后续同步操作。   Java部分:   1、jms配置信息 jms.local.username=strmadmin jms.local.password=strmadmin jms.local.jdbcUrl=jdbc:oracle:thin:@127.0.0.1:1521:orcl jms.local.queueName=jms_queue jms.local.agentName=jms_a ...
要求:使用Oracle Streams捕获某个用户下部分表的DML操作变更,并通过Oracle的AQ(高级队列)对外发布,然后Java端通过JMS来获取变更,并执行后续同步操作。 数据库部分: 1、使用Streams要求Oracle以归档模式运行,归档日志默认存放在DB_RECOVERY_FILE_DEST指定的位置,由于该区域有大小限制, 所以,为了避免空间不足导致的后续问题,首先需要修改Oracle归档日志目录   alter system set log_archive_dest='/home/dev/app/dev/oradata/archivelog'; ...
    在编写存储过程时,一般情况直接调试,或者使用dbms_output.putline等来输出日志信息,便于诊断错误等。     但在有些时候,上面的方法就不行了。比如某些作为回调而编写的存储过程。     这时,可以采用oracle提供的utl_file接口,来将调试信息等写入文件,便于后期查看。       基本操作:     首先创建Oracle目录utl,指定目录位置,也即日志存放目录: CREATE DIRECTORY utl AS '/home/dev/app/dev/util';       授权: GRANT EXECUTE ON ...
需求:实现Oracle数据库表记录变更后的准实时同步。   可选方案: 1、基于时间戳来检测变更 要求:   a、需同步的表均需要添加时间戳字段,并在更改数据后,同步更新时间戳   b、对于删除操作,需要额外处理。或通过触发器记录,或者不真实删除记录,仅仅设置删除标记。   c、业务层编码实现同步 缺点:   对系统增加了额外约束   同步的实时性取决于轮训的时间间隔   2、基于触发器来记录变更 要求:   a、对于所有同步的表,均需要编写触发器   b、可基于dblink直接将变更应用到远程数据库   c、或触发器将变更统一记录到一张表中,然后业务层编码实 ...
1、Scala官网:http://www.scala-lang.org/ 2、Scala style:http://docs.scala-lang.org/style/ 3、Twitter Effective Scala:http://twitter.github.io/effectivescala/index-cn.html 4、Scala Course:http://www.scalacourses.com/ 5、Twitter 课堂:http://twitter.github.io/scala_school/zh_cn/index.html 6、Scala best prac ...
好久没更新博客了!   最近,由于项目要求,需要将swing开发的一个桌面程序转换为Applet并嵌入到web中。转换工作很快就完成了,但是在嵌入到web以后,每次访问applet都会弹出一个警告对话框,大体的意思说是applet包含了不受信的代码,提示你是否要阻止运行,如果不细看提示,很容易就点击了是,结果applet就不会运行了。   通过看对话框中的提示,对applet中的所有jar都进行了签名,再次访问还是出现了警告对话框,再看,发现提示说applet中包含了签名和未签名的代码(资源)。我们知道java的签名只会对jar包中的class进行签名,而不会对其中的资源文件进行签名 ...
java虚拟机总结思维导图:   参考《深入理解java虚拟机》
java虚拟机字节码执行引擎思维导图总结: 参考《深入理解java虚拟机》
java垃圾回收相关总结:   参考《深入理解java虚拟机》
在《java并发编程实战》这本书的第十六章中讲到不安全的发布时,给了一个不安全的延迟初始化示例:   public class UnsafeLazyInitialization { private static Resource resource; public static Resource getInstance() { if (resource == null) ...
何为同步容器:可以简单地理解为通过synchronized来实现同步的容器,如果有多个线程调用同步容器的方法,它们将会串行执行。比如Vector,Hashtable,以及Collections.synchronizedSet,synchronizedList等方法返回的容器。   可以通过查看V ...
在《java并发编程实战》第四章4.4.1节给出了一个程序示例:   @NotThreadSafe class BadListHelper <E> { public List<E> list = Collections.synchronizedList(new ArrayList<E>()); public synchronized boolean putIfAbsent(E x) { boolean absent = !list.contains(x); if (absent) ...
在看一些代码的时候,会发现在定义long型和double型的变量时,会在前面加上volatile关键字,当然也会看到在其它原子类型的变量前加上这个关键字,但这里要说的还是有区别的。   在java中,java的内存模型要求,变量的读取操作和写入操作都必须是原子操作的,但是对于非volatile类型的long和double有些不同,因为这两个变量是64位存储,JVM允许将64位的读操作或写操作分解为2个32位的操作。这样,当在多线程环境中读取一个非volatile的long变量时,可能会出现读取到这个变量一个值的高32位和另一个值的低32位,从而导致数据出问题。   这里还需要说明下 ...
在阅读《java并发编程实战》的第三章的时候,看到书中的一个例子,随在Eclipse中执行看看效果。示例代码如下:   public class NoVisibility { private static boolean ready; private static int number; private static class ReaderThread extends Thread { public void run() { while(!ready) { Thread.yield(); } System.out.pri ...
Global site tag (gtag.js) - Google Analytics