什么情况需要邮件发送?
1、注册后,账户激活功能 (获得有效真实邮箱地址)
2、商城广告邮件
3、节日祝福
4、系统对用户功能通知,可以通过邮件
今天学习目标:通过java程序发送邮件
邮件服务器? 网络中一台电脑,在电脑安装邮件服务器端软件,需要对服务器进行配置
电子邮箱? 邮件服务器上账户,可以通过电子邮箱登陆 邮件服务器
* 服务器会为每个邮箱账户,分配一定空间,用来保存邮箱相关电子邮件
邮件收发协议? SMTP、POP3、IMAP
SMTP 发送邮件协议,默认端口25
POP3 收取邮件协议,默认端口110
* 协议是用来规定通信格式的
IMAP 收取邮件协议,默认端口143,允许用户在线操作邮件,而不需要将邮件下载 ------- GMAIL开发IMAP权限
收发邮件过程是怎么样?
1、aaa@sina.com 通过新浪客户端 连接新浪smtp服务器,发送邮件
2、新浪是smtp 需要将信件转投 给搜狐的 smtp服务器
3、搜狐smtp 获得邮件后,会将邮件保存 bbb@sohu.com 对应邮箱空间里
4、bbb@sohu.com 通过搜狐客户端,连接搜狐pop3服务器,pop3会读取bbb对应邮箱空间,获得aaa发送的邮件,返回客户端显示邮件内容
手动收发邮件实验
1、在sina和sohu 分别注册两个邮箱账户
sina: yuyang94895@sina.com / 1qaz2wsx
sohu: yuyang94895@sohu.com /1qaz2wsx
2、用sina向sohu发送一封邮件,通过telnet(socket程序) 手动根据协议发送邮件
3、安装telnet
抄送:A 发给B ,选择抄送给C , B可以看见邮件抄送给 C (邮件是给B的,需要让C知道B已经收到邮件)
暗送:A 发给B,选择暗送给C ,B可以看见邮件,但是不能看到邮件发给C (邮件给B,也想给C一份,但不想让B知道)
4、使用SMTP发送邮件 连接新浪smtp : telnet stmp.sina.com 25
ehlo xxx ----- SMTP2代 helo
auth login ----- 发邮件时,发给服务器用户名和密码必须使用base64编码
eXV5YW5nOTQ4OTU=
MXFhejJ3c3g=
mail from:<yuyang94895@sina.com> ----- 发件人
rcpt to:<yuyang94895@sohu.com> ----- 收件人
data ------ 邮件内容
from:<yuyang94895@sina.com>
to:<yuyang94895@sohu.com>
subject:第一封0713测试邮件
这是一封测试邮件,哈哈~~~~
.
quit ----- 退出客户端
5、安装易邮
工具 --- 服务器设置 ---- 修改单域名 estore.com -------------------- xxx@estore.com
账户 --- 新建账户 aaa/111 bbb/111
用aaa@estore.com 向 bbb@estore.com 发送一封邮件
6、smtp连接易邮发件
连接易邮smtp服务器 telnet localhost 25
ehlo xxx ----- SMTP2代 helo
auth login ----- 发邮件时,发给服务器用户名和密码必须使用base64编码
YWFh
MTEx
mail from:<aaa@estore.com> ----- 发件人
rcpt to:<bbb@estore.com> ----- 收件人
data ------ 邮件内容
from:<aaa@estore.com>
to:<bbb@estore.com>
subject:第一封0713测试邮件
这是一封测试邮件,哈哈~~~~
.
quit ----- 退出客户端
7、pop3连接易邮收取邮件
连接易邮pop3服务器 telnet localhost 110
user bbb
pass 111
stat ----- 返回邮箱的统计信息
list 邮件号 ------ 邮件信息
retr 邮件号 ------ 收取邮件内容
quit
-----------------------------------------------------------------------------------------------------------------------------------------------
telnet win7 输入中文 ? 问题 ---- 客户端本身问题
putty 小工具 模拟客户端,采用多种连接协议 连接服务器 ------ 企业使用远程连接操作linux
对putty设置
window --- Translation (Use font encoding 就是系统默认编码集gbk) ------------------- 可以将字符集设为utf-8 , window不需要
window --- appearance ---- change 字体显示中文字体(新宋体) 字符集 gb2312
Session中对ip port 和协议进行配置
两种客户端收发邮件软件使用:foxmail、outlook
* 定时收发邮件,提醒用户有新的邮件
1、foxmail 安装配置
邮箱 --- 新建邮箱账户
输入邮箱 密码点击下一步
* 在foxmail安装目录/mail目录/ 每配置一个邮箱 出现一个文件夹
配置pop3 ---- 需要写真实服务器地址 ---- 易邮localhost
配置smtp
2、outlook 安装配置
工具 --- 电子邮箱账户 ---- 添加新电子邮件账户
其它设置 --- 发送服务器 --- 勾选我的发送服务器要求验证
其它设置 --- 高级 ---- 勾选在服务器上保留邮件副本
* win7 无法连通本地易邮
cmd> ping localhost ---- ::1 ---- 解决在hosts文件 添加127.0.0.1 localhost
RFC822文档 规定邮件内容格式 区分和smtp ?
SMTP 通信协议,规定发送邮件时,客户端与服务器通信数据格式
RFC822文档 对邮件中文规定
邮件内容 包括邮件头和邮件体
邮件头 from(发件人) to(收件人) subject(标题) cc(抄送) bcc(暗送)
邮件体 : 邮件正文内容,需要和邮件头以一个空行分隔
RFC822文档 规定一封简单邮件如何编写,本身存在漏洞
* 发邮件过程中 mail from字段 和 RFC822文档 from字段 不同会出现什么问题? 冒名邮件问题
* 对方收取邮件时,只能看到from字段内容,无法得知mail from 地址
ehlo xxx
auth login
YWFh
MTEx
mail from:<aaa@estore.com>
rcpt to:<bbb@estore.com>
data
from: <hr@google.com>
to:<bbb@estore.com>
subject:面试通知
尊敬的李先生,我们已经看过您的简历,发觉您的简历,非常符合我公司搜索研发部,Android开发技术经理职位,请于2012年4月1日到中关村科贸大厦12层B座1205室参加面试。
google人力资源部
2012.1.1
.
--------------------------------------------------------------------------------------------------------------------------
JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook、foxmail功能类似)
* JavaMail开发需要类库 javamail API ,还需要下载 Java Activation Framework (jaf) ---- javamail API 依赖 jaf
导入jar包
mail.jar activation.jar(JDK6.0以后官方API自带)
* JDK6.0 以后开发 只需要导入 mail.jar ----- rt.jar 提供javax.activation 开发包
* JDK5.0(包括) 之前开发,需要导入mail.jar 和 activation.jar
javax.mail.Message 类 ----- 代表邮件本身
* 在javamailAPI中 一个邮件 就是一个Message对象
* 开发中使用javax.mail.internet.MimeMessage 代表邮件
javax.mail.Session 类 ----- 代表与服务器连接会话(简单理解连接)
***** java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 异常
MyEclipse 中javaee.jar 提供javamai API 与 JavaMail 引入jar包发生冲突
解决 :删除javaee.jar里面的mail目录和activation目录
window --- preferences --- 搜索lib ----- Library sets
JAVAMAIL 邮件收发四个核心类
1、Message 邮件
2、Session 连接会话
3、Transport 发送邮件
4、Store 收取邮件
发送邮件编程
1、创建与邮件发送服务器连接Session
2、编写邮件内容 Message
* 符合邮件内容格式RFC822文档 setFrom setRecipients setSubject setText
3、使用Transport工具类 发送邮件
@Test
public void demo2() throws MessagingException {
Properties properties = new Properties();
// 设置properties 属性
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "smtp.exmail.qq.com");
properties.put("mail.smtp.auth", "true");// 连接认证
properties.put("mail.debug", "true");// 在控制台显示连接日志信息
Session session = Session.getInstance(properties);
// 步骤二 编写Message
MimeMessage message = new MimeMessage(session);// 代表一封邮件
// from字段
message.setFrom(new InternetAddress("7xxxxxxx@qq.com"));
// to 字段
message.setRecipients(Message.RecipientType.TO, "4xxxxxxx@qq.com");
// subject字段
message.setSubject("javamail发送简单邮件");
// 邮件正文内容
message.setText("使用javamail 可以发送简单邮件 ...");
// 步骤三 使用Transport发送邮件
Transport transport = session.getTransport();
// 发邮件前进行身份校验
transport.connect("7xxxxxx@qq.com", "123");
transport.sendMessage(message, message.getAllRecipients());
}
-------------------------------------------------------------------------------------------
RFC822 只定义简单邮件格式,没有定义复杂邮件如何编写
MIME 协议 是 RFC822文档的升级补充,完全支持RFC822文档
MIME 将邮件体分成多个部分,每个部分使用分隔线进行分隔,为每个部分提供Content-Type 类型属性
MIME描述邮件多个部分之间关系
1、multipart/mixed 用于携带附件
2、multipart/related 内嵌图片,音乐
3、multipart/alternative 防止兼容问题
* 发送简历时,将简历文件与邮件正文关系设置为alternative,当邮件客户端如果支持简历格式,简历会显示在正文中,如果不支持简历格式,简历会以附件携带
如果发送复杂邮件时,需要携带附件,需要为附件部分,设置Content-Disposition属性,值attachment
* 语法 Content-Dispostion : attachment;filenam=文件名
内嵌图片或者其他资源是,内嵌资源需要提供Content-ID属性,作为该资源唯一标识
* 在邮件正文中通过 <img src="cid:唯一标识" /> 引用内嵌图片和资源
JavaMail怎样描述一封复杂邮件
MimeMessage ----- 整封邮件
MimeBodyPart ---- 邮件每个部分
MimeMultiPart ---- 将BodyPart进行整合
1、判断邮件由几个部分组成,每个部分设计BodyPart
2、将BodyPart组合起来 ---- MultiPart(只有BodyPart之间可以组合,MultiPart不可以和其它BodyPart直接组合,需要组合将MultiPart转换BodyPart)
3、将最后合成MultiPart 交给MimeMessage 对象
总结一下:
1、发送内嵌图片 :图片设置ContentID,在邮件正文中cid:设置id引用目标图片,实现内嵌效果 ---- 图片关系related
2、发送携带附件 :附件中文名,setFileName设置,通过MimeUtility 对中文附件名进行编码 ---- 自动生成Content-Disposition字段 ---- 附件关系mixed
@Test
// 内嵌图片邮件
public void demo3() throws Exception {
// 发送邮件需要三个步骤
// 步骤一:创建Session
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "localhost");
properties.put("mail.smtp.auth", "true");// 连接认证
properties.put("mail.debug", "true");// 在控制台显示连接日志信息
Session session = Session.getInstance(properties);// 与邮件服务器连接会话
// 步骤二:创建Message
MimeMessage message = new MimeMessage(session);
// 设置邮件头(简单邮件和复杂邮件相同
message.setFrom(new InternetAddress("aaa@estore.com"));
message.setRecipients(Message.RecipientType.TO, "bbb@estore.com");
message.setSubject("javamail发送内嵌图片邮件");
// 设置邮件体(简单邮件和复杂邮件区别 就在于邮件体)
MimeBodyPart pic = new MimeBodyPart();// 图片
// 链接数据文件
pic.setDataHandler(new DataHandler(new FileDataSource("beauty.jpg")));
// DataSource dataSource = new FileDataSource("beauty.jpg");
// DataHandler dataHandler = new DataHandler(dataSource);
// pic.setDataHandler(dataHandler);
// 设置一个唯一标识(用于在正文中引入)
pic.setContentID("mypic");
MimeBodyPart content = new MimeBodyPart(); // 邮件正文
content.setContent("<h1>美女图片</h1><img src='cid:mypic' />",
"text/html;charset=utf-8");
// 将两个BodyPart整合
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(pic);
mimeMultipart.addBodyPart(content);
// 设置关系
mimeMultipart.setSubType("related");
message.setContent(mimeMultipart);
// message.writeTo(System.out);
// 步骤三:Transport发送邮件
Transport transport = session.getTransport();
transport.connect("aaa", "111");
transport.sendMessage(message, message.getAllRecipients());
}
@Test
//发送附件
public void demo3() throws MessagingException, UnsupportedEncodingException {
Properties properties = new Properties();
// 设置properties 属性
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "smtp.exmail.qq.com");
properties.put("mail.smtp.auth", "true");// 连接认证
// properties.put("mail.debug", "true");// 在控制台显示连接日志信息
Session session = Session.getInstance(properties);
// 步骤二 编写Message
MimeMessage message = new MimeMessage(session);// 代表一封邮件
// from字段
message.setFrom(new InternetAddress("7xxx@qq.com"));
// to 字段
message.setRecipients(Message.RecipientType.TO, "4xxx@qq.com");
// subject字段
message.setSubject("javamail发送携带附件邮件");
// 邮件正文内容
MimeBodyPart attache = new MimeBodyPart();
attache.setDataHandler(new DataHandler(new FileDataSource(
"大嘴巴 - maybe的机率.mp3")));
// 中文附件名的编码
attache.setFileName(MimeUtility.encodeText("大嘴巴 - maybe的机率.mp3"));// 自动生成mime
MimeBodyPart text = new MimeBodyPart();
text.setContent("<h1>附件是歌曲</h1>", "text/html;charset=utf-8");
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(attache);
mm.addBodyPart(text);
mm.setSubType("mixed");
message.setContent(mm);
// 步骤三 使用Transport发送邮件
Transport transport = session.getTransport();
// 发邮件前进行身份校验
transport.connect("7xxx@qq.com", "xxx");
transport.sendMessage(message, message.getAllRecipients());
}
--------------------------------------------------------------------------------------------------------------------
邮件发送综合案例:注册账户,发送激活邮件,去邮箱激活,进行登陆
* 如果账户未激活情况下,不允许用户登陆
1、功能一:用户注册(用户名、密码、邮箱)--- 在注册服务器端,发送一封激活邮件
2、功能二:去邮件,进行邮件激活
3、功能三:用户登陆(判断用户账户是否激活)
create table user(
id int primary key auto_increment,
username varchar(40) unique,
password varchar(40),
email varchar(100) unique ,
state int ,
activecode varchar(100),
updatetime timestamp
);
state为1 账户已经激活 state为0 账户未激活
activecode 激活码,在服务器端生成,当用户注册后,将激活码发到对方邮箱,并且将激活码保存数据库
账户激活有时间要求,在数据表保存updatetime,控制用户按时进行激活
***** 编写定时器 每隔6小时 运行一次,判断哪个账户已经24小时未激活,未激活,删除用户(发送通知邮件)
Tomcat对JavaMail的支持(JNDI访问) ----- 之前学习tomcat数据库连接池
1、在tomcat启动时,准备javamail 的session对象
2、在Servlet、JSP 通过JNDI方式 访问容器中Session对象
3、获得Session对象,发送邮件
配置javamail/Session
<Context>
<Resource name="mail/Session" auth="Container"
type="javax.mail.Session"
mail.smtp.host="localhost"
mail.transport.protocol="smtp"
mail.smtp.auth="true"
/>
</Context>
***** java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session
错误位置:Session session = (Session) envCtx.lookup("mail/Session");
错误原因:Java中类加载器顺序 (tomcat创建Session使用common加载器,加载tomcat/lib , Servlet中Session使用当前应用类加载器,加载WEB-INF/lib)
.java ---- 编译 ---- .class ----- 需要被JVM的类加载器程序进行加载 ---- java.lang.Class类对象
解决:将当前工程WEB-INF/lib/mail.jar删除
----------------------------------------------------------------------------------------------
MX与A记录(配置邮件服务器相关的信息)
MX记录:在DNS中进行注册,目的让其它服务器找到服务器地址
* 通过nslookup
set type=mx
sina.com
freemx.sinamail.sina.com.cn DNS查询MX记录 (发信不需要登陆)
smtp.sina.com 从网站上获得地址 (发信需要先登陆)
***** 如果连接MX记录中新浪服务器地址,发信,是不是也不需要登陆? A记录校验
*如果你用搜狐身份连接 新浪mx记录服务器,新浪服务器中会通过A记录 校验你的身份?
set type=a
sohu.com
Non-authoritative answer:
Name: sohu.com
Addresses: 61.135.181.175, 61.135.181.176
当你冒充搜狐去新浪发信时,新浪从DNS上获得sohu的A记录,比较来访者ip 与A记录ip是否相同,相同不是冒充的,不同证明冒充
A 记录:当别人以邮箱服务器身份连接不要认证mx记录时候,需要从DNS中获得对方A记录,与来访者IP进行笔记,进行身份验证
***** 自己搭建一个邮件服务器,千万不要忘记去DNS上注册MX记录和A记录
- 浏览: 74398 次
- 性别:
-
文章分类
最新评论
发表评论
-
git sshkey生成
2015-10-13 10:09 572Git SSH Key 生成步骤 2012-11 ... -
hibernate04
2014-06-27 21:03 580*一)hibernate的检索方 ... -
hibernate03 一对一 多对多双向映射
2014-06-24 17:19 961*一)【双向】一对多 ... -
hibernate_02 四种状态 多对一级联操作
2014-06-11 19:55 1113*一)持久化对象的状态变化和对应的方法 (1)持久化 ... -
hibernate_01hibernate入门简单api
2014-06-10 18:20 752一)orm和hibernate概述 参见PPT< ... -
struts2_03表单校验ognl国际化
2014-06-07 10:23 993一、用户输入验证 1、编程方式: 动作类中的所有方法进行验 ... -
struts02表单验证文件上传自定义拦截器类型转换常用常量
2014-05-11 21:46 1005一.package下可以配置全局页面 <!-- pa ... -
struts201 struts2环境搭建及入门
2014-05-10 21:31 591一、分析之前的项目的不足,编写属于自己的框架二、Strut ... -
ajax03 jquery jquery_ajax
2014-05-09 23:14 727非常流行JS框架 : jQue ... -
day25 注解技术 动态代理 servlet3.0 线程池
2014-05-03 01:11 1328Java基础加强第一天 : JDJava基础加强第一天 : J ... -
day20 文件上传与下载
2014-05-02 10:50 1137文件上传功能应用非常广泛,例如:头像上传、商品图片、新闻图片、 ... -
ajax day01 JS加强
2014-05-02 10:37 727<!--[if !mso]> <styl ... -
ajaxday2 ajax json xstream
2014-05-02 10:34 1010第三部分:AJAX 异步 JavaScript和 XML ... -
day18 监听器 统计在线人数,定时销毁超时session,钝化活化session,在线列表显示和踢人功能防止用户自动登录,在线支付
2014-04-12 20:53 943Servlet 监听器和过滤器一样,是Servlet开发高 ... -
day17过滤器 禁止缓存中文乱码自动登录MD5加密url级别权限控制
2014-04-12 09:27 1222day17Servlet Filter 过滤器 day1 ... -
day16 项目1客户信息系统
2014-04-09 15:32 554客户信息增删改查系统 软件工程开发流程:1、瀑布模型 2 ... -
day15 JDBC元数据 DBUtils 开发模型
2014-04-06 17:47 785人们直接使用JDBC开发,非常麻烦 ----- 企业中开发w ... -
day14 JDBC事务管理 数据库连接池技术
2014-04-06 17:44 1019今天学习重点:JDBC事 ... -
day13 JDBC 基础 事务控制 大数据 批处理
2014-04-06 17:41 889JDBC : Java Database Connectiv ... -
day12 mysql复杂sql语句编写
2014-04-06 17:38 979SQL基本部分:1、数据 ...
相关推荐
全国大学生智能汽车竞赛自2006年起,由教育部高等教育司委托高等学校自动化类教学指导委员会举办,旨在加强学生实践、创新能力和培养团队精神的一项创意性科技竞赛。该竞赛至今已成功举办多届,吸引了众多高校学生的积极参与,此文件为智能车竞赛介绍
字卡v4.3.4 原版 三种UI+关键字卡控制+支持获取用户信息+支持强制关注 集卡模块从一开始的版本到助力版本再到现在的新规则版本。 集卡模块难度主要在于 如何控制各种不同的字卡组合 被粉丝集齐的数量。 如果不控制那么一定会出现超过数量的粉丝集到指定的字卡组合,造成奖品不够的混乱,如果大奖价值高的话,超过数量的粉丝集到大奖后,就造成商家的活动费用超支了。我们冥思苦想如何才能限制集到指定字卡组合的粉丝数,后我们想到了和支付宝一样的选一张关键字卡来进行规则设置的方式来进行限制,根据奖品所需的关键字卡数,设定规则就可以控制每种奖品所需字卡组合被粉丝集到的数量,规则可以在活动进行中根据需要进行修改,活动规则灵活度高。新版的集卡规则,在此次政府发布号的活动中经受了考验,集到指定字卡组合的粉丝没有超出规则限制。有了这个规则限制后,您无需盯着活动,建好活动后就无人值守让活动进行就行了,您只需要时不时来看下蹭蹭上涨的活动数据即可。 被封? 无需担心,模块内置有防封功能,支持隐藏主域名,显示炮灰域名,保护活动安全进行。 活动准备? 只需要您有一个认证服务号即可,支持订阅号借用认证服务号来做活动。如果您
出口设备线体程序详解:PLC通讯下的V90控制与开源FB284工艺对象实战指南,出口设备线体程序详解:PLC通讯与V90控制集成,工艺对象与FB284协同工作,开源学习V90控制技能,出口设备1200线体程序,多个plc走通讯,内部有多个v90,采用工艺对象与fb284 共同控制,功能快全部开源,能快速学会v90的控制 ,出口设备; 1200线体程序; PLC通讯; 多个V90; 工艺对象; FB284; 功能开源; V90控制。,V90工艺控制:开源功能快,快速掌握1200线体程序与PLC通讯
基于Arduino与DAC8031的心电信号模拟器资料:心电信号与正弦波的双重输出应用方案,Arduino与DAC8031心电信号模拟器:生成心电信号与正弦波输出功能详解,基于arduino +DAC8031的心电信号模拟器资料,可输出心电信号,和正弦波 ,基于Arduino;DAC8031;心电信号模拟器;输出心电信号;正弦波输出;模拟器资料,基于Arduino与DAC8031的心电信号模拟器:输出心电与正弦波
MATLAB口罩检测的基本流程 图像采集:通过摄像头或其他图像采集设备获取包含面部的图像。 图像预处理:对采集到的图像进行灰度化、去噪、直方图均衡化等预处理操作,以提高图像质量,便于后续的人脸检测和口罩检测。 人脸检测:利用Haar特征、LBP特征等经典方法或深度学习模型(如MTCNN、FaceBoxes等)在预处理后的图像中定位人脸区域。 口罩检测:在检测到的人脸区域内,进一步分析是否佩戴口罩。这可以通过检测口罩的边缘、纹理等特征,或使用已经训练好的口罩检测模型来实现。 结果输出:将检测结果以可视化方式展示,如在图像上标注人脸和口罩区域,或输出文字提示是否佩戴口罩。
1、文件内容:kernel-debug-devel-3.10.0-1160.119.1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/kernel-debug-devel-3.10.0-1160.119.1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
该文档提供了一个关于供应链管理系统开发的详细指南,重点介绍了项目安排、技术实现和框架搭建的相关内容。 文档分为以下几个关键部分: 项目安排:主要步骤包括搭建框架(1天),基础数据模块和权限管理(4天),以及应收应付和销售管理(5天)。 供应链概念:供应链系统的核心流程是通过采购商品放入仓库,并在销售时从仓库提取商品,涉及三个主要订单:采购订单、销售订单和调拨订单。 大数据的应用:介绍了数据挖掘、ETL(数据抽取)和BI(商业智能)在供应链管理中的应用。 技术实现:讲述了DAO(数据访问对象)的重用、服务层的重用、以及前端JS的继承机制、jQuery插件开发等技术细节。 系统框架搭建:包括Maven环境的配置、Web工程的创建、持久化类和映射文件的编写,以及Spring配置文件的实现。 DAO的需求和功能:供应链管理系统的各个模块都涉及分页查询、条件查询、删除、增加、修改操作等需求。 泛型的应用:通过示例说明了在Java语言中如何使用泛型来实现模块化和可扩展性。 文档非常技术导向,适合开发人员参考,用于构建供应链管理系统的架构和功能模块。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
C#与VB实现欧姆龙PLC的Fins TCP通信案例源码:调用动态链接库进行数据读写,定时器与计数器数据区的简洁读写操作示例,C#与VB实现欧姆龙PLC的Fins TCP通信案例源码:调用动态链接库进行读写操作,涵盖定时器计数器数据区学习案例,C#欧姆龙plc Fins Tcp通信案例上位机源码,有c#和VB的Demo,c#上位机和欧姆龙plc通讯案例源码,调用动态链接库,可以实现上位机的数据连接,可以简单实现D区W区定时器计数器等数据区的读写,是一个非常好的学习案例 ,C#; 欧姆龙PLC; Fins Tcp通信; 上位机源码; 动态链接库; 数据连接; D区W区读写; 定时器计数器; 学习案例,C#实现欧姆龙PLC Fins Tcp通信上位机源码,读写数据区高效学习案例
可调谐石墨烯超材料吸收体的FDTD仿真模拟研究报告:吸收光谱的化学势调节策略与仿真源文件解析,可调谐石墨烯超材料吸收体:化学势调节光谱的FDTD仿真模拟研究,可调谐石墨烯超材料吸收体FDTD仿真模拟 【案例内容】该案例提供了一种可调谐石墨烯超材料吸收体,其吸收光谱可以通过改变施加于石墨烯的化学势来进行调节。 【案例文件】仿真源文件 ,可调谐石墨烯超材料吸收体; FDTD仿真模拟; 化学势调节; 仿真源文件,石墨烯超材料吸收体:FDTD仿真调节吸收光谱案例解析
RBF神经网络控制仿真-第二版
松下PLC与威纶通触摸屏转盘设备控制:FPWINPRO7与EBPRO智能编程与宏指令应用,松下PLC与威纶通触摸屏转盘设备控制解决方案:FPWINPRO7与EBPRO协同工作,实现多工位转盘加工与IEC编程模式控制,松下PLC+威纶通触摸屏的转盘设备 松下PLC工程使用程序版本为FPWINPRO7 7.6.0.0版本 威纶通HMI工程使用程序版本为EBPRO 6.07.02.410S 1.多工位转盘加工控制。 2.国际标准IEC编程模式。 3.触摸屏宏指令应用控制。 ,松下PLC; 威纶通触摸屏; 转盘设备控制; 多工位加工控制; IEC编程模式; 触摸屏宏指令应用,松下PLC与威纶通HMI联控的转盘设备控制程序解析
基于循环神经网络(RNN)的多输入单输出预测模型(适用于时间序列预测与回归分析,需Matlab 2021及以上版本),基于循环神经网络(RNN)的多输入单输出预测模型(matlab版本2021+),真实值与预测值对比,多种评价指标与线性拟合展示。,RNN预测模型做多输入单输出预测模型,直接替数据就可以用。 程序语言是matlab,需求最低版本为2021及以上。 程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替就可以得到自己满意的效果。 这段程序主要是一个基于循环神经网络(RNN)的预测模型。它的应用领域可以是时间序列预测、回归分析等。下面我将对程序的运行过程进行详细解释和分析。 首先,程序开始时清空环境变量、关闭图窗、清空变量和命令行。然后,通过xlsread函数导入数据,其中'数据的输入'和'数据的输出'是两个Excel文件的文件名。 接下来,程序对数据进行归一化处理。首先使用ma
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
旅游管理系统中的功能模块主要是实现管理员;首页、个人中心、用户管理、旅游方案管理、旅游购买管理、系统管理,用户;首页、个人中心、旅游方案管理、旅游购买管理、我的收藏管理。前台首页;首页、旅游方案、旅游资讯、个人中心、后台管理等功能。经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与旅游管理系统实现的实际需求相结合,讨论了Java开发旅游管理系统的使用。 从上面的描述中可以基本可以实现软件的功能: 1、开发实现旅游管理系统的整个系统程序; 2、管理员;首页、个人中心、用户管理、旅游方案管理、旅游购买管理、系统管理等。 3、用户:首页、个人中心、旅游方案管理、旅游购买管理、我的收藏管理。 4、前台首页:首页、旅游方案、旅游资讯、个人中心、后台管理等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流查看及回复相应操作。
Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构,Simulink建模,MPPT最大功率点追踪,扰动观察法采用功率反馈方式,若ΔP>0,说明电压调整的方向正确,可以继续按原方向进行“干扰”;若ΔP<0,说明电压调整的方向错误,需要对“干扰”的方向进行改变。 ,Boost升压;光伏并网结构;Simulink建模;MPPT最大功率点追踪;扰动观察法;功率反馈;电压调整方向。,光伏并网结构中Boost升压MPPT控制策略的Simulink建模与功率反馈扰动观察法
运行GUI版本,可二开
Deepseek相关主题资源及行业影响
WP Smush Pro 是一款专为 WordPress 网站设计的图像优化插件。 一、主要作用 图像压缩 它能够在不影响图像质量的前提下,大幅度减小图像文件的大小。例如,对于一些高分辨率的产品图片或者风景照片,它可以通过先进的压缩算法,去除图像中多余的数据。通常 JPEG 格式的图像经过压缩后,文件大小可以减少 40% – 70% 左右。这对于网站性能优化非常关键,因为较小的图像文件可以加快网站的加载速度。 该插件支持多种图像格式的压缩,包括 JPEG、PNG 和 GIF。对于 PNG 图像,它可以在保留透明度等关键特性的同时,有效地减小文件尺寸。对于 GIF 图像,也能在一定程度上优化文件大小,减少动画 GIF 的加载时间。 懒加载 WP Smush Pro 实现了图像懒加载功能。懒加载是一种延迟加载图像的技术,当用户滚动页面到包含图像的位置时,图像才会加载。这样可以避免一次性加载大量图像,尤其是在页面内容较多且包含许多图像的情况下。例如,在一个新闻网站的长文章页面,带有大量配图,懒加载可以让用户在浏览文章开头部分时,不需要等待所有图片加载,从而提高页面的初始加载速度,同时也能
Could not create share link. Missing file: C:\Users\xx\.conda\envs\omni\Lib\site-packages\gradio\frpc_windows_amd64_v0.3 1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_windows_amd64.exe 2. Rename the downloaded file to: frpc_windows_amd64_v0.3 3. Move the file to this location: C:\Users\xx\.conda\envs\omni\Lib\site-packages\gradio