- 十. 配置 Quartz 数据源
如果你在使用 JDBC JobStore,就需定义要用到的数据源。而如果使用的是 JobStoreCMT,你实际上需要定义两个数据源。数据源可由三种方式来配置:
·在 quartz.properties 文件中指定连接池属性,这样 Quartz 能亲自创建数据源。
·指定应用服务器管理的数据源所在 JNDI 的位置,Quartz 直接使用它。
·还可使用自定义的 org.quartz.utils.ConnectionProvider 实现类。 Read More - 九. 配置 JobStoreCMT
JobStoreCMT 提供了另一类型的 JobStore,它能工作于一个关系型数据库之下。你能通过设置 org.quartz.jobStore.class 属性来选用 JobStoreCMT:
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
当使用 JobStoreCMT 时,可设置一些附加属性,它们是表 A.5 所示的。 Read More - 八. 配置 JobStoreTX JobStore
你可以像下面那样设定类名来选择 JobStoreTX 类:
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
表 A.4 列出了配置 Quartz JobStore 的可用属性。只有少数几个属性是必须的,而且其他的都有合理的默认值。 Read More - Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效,至今原因都未查明。
查询 dba_dependencies 视图可以看到存储过程所引用的对象,再就在 dba_objects 视图中可以看到对象的 created 和 last_ddl_time 时间。
上面的那种无效的存储程,只要不是语法上有问题,重新编译一下又是可用的了。总不能每次发现时人工去编译的,所以要实现自动化,有以下两种方法(网上找到的所有的 在Oracle中重新编译所有无效的存储过程 代码排版都很混乱,所以主要是重新整理了): Read More - 在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:
1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中
2. 建立数据库间的 dblink,然后用 create table B as select * from A@dblink where ...,或 insert into B select * from A@dblink where ...
3. exp A 表,再 imp 到 B 表,exp 时可加查询条件
4. 程序实现 select from A ..,然后 insert into B ...,也要分批提交
5. 再就是本篇要说到的 Sql Loader(sqlldr) 来导入数据,效果比起逐条 insert 来很明显
第 1 种方法在记录多时是个噩梦,需三五百条的分批提交,否则客户端会死掉,而且导入过程很慢。如果要不产生 REDO 来提高 insert into 的性能,就要下面那样做: Read More 现属 Sun 旗下的虚拟机软件 VirtualBox 出了 2.1.0 版,看这篇文章对 2.1.0 版 VirtualBox 的介绍: http://www.cnbeta.com/articles/73057.htm。 在 32 位的主机上可安装 64 位的客户系统,而且也加入了 OpenGL 3D。详见 查看官方的更新文档 这很值得体验一番。
于是下载了 VirtualBox-2.1.0-41146-Win_x86.msi 来安装,安装过程中很多的 未通过 Windows 微标的测试 的提示,不管这些,统统 Continue Anyway 过去。安装完了,一启动,弹出窗口报错了, 错误界面如下: Read More
- 六. 配置 Quartz RMI 选项
当通过 RMI 使用 Quartz 启动一个 Quartz 实例时,你需要把它配置为经由 RMI "导出" 服务。然后你就能创建客户端,配置它们的 Quartz Scheduler 作为 "代理" 工作而连接到服务端来。表 A.3 列出了可用的 RMI 设定。
Read More表 A.3. Quartz 使用 RMI 时的属性 名称 必须 类型 默认值 org.quartz.scheduler.rmi.export 否 Boolean false org.quartz.scheduler.rmi.registryHost 否 String localhost org.quartz.scheduler.rmi.registryPort 否 Integer 1099 org.quartz.scheduler.rmi.createRegistry 否 String never org.quartz.scheduler.rmi.serverPort 否 Integer Random org.quartz.scheduler.rmi.proxy 否 Boolean false - 二. 配置 Quartz ThreadPool
表 A.2 列出了配置 Quartz ThreadPool 可用的属性。只有少些属性是必须的,剩下的都有合理的默认值。
Read More表 A.2. 配置 Quartz ThreadPool 的属性 名称 必须 类型 默认值 org.quartz.threadPool.class 是 String null org.quartz.threadPool.threadCount 是 Integer -1 org.quartz.threadPool.threadPriority 否 Integer 5 org.quartz.threadPool.makeThreadsDaemons 否 boolean false org.quartz.threadPool.threadsInheritGroup-
OfInitializingThread否 boolean true org.quartz.threadPool.threadsInheritContext-
ClassLoaderOfInitializingThread否 boolean false - 附录 A. Quartz 配置参考
本附录编写作为配置一个 Quartz 应用的快速参考。尽管这些信息在 Quartz 文档中都有,但是这个附录提供了一种更快的方式来查找配置属性和它们可能的值。
一. 主要的 Quartz 属性
表 A.1 列出了主要的 Scheduler 属性。它们用于声明和标识 Scheduler 和其他高层次的设置。 Read More 自适应收集器
在第一篇:有关于 JVM 的垃圾收集(一) 中谈到过几种垃圾收集的算法, 然而我们的 JVM 启动之后并不要求彻头彻尾的死板的使用一种垃圾收集算法,固定的算法参数。因为某种情况下某些垃圾收集算法工作得更好, 而别外一些收集算法在另外的情况下工作得更好,所以自适应的垃圾收集技术应运而生。自适应算法监视堆中的情形,并且对应的调整为合适的垃圾收集技术。 或能是换一种垃圾收集算法,或者是调整当前算法参数,或者把堆划分为子堆,同时在不同的子堆中使用不同的算法。
简述火车算法
垃圾收集一般都会停止整个程序的运行来查找和收集垃圾对象,它们可能在程序执行的任意时刻暂停,并且暂停的时间也无法确定。 垃圾收集也可能使得程序对事件响应迟钝,无法满足实时系统的要求。如果一种垃圾收集算法可能导致用户可察觉的到的停顿或者使得程序无法适合实时系统的要求, 这种算法被称作破坏性。垃圾收集算法的还有一个基本目标是使本质上的破坏性尽可能少,如果可能的话,尽可能消除这种破坏性。
Read More