VBA 中发送邮件(二. 使用 JMail 组件)

在上一篇 VBA 中发送邮件(使用 Outlook)中,VBA 通过 Outlook 来发邮件不仅频繁的弹出提示窗口要求确定,而且需要在 Outlook 中配置好,不能随意使用邮件服务器。对此,是否有相当于 JavaMail 那样的第三方组件呢?Google 帮忙,果然找到一个,名曰 w3 JMail,J 为首,其实与 Java 无任何关系。

可以在网络上搜索 w3 JMail Personal V4.3,或者直接到官网 http://www.dimac.net 去下载,w3 Jmail 的授权方式是免费的。默认位置安装好 JMail 之后,是在 C:\Program Files\Dimac\w3JMail4 可以看到 Examples 目录、jmail.dll、w3jmail4.pdf 和 readme.txt 文件。可以查阅w3jmail4.pdf 中的使用帮助。我们所要的文件其实只是那个 jmail.dll,安装程序会自动帮你注册 jmail.dll。若未运行安装程序,只是拷贝了 jmail.dll,则要运行 regsvr32 jmail.dll 注册它即可。 阅读全文 >>

VBA 中发送邮件(一. 使用 Outlook 组件)

帮同事做了一个在 Excel 中用 VBA 发邮件的程序,逐行读取 Excel 表格记录中的待发邮件主题、内容及收件人进行发送。首先想到也是看看能否使用 Outlook 的组件,网上查了查,果然有,现把代码贴出来如下: 阅读全文 >>

有关于 JVM 的垃圾收集(三)

对象可触及时的生命周期

在 JVM 1.2 之前,堆中的对象分为三种状态,分别是:

1. 可触及的 -- 从根节点开始可追踪到
2. 可复活的 -- 从根节点开始追踪不到,但有可能被终结方法触及并复活。不仅仅是那些声明了 finalize() 方法的对象,而是所有的对象都要经过可复活状态
3. 不可触及的 -- 以上两种可能性都不存在,可以真正回收它们所占据的内存了

版本 1.2 中,可触及按强弱进一步细分为:

1. 强可触及 -- 即原来的可触及,从根节点开始的任何直接引用,如一个局部变量或任何从强可触及对象的实例引用的对象
2. 软可触及 -- 表现为 SoftReference 所引用的对象
3. 弱可触及 -- 表现为 WeakReference 所引用的对象
4. 影子可触及 -- 表现为 PhantomReference 所引用的对象 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(五. 结合 IronTrack SQL)

本想把 p6spy 结合 SQL Profiler 或 IronTrack SQL 的使用介绍掇凑于一块来写。简单点说,只是一贴上图样,篇幅便需拖拉难遂人愿,也好,索性把它们分成两个篇章。一来每篇主旨鲜明,二来五篇成一系列比起四更来的自然且吉利。

前面讲过 p6spy 本身就可利用 Log4j 的 SocketAppender 向远端发送日志,SQL Profiler 不过是在这个基础上作了进一步拓展。而接下来要说的 IronTrack SQL 就略有不同了,看它带的 p6spy.properties 文件,里面有 IronTrack SQL 给 p6spy 定制的一个模块:module.ibeam=com.irongrid.ibeam.server.IBeamFactory。它用到了 log4j-1.2.8.jar,不过还得研究下 Log4j 在其中所起的作来。现在就来介绍 p6spy 结合 IrconTrack SQL 的使用,最好是你知道如何单独使用 p6spy。压缩包里有文档:是 IronTrackSQL\docs\index.html。

p6spy + IronTrack SQL 观察 SQL 语句 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(四. 结合 SQL Profiler)

p6spy 虽好,但把 SQL 语句输出到文件或是控制台中看起来有些吃力。若能图形界面展示出来便可一目了然,亲切许多。有种方法是配置 p6spy.properties 使用 Log4j 的 SocketAppender,然后启动 Log4j 的 org.apache.log4j.net.SocketServer 界面,或是在 Eclipse log4j plug-in 中也能观察所执行的 SQL 语句。

不过还有种更专业做法,本篇将介绍 p6spy 如何结合 Sql Profiler 或 IronTrack SQL 来使用,并附以贴图,来感受一下吧。也以此来完成关于 p6spy 的这个系列。其实你到后面也会发现,即便是用 Sql Pofier 的实现过程也是借助了 Log4j 的 SocketApender,你可以从它自己带的 p6spy.properties 文件中的配置看出来,即其中的 log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender 这么一个配置。 阅读全文 >>

一篇没有听众的演讲(林语堂)

以前在哪儿说过,假如有人仿安徒生作“无色之画”,做几篇无听众的演讲,可以做得十分出色。这种演讲的好处,在于因无听众,可以少忌讳,畅所欲言,倾颇合 “旁若无人”之义。以前我曾在中西女塾劝女子出嫁,当时凭一股傻气说话,过后思之,却有点不寒而栗,在我总算掬愚诚,郊野叟献曝,而在人家,却未必铭感五内。假如在无听众的女子学校演讲,那便可尽情发挥了。比如在这样一个幻想的大学毕业典礼演讲,我们可以不怕校长难为情,说些时常敢怒而不敢言的话。在一个幻想的小学教员暑期学校,也可以尽情吐露一点对小学教育不大客气的话……婚姻的致词向来也是许多客套,没人肯对新郎新娘说些结婚常识而不免有点不吉利的老实话。因此我就以“婚礼致词”为题作例举隅: 阅读全文 >>

9 个基于JavaScript 和 CSS 的 Web 图表框架

jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现。本文介绍了9个优秀的基于 JavaScript 与 CSS  的 Web 图表框架。

jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现。本文介绍了9个优秀的基于 JavaScript 与 CSS 的 Web 图表框架。 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(三. 定制输出)

既然提到 p6spy 的输出,那就有必要说明一下 p6spy 输出日志的格式了。从上一篇 用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(二. Tomcat 下的配置 中把输出的一段内容拿过来,如下:

03-16-09 15:12:06:656|16|4|statement|SELECT * FROM OM_CUSTOMERS  WHERE CUSTOMER_ID=? ORDER BY CUSTOMER_ID ASC|SELECT * FROM OM_CUSTOMERS  WHERE CUSTOMER_ID=2194 ORDER BY CUSTOMER_ID ASC
03-16-09 15:12:06:671|15|3|statement|SELECT * FROM OM_ORDER_TYPE WHERE TYPE_ID=?|SELECT * FROM OM_ORDER_TYPE WHERE TYPE_ID=25
03-16-09 15:12:06:687|16|1|statement|select * from sys_lookups where lookup_type=?  and lookup_code=? |select * from sys_lookups where lookup_type='OM_ORDER_STATUS'  and lookup_code='70'
03-16-09 15:12:06:812|-1||resultset|select * from sys_lookups where lookup_type='OM_ORDER_STATUS'  and lookup_code='70' |meaning = 已安排生产 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(二. Tomcat 下的配置)

在前篇 用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(一. 引子) 大略介绍了 p6spy,并且在 http://www.p6spy.com/documentation/install.htm#install 也有 p6spy 在不同服务器下的安装方法。本文不打算依照官方的说明来做,我们让 Tomcat 的 Common 类加载器来加载 p6spy.jar 包,包含了 Tomcat 5/6 下的 p6spy 配置,数据库连接池实现用 C3P0,数据库为 Oracle,配置在一个与应用同名的单独的 xml 文件中,Tomcat 中是在应用的 META-INF/context.xml 文件中。步骤如下:

1. 软件准备

下载 Tomcat 5 或者 6 进行安装,不必多说。假设置 Tomcat 的目录为 $TOMCAT_HOME。
下载 p6spy-install.zip,解压缩 p6spy-install.zip,其中有 p6spy.jar 和 spy.properties
准备好数据库的驱动包,比如 Oracle 的 classes12.jar,和 C3P0 实现包,如 c3p0-0.9.0.2.jar。 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(一. 引子)

一个企业应用程序的性能瓶颈可能会在硬件配置、网络方面、程序代码、应用服务器配置、数据库配置、SQL 语句。这里我把本文的关注点 SQL 无意间放在了最后,其实它不并不意味着最后考虑的,而是过程中就要时刻留意的。

SQL 语句的优化总得把所执行语句抓出来瞧瞧,分析分析。如果直接用 JDBC 或者是类 iBatis 的东西来访问数据库,那所执行的 SQL 语句是明确的,而现在的项目大多会用 ORM 组件,例如 Hibernate、JPA、CMP、TopLink 都有自己特定的查询语法,最终当然要转换成 SQL 语句的,所以会生成什么样的 SQL 语句就不甚明了,若人为的看着专有查询语句来相象出 SQL 语句并非易事。虽然 Hibernate 设置 show_sql=true 时也能打印出生成的 SQL(带?号参数),配合详细的日志参数值也可以对上,不过挺麻烦的。 阅读全文 >>