真要看如何安装可直接跳到第三节,前两节权当胡诌。
此第一节与本篇旨意确有偏离,以免混淆视听,故此默认时隐去,有兴趣者可点击本行来展开阅读此节
现在 Linux 慢慢也走向平民化了,尤其是 Ubuntu Linux。与 Ubuntu 的机缘还是前年大约八月份的时候,有个同事还是从美国带回来的一张 Ubuntu 6.06 LTS 的 Live CD。当晚在自己机器上一启动,发现那傻不拉叽又愣黄的界面,实在是无法与 RedHat 和 Suse 相媲美,便把它沉之箱底。 阅读全文 >>
真要看如何安装可直接跳到第三节,前两节权当胡诌。
此第一节与本篇旨意确有偏离,以免混淆视听,故此默认时隐去,有兴趣者可点击本行来展开阅读此节
现在 Linux 慢慢也走向平民化了,尤其是 Ubuntu Linux。与 Ubuntu 的机缘还是前年大约八月份的时候,有个同事还是从美国带回来的一张 Ubuntu 6.06 LTS 的 Live CD。当晚在自己机器上一启动,发现那傻不拉叽又愣黄的界面,实在是无法与 RedHat 和 Suse 相媲美,便把它沉之箱底。 阅读全文 >>
·替换已部署的 Job
Quartz 提供了对已部署 Job 进行修改的灵活性。它是通过允许用修改后的 JobDetail 替换已有的 JobDetail 来支持这一特性的。为展未这一例子,让我们更新代码 12.4 中的 CheckEmailJob 类。代码 12.4 是硬编码了邮件属性值到 Job 类中的。更好的做法是传入那些属性,如此则可以随意的改变它们;那让我们改动 CheckEmailJob 来做到这一点。代码 12.7 显示的是那个 Job 的更新后的版本。
代码 12.7. 更新后的允许传入属性的 CheckEmailJob 阅读全文 >>
二. 与 Job 一同工作
本节为使用 Quartz 的 Job 提供了一些例子。
·创建一个新的 Job 类
创建一个新的 Job 类很简单。仅需创建一个类,让它实现 org.quartz.Job 接口即可。这个接口需要你实现 execute() 方法,它会在 Scheduler 决定 Job 要执行时被调用。
代码 12.4 演示了一个简单的 Job,它会为某个用户检查邮件服务器上是否有新的邮件。当 Scheduler 执行这个 Job 时,方法 execute() 被调用,然后其中的代码就会连接到邮件服务器并获取任何邮件消息。这一 Job 只简单的打印邮件是谁发的和邮件的主题。 阅读全文 >>
第十二章. Quartz Cookbook
本章的目的是为在构建 Quartz 应用时常遇到的情形提供一系列的例子和解决方案。本章也可作为对本书剩余部分的一个参考和补充。
一. 与 Scheduler 一同工作
本节提供了使用 Quartz Scheduler 管理功能的几个例子。
·创建和启动 Scheduler
你能通过几种方式来启动 Quartz Scheduler,但是最简单的方式是使用两种 SchedulerFactory 实现中的一个。特别的,org.quartz.impl.stdSchedulerFactory 使用很简单,要执行对 Scheduler 的所有设置工作只需要调用 getDefaultScheduler() 这一静态方法即可,如代码 12.1 所演示的那般。 阅读全文 >>
七. Cron 表达式 Cookbook
此处的 Cron 表达式 cookbook 旨在为常用的执行需求提供方案。尽管不可能列举出所有的表达式,但下面的应该为满足你的业务需求提供了足够的例子。
·分钟的 Cron 表达式
用法 | 表达式 |
每天的从 5:00 PM 至 5:59 PM 中的每分钟触发 | 0 * 17 * * ? |
每天的从 11:00 PM 至 11:55 PM 中的每五分钟触发 | 0 0/5 23 * * ? |
每天的从 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分钟触发 | 0 0/5 15,18 * * ? |
每天的从 5:00 AM 至 5:05 AM 中的每分钟触发 | 0 0-5 5 * * ? |
VMware 中安装了 Linux 后,又给这个虚拟机增加一个硬盘,假设选的类型是 SCSI, 进到虚拟机系统中应如何加载呢?
其实这后 Linux 新加了一个物理硬盘是一回事,做法如下:
在服务器上把硬盘接好,启动linux,以root登陆。
比如我新加一块SCSI硬盘,需要将其分成三个区:
#fdisk /dev/sdb
进入fdisk模式:
Command (m for help):p //查看新硬盘的分区
Command (m for help):n //创建新分区 阅读全文 >>
小时候,大人们的谆谆教诲:做人要诚实。并真以此为做人原则。长大后才知道何谓社会。譬如530,再如艳照门,风声乍起之时,有人辟谣;直东窗事发后,道貌岸然者有之、恬不知耻者亦有之。原本成功就不属于规矩之人。纵观,无玄武门之血腥,何来一代宗皇;老毛若不有理而造反,一味守规矩,或为一介书匠耳。雅各一碗红豆汤便谋得以扫的长子权,再行骗去亚伯拉罕的祝福,并顺理成章让耶和华与他同在,可见上帝之“贤明”?。高等教育中有一句,顺利的是骗子,倒霉的是傻子,我是?不还有企业家的原罪吗?有时竟被社会所放任?
1. 前面讲的自定义类型转换器是基于 OGNL 的 DefaultTypeConverter 类并实现 convertValue() 方法,两个转换方向的逻辑都写在这一个方法中。而 Struts 2 为我们提供了一个 DefaultTypeConverter 的抽象子类 StrutsTypeConverter 来继承,并实现其中两个抽象方法 convertFromString() 和 convertToString(),这要简单易懂。对比 Struts 1 的转换器是要实现 org.apache.commons.beanutils.Converter 接口,以及它的 convert() 方法的。 阅读全文 >>
四. 为 CronTrigger 使用起迄日期
Cron 表达式是用来决定一个 Trigger 被触发执行一个 Job 的日期和次数。当你创建一个 CronTrigger 实例,假如没为它指定一个开始时间,这个 Trigger 当然就会假定是在依赖于 Cron 表达式尽早的被触发。例如,如果你用这个表达式
0 * 14-20 * * ?
这个 Trigger 会在每天的从下午 2 点到下午的 7:59 间的每分钟触发一次。一旦你运行了这个表达式的 CronTrigger,假如当前是下午 2 点后(不能超过 7:59 PM--译者注),它将会立即触发。它会在每天无限期的被触发。 阅读全文 >>
多线程下载由来已久,如 FlashGet、NetAnts 等工具,它们都是依懒于 HTTP 协议的支持(Range 字段指定请求内容范围),首先能读取出请求内容 (即欲下载的文件) 的大小,划分出若干区块,把区块分段分发给每个线程去下载,线程从本段起始处下载数据及至段尾,多个线程下载的内容最终会写入到同一个文件中。
只研究有用的,工作中的需求:要把多个任务分派给多个线程去执行,这其中就会有一个任务列表指派到线程的策略思考:已知:1. 一个待执行的任务列表,2. 指定要启动的线程数;问题是:每个线程实际要执行哪些任务。
策略是:任务列表连续按线程数分段,先保证每线程平均能分配到的任务数,余下的任务从前至后依次附加到线程中--只是数量上,实际每个线程执行的任务都还是连续的。如果出现那种僧多(线程) 粥(任务) 少的情况,实际启动的线程数就等于任务数,一挑一。这里只实现了每个线程各扫自家门前雪,动作快的完成后眼见别的线程再累都是爱莫能助。 阅读全文 >>
每日E读,间隔几天,显的每日E读不每了,新闻过后,精彩继续!
今儿,想起来昨儿,解决的一问题,贴出来大家学习下,由于工作需要,学习,哈哈~!
手头的一个任务,是个java的SWT做的桌面应用程序,有一需求是,程序只能启动一个实例,二次启动会提示启动失败!网上转了一大圈几天也没找到比较理想的解决方法,在CSND等专业程序员网站上查找过,也没有找到!我正要放弃的时候,哈哈,被我找到了!
找了一写方案,总结起来就是,系统单一实例,就是查看共用资源,如果被占用,说明已经启动!有人说用单例模式,那是没有作用的!
网上找到的几种解决方案: 阅读全文 >>