今天刚写了几个代码,用在正在开发的项目中
虽然是从各处找来的,但是经过我修改完善了一下
1 SendMail -- 用于项目中贺卡的发送
原本来自于 aistill原作的代码:http://www.csdn.net/Develop/Read_Article.asp?Id=14929
本代码修改了一些实现。可增加任意附件,可支持HTML
可以不考虑设定标题、内容的是否合理等
本类采用了JavaMail及JAF包,需要从http://java.sun.com另行下载
另外,类中采用了我自己的Logger类,可按照自己情况修改
2 FTPConnection -- 用于项目中下载管理
提供FTP浏览,列表等简单功能,由于B/S架构的限制
无法普及使用。仅适用于管理员单用户使用
鉴于使用WEB方式访问FTP并上传下载的意义不大,仅提供浏览功能
目的是,从FTP中得到文件名称并加入到数据库提供下载
本类采用了sun提供的FTPClient类实现。该类功能极弱....
在ServU服务器测试通过
改进:如果要让多人使用,可以考虑将其实例加入Session
============= 代码:SendMail.java =====================
package nona.util;
/**
* 以下的包需要下载
* JAF 1.0.2
* JavaMail 1.3.1
* http://java.sun.org
*/
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
/**
* 邮件发送类,用于发送邮件及附件
* 支持mime格式及Html,支持多附件
* <p>Title: 冰云工作室</p>
* <p>Description: 邮件发送</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: icecloud@sina.com</p>
* @author 冰云
* @version 1.0 August.23rd 2003
* @todo 使用者请修改Logger.log为System.out.println
*/
public class SendMail {
private MimeMessage mimeMsg; //MIME邮件对象
private Session session; //邮件会话对象
private Properties props; //系统属性
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
private String authentication = "false"; //smtp是否需要认证
private String username = ""; //smtp认证用户名和密码
private String password = "";
private String from = "";
private String to = "";
private String cc = "";
private String bcc = "";
private String body = "";
private String subject = "";
private String host = "";
private String reply = "";
private String sender = "";
private String date = "";
private boolean textmail = true;
private String mailtype = PLAIN;
private static final String HTML = "text/html;charset=GB2312";
private static final String PLAIN = "text/plain; charset=GB2312";
private ArrayList attachment = new ArrayList();
/**
*
*/
public SendMail() {
this(true);
}
public SendMail(boolean textmail) {
this.textmail = textmail;
this.mailtype = textmail ? PLAIN : HTML;
}
public SendMail(String from, String to, String subject, String body) {
this();
loadDefault();
}
private boolean createMimeMessage() {
try {
// Logger.log(this,"createMimeMessage():准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); //获得邮件会话对象
}
catch (Exception e) {
Logger.logerr(this, "createMimeMessage():获取邮件会话对象时发生错误!");
Logger.logerr(this, e);
return false;
}
try {
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();
return true;
}
catch (Exception e) {
Logger.logerr(this, "createMimeMessage():创建MIME邮件对象失败!");
Logger.logerr(this, e);
return false;
}
}
private boolean initMail() {
if (props == null) {
props = System.getProperties(); //获得系统属性对象
}
if ("".equals(host)) { // 设置主机
loadDefault();
}
props.put("mail.smtp.host", host); //设置SMTP主机
if (!this.createMimeMessage())
return false;
props.put("mail.smtp.auth", authentication); //设置认证
try {
if (!"".equals(subject)) // 设置标题
mimeMsg.setSubject(subject);
if (!"".equals(from)) //设置发信人
mimeMsg.setFrom(new InternetAddress(from));
if (!"".equals(to)) // 设置收信人
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
if (!"".equals(cc)) // 设置抄送
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(cc));
if (!"".equals(bcc)) // 设置密件抄送
mimeMsg.setRecipients(Message.RecipientType.BCC,
(Address[]) InternetAddress.parse(bcc));
if (!"".equals(reply)) //设置回复
mimeMsg.setReplyTo( (Address[]) InternetAddress.parse(reply));
// if (!"".equals(date)) //设置日期
// mimeMsg.setSentDate(new Date(date));
if (!"".equals(body)) { // 设置内容
if (!this.textmail) {
BodyPart bp = new MimeBodyPart();
bp.setContent(body, mailtype);
mp.addBodyPart(bp);
}
else {
mimeMsg.setText(body);
}
}
if (!attachment.isEmpty()) { // 设置附件
for (Iterator it = attachment.iterator(); it.hasNext(); ) {
BodyPart bpr = new MimeBodyPart();
FileDataSource fileds = new FileDataSource( (String) it.next());
bpr.setDataHandler(new DataHandler(fileds));
bpr.setFileName(fileds.getName());
mp.addBodyPart(bpr);
}
}
return true;
}
catch (Exception e) {
Logger.logerr(this, "initMail():设置邮件发生错误!");
Logger.logerr(this, e);
return false;
}
}
public boolean Send() {
try {
if (initMail()) {
if (mp.getCount() > 0)
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Logger.log(this, "正在发送邮件....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
Logger.log(this, "发送邮件成功!");
transport.close();
return true;
}
else {
return false;
}
}
catch (Exception e) {
Logger.logerr(this, "邮件发送失败!");
Logger.logerr(this, e);
return false;
}
}
private void loadDefault() {
}
public void setCc(String cc) {
this.cc = cc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public void setHost(String host, boolean auth) {
this.host = host;
this.authentication = String.valueOf(auth);
}
public void setHost(String host, boolean auth, String username,
String password) {
setHost(host, auth);
setUsername(username);
setPassword(password);
}
public void setHost(String host, String username, String password) {
setHost(host, true);
setUsername(username);
setPassword(password);
}
public void setHost(String host) {
setHost(host, true);
}
public void setFrom(String from) {
this.from = from;
}
public void setPassword(String password) {
this.password = password;
}
public void setTo(String to) {
this.to = to;
}
public void setUsername(String username) {
this.username = username;
}
public void setAttachment(String filename) {
this.attachment.add(filename);
}
public void setBody(String body) {
this.body = body;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setReply(String reply) {
this.reply = reply;
}
public void setSender(String sender) {
this.sender = sender;
}
public static void main(String[] argc) {
if (argc.length == 0) {
System.out.println("Useage:SendMail [smtp] [user] [password] [to] [body]");
}
else {
SendMail sm = new SendMail();
sm.setHost(argc[0], argc[1], argc[2]);
sm.setTo(argc[3]);
sm.setBody(argc[4]);
if (sm.Send()) {
System.out.print("Send successful.");
}
else {
System.out.print("Send failed.");
}
}
}
}
================== 代码:FTPConnection.java ===============
package nona.util;
import sun.net.ftp.*;
import java.io.*;
import java.io.IOException;
import java.util.StringTokenizer;
import sun.net.ftp.*;
import java.util.ArrayList;
/**
* FTP连接代码,可浏览FTP等
* 仅适用于管理员操作,不适合普通用
*
* <p>Title: 冰云工作室</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author 冰云
* @version 1.0 August.23rd 2003
*/
public class FTPConnection {
FtpClient client;
private String host;
private String username;
private String password;
private String path = "/";
private int port = 21;
private static FTPConnection instance;
private FTPConnection() {
}
// 单例类的方法,获得唯一实例
public static FTPConnection getInstance() {
if (instance == null) {
instance = new FTPConnection();
}
return instance;
}
// 连接FTP,并进入当前的path
public void connect() throws IOException {
if (client == null) {
client = new FtpClient(host, port);
client.login(username, password);
client.binary();
client.cd(path);
}
else {
client.noop();
client.cd(path);
}
}
// 关闭FTP
public void close() throws IOException {
if (client != null) {
client.closeServer();
}
}
// 获得FTPClient类,可以直接对其操作
public FtpClient getClient() throws IOException {
if (client == null) {
connect();
}
return client;
}
// 返回当前目录的所有文件及文件夹
public ArrayList getFileList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.list()));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}
// 返回当前目录的文件名称
public ArrayList getNameList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.
nameList(path)));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}
// 判断一行文件信息是否为目录
public boolean isDir(String line) {
return ( (String) parseLine(line).get(0)).indexOf("d") != -1;
}
public boolean isFile(String line) {
return!isDir(line);
}
// 处理getFileList取得的行信息
private ArrayList parseLine(String line) {
ArrayList s1 = new ArrayList();
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()) {
s1.add(st.nextToken());
}
return s1;
}
public String getFileName(String line) {
return ( (String) parseLine(line).get(8));
}
public String getFileSize(String line) {
return (String) parseLine(line).get(4);
}
public String getFileDate(String line) {
ArrayList a = parseLine(line);
return (String) a.get(5) + " " + (String) a.get(6) + " " + (String) a.get(7);
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPath() {
return path;
}
public void setPath(String path) throws IOException {
if (client == null)
this.path = path;
else {
client.cd(path);
}
}
public void setPort(int port) {
this.port = port;
}
}
============== 使用方法例 ====================
1 SendMail:
<%
SendMail sm = new SendMail();
sm.setHost("smtp.vip.sina.com","user","pass");
sm.setSubject("xxx");
sm.setTo("xx");
....随便选择几个set写就行...
....很多可以省略
out.println(sm.send()); // true or false
%>
2 FTPConnection:
<%
FTPConnection ftpc = FTPConnection.getInstance();
ftpc.setHost("192.168.10.100");
ftpc.setUsername("admin");
ftpc.setPassword("123");
ftpc.connect();
%>
<table border="1">
<tr>
<td></td>
<td>名称</td>
<td>大小</td>
<td>创建时间</td>
</tr>
<%
// 遍历用getFileList取得的当前目录下的信息,并得到每个文件的一行信息
for(Iterator it = ftpc.getFileList().iterator();it.hasNext();){
String line = (String)it.next(); %>
<tr>
<td><%if (ftpc.isDir(line)) {%>dir<%}else{%>file<%}%></td>
<td><%=ftpc.getFileName(line)%></td>
<td><%=ftpc.getFileSize(line)%></td>
<td><%=ftpc.getFileDate(line)%></td>
</tr>
<%
}
%>
</table>
说明:
1 FTPConnection中,如果文件名含有空格可能会出现错误
2 SendMail中,loadDefault()函数未提供实现,可采用自己的properties文件来初始化
3 使用SendMail请修改所有的Logger,这是我自定义的记录类,忘记删除了,可考虑用System.out.println代替
4 FTPConnection中,如果用在普通用户页面上,请勿采用单例模式而采用普通的类并将其加入Session
5 FTPConnection换页进入目录的同时,可修改path,这样可以继续浏览下级目录的内容
分享到:
相关推荐
SmartTools InDesign插件
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
机械设计课程设计说明书_带式输送机传送装置_西北工业大学.doc
使用 “模块化欧洲小镇” 包来改变你的游戏世界!这个套装提供了你设计一个充满活力的低多边形城市所需的一切。 套装包括: 模块化建筑:各种结构可创造多样化的建筑设计。 自然元素:树木、灌木丛和植物,以增加你的小镇的绿色景观。 基础设施:道路、人行道、边界和墙壁,以构建一个逼真的布局。 不同的道具:很多物品,如消防栓、路灯、咖啡馆桌椅、垃圾桶、长椅等等。 所有模型都采用低多边形美学制作,确保出色的性能和独特的视觉风格。这个套装非常适合所有平台上的游戏:移动设备、桌面电脑和虚拟现实。它易于使用且高度可定制,让你轻松构建自己独特的欧洲风格小镇。用 “模块化欧洲小镇” 将你的愿景变为现实!(解释说明:“lowpoly” 即低多边形,是一种在游戏和数字艺术中常用的风格,以较少的多边形数量来呈现模型,通常具有简洁的外观和较好的性能表现。
机械工艺课程设计 挂轮架轴自由锻工艺设计(全套图纸).doc
nvm-window v1.1.12
multipart类型接口的介绍与使用
机械创新课程设计_自动翻书机设计.doc
“机械原理”课程设计自动打印机的设计.doc
内容概要:介绍了两种不同类型的采购订单‘确认控制’操作——‘确认控制’一步法(0004)和两步法(0001),并且阐述了它们各自的操作流程以及后台配置方式。还涵盖了另一种收货类型'粗收货'(0002),并通过具体的系统功能与菜单选项展示了一般性的操作步骤,并解释了它的背景及意义。 适合人群:需要理解并能够执行采购确认控制流程的供应链管理从业人员以及系统管理员。 使用场景及目标:帮助用户理解采购流程,特别是涉及到确认步骤以及粗收货的情形。目的是保证采购流程的准确性,提升仓库收货效率。 其他说明:文章详细描述了一系列系统功能与配置,包括采购订单的创建与更新,通过特定的功能码实现采购确认,内向交货单的处理和收货的具体操作,强调每一种确认控制方法背后的原理及其应用场景。
【6层】4837.9平米六层框架综合办公楼(含计算书、建筑、结构图纸) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
-40V;-65A;RDS(ON)=10mΩ@VGS=10V;VGS=20V;Vth=-1.6V
玻璃瓶印花机的设计机械原理课程设计.docx
基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。基于springboot+Vue的旅游推荐系统设计与实现源码+数据库(98分毕业设计),含有代码注释,小白都可以看懂,个人98分毕业设计。毕业
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
2024年中国低轨通信星座产业及海外拓展前景研究报告.pdf
基于几何约束的车辆3D检测的实现.zip
【5层】4352.4平米框架办公楼(含计算书,建筑、结构图) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项目3比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
Suricata 下载 安装、使用- windows系统、linux系统 wincap或ncap软件需要另外下载安装
美国充电基础设施