在项目中。实现邮箱发送的方式有很多种。 最经典的就是用javaMailSender 的方式实现。
先在邮箱中申请了smtp,接着配置application.properties里面的参数
spring.mail.protocol=smtp
spring.mail.host=smtp.qq.com
spring.mail.username=隐藏
spring.mail.password=隐藏
spring.mail.defaultEncoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
添加maven依赖
org.springframework.boot
spring-boot-starter-mail
实现方法
@Service
public class EmailServiceImpl implements EmailService {
//发送邮件的用户名
@Value("${spring.mail.username}")
private String sender;
@Override
public void sendEmail(String to, String subject, StringBuffer content) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper =null;
try {
helper = new MimeMessageHelper(message,true);
helper.setFrom(sender);
helper.setSubject(subject);
helper.setTo(to);
helper.setText(content.toString(),true);
javaMailSender.send(message);
logger.info("邮件已经发送");
}catch (MessagingException e){
logger.error("邮件发送异常",e);
}
}
然后嵌套在controller中。 注入改该方法。直接使用sendEmail
String code = users.getActiCode();
String subject = "激活邮件";
StringBuffer context = new StringBuffer();
context.append("你好:"+users.getUserName()+" ")
.append("激活请点击: ");
emailService.sendEmail(users.getUserEmail(),subject,context);
但是会遇到一种情况。就是必须等待它发送完邮件才能进行下一个动作。 容易造成假卡死的状况。如果。与此同时多个用户都在点击这个发送邮件的动作。可能服务器会崩溃。
ActiveMQ使用
消息中间件。具体使用消息队列(MQ)的优点还有概念就不解释了。网上很多。 但是我们需要的业务要求是
让发送邮件这个事情丢到消息中间件中,也就是将其作为生产者。
消费者收到生产者的消息后,就会开始执行发送邮件这个动作。
用户就不用等待了。让消息中间件处理。我们只需要等待consumer发送邮件。
有很多种MQ,我用的是ActiveMQ
下载ActiveMQ
官网下载。解压。找到bin–>win64–>activemq.bat运行
访问http://localhost:8161,账号密码都默认admin
添加maven依赖
org.springframework.boot
spring-boot-starter-mail
org.apache.activemq
activemq-pool
org.springframework.boot
spring-boot-starter-activemq
添加properties
我这里多创建了一个properties。为了方便区别
application.properties
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
#下面这些不是太必要
#处理序列化对象需要用到的配置
#如果需要这里需要针对queue和topics的选择添加,我没写
spring.activemq.packages.trusted=true
spring.activemq.packages.trust-all=true
spring.activemq.pool.enabled=false
spring.activemq.pool.max-connections=50
spring.activemq.pool.idle-timeout=30000
email.properties
spring.mail.protocol=smtp
spring.mail.host=smtp.qq.com
spring.mail.username=隐藏
spring.mail.password=隐藏
spring.mail.defaultEncoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
#这里是一个业务需要用得的地址,不需要跟着我添加
com.mailUrl=http://localhost:8081/
创建生产者
记得创建相应的接口
@Slf4j
@Service
public class ActiveMQServiceImpl implements ActiveMQService {
@Autowired
JmsTemplate template;
/**
*@Auther kiwi
*@Data 2019/9/8
* 发送邮件
*/
@Override
public void sendEmail(String to, String subject, String content) throws IOException {
template.send("registerBySystem", new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
MapMessage mapMessage = session.createMapMessage();
mapMessage.setString("content", content);
mapMessage.setString("address", to);
mapMessage.setString("subject", subject);
return mapMessage;
}
});
log.info("发送给消费者");
}
}
to是发送过去的邮箱,subject是标题,content是邮件的内容 这里使用了JmsTemplate的send方法。第一个参数是生产者发布的名称。后面是传入Message的值,通过这里的Message作为中间值。
消费者
注意,消费者必须加上@Service或者@Component 消费者才能检测到
@Slf4j
@Service
public class ConsumerService {
@Autowired
private EmailUtil emailUtil;
/**
* 通过监听目标队列实现功能
*/
@JmsListener(destination = "registerBySystem")
public void sendMail(Message message) throws Exception {
MapMessage mapMessage = (MapMessage) message;
String content = mapMessage.getString("content");
String address = mapMessage.getString("address");
String subject = mapMessage.getString("subject");
emailUtil.sendEmail(address,subject,content);
}
}
通过注解@JmsListener里面对生产者名称“registerBySystem”的监听。 然后通过message的值,传入sendEmail。 也就是这里,我们开始出现发送邮件的动作。
发送邮件
@Slf4j
@Component
@PropertySource(value = {"classpath:email.properties"})
public class EmailUtil {
@Value("${spring.mail.username}")
private String sender;
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.password}")
private String pwd;
public void sendEmail(String to, String subject, String content) throws Exception {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
// 开启debug模式,可以看到更多详细的输入日志
MimeMessage message = this.addEmail(session,to,subject, content);
//获取传输通道
Transport transport = session.getTransport();
transport.connect(host, sender, pwd);
//连接,并发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
/**
* 创建邮件
*/
public MimeMessage addEmail(Session session,String to, String subject, String content) throws Exception {
// 根据会话创建邮件
MimeMessage msg = new MimeMessage(session);
// 设置发送邮件方
msg.setFrom(new InternetAddress(sender));
// 设置邮件接收方
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 设置邮件标题
msg.setSubject(subject, "utf-8");
msg.setContent(content,"text/html;charset=utf-8");
// 设置显示的发件时间
msg.setSentDate(new Date());
// 保存设置
msg.saveChanges();
return msg;
}
}
具体实现注册很详细了。 注意。在刚刚的ConsumerService中。一定要Autowired该方法。 才能在这里通过@Value获取email.properties的值
邮件模板
也就是content参数
public class EmailTemplate {
/**
*@Auther kiwi
*@Data 2019/9/8
@param * @param
* 注册模板
*@reutn java.lang.String
*/
public static String registerTemplate(String sendUrl,String code) throws IOException {
String fileName = "pod-scale-alarm.html";
InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName);
BufferedReader fileReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer buffer = new StringBuffer();
String line = "";
try {
while ((line = fileReader.readLine()) != null) {
buffer.append(line);
}
} catch (Exception e) {
log.error("读取文件失败,fileName:{}", fileName, e);
} finally {
inputStream.close();
fileReader.close();
}
String contentText = "以下是需要点击的链接, 进入便可完成注册.Click Me ";
//邮件表格header
String header = "商品管理(itemManagement) 订单管理(orderManagement) 用户管理(userManagement) 系统管理(systemManagement) 调度任务(Scheduled Tasks) ";
StringBuilder linesBuffer = new StringBuilder();
linesBuffer.append("" + "four menu" + " " + "four menu" + " " + "three menu" + " " +
"" + "two menu" + " " + "two menu" + " ");
String emailHeadColor = "#8A2BE2";
String date = DateFormatUtils.format(new Date(), "yyyy/MM/dd HH:mm:ss");
//填充html模板中的五个参数
String htmlText = MessageFormat.format(buffer.toString(), emailHeadColor, contentText, date, header, linesBuffer.toString());
//改变表格样式
htmlText = htmlText.replaceAll("", " ");
htmlText = htmlText.replaceAll(" ", " ");
return htmlText;
}
}
pod-scale-alarm.html
欢迎注册网站 b2b_mall
使用activeMQService
//注入,记得加上@PropertySource("email.properties")
@Resource
private ActiveMQService activeMQService;
@Value("${com.mailUrl}")
private String sendUrl;
//实现
activeMQService.sendEmail("[email protected] ","欢迎注册", EmailTemplate.registerTemplate(sendUrl,"参数地址")));
可根据自己的代码修改
你可能感兴趣的:(框架工具)
苹果证书p12和描述文件的创建教程
阿里超级工程师
H5 移动开发 profile文件 苹果证书 ios证书
在hbuilderx或apicloud这些uniapp框架工具打包苹果APP的时候,需要p12证书和证书profile文件来编译,目前网上很少使用windows电脑生成p12证书的教程,官方的教程都是需要使用苹果电脑来创建的。这里,我们这篇文章来教会大家如何使用windows电脑来生成p12证书。首先,假如你还没有注册苹果开发者账号,可以先参考下下面这篇文章先注册苹果开发者账号:https://b
基于Win32 C/C++ SDK Gui 松散框架--VSCode Snippet(抽象快速开发工具)
IBMInfo78
Win32 SDK Gui C/C++ 大型行业软件 c++ c语言 windows
(PS:敬请期待Win32抽象OOP精简框架工具。它适合于理工男老腊肉,用于工程、科学计算程序等)Snippet已经再次进行格式更新,函数提示更加简洁、更加规范,V1.0正式版新鲜出炉!!!它不适合所有人,如果你觉得这种代码样式“赏心悦目”,那你找对了!需要Call我,需要Call我,需要Call我!!!Win32C/C++SDKGui高效程序之快速工具,基于Windowsx.H宏转换或部分自编代
【Apollo】开启Apollo之旅:让自动驾驶如此简单
雪碧有白泡泡
粉丝福利活动 自动驾驶 人工智能 机器学习
前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/zChatGPT体验地址文章目录前言Apollo的发展历程Apollo8.0新特性软件包管理感知框架工具链小结云端体验软件包安装总结活动Apollo是百度公司推出的自动驾驶平台。它是一个综合性的自动驾驶解决方案,提供了包括感知、决策、规划和控制等核心功能,以及地
android安全框架工具drozer使用指南
wang812745312
android 安全 drozer mercury 框架
不贴图,太麻烦一、Drozer工作环境搭建下载drozer-installer-2.3.4.zip2,解压缩3,winddows上安装setup.exe手机安全agent.apk4,手机打开agent,点击【开】5,电脑,配置好adb命令工具(参考《手机自动化环境搭建手册V1.0(appium+java+eclipse).docx》)6,cmd下输入adbforwardtcp:31415tcp:3
C# 移除JSON 某个key_如何快速定位 Redis 热 key?
weixin_39703773
C# 移除JSON 某个key centos redis 升级版本 cpp map 获取所有 key
导读:在Redis中,热key指的是那些在一段时间内访问频次比较高的键值,具体到业务上,商品的限时抢购、瞬时的新闻热点或某个全局性的资源,都极有可能产生热点key。如何应对热点Key也是解决高并发的必备技能,本文作者条分缕析为你解答这个问题。作者简介:饿了么CI框架工具部缓存组韩亮背景在Redis中,热key指的是那些在一段时间内访问频次比较高的键值,具体到业务上,商品的限时抢购、瞬时的新闻热点或
实现代码内部发送请求的编程工具包-HttpClient
唯手熟
java spring
需求:在当前模块对其他模块/服务的接口发送请求。扩展想法:可以利用它实现一个小的接口测试工具(例如:postman)、分布式微服务快速开发的调用个接口的框架工具。1.1介绍HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient作用:发送HTTP请求
figma常用快捷键 【不定期更新】
LRachel
canvas画布一、常用工具创建画板:框架工具(FrameTool)——A或F打开组件库(libraries):^+option+O(ctrl+alt+O)1.1文件和属性导出(Export)——⌘+⇧+E置入图片(Place)——⌘+⇧+K拾色器(ColorPicker)——^+C或I进入图片编辑模式(EnterImageCropMode)——⌥+双击1.2视图平移(Pan)——空格+拖拽放大(
JavaSE(三)常用对象API—集合框架体系
晨蝎
JavaSE JavaSE 集合框架 Java集合
文章目录集合框架体系 Collection接口 List接口 ArrayList LinkedList Set接口 HashSet TreeSet Map接口 HashMap 集合框架工具类 集合框架源码解析 HashMap源码解析后话集合框架体系 首先先来说一下为什么在有数组的情况下还出现了一个和数组拥有差不多方法的集合类。其实是为了方便对多个对象的操作,就用集合对对象进行存储
k8s基础内容详解
珂玥c
k8s相关内容 kubernetes 运维 学习
目录一、k8s是什么?二、k8s的优势1.传统部署2.docker三、k8s的特性四、k8s的架构1.Master是整个集群的大脑2.Node节点接受Master安排的任务3.etcd存储五、k8s工作流程前言比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。一、k8s是什么?是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态及其丰富的容器编排框架工具,是用于自动部署,扩展
Kubernetes 概述
尔尔辞暮
kubernetes 容器 云原生 docker 云计算 运维 centos
Kubernetes概述1K8S是什么?K8S的全称为Kubernetes(K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。作用:用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。由来:K8S由google的Borg系统(博格系
前端开发必备的VSCode插件
ZD717822023
前端工具 编辑器 javascript
本文总结了一下前端开发人员一些经常用的可以提高开发效率的VSCode插件,好的工具可以事半功倍。主要分为:基础通用篇,自由可选篇,框架工具篇,主题篇(按照我自己的想法分的)基础通用篇Chinesevscode编辑器汉化包,安装后,在locale.json中添加“locale”:“zh-cn”,即可载入中文(简体)语言包。AutoRenameTag自动重命名成对的HTML标记,修改开始标签,结束标签
Kubernetes (K8S)概述
BryantLSY
kubernetes
1、K8S是什么?K8S的全称为Kubernetes(K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。1.1作用用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。1.2由来K8S由google的Borg系统(博格系统,googl
初识Kubernetes
浮生无
1024程序员节
一、k8s的由来及其技术运用1.1k8s的简介Kubernetes,词根源于希腊语的舵手、飞行员。在国内又称k8s(因为k和s之间有8个字母,所以得名。“国内程序员的幽默”)。用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。K8S由google的B
Java中的工具类究竟如何命名?
风象南
原创随笔 Java
Java中的工具类究竟如何命名?先来几个例子JDK自带工具类Arrays.asList();Objects.equals();Collections.sort();Spring框架工具类StringUtils.isEmpty();CollectionUtils.isEmpty()FileCopyUtils.copy();Hutool工具类StrUtil.isEmpty();CollectionUt
关于纵横研究院@前端技术基础专题
whelm
目前前端框架层出不穷,各种前沿技术纷至沓来,我们在编程过程中可以使用各种工具库来实现需求,以达到快捷方便,高效安全。但是即使对框架工具应用熟练,仍然需要研究这些框架的内部逻辑及编程思维,以提高自己的技术能力。对于这些框架,技术,工具的研究则少不了基础技术的支撑。纵横研究院@前端技术基础专题为此而生。旨在建立一个可以入门,进阶,深入学习前端技术的平台。我们将会提供一个学习路径,列出书单及学习资料,大
Kubernetes 概述
Z在学习
kubernetes 容器 云原生 1024程序员节
K8S是什么?K8S的全称为Kubernetes(K12345678S),缩写为K8S。作用:用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。由来:K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后
k8s简介以及各个组件
- joke
kubernetes 容器 云原生
Kubernetes概述1、K8S是什么?K8S的全称为Kubernetes(K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。作用:用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。由来:K8S由google的Borg系统(博格
Kubernetes概述及其组件/核心组件
M上去学习
kubernetes 容器 云原生
Kubernetes概述:1、K8S是什么?K8S的全称为Kubernetes(K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。作用:用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。由来:K8S由google的Borg系统(博
Node-Red自定义节点(Node)
瘦成一道闪电的麦兜
在使用Node-Red的过程中,总有一些节点是无法满足需求,或者通用方法复用率高的想直接转化为节点的,这时就会用到自定义节点这个功能。Node-Red是一个基于Node开发的框架工具,所以为她开发的节点都要遵从于Node开发的模式。比如说,我们需要npminit生成package.json,需要npmpublish、npminstall等,但是又跟纯的NodePackage又有些许不同,因为是给N
快速自动化处理JavaScript渲染页面的方法
小小卡拉眯
python爬虫小知识 自动化 javascript 运维
目录一、使用无头浏览器二、使用JavaScript渲染引擎三、使用前端框架工具随着互联网技术的不断发展,JavaScript已经成为Web开发中不可或缺的一部分。然而,在自动化处理JavaScript渲染页面方面,却常常让开发者感到头疼。本文将介绍一些快速自动化处理JavaScript渲染页面的方法,帮助您在Web开发中提高效率。一、使用无头浏览器无头浏览器是一种可以在没有用户界面的情况下模拟用户
《教会自己如何思考:简单五步,引导创新性思维》04|思考的第一阶段:我要去哪?目标是什么?想实现什么?20201108-今日复盘-704-651
黄花儿香
今日复盘:每天三件事回顾、反思、探究、提升一、今天完成了哪些工作1、健步走+跑步+拉伸未进行2、读书今天继续读由英国作家爱德华•德博诺所写,高采平翻译的《教会自己如何思考:简单五步,引导创新性思维》这本书。前面两个章节分别讲解了思考的一些基本过程和后面将用到的“六项思考帽”和“CoRT思维训练”两种框架工具。从今天这一章节开始,将进入思考训练的五步法学习,第一步:TO,我想去哪里。正文:TO,我想
在IDEA中配置lombok组件
java大白
Java入门 intellij-idea java mybatis
lombok组件,主要功能是让编写的代码更加优雅,(本质是快速帮我们编写gettersetter方法toString方法构造方法,还有日志框架工具类。1)第一步:idea开发工具安装plugin插件2)第二步:设置当前项目启用注解功能3)第三步:在当前项目模块上,添加lombok.jar组件依赖。如果是maven项目,那么就比较简单了,直接在pom.xml文件中配置一下就可以了,现在我们是idea
前端脚手架、编译工具、框架官网笔记
123的故事
前端 Vue 前端 笔记 vue.js
1、与Vue相关的脚手架、编译工具、框架工具官网简要说明Vue.jshttps://vuejs.org/zh/一套用于构建用户界面的渐进式JavaScript框架VueCLIhttps://cli.vuejs.org/zh/基于Vue.js的标准化工具,可快速搭建Vue项目Vitehttps://vitejs.dev/一种新型前端构建工具,适用于小型至中型的项目VuePresshttps://vu
reactjs开发环境搭建
uesowys
前端技术与架构 react.js 前端 前端框架
Reactjs是一个前端web页面应用开发框架工具集,其支持前端构建页面以及后端构建页面两种常用的开发场景,其中,支持reactjs的开发框架包括next.js、remix、gatsby以及其他,本文主要描述next.js开发环境的搭建,next.js是一个全栈式的web开发框架,可以开发出不同规模的、易于扩展的、响应式的web页面应用。运行环境搭建npxcreate-next-app@lates
laravel系列(三) Dcat admin框架工具表单以及普通表单的使用
bug丶小狼人
laravel php 后端
工具表单:什么是工具表单;工具表单是一种可以让用户输入和提交信息的工具。在表单中,用户可以填写各种信息,例如姓名、电话、地址等,然后提交给特定的接收者。工具表单在很多框架中都是自带表单组件,下面就为大家讲解如何使用Laravel中的Dcatadmin框架的工具表单。基础使用:工具表单(Dcat\Admin\Widgets\Form)用来构建表单和处理提交数据,可以很方便的独立处理数据,而不需要额外
《金字塔原理》读书笔记(上)
Melissa5969
好久没系统性写字了,借着这次公司TTT培训留读书作业把习惯捡起来。希望能碰到爱学习、爱成长的小伙伴,个人思考,仅作参考。一、金子塔原理是................书籍解释:巴巴拉·明托的金字塔原理是一项层次性、结构化的思考、沟通技术,可以用于结构化的说话与写作过程。关注的是深度思考和逻辑性。个人理解:一个有利于理解、记忆和表达的系统性框架工具。任何需要信息传递的场景都可以使用。整理如下:图一
Java基础之集合框架--Collections.reverseOrder()
ljh_learn_from_base
java 集合框架 Collections工具类 java 集合框架 Collections工具类
总结:先看一下集合框架工具类有没有提供对应的方法,如果没有再自己写一个方法packagenewFeatures8;importjava.util.Collections;importjava.util.Comparator;importjava.util.Set;importjava.util.TreeSet;publicclassCollectionsDemo{publicstaticvoidm
Kubernetes
StarkDD1127
kubernetes 容器 云原生
一、k8s是什么?K8S的全称为Kubernetes(K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。作用:用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一个生态极其丰富的容器编排框架工具。由来:K8S由google的Borg系统(博格系统,google内部使
vue2+webpack升级vue3+vite,修改插件兼容性bug
中二少年学编程
vue3实战专栏 webpack bug 前端 vue
同学们可以私信我加入学习群!前言在前面使用electron+vue3的过程中,已经验证了历史vue2代码+vue3混合开发的模式。本次旧项目vue框架整体升级中,同事已经完成了vue3、pinia、store等基础框架工具的升级。所以我此次记录的主要是vite打包工具升级以及升级后,修改项目中使用到的插件工具兼容性bug。一、修改记录增加vite支持,根据vite官网内容,修改index.html
【Apollo】开启Apollo之旅:让自动驾驶如此简单
阿Q说代码
Apollo自动驾驶 人工智能 自动驾驶 人工智能 机器学习 Apollo开发者社区 Apollo
前言Apollo是百度公司推出的自动驾驶平台。它是一个综合性的自动驾驶解决方案,提供了包括感知、决策、规划和控制等核心功能,以及地图、定位、仿真、数据管理等配套工具。文章目录前言Apollo的发展历程Apollo8.0新特性软件包管理感知框架工具链小结云端体验软件包安装总结活动活动介绍学习形式课程安排活动奖励报名方式Apollo的发展历程从2017年4月Apollo开放计划宣布开始算起,经过了5年
如何用ruby来写hadoop的mapreduce并生成jar包
wudixiaotie
mapreduce
ruby来写hadoop的mapreduce,我用的方法是rubydoop。怎么配置环境呢:
1.安装rvm:
不说了 网上有
2.安装ruby:
由于我以前是做ruby的,所以习惯性的先安装了ruby,起码调试起来比jruby快多了。
3.安装jruby:
rvm install jruby然后等待安
java编程思想 -- 访问控制权限
百合不是茶
java 访问控制权限 单例模式
访问权限是java中一个比较中要的知识点,它规定者什么方法可以访问,什么不可以访问
一:包访问权限;
自定义包:
package com.wj.control;
//包
public class Demo {
//定义一个无参的方法
public void DemoPackage(){
System.out.println("调用
[生物与医学]请审慎食用小龙虾
comsci
生物
现在的餐馆里面出售的小龙虾,有一些是在野外捕捉的,这些小龙虾身体里面可能带有某些病毒和细菌,人食用以后可能会导致一些疾病,严重的甚至会死亡.....
所以,参加聚餐的时候,最好不要点小龙虾...就吃养殖的猪肉,牛肉,羊肉和鱼,等动物蛋白质
org.apache.jasper.JasperException: Unable to compile class for JSP:
商人shang
maven 2.2 jdk1.8
环境: jdk1.8 maven tomcat7-maven-plugin 2.0
原因: tomcat7-maven-plugin 2.0 不知吃 jdk 1.8,换成 tomcat7-maven-plugin 2.2就行,即
<plugin>
你的垃圾你处理掉了吗?GC
oloz
GC
前序:本人菜鸟,此文研究学习来自网络,各位牛牛多指教
1.垃圾收集算法的核心思想
Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。
垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别
shiro 和 SESSSION
杨白白
shiro
shiro 在web项目里默认使用的是web容器提供的session,也就是说shiro使用的session是web容器产生的,并不是自己产生的,在用于非web环境时可用其他来源代替。在web工程启动的时候它就和容器绑定在了一起,这是通过web.xml里面的shiroFilter实现的。通过session.getSession()方法会在浏览器cokkice产生JESSIONID,当关闭浏览器,此
移动互联网终端 淘宝客如何实现盈利
小桔子
移動客戶端 淘客 淘寶App
2012年淘宝联盟平台为站长和淘宝客带来的分成收入突破30亿元,同比增长100%。而来自移动端的分成达1亿元,其中美丽说、蘑菇街、果库、口袋购物等App运营商分成近5000万元。 可以看出,虽然目前阶段PC端对于淘客而言仍旧是盈利的大头,但移动端已经呈现出爆发之势。而且这个势头将随着智能终端(手机,平板)的加速普及而更加迅猛
wordpress小工具制作
aichenglong
wordpress 小工具
wordpress 使用侧边栏的小工具,很方便调整页面结构
小工具的制作过程
1 在自己的主题文件中新建一个文件夹(如widget),在文件夹中创建一个php(AWP_posts-category.php)
小工具是一个类,想侧边栏一样,还得使用代码注册,他才可以再后台使用,基本的代码一层不变
<?php
class AWP_Post_Category extends WP_Wi
JS微信分享
AILIKES
js
// 所有功能必须包含在 WeixinApi.ready 中进行
WeixinApi.ready(function(Api) {
// 微信分享的数据
var wxData = {
&nb
封装探讨
百合不是茶
JAVA面向对象 封装
//封装 属性 方法 将某些东西包装在一起,通过创建对象或使用静态的方法来调用,称为封装;封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题,增加代码的可读性和可维护性
在 Aname类中申明三个属性,将其封装在一个类中:通过对象来调用
例如 1:
//属性 将其设为私有
姓名 name 可以公开
jquery radio/checkbox change事件不能触发的问题
bijian1013
JavaScript jquery
我想让radio来控制当前我选择的是机动车还是特种车,如下所示:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"><
AngularJS中安全性措施
bijian1013
JavaScript AngularJS 安全性 XSRF JSON漏洞
在使用web应用中,安全性是应该首要考虑的一个问题。AngularJS提供了一些辅助机制,用来防护来自两个常见攻击方向的网络攻击。
一.JSON漏洞
当使用一个GET请求获取JSON数组信息的时候(尤其是当这一信息非常敏感,
[Maven学习笔记九]Maven发布web项目
bit1129
maven
基于Maven的web项目的标准项目结构
user-project
user-core
user-service
user-web
src
【Hive七】Hive用户自定义聚合函数(UDAF)
bit1129
hive
用户自定义聚合函数,用户提供的多个入参通过聚合计算(求和、求最大值、求最小值)得到一个聚合计算结果的函数。
问题:UDF也可以提供输入多个参数然后输出一个结果的运算,比如加法运算add(3,5),add这个UDF需要实现UDF的evaluate方法,那么UDF和UDAF的实质分别究竟是什么?
Double evaluate(Double a, Double b)
通过 nginx-lua 给 Nginx 增加 OAuth 支持
ronin47
前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGeek 在过去几年中取得了发展,我们已经积累了不少针对各种任务的不同管理接口。我们通常为新的展示需求创建新模块,比如我们自己的博客、图表等。我们还定期开发内部工具来处理诸如部署、可视化操作及事件处理等事务。在处理这些事务中,我们使用了几个不同的接口来认证:
&n
利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法
bsr1983
session
在利用tomcat-redis-session-manager做session同步时,遇到了在session保存一个自定义对象时,修改该对象中的某个属性,session未进行序列化,属性没有被存储到redis中。 在 tomcat-redis-session-manager的github上有如下说明: Session Change Tracking
As noted in the &qu
《代码大全》表驱动法-Table Driven Approach-1
bylijinnan
java 算法
关于Table Driven Approach的一篇非常好的文章:
http://www.codeproject.com/Articles/42732/Table-driven-Approach
package com.ljn.base;
import java.util.Random;
public class TableDriven {
public
Sybase封锁原理
chicony
Sybase
昨天在操作Sybase IQ12.7时意外操作造成了数据库表锁定,不能删除被锁定表数据也不能往其中写入数据。由于着急往该表抽入数据,因此立马着手解决该表的解锁问题。 无奈此前没有接触过Sybase IQ12.7这套数据库产品,加之当时已属于下班时间无法求助于支持人员支持,因此只有借助搜索引擎强大的
java异常处理机制
CrazyMizzz
java
java异常关键字有以下几个,分别为 try catch final throw throws
他们的定义分别为
try: Opening exception-handling statement.
catch: Captures the exception.
finally: Runs its code before terminating
hive 数据插入DML语法汇总
daizj
hive DML 数据插入
Hive的数据插入DML语法汇总1、Loading files into tables语法:1) LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]解释:1)、上面命令执行环境为hive客户端环境下: hive>l
工厂设计模式
dcj3sjt126com
设计模式
使用设计模式是促进最佳实践和良好设计的好办法。设计模式可以提供针对常见的编程问题的灵活的解决方案。 工厂模式
工厂模式(Factory)允许你在代码执行时实例化对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是你要生成的对象对应的类名称。
Example #1 调用工厂方法(带参数)
<?phpclass Example{
mysql字符串查找函数
dcj3sjt126com
mysql
FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在1到 N 之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或st
jvm内存管理
easterfly
jvm
一、JVM堆内存的划分
分为年轻代和年老代。年轻代又分为三部分:一个eden,两个survivor。
工作过程是这样的:e区空间满了后,执行minor gc,存活下来的对象放入s0, 对s0仍会进行minor gc,存活下来的的对象放入s1中,对s1同样执行minor gc,依旧存活的对象就放入年老代中;
年老代满了之后会执行major gc,这个是stop the word模式,执行
CentOS-6.3安装配置JDK-8
gengzg
centos
JAVA_HOME=/usr/java/jdk1.8.0_45
JRE_HOME=/usr/java/jdk1.8.0_45/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME
【转】关于web路径的获取方法
huangyc1210
Web 路径
假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果: 1、 System.out.println(request.getContextPath()); //可返回站点的根路径。也就是项
php里获取第一个中文首字母并排序
远去的渡口
数据结构 PHP
很久没来更新博客了,还是觉得工作需要多总结的好。今天来更新一个自己认为比较有成就的问题吧。 最近在做储值结算,需求里结算首页需要按门店的首字母A-Z排序。我的数据结构原本是这样的:
Array
(
[0] => Array
(
[sid] => 2885842
[recetcstoredpay] =&g
java内部类
hm4123660
java 内部类 匿名内部类 成员内部类 方法内部类
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类可以间接解决多继承问题,可以使用内部类继承一个类,外部类继承一个类,实现多继承。
&nb
Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.Exten
zhb8015
maven pom.xml关于hibernate的配置和异常信息如下,查了好多资料,问题还是没有解决。只知道是包冲突,就是不知道是哪个包....遇到这个问题的分享下是怎么解决的。。
maven pom:
<dependency>
<groupId>org.hibernate</groupId>
<ar
Spark 性能相关参数配置详解-任务调度篇
Stark_Summer
spark cache cpu 任务调度 yarn
随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化。
由于篇幅较长,所以在这里分篇组织,如果要看最新完整的网页版内容,可以戳这里:http://spark-config.readthedocs.org/,主要是便
css3滤镜
wangkeheng
html css
经常看到一些网站的底部有一些灰色的图标,鼠标移入的时候会变亮,开始以为是js操作src或者bg呢,搜索了一下,发现了一个更好的方法:通过css3的滤镜方法。
html代码:
<a href='' class='icon'><img src='utv.jpg' /></a>
css代码:
.icon{-webkit-filter: graysc