吉日的HANDBOOK
===========================================================
===========================================================

引用至:http://rella.blogchina.com/1954932.html

在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。

刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗?

为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类,子类再继承它不就可以了吗?何必弄一个抽象类出来,还要弄一些没有方法体的抽象方法,弄得又象接口又象类的,让人捉摸不定。

当我开始学习java设计模式,真正走进面向对象设计的大门之后,我才发现,自己对面向对象设计的理解原来是那么的片面,那么的肤浅,根本就没有真正理解面向对象思想的精髓,在某一种程度上还受着面向过程的影响,以为弄出了一个个类,就算是面向对象了,而其实还是被过程所驱使着。

我还是说说我现在对面向对象思想的理解吧,不一定正确全面,但我想应该还算是比以前略有进步吧

 查看全文
okone96 发表于:2006.08.28 09:36 ::分类: ( JAVA ) ::阅读:(3036次) :: 评论 (1)
===========================================================
===========================================================

Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。

 查看全文
okone96 发表于:2006.08.21 17:34 ::分类: ( 数据库 ) ::阅读:(7674次) :: 评论 (1)
===========================================================
===========================================================

转自csdn:http://blog.csdn.net/autoair/archive/2005/10/31/519922.aspx

“polymorphism(多态)”一词来自希腊语,意为“多种形式”。多数Java程序员把多态看作对象的一种能力,使其能调用正确的方法版本。尽管如此,这种面向实现的观点导致了多态的神奇功能,胜于仅仅把多态看成纯粹的概念。

 查看全文
okone96 发表于:2006.08.17 09:15 ::分类: ( JAVA ) ::阅读:(348次) :: 评论 (0)
===========================================================
===========================================================

引自ttdy的blog:http://ttyp.cnblogs.com/archive/2004/11/15/63900.aspx

事件源对象
event.srcElement.tagName
event.srcElement.type
捕获释放
event.srcElement.setCapture();
event.srcElement.releaseCapture(); ..............................

 查看全文
okone96 发表于:2006.08.14 13:20 ::分类: ( WEB2.0 ) ::阅读:(355次) :: 评论 (0)
===========================================================
===========================================================

面向对象漫谈

----作者:金永哲

面向对象是一种编程思想,而它是通过类来实现的,下面首先对类的概念说明一下。

类:

类也是一种数据类型,就像整形(int)一样,可以用类定义一个变量。 比如我想定义一个整形变量,如:int a; a是定义的一个变量,它的类型是int.那么也可以定义一个“类”类型的变量。比如:有一个类是TLei, 那么就可以这样,TLei b; b也是一个变量,而它的类型却是TLei.

 查看全文
okone96 发表于:2006.08.08 17:32 ::分类: ( JAVA ) ::阅读:(369次) :: 评论 (1)
===========================================================
===========================================================

JAR文件包及jar命令详解

常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。

 查看全文
okone96 发表于:2006.08.08 17:30 ::分类: ( JAVA ) ::阅读:(457次) :: 评论 (0)
===========================================================
===========================================================

想知道java是怎么实现发邮件的吗?请看详细的代码和说明!

package mail;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;


public class Mail {
/** 发件方式 - 普通发送 */
final public static int TO = 0;
/** 发件方式 - 抄送 */
final public static int CC = 1;
/** 发件方式 - 密件抄送 */
final public static int BCC = 2;

/** 邮件相关信息 - SMTP 服务器 */
private String mailSMTPHost = null;
/** 邮件相关信息 - 邮件用户名 */
private String mailUser = null;
/** 邮件相关信息 - 密码 */
private String mailPassword = null;
/** 邮件相关信息 - 发件人邮件地址 */
private String mailFromAddress = null;
/** 邮件相关信息 - 邮件主题 */
private String mailSubject = "";
/** 邮件相关信息 - 邮件发送地址 */
private Address[] mailTOAddress = null;
/** 邮件相关信息 - 邮件抄送地址 */
private Address[] mailCCAddress = null;
/** 邮件相关信息 - 邮件密件抄送地址 */
private Address[] mailBCCAddress = null;
/** 邮件相关信息 - 邮件正文(复合结构) */
private MimeMultipart mailBody = null;

public Mail() {
mailBody = new MimeMultipart();
}

/**
* 设置 SMTP 服务器
* @param strSMTPHost 邮件服务器名称或 IP
* @param strUser 邮件用户名
* @param strPassword 密码
*/
public void setSMTPHost(String strSMTPHost, String strUser,
String strPassword) {
this.mailSMTPHost = strSMTPHost;
this.mailUser = strUser;
this.mailPassword = strPassword;
}

/**
* 设置邮件发送地址
* @param strFromAddress 邮件发送地址
*/
public void setFromAddress(String strFromAddress) {
this.mailFromAddress = strFromAddress;
}

/**
* 设置邮件目的地址
* @param strAddress 邮件目的地址列表, 不同的地址可用;号分隔
* @param iAddressType 邮件发送方式 (TO 0, CC 1, BCC 2) 常量已在本类定义
* @throws AddressException
*/
public void setAddress(String strAddress, int iAddressType) throws
AddressException {
switch (iAddressType) {
case Mail.TO: {
ArrayList alAddress = StringHelper.split(strAddress, ';');
mailTOAddress = new Address[alAddress.size()];
for (int i = 0; i < alAddress.size(); i++) {
mailTOAddress[i] = new InternetAddress( (String) alAddress.get(i));
}
break;
}
case Mail.CC: {
ArrayList alAddress = StringHelper.split(strAddress, ';');
mailCCAddress = new Address[alAddress.size()];
for (int i = 0; i < alAddress.size(); i++) {
mailCCAddress[i] = new InternetAddress( (String) alAddress.get(i));
}
break;
}
case Mail.BCC: {
ArrayList alAddress = StringHelper.split(strAddress, ';');
mailBCCAddress = new Address[alAddress.size()];
for (int i = 0; i < alAddress.size(); i++) {
mailBCCAddress[i] = new InternetAddress( (String) alAddress.get(i));
}
break;
}
}
}

/**
* 设置邮件主题
* @param strSubject 邮件主题
*/
public void setSubject(String strSubject) {
this.mailSubject = strSubject;
}

/**
* 设置邮件文本正文
* @param strTextBody 邮件文本正文
* @throws MessagingException
*/
public void setTextBody(String strTextBody) throws MessagingException {
MimeBodyPart mimebodypart = new MimeBodyPart();
mimebodypart.setText(strTextBody, "GBK");
mailBody.addBodyPart(mimebodypart);
}

/**
* 设置邮件超文本正文
* @param strHtmlBody 邮件超文本正文
* @throws MessagingException
*/
public void setHtmlBody(String strHtmlBody) throws MessagingException {
MimeBodyPart mimebodypart = new MimeBodyPart();
mimebodypart.setDataHandler(new DataHandler(strHtmlBody, "text/html;charset=GBK"));
mailBody.addBodyPart(mimebodypart);
}

/**
* 设置邮件正文外部链接 URL, 信体中将包含链接所指向的内容
* @param strURLAttachment 邮件正文外部链接 URL
* @throws MessagingException
* @throws MalformedURLException
*/
public void setURLAttachment(String strURLAttachment) throws
MessagingException, MalformedURLException {
MimeBodyPart mimebodypart = new MimeBodyPart();
mimebodypart.setDataHandler(new DataHandler(new URL(strURLAttachment)));
mailBody.addBodyPart(mimebodypart);
}

/**
* 设置邮件附件
* @param strFileAttachment 文件的全路径
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public void setFileAttachment(String strFileAttachment) throws
MessagingException, UnsupportedEncodingException {
File path = new File(strFileAttachment);
if (!path.exists() || path.isDirectory()) {
return;
}
String strFileName = path.getName();
MimeBodyPart mimebodypart = new MimeBodyPart();
mimebodypart.setDataHandler(new DataHandler(new FileDataSource(
strFileAttachment)));
// modified by zord @ 2003/6/16 to support Chinese File Name
// mimebodypart.setFileName(strFileName);
mimebodypart.setFileName(MimeUtility.encodeText(strFileName));
// end of modify
mailBody.addBodyPart(mimebodypart);
}

/**
* 邮件发送(一次发送多个地址, 优点速度快, 但是有非法邮件地址时将中断发送操作)
* @throws MessagingException
*/
public void sendBatch() throws MessagingException {
Properties properties = new Properties();
properties.put("mail.smtp.host", this.mailSMTPHost);
Session session = Session.getInstance(properties, null);
MimeMessage mimemessage = new MimeMessage(session);
mimemessage.setFrom(new InternetAddress(this.mailFromAddress));
if (mailTOAddress != null) {
mimemessage.addRecipients(javax.mail.Message.RecipientType.TO,
this.mailTOAddress);
}
if (mailCCAddress != null) {
mimemessage.addRecipients(javax.mail.Message.RecipientType.CC,
this.mailCCAddress);
}
if (mailBCCAddress != null) {
mimemessage.addRecipients(javax.mail.Message.RecipientType.BCC,
this.mailBCCAddress);
}
mimemessage.setSubject(this.mailSubject);
mimemessage.setContent(this.mailBody);
mimemessage.setSentDate(new Date());
Transport transport = session.getTransport("smtp");
transport.connect(this.mailSMTPHost, this.mailUser, this.mailPassword);
Transport.send(mimemessage);
System.out.println("已向下列邮箱发送了邮件");
if (mailTOAddress != null) {
for (int i = 0; i < mailTOAddress.length; i++) {
System.out.println(mailTOAddress[i]);
}
}
if (mailCCAddress != null) {
for (int i = 0; i < mailTOAddress.length; i++) {
System.out.println(mailCCAddress[i]);
}
}
if (mailBCCAddress != null) {
for (int i = 0; i < mailTOAddress.length; i++) {
System.out.println(mailBCCAddress[i]);
}
}
}

static public void main(String str[]) throws MessagingException
{
Mail mail=new Mail();
mail.setAddress("jgls@21cn.com",Mail.TO);
mail.setFromAddress("jgls@21cn.com");
mail.setSMTPHost("mail.21cn.com","","");
mail.setSubject("测试一下");
mail.setHtmlBody("");
mail.sendBatch();
}
}

补充说明:
StringHelper.split函数

public static ArrayList spilt(String fieldsru, String tag)
{
int begin = 0;
int end;

char dot = tag.charAt(0);
String field;
field = fieldsru + dot;
int num = 0;
int field_len = field.length();
for (int i = 0; i < field_len; i++)
{
if (field.charAt(i) == dot)
{
num++;
}
}
ArrayList returnarray = new ArrayList();
for (int j = 0; j < num; j++)
{
end = field.indexOf(dot, begin);
returnarray.add(field.substring(begin, end));
begin = end + 1;
}

return returnarray;
}

关于使用javamail包发送邮件时编码的解决问题:
1. 在发送正文时指定正文编码:
在发送邮件时使用
MimeBodyPart body = new MimeBodyPart();
body.setContent(content, "text/html;charset=GB2312");
注意此时的content编码必须是所指定的编码格式。
2. 在设置邮件标题时也要指定标题的编码:
MimeMultipart mmp=new MimeMultipart();
mmp.setSubject(subject, "GB2312");
同上也要求subject的编码和指定的编码一致。

3. 发送正文时也可以在header中指定传输编码:
body.setHeader("Content-Transfer-Encoding", "base64"); // 指定使用base64编码


okone96 发表于:2006.08.07 10:30 ::分类: ( JAVA ) ::阅读:(2216次) :: 评论 (3)
===========================================================
===========================================================

使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet 中创建一个CSV (comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件。这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵Excel文件了。

 查看全文
okone96 发表于:2006.08.04 14:44 ::分类: ( JAVA ) ::阅读:(1883次) :: 评论 (2)
===========================================================
===========================================================

对很多初学者来说tomact的配置是非常头疼的事情,但是有了下面的文章你会易如反掌地配置tomcat了,赶快行动吧!

 查看全文
okone96 发表于:2006.08.04 14:41 ::分类: ( 中间件 ) ::阅读:(1174次) :: 评论 (1)
===========================================================
===========================================================
一、SHELL 的START FILES

不管你的login shell是那一种shell,每一个shell都有它自己的start files,我们设定理想环境时所需使用的指令与设定的变量,都可以写在这些start files中,在login时先後加以执行,这些start files的名称分别是:
 查看全文
okone96 发表于:2006.08.04 14:37 ::分类: ( 操作系统 ) ::阅读:(344次) :: 评论 (0)
===========================================================
===========================================================

提供在web页面中判断ActiveX插件是否已安装的简单方法,纯源代码哦^_^

<%@ page contentType="text/html;charset=GBK"%>
<%@ include file="../vvinclude/functions.jsp"%>
<%@ include file="../vvinclude/session.jsp" %>
<html>
<head>
<title>大文件上传组件</title>
<%
String userid=(String)session.getAttribute("userid");
String username=(String)session.getAttribute("username");
String sendstr=userid+"^"+username;
%>
<script language="javascript">

function detectPlugin(CLSID,functionName)
{//BeginUpload();

var pluginDiv=document.createElement("<span name="pluginDiv"></span>");
document.all.acx.insertBefore(pluginDiv);
pluginDiv.innerHTML='<object id="FileUploaderD" codeBase = "../UFileUploaderD.cab#version=6,0,0,31" type="application/x-oleobject" classid="CLSID:'+CLSID+'" height="308" VIEWASTEXT>';

//alert(pluginDiv.innerHTML);
try
{
if(eval("FileUploaderD."+functionName)==undefined)
{
pluginDiv.removeNode(true);
if(confirm("你还没有安装上传文件组件,是否安装?"))
{
winopen("UUploaderBetaV6.0.0.30.EXE");
}
return true;
}
else
{
if (FileUploaderD.Version != "6.0.0.31")
{
strErrInfo = "????×é????×???°?±???????6.0.0.31.n?ú???????ú??°?×°??×é????°?±?????"
strErrInfo += FileUploaderD.Version
strErrInfo += "??nn??±??¤?????????? ?¨?é?ú????×???°???×é????"

}

FileUploaderD.Action = "UploadDealD.jsp";
FileUploaderD.SetAllowedExtensions("*")
FileUploaderD.SetForbiddenExtensions("exe;com")
FileUploaderD.MaxFileNum = 20
FileUploaderD.AutoClearFinishedFiles = 1
FileUploaderD.FileListViewWidth = FileUploaderD.FileListViewWidth * 1
FileUploaderD.FileListViewHeight = FileUploaderD.FileListViewHeight * 1
FileUploaderD.AddField('FormFieldName1', '<%=sendstr%>')
FileUploaderD.AddField('FormFieldName2', 'FormFieldValue2')
return true;
}
}
catch(e)
{
return false;
}
}
function checkActivex()
{
if(!detectPlugin("28776DAD-5914-42A7-9139-8FD7C756BBDD","Version"))
{
if(confirm("你还没有安装上传文件组件,是否安装?"))
{
winopen("UUploaderBetaV6.0.0.30.EXE");
}
}
}

function winopen(a)
{
window.open(a,"alank","width=600,height=400,scrollbars=yes,resizable=no
,toolbar=no,directories=no,menubar=no,top=100,left=200");
}
</script>
</head>
<body bgcolor="#666666" onLoad="checkActivex()">
<div align="center">
<table border="1" style="border-collapse: collapse" width="76%">
<tr>
<td height="33" align="center" bgcolor="#555555"><font color="#FFFFFF" size="-1" face="????">大文件上传组件</font></td>
</tr>
<tr>
<td align="center" bgcolor="#E8E8E8" id="acx">
</td>
</tr>
<tr>
<td height="26" align="center" bgcolor="#555555">&nbsp;</td>
</tr>
</table>
</div>
</body>
</html>


okone96 发表于:2006.08.03 18:51 ::分类: ( WEB2.0 ) ::阅读:(1228次) :: 评论 (4)
===========================================================
===========================================================

通过收集经常见到的问题,总结了一些经验和用户提出的常见问题,从根本上解决了您的困扰,提高你的开发效率!

 查看全文
okone96 发表于:2006.08.03 11:00 ::分类: ( JAVA ) ::阅读:(422次) :: 评论 (0)
===========================================================
===========================================================
作者:RedHeart 转自:JR

  1. JVM的gc概述

  gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。
 查看全文
okone96 发表于:2006.08.03 10:57 ::分类: ( JAVA ) ::阅读:(266次) :: 评论 (0)
===========================================================
===========================================================
java新手必读,
很多初学者设置环境是最大的难题,因为环境配不好就不能进行编译,我初学的时候就是这样,现在拿出来和大家一起分享.
一些入门知识.
 查看全文
okone96 发表于:2006.08.03 09:27 ::分类: ( JAVA ) ::阅读:(317次) :: 评论 (0)
自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...