自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ma Ding的博客

多年智慧城市解决方案咨询、落地实施从业者

  • 博客(23)
  • 资源 (45)
  • 收藏
  • 关注

原创 第一章 - 新手入门 - 第三课 Arduino 上手实战呼吸灯

这篇稿子比以往的时候来的稍晚了一些,望fans们见谅,那即便如此,最终还是姗姗来迟了,公司新一轮战略性部署,被拖出去孵化新产品,开拓新市场去了,手头精力没有那么多了,另外产品一茬接一茬、韭菜一波接一波哈????,插播一条小广告,公司是从事智慧城市软硬件一体解决方案的,有兴趣的可私信、可交流、可砸钱,再次呢这里人多,都看着呢,就不占用大家太多的时间予以展开,不要问我会啥、懂啥,否则会让你怀疑人生的哈,另外你们马老师手上可活全...

2021-01-27 22:27:33 1097 3

原创 第一章 - 新手入门 - 第二课 Arduino 简介

前言同学们好,欢迎大家回来,咱们今天开始第一章节、第一小节的第二课,Arduino 简介,不知道大家还有没有印象,我们第一节课讲的啥,脑补一下:闪烁的LED,乒乓球会舞动,矫健的机器猫,有没有想起点啥,如果想不起来晚上去回去接着挑灯舞剑哈,传送门看这里,嗖嗖嗖友情提示:文笔受限、措辞不当、术语不专又或是下笔太重,请@我并指出,及时订正,求知我们是认真的。好了,同学们!带上你心爱的小板凳,咱们继续,进入正题一、Arduino 溯源Who am I,Where are you from ? 我是谁,

2021-01-01 20:01:35 1950 2

原创 第一章 - 新手入门 - 第一课 Arduino 初识

目的:最近手头的工作告一段落了,身边不乏有对电子硬件、机器视觉以及新科技、新技术感兴趣的小伙伴,也经常跑来问,这个怎么做的,那个怎么弄的,你看看这个动作能不能做?那个能搞定不?也就萌生了写一稿关于Arduino从职场小白到精通编程的念头,毕竟肚子里的墨水写出来,大家也都看得见,也好后人乘凉。好了,进入正题,因为是第一章、第一小节,也是第一课,所以同学们不用太紧张,放松姿态,看案例,看看我们的Arduino都能做什么,本节课啥也不说,就看案例,就这么静静的看…案例1:LED 矩阵(8x8x8)灯光

2020-12-27 12:09:17 174331

转载 Kafka设计解析(一)- Kafka背景及架构介绍

本文转发自技术世界,原文地址:jasongj.com/2015/03/10/KafkaColumn1摘要  Kafka是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用,现已与Cloudera Hadoop,Apache Storm,Apache Spark集成。本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比。并介绍了Kafka

2017-11-13 22:42:23 300

原创 一张图看懂Java注解(Annotation)

敬语 为常年奋斗、努力工作在一线,并为Java发展做出突出贡献的的大佬们致敬,此处深思几分钟… 科普 Annotation:In the Java computer programming language, an annotation is a form of syntactic metadata that can be added to Java source code.[1] Cla

2017-10-08 12:49:52 769

原创 CentOS 7 安装教程

敬语 为常年奋斗、努力工作在一线,并为操作系统发展做出突出贡献的的大佬们致敬,此处深思几分钟…科普 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以

2017-10-05 20:03:43 30042 2

转载 揭秘淘宝286亿海量图片存储与处理架构

<br />【IT168 专稿】8月27日下午,在IT168系统架构师大会存储与系统架构分论坛上,淘宝网技术委员会主 席,淘宝网核心工程师章文嵩向我们详细介绍了淘宝网图片处理与存储系统的架构。章文嵩博士的演讲日程包括了淘宝的整个系统架构、淘宝图片存储系统架构,淘宝网独立开发的TFS集群文件系统,前端CDN系统以及淘宝网在节能服务器方面的应用和探索。 <br /><br />  本文侧重介绍淘宝网后台的图片存储系统架构、包括TFS集群文件系统,以及前端处理服务器架构。<br />解决海量并发小文件的系统噩梦<

2011-03-11 15:02:00 1382

转载 Linux 文件的压缩与解压

关于Linux 文件的compress and uncompress heeh!

2010-08-07 20:34:00 730

原创 wsdl文件结构分析

WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的

2010-04-21 18:01:00 660

原创 BOSS接口监控及应急分析

  BOSS作为移动运营商业务支撑的最核心系统,在提高运营能力、控制成本、分析市场等方面都发挥关键作用。随着数据业务的快速发展,外围系统不断增加,系统之间的数据传递与功能交互也呈剧增趋势。  由于历史与公司发展策略等多种因素,佛山移动的BOSS系统中存在着多种系统并存的情况。而多数系统由不同公司开发,也导致数据格式、消息机制等不尽相同。其中的惟一相同点,是外围系统都必须通过“接口”才能与BOS

2010-04-21 17:55:00 2777 1

原创 基于SOA架构的企业集成系统设计与实现

信息化的发展,企业间协同商务和企业信息门户(EIP)等要求企业的应用系统是一个高度集成和开放的系统。然而大型企业往往拥有着异构系统,导致系统间信息的交互与互操作非常困难,形成了一个个“信息孤岛”,为了实现企业全局的业务过程自动化,人们投入了大量的人力和财力来进行系统集成。传统的企业应用集成(Enterprise Application Integration,EAI)解决方案有4种类型:用户界面集

2010-04-21 17:52:00 1677

转载 Tomcat+Axis+Eclipse实例讲解

一、声明写这篇文章完全得益于梁爱虎的《精通SOA基于服务总线的整合应用开发》和一些关于axis开发web service的文章,对于什么是web service,我建议大家去看看EJB的东西,对web service有很好的理解,言归正传,下面开始实际的开发。 二、环境配置 在这里,我不得不谈环境的配置,因为Java本身是一个开源的架构,这导致各个厂

2010-04-15 17:55:00 947

原创 EJB方面

EJB方面94、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS....

2009-12-31 14:21:00 537

原创 DOM SAX JDOM DOM4J 操作XML的比较

 1. 介绍1)DOM(JAXP Crimson解析器)         DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有

2009-11-22 08:32:00 530

原创 Tomcat 配置SSL证书 实现HTTPS访问 - 伪证书

HTTPS超文本传输安全协议,英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS、HTTP over SSL或HTTP Secure,是一种网络安全传输协议,在传统HTTP传输未加密的基础之上利用SSL/TLS来对数据包进行加密并提供安全、可信的请求、响应服务。目前绝大多数平台的网站已经很好的支持了https,而且https未来也应该是主流趋势,大家比较常见的https网站,如:12306 https://www.123..

2021-02-02 21:12:25 1562 1

原创 L298N 电机驱动板 - 详细介绍

L298N是意法半导体(STSemiconductor)集团旗下量产的一种双路全桥式电机驱动芯片,拥有工作电压高、输出电流大、驱动能力强、发热量低、抗干扰能力强等特点,通常用来驱动继电器、螺线管、电磁阀、直流电机以及步进电机。什么是L298N?L298是L293电机驱动芯片的高功率、大电流版本, 由Multiwatt 15封装,N是L298的封装标识符,另外还有其他两种不同类型的封装方式:P 立式封装HN 侧安封装L298N就是L298的立式封装,源自意法半导体集团旗下品牌产.

2021-01-30 12:10:45 70716 30

原创 数据可视化图表配色方案 - ppt/echarts/highcharts

数据可视化分析配色方案来袭,有需要的小伙伴可参考以下… 废话少说、上图…┭┮﹏┭┮色系目录复古新特性渐变清新怀旧商务明亮雅致柔和淡雅经典艳丽科技炫彩1炫彩2简洁1简洁2冷色1冷色2暖色配色1 - 复古序号HEX 颜色码RGB 颜色码1#0780cf7,128,2072#765005118,80,53#fa6d1d250,109,294#0e2c8214,44,1305#b6b51f.

2020-05-26 18:37:59 9567 1

转载 一边奋斗着一边期待着,一边怀疑着一边坚持着

没有一段文字能够总结出所有人的生活轨迹,成年人的白天都没有容易两个字,嘴巴里永远要把“妈的”说成“好的”。 就算熬过了一天,下班后也要面对乱成一团的生活。耳机线又缠在一起,在等红灯的时候,时间一秒一秒走过。 身边的很多同龄人,都处在“一边奋斗着一边期待着,一边怀疑着一边坚持着”的状态,也经常会有融不了城市也回不了故乡的感觉。 生活是一场持久战,我们没有任何喘息的机会...

2018-09-08 10:17:03 409

原创 大数据集群基础安装篇 - CentOS 7 安装、克隆集群(7台)

敬语 为常年奋斗、努力工作在一线,并为操作系统发展做出突出贡献的的大佬们致敬,此处深思几分钟… 科普 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性...

2018-09-03 21:55:53 635

原创 Spring Boot 基础框架 - Spring MVC + Thymleaf 环境搭建、配置

手把手教你如何使用Java语言开发门户网站,后续将不断迭代更新,针对当前主流门户网站建设应该考虑的问题常见的解决方法及实践技巧本章节目标 使用Eclipse工具,基于Maven搭建由Spring Boot +Spring MVC +Thymleaf 构建Web门户基础框架 采用yml方式进行配置 搭建基本环境目前Spring 官方提供了web的方...

2018-09-03 21:24:47 360

原创 网站安全 - 会话Session - 攻击防御(会话劫持+固定)

简介:对于Web应用程序来说,加强安全性的第一条原则就是——不要信任来自客户端的数据,一定要进行数据验证以及过滤才能在程序中使用,进而保存到数据层。然而,由于Http的无状态性,为了维持来自同一个用户的不同请求之间的状态,客户端必须发送一个唯一的身份标识符(Session ID)来表明自己的身份。很显然,这与前面提到的安全原则是相违背的,但是没有办法,为了维持状态,我们别无选择,这也导致了Se...

2018-09-03 21:20:07 1246 1

转载 阿里巴巴重启微服务开源框架 - Dubbo

阿里巴巴重启原开源微服务框架 - Dubbo 近期在开源软件平台上的活跃 - commit-activity 2012 年,阿里巴巴在 GitHub 上开源了基于 Java 的分布式服务治理框架 Dubbo,之后它成为了国内该类开源项目的佼佼者,许多开发者对其表示青睐,同时,先后有不少公司在实践中基于 Dubbo 进行分布式系统架构。目前在 GitHub 上,它的 fork、star 数均已破

2017-11-13 22:43:12 588

原创 Kibana 5.6.2 主界面之(Dev Tools)

Kibana新版本5.6.2之开发工具,查询神器.

2017-10-08 16:53:38 6334 1

CentOS 7 安装手册

CentOS 7 操作系统安装手册,手把手教你如何安装Linux操作系统,希望对打算研究、在研究又无从下手的小伙伴有所帮助吧。

2017-10-05

hadoop2.x-eclipse-plugin

hadoop-eclipse-plugin-2.6.0.jar

2014-12-07

Comet,反向Ajax comet

Comet,反向Ajax comet

2012-06-26

IE Tester IETester tester ie

IE tester 测试不同浏览器 IE版本的兼容性 对于web开发应对IE不同浏览器 是一个不错的选择 特此分享一下吧! 以下是官方简介: Introduction : IETester is embedding multiple versions of Internet Explorer rendering engine (called Trident) into one process. Trident is an ActiveX control, thus a COM object, and can be embedded into any application. IEtester is using this logic to embed engines, but hooks the COM functions to redirect calls to custom IE versions instead of the standard one installed on the OS. ......................

2012-06-22

复杂邮件程序完整Java源码,支持添加附

资源简介/* 复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用*/ package com.hx.mail; import java.io.File; import java.util.Map; import javax.mail.Message.RecipientType; /** * MailServices 邮件接收发送接口定义类 * * @author [email protected] * Date 2010-05-11 * @version 1.0 */ public interface HexiangMailService { /** * sendMail 发送邮件函数 * * @param sender 是String类型,邮件发送者信息 * @param password 是String类型,邮件发送者密码 * @param addressee 是String类型,邮件接收者信息 * @param subject 是String类型,传入邮件主题 * @param text 是String类型,传入邮件消息 */ void sendMail(String sender,String password,String addressee,String subject,String text) throws Exception; /** * sendMail 发送邮件函数 * * @param sender 是String类型,邮件发送者信息 * @param password 是String类型,邮件发送者密码 * @param addressee 是String类型,邮件接收者信息 * @param subject 是String类型,传入邮件主题 * @param text 是String类型,传入邮件消息 * @param enclosures Map<String,File> 邮件附件 * @param copyToSends Map<String,RecipientType> 邮件抄送信息 */ void sendMail(String sender,String password,String addressee,String subject,String text,Map<String,File> enclosures,Map<String,RecipientType> copyToSends) throws Exception; /** * sendMail 发送邮件函数 * * @param sender 是String类型,邮件发送者信息 * @param password 是String类型,邮件发送者密码 * @param subject 是String类型,传入邮件主题 * @param imgs 是File[]类型,邮件正文中附件的图片信息 * @param htmlContent 是String类型,传入邮件消息正文 * @param enclosures Map<String,File> 邮件附件 * @param copyToSends Map<String,RecipientType> 邮件抄送信息 */ void sendMail(String sender,String password,String subject,File[] imgs,String htmlContent,Map<String,File> enclosures,Map<String,RecipientType> copyToSends) throws Exception; } package com.hx.mail; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.Message.RecipientType; 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; import org.codehaus.xfire.attachments.ByteDataSource; /** * HexiangMailServiceImpl 邮件接收发送接口实现类 * * @author [email protected] * Date 2010-05-11 * @version 1.0 */ public class HexiangMailServiceImpl implements HexiangMailService { /** MailboxType 邮箱类型 */ private static Map<String, String> MailboxTypes = null; /** host 邮箱服务器类型 */ private String host = null; /** sender 邮件发送者 */ private String sender = null; /** addressee 邮件接收者 */ private String addressee = null; /** subject 邮件主题 */ private String subject = null; /** text 邮件消息 */ private String text = null; public static void init() { MailboxTypes = new HashMap<String, String>(); MailboxTypes.put("163", "smtp.163.com"); MailboxTypes.put("139", "smtp.139.com"); MailboxTypes.put("126", "smtp.126.com"); MailboxTypes.put("qq", "smtp.qq.com"); MailboxTypes.put("live", "smtp.live.cn"); MailboxTypes.put("msn", "smtp.msn.com"); MailboxTypes.put("kum", "mail.kum.net.cn"); MailboxTypes.put("hotmail", "smtp.hotmail.cn"); } /** * initialization 实例化类成员变量 */ private void initialization(String sender, String addressee, String subject, String text) { this.sender = sender; this.addressee = addressee; this.subject = subject; this.text = text; this.host = getHost(sender); // System.out.println("sender->"+this.sender+" | // addressee->"+this.addressee+" | subject->"+this.subject+" | // text->"+this.text+" | host->"+this.host); } /** * getHost 获取目标邮箱服务器类型 * * @param sender * 是String类型,传入邮件发送者邮箱地址信息 * @return String 返回目标邮箱服务器类型 */ private String getHost(String sender) { String _host, _host_ = null; _host = sender.substring(sender.indexOf("@") + 1, sender.indexOf(".")); if (MailboxTypes == null) { init(); } _host_ = MailboxTypes.get(_host); // System.out.println(_host+" <--&gt; "+_host_); if (_host_ == null) { // MailboxTypes.put(_host,"smtp."+_host+".com"); MailboxTypes.put(_host, "smtp." + sender.substring(sender.indexOf("@") + 1, sender .length())); } return MailboxTypes.get(_host); } public void sendMail(String sender, String password, String addressee, String subject, String text) throws Exception { initialization(sender, addressee, subject, text); Properties props = System.getProperties(); { props.put("mail.smtp.host", this.host); props.put("mail.smtp.auth", "true"); } ValidateAuther auther = new ValidateAuther(this.sender, password); Session session = Session.getDefaultInstance(props, auther); MimeMessage msg = new MimeMessage(session); InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址 InternetAddress toAddr = new InternetAddress(this.addressee); // 接收者邮箱地址 msg.setFrom(fromAddr); msg.addRecipient(Message.RecipientType.TO, toAddr); /** * Message.RecipientType.TO -- 接收者 Message.RecipientType.CC -- 抄送 * Message.RecipientType.BCC --秘密抄送者 */ msg.setSubject(this.subject); // 邮件主题 msg.setText(this.text); // 邮件信息 Transport.send(msg); // 发送邮件 } public void sendMail(String sender, String password, String addressee, String subject, String text, Map<String, File> enclosures, Map<String, RecipientType> copyToSends) throws Exception { initialization(sender, addressee, subject, text); Properties props = System.getProperties(); { props.put("mail.smtp.host", this.host); props.put("mail.smtp.auth", "true"); } ValidateAuther auther = new ValidateAuther(this.sender, password); Session session = Session.getDefaultInstance(props, auther); Message msg = new MimeMessage(session); InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址 InternetAddress toAddr = new InternetAddress(this.addressee); // 接收者邮箱地址ַ msg.setFrom(fromAddr); msg.addRecipient(Message.RecipientType.TO, toAddr); msg.setSubject(this.subject); // 邮件主题 msg.setText(this.text); // 邮件信息 msg = setCopyToSends(msg, copyToSends); // 设置抄送信息 try { MimeMultipart msgMultipart = new MimeMultipart("mixed"); // 创建邮件复杂体 msgMultipart = setEnclosureFile&#40;msgMultipart, enclosures&#41;; // 设置附件信息 msg.setContent(msgMultipart); // 将邮件复杂体添加到邮件正文中 MimeBodyPart content = new MimeBodyPart(); // 创建邮件复杂体正文信息 msgMultipart.addBodyPart(content); // 将正文信息添加到复杂体中 MimeMultipart bodyMultipart = new MimeMultipart("related"); content.setContent(bodyMultipart); MimeBodyPart htmlPart = new MimeBodyPart(); // 创建HTML文本域 bodyMultipart.addBodyPart(htmlPart); // 将HTML文本域添加到正文组合中 DataSource htmlDs = new ByteDataSource(this.text==null?"".getBytes():this.text.getBytes()); // 指定文本域,创建DataSource DataHandler htmlDh = new DataHandler(htmlDs); htmlPart.setDataHandler(htmlDh); htmlPart.setContent(this.text, "text/html;charset=gbk"); msg.saveChanges(); // 生成邮件 String filePath = "d:\\demo1.eml"; OutputStream os = new FileOutputStream(filePath); msg.writeTo(os); os.close(); } catch (MessagingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // Transport.send(msg); // 发送邮件 } public void sendMail(String sender, String password, String subject, File[] imgs, String htmlContent, Map<String, File> enclosures, Map<String, RecipientType> copyToSends) throws Exception { initialization(sender, addressee, subject, htmlContent); Properties props = System.getProperties(); { props.put("mail.smtp.host", this.host); props.put("mail.smtp.auth", "true"); } ValidateAuther auther = new ValidateAuther(this.sender, password); Session session = Session.getDefaultInstance(props, auther); Message msg = new MimeMessage(session); InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址 // InternetAddress toAddr = new InternetAddress(this.addressee); // // 接收者邮箱地址ַ msg.setFrom(fromAddr); // msg.addRecipient(Message.RecipientType.TO, toAddr); msg.setSubject(this.subject); // 邮件主题 // msg.setText(this.text); // 邮件信息 msg = setCopyToSends(msg, copyToSends); // 设置抄送信息 try { MimeMultipart msgMultipart = new MimeMultipart("mixed"); // 创建邮件复杂体 msgMultipart = setEnclosureFile&#40;msgMultipart, enclosures&#41;; // 设置附件信息 msg.setContent(msgMultipart); // 将邮件复杂体添加到邮件正文中 if (htmlContent != null || (imgs != null && imgs.length > 0)) { MimeBodyPart content = new MimeBodyPart(); // 创建邮件复杂体正文信息 msgMultipart.addBodyPart(content); // 将正文信息添加到复杂体中 // 搭建正文组合架构 -- 创建正文复杂体<含有html文本和图片文件> //related --&gt; 关联关系 MimeMultipart bodyMultipart = new MimeMultipart("related"); content.setContent(bodyMultipart); StringBuffer htmlBuffer = new StringBuffer(); // 添加HTML文本域信息 // if (htmlContent != null) { // htmlContent = htmlBuffer.toString(); MimeBodyPart htmlPart = new MimeBodyPart(); // 创建HTML文本域 bodyMultipart.addBodyPart(htmlPart); // 将HTML文本域添加到正文组合中 // DataSource htmlDs = new FileDataSource(htmlContent);// // 指定文件域,创建DataSource DataSource htmlDs = new ByteDataSource(htmlContent.getBytes()); // 指定文本域,创建DataSource DataHandler htmlDh = new DataHandler(htmlDs); // DataHandler // 文件包装数据类 htmlPart.setDataHandler(htmlDh); // htmlPart.setContent(htmlContent,"text/html;charset=gbk"); // } // 添加图片域信息 if (imgs != null && imgs.length > 0) { htmlBuffer.append(htmlContent); // HTML格式文本域 for (int i = 0; i < imgs.length; i++) { MimeBodyPart gifPart = new MimeBodyPart(); bodyMultipart.addBodyPart(gifPart); // 将图片域添加到正文组合中 DataSource gifDs = new FileDataSource(imgs[i]); DataHandler gifDh = new DataHandler(gifDs); gifPart.setDataHandler(gifDh); gifPart.setFileName(MimeUtility .encodeText(getFileName(imgs[i].getName()))); htmlBuffer.append("<img src='" + MimeUtility.encodeText(imgs[i].getName()) + "'>"); // 将图片域加入到文本域中 gifPart.setHeader("Content-Location", MimeUtility .encodeText(imgs[i].getName())); // 指定该图片(文件)路径从本地关联文件中找 } } htmlContent = htmlBuffer.toString(); // 设置正文文本域及文本类型 htmlPart.setContent(htmlContent, "text/html;charset=gbk"); } msg.saveChanges(); // 生成邮件 String filePath = "d:\\demo2.eml"; OutputStream os = new FileOutputStream(filePath); msg.writeTo(os); os.close(); } catch (MessagingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Transport.send(msg); // 发送邮件 } // 获取邮件地址信息 public static Address[] getAddress(List<String> recpType) throws AddressException, UnsupportedEncodingException { if (recpType == null || recpType.isEmpty()) { return null; } Address[] addrs = new Address[recpType.size()]; for (int i = 0; i < addrs.length; i++) { String nickNameAccount = getNickName(recpType.get(i)); String[] nickName_account = nickNameAccount.split(","); // System.out.println(nickName_account); addrs[i] = new InternetAddress("\"" + MimeUtility.encodeText("" + nickName_account[0] + "") + "\" <" + nickName_account[1] + ">"); } return addrs; } // 获取邮箱账号昵称信息 public static String getNickName(String mailAccount) { int index = mailAccount.lastIndexOf("<"); if (index == -1) { // 不含有昵称信息,未找到"<>" // [email protected] String nickName = mailAccount.substring(0, mailAccount .lastIndexOf("@")); return nickName + "," + mailAccount; } else if (index == 0) { // 不含有昵称信息 但找到了"<>" // <[email protected]> String nickName = mailAccount.substring(index + 1, mailAccount .lastIndexOf("@")); String account = mailAccount.substring(index + 1, mailAccount .lastIndexOf(">")); return nickName + "," + account; } else if (index > 0) { // 含有昵称信息,并且找到了"<>" String nickName = mailAccount.substring(0, index); String account = mailAccount.substring(index + 1, mailAccount .lastIndexOf(">")); return nickName + "," + account; } return mailAccount; } // 获取附件显示名称 public static String getFileName(String filePath) { String fileName = null; // �ļ��� if (filePath == null || filePath.length() == 0) { return null; } int index = filePath.lastIndexOf("/"); if (index == -1) { return filePath; } fileName = filePath.substring(filePath.lastIndexOf("/") + 1); int index2 = fileName.lastIndexOf("\\"); if (index2 == -1) { return fileName; } return fileName.substring(filePath.lastIndexOf("\\")); } // 设置邮件附件信息 public static MimeMultipart setEnclosureFile&#40;MimeMultipart msgMultipart, Map<String, File> enclosures&#41; throws MessagingException, UnsupportedEncodingException { if (enclosures == null || enclosures.isEmpty()) { return msgMultipart; } if (msgMultipart == null) { msgMultipart = new MimeMultipart("mixed"); // 创建邮件复杂体 } Set<String> enclosureSet = enclosures.keySet(); Iterator<String> enclosureIter = enclosureSet.iterator(); while (enclosureIter.hasNext()) { String attchFileName = enclosureIter.next(); MimeBodyPart attch = new MimeBodyPart(); msgMultipart.addBodyPart(attch); File temEnclosureFile = enclosures.get(attchFileName); DataSource ds = new FileDataSource(temEnclosureFile); DataHandler dh = new DataHandler(ds); attch.setDataHandler(dh); attch.setFileName(MimeUtility .encodeText(getFileName(attchFileName)));// 设置附件显示名称 } return msgMultipart; } public static Message setCopyToSends(Message msg, Map<String, RecipientType> copyToSends) throws AddressException, UnsupportedEncodingException, MessagingException { if (copyToSends == null) { return msg; } Set<String> copyToSendSet = copyToSends.keySet(); Iterator<String> copyToSendIter = copyToSendSet.iterator(); List<String> to = new ArrayList<String>(); // 定义接收者账号信息集 List<String> cc = new ArrayList<String>(); // 定义抄送者账号信息集 List<String> bcc = new ArrayList<String>();// 定义秘密抄送者账号信息集 while (copyToSendIter.hasNext()) { String address = copyToSendIter.next(); // 获取抄送者邮箱账号信息 RecipientType tmpRecipientType = copyToSends.get(address); if (tmpRecipientType == RecipientType.TO) { to.add(address); } if (tmpRecipientType == RecipientType.CC) { cc.add(address); } if (tmpRecipientType == RecipientType.BCC) { bcc.add(address); } } // 获取接收者信息集 Address[] to_addrs = getAddress(to); if (to_addrs != null) { msg.setRecipients(MimeMessage.RecipientType.TO, to_addrs); } // 获取抄送者信息集 Address[] cc_addrs = getAddress(cc); if (cc_addrs != null) { msg.setRecipients(MimeMessage.RecipientType.CC, cc_addrs); } // 获取秘密抄送者信息集 Address[] bcc_addrs = getAddress(bcc); if (bcc_addrs != null) { msg.setRecipients(MimeMessage.RecipientType.BCC, bcc_addrs); } return msg; } } /** * ValidateAuther 邮件验证类,验证邮件发送者信息 */ class ValidateAuther extends Authenticator { /** 邮件发送者 */ private String sender; /** 邮件接受者 */ private String password; /** * ValidateAuther 验证邮件发送者信息 * * @param userName * 是String类型,传入邮件发送者账户 * @param password * 是String类型,传入邮件发送者账户密码 */ public ValidateAuther(String sender, String password) { this.sender = sender; this.password = password; } /** * getPasswordAuthentication 验证邮件发送者账户信息的函数 * * @param userName * 邮件发送者账户信息 * @param password * 邮件发送者账户密码 * @return PasswordAuthentication 返回邮件发送者账户验证信息 */ @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(sender, password); } } // 支持WebService远程调用 &lt;?xml version="1.0" encoding="UTF-8"?&gt; <beans> <service> <name>HexiangMailService</name> <serviceClass>com.hx.mail.HexiangMailService</serviceClass> <implementationClass>com.hx.mail.HexiangMailServiceImpl</implementationClass> &lt;style&gt;wrapped&lt;/style&gt; <use>literal</use> <scope>application</scope> </service> </beans>

2012-06-20

MP3截断软件,可以自由截取歌曲!

MP3截断软件,可以自由截取歌曲!特此分享一下!

2012-06-09

Hibernate3.2 源码 src

hibernate3.2 源码 方便开发查阅 与hibernate3.2jar文件关联 十分方便 在此 晒晒了 。

2012-01-31

jd2chm 生成javadoc chm文档

jd2chm 工具 快速生成javadoc 所需要的chm 文档工具 对于开发人员来说 挺有用的 特此share 一下哈

2011-10-29

struts2 chm 开发帮助文档

struts2-core-2.2.3.1 开发帮助文档 公开发应用 ,又要html版文档大小过大,so 无法上传 有需要的可以联系 并 给予分享,现提供chm版 开发文档 可供参考

2011-10-29

Flex 与MyEclipse 整合插件需要的war 文件

MyEclipse FlexBuilder3 插件集成需要的ds-console.war 文件由于安装文件过大,所以有需要的同胞可以联系 传送安装文件 谢谢: E-mail:[email protected] QQ:464690335

2011-06-17

EMS Sql ManagerforMySQL 破解版

一个不错的mysql IDE 破解哈 ,有需要的同胞可以下载破解一下哈,由于安装文件太大 无法上传,有需要的同志可以发送以下两种任何一种联系方式 E-mail:[email protected] or QQ:464690335 都可以回馈安装文件的 谢谢!奋进...

2011-05-21

支付 接口 大全 快钱支付 支付宝 YeePay易宝 网银(chinabank)

1. 快钱支付 2. 支付宝 3. YeePay易宝 4. 邮局支付(网汇通) 5. 安付通 6. 网银(chinabank) 7. PayPal贝宝 8. ips环迅支付 9. 腾讯财付通 10. NPS网上支付系统

2011-03-14

WebWork 2.x Demo 例子

大家好塞 自己编写了一个 目前比较流行的web框架, WebWork 基于2.x的一个Demo 希望对该框架有兴趣的 兄弟 可以download下来 看看 研究 研究,与此同时也 希望有什么问题 共同努力 共同学习 谢谢哈

2011-02-24

大 型 企 业 DRP 系统

大型企业DRP系统,需求调研、需求分析、系统设计、编码、单元测试、集成测试和子系统测试,本系统主要,分销商库存管理、分消费管理、结帐管理、付款结算管理、统计报表管理、基础数据管理和系统管理,是综合了Java Web、数据库、JDBC、设计模式、SOA、AJAX、搜索等技术的不可多得的大型系统

2011-02-23

DataChartTool JFreeChar 图表制作工具

DataChartTool JFreeChar 图表制作工具类 特此分享一下

2011-02-09

Android中文文档

Android中文文档 值得一看哈 Android中文文档

2011-01-21

Android程序员入门(中文版)

目 录 I 关于本博客的主题 IV 第一章 什么是Android 1 什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和Android-(2) 2 介绍Android 第一章(3) 3 Android示例 - 第四章(4) 4 Android的几个示例 - 第四章(5) 5 第二章 下载和安装Eclipse总则 6 下载和安装Eclipse总则 - 第二章(1) 6 下载和安装JRE - 第二章(2) 7 下载和安装Eclipse - 第二章(3) 8 第三章 下载和安装Android SDK 10 下载和安装Android SDK - 第三章(1) 10 下载Android SDK - 第三章(2) 10 为Eclipse配置Android Plugin - 第三章(3) 12 第四章 浏览Android SDK 14

2011-01-21

java 上传图片 头像 预览 切割

java 上传图片 头像 预览 切割 这个资源是我下载别人的东东哈 因为分值太高了, 所以 在此 共享一下 需要的朋友给点成本费哈 谢谢哈

2011-01-17

ActionScript3.0 中文版

ActionScript3.0中文版.chm ActionScript 3.0 语言和组件参考》概述《Adobe Flex 2 语言参考》《ActionScript 3.0 语言和组件参考》是 Flash® Player 应用程序编程接口 (API) 的参考手册。 《Adobe Flex 2 语言参考》《ActionScript 3.0 语言和组件参考》提供了 ActionScript 语言中支持的元素的语法和用法信息。其中包括以下部分:

2011-01-17

2010struts2.torrent.td 视频迅雷下载种子

2010struts2.torrent.td 视频迅雷下载种子 Struts 2.0框架详细介绍 特此分享

2011-01-11

ActionScript+3.0语言和组件参考.chm

ActionScript+3.0语言和组件参考.chm 语句是在运行时执行或指定动作的语言元素。例如,return 语句会为执行该语句的函数返回一个结果。if 语句对条件进行计算,以确定应采取的下一个动作。switch 语句创建 ActionScript 语句的分支结构。

2011-01-11

EDiary2.53 电子日记本

EDiary2.53 电子日记本 特此分享一下 , 挺方便的 需要的通知 方便下载 呵呵

2010-12-28

ehcache-1.5.0

ehcache-1.5.0 缓存技术 在此分享

2010-12-02

epet(struts+Hibernate+Spring+Ajax版)

epet(struts+Hibernate+Spring+Ajax版) 特此分享 哈

2010-11-21

Struts 基础教程 pdf 版的

Struts 基础教程 pdf 版的 特此 跟大家 分享一下 哈

2010-11-19

ehcache 开发总结

ehcache 开发总结 资料 缓存 总结 哈

2010-11-17

IBM Cognos8 开发 资料 经典

IBM Cognos8 开发 资料 经典 特此分享一下, 不过一分钱 一分货 呵呵 10分可得

2010-11-16

jquery api + jquery 教程 资料

jquery api + jquery 教程 资料 api+教程 使用于初学者 也适合于 正在开发的人员 有兴趣的 可以下载 在此共享了

2010-11-11

Java 开 发 的 聊 天 室

Java 开发的聊天室 大家有兴趣 和需要的兄弟 可以 看看 哈 呵呵 分享一下

2010-11-10

SAS编程技巧手册v1.0_200905.pdf

SAS 编程技巧手册 SAS 关于数据仓促 不错的一本书 哈 大家可以 看看 在此分享一下 哈

2010-11-10

Ant学习配套电子书.rar

Ant学习配套电子书.rar ant 不错的 大家有兴趣的 可以看看 研究一下

2010-11-10

SSH java 操作Linux 命令包.zip

SSH java 操作Linux 命令包.zip

2010-11-10

Hibernate Soruce Code 源代码

HibernateSourceCode 官方源代码 对于开发人员来说 必看 必知 必须研究的 资料

2010-11-10

websphere 安装图解资料

Websphere 安装资料 图解 详细的很哈 如何安装 以及如何使用 配有详细的图解资料

2010-07-18

oracle dba 培训 视频

Oracle DBA 经典培训视频 oracle 初级入门到高级性能优化

2010-01-13

servlet api 详细介绍servlet附有中文介绍

servlet api servlet 详细介绍 附有中文介绍

2010-01-13

Java 经典面试题!(面试者必备)

Java中数据库连接池原理机制的详细讲解、 j2ee面试知识、 线程编程方面、 EJB方面、 浅析Struts 体系结构与工作原理、 JAVA相关基础知识.

2009-12-31

dom4j API 详细文档

dom4j API 详细文档 关于XML 文档的读写操作 提供大量的类库支持,不错

2009-11-19

PetShop 源码

微软工程师们的心血!程序员们的加油站! 经典!》》》》》》》》》》》 特此推荐《海纳百川》

2009-09-09

Struts servlet Api

Struts +Servlet+Api框架集成技术! 程序员必看的框架技术:struts

2009-08-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除