![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 61
青灬火
登高者必自卑,行远者必自迩。
展开
-
Springboot常用注解释义
springboot中常用注解①. @RestController用于返回json、xml等数据,但是不能返回HTML页面,相当于注解@ResponseBody和@Controller合在一起的作用,如:@RestControllerpublic class HelloWorldController { @RequestMapping("/hello") public String helloWorld() { return "Hello World!"; } }在浏原创 2020-06-02 22:37:26 · 185 阅读 · 0 评论 -
SpringBoot设置动态定时任务(任务循环间隔时间可随意修改)
近两天因为工作需要,之前的项目架构更换,在新的架构上需要实现一个定时循环任务,如项目启动后每隔100秒执行一次,但是该间隔时间在项目运行中是必须可以动态修改的。在网上搜了很多相关文章来看,几乎全都是运用cron表达式来实现的。但是cron表达式存在一个问题就是,它可以设置60秒以内,或者整分钟(或小时)来作为循环间隔,却无法实现每100秒(也就是大于59秒,但又不是整分钟)循环一次这样的需求。当然cron表达式是一个很强大的工具,只是针对于该需求来说不是特别合适。cron表达式更适合于设置定时定点的原创 2020-05-29 10:39:18 · 15288 阅读 · 4 评论 -
jsp/java执行或者调用bat/cmd脚本文件
jsp页面调用脚本文件或者脚本命令的方法其实和java一样,因为可以在jsp中执行java代码<%@ page language="java" import="java.lang.*" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBL...原创 2019-06-15 00:27:15 · 4000 阅读 · 0 评论 -
简单工厂模式
简单工厂模式适用于某大类的产品或对象其下可分为多种子类型的对象,每种子类型在大类的基础上又有各自特色的行为或方法。用户在使用时不需要知道具体的对象是怎么产生的,不关心对象的生成过程,只需要根据用户需求提供对应的对象就可以,这时我们就可以使用一个统一的工厂来封装对象的生成过程,将对象的生产和使用解耦开来,这样也利于后续的维护。如图形(Shape)大类,其下又可分为长方形(Rectangle),正...原创 2019-06-01 23:53:29 · 104 阅读 · 0 评论 -
多线程下的单例模式(线程安全)——懒加载
单例模式是较常用的一种设计模式,但在多线程情况下我们则必须注意线程安全问题,以往的单线程下的单例模式则可能会存在线程安全方面的隐患,所以的单例模式则在多线程下也可保证线程安全,并可以保持相对较高的性能。package springboot.rabbit.controller;public class Singleton{ //使用volatilt关键字修饰,可以阻止...原创 2018-10-24 22:41:37 · 1407 阅读 · 0 评论 -
RabbitMq09——confirm串行和并行模式
之前我们确定一个消息是否发送成功是从消费者是否接收到来判断的,但是在实际应用中,消费者和生产者往往是分开部署的,我们也不可能每发送一条消息就去消费者那里确认一下,所有我们需要一个机制来确认消息发送后是否成功到达了消息队列,下面来介绍几种在生产者端来确认消息发送状态的方法。(本篇及上一篇事务模式)confirm串行模式生产者package com.mmr.rabbitmq.confir...原创 2018-07-12 23:53:46 · 1939 阅读 · 0 评论 -
RabbitMq08——Transaction(事务)
之前我们确定一个消息是否发送成功是从消费者是否接收到来判断的,但是在实际应用中,消费者和生产者往往是分开部署的,我们也不可能每发送一条消息就去消费者那里确认一下,所有我们需要一个机制来确认消息发送后是否成功到达了消息队列,下面来介绍几种在生产者端来确认消息发送状态的方法。事务模式类似与数据库中所讲的事务。也是分为三个步骤:开启事务,提交事务,回滚事务。生产者package...原创 2018-07-12 23:49:18 · 1661 阅读 · 0 评论 -
RabbitMq04——公平分发
公平分发也就是能者多劳模式,当有消费者处理完成后,MQ就会继续给它分发消息,直到MQ中所有消息都被消费。公平分发需要注意的是,关闭自动应答模式,将每次分发的消息数进行限定,同时在消息消费完成后手动向MQ发送确认,之后MQ将该条消息移除,继续分发新的消息。具体的介绍会在消费者1的代码中详细注释。定义生产者和简单队列一样,声明生产者(具体可查看之前的博客——简单队列)。本次循环发送50...原创 2018-07-05 00:09:06 · 785 阅读 · 2 评论 -
RabbitMq07——主题模式(通配符模式)
其实这个模式和上一篇路由模式极为相似,甚至可以说是大同小异,有兴趣的朋友可以先浏览上一篇以做了解https://mp.csdn.net/postedit/80964178。它只不过是它是以主题为路由的标志,然后使用通配符来进行匹配一个类型的消息。本文详细注释已在代码中注明。生产者package com.mmr.rabbitmq.topics;import java....原创 2018-07-08 23:59:01 · 587 阅读 · 0 评论 -
RabbitMq05——订阅模式
有时候我们希望的是当生产者发送一条消息的时候,与它相关的消费者都能接收到该消息,而不是每一条消息只能一个消费者消费。即相当于我们关注的公众号,公众号发送一条消息,但是所有关注它的用户都可以收到该条消息。要实现这种模式,需要加入交换机来作为中间转换。即生产者发送消息不再直接发到队列,而是发送到交换机,再由交换机发送到对应的队列之中。但是每一个消费者都有一个自己的队列,并与之绑定,...原创 2018-07-08 13:29:53 · 244 阅读 · 0 评论 -
RabbitMq06——路由模式
在实际工作中有时候需要的是根据实际情况来分发消息,也就是路由模式。生产者在发送消息时为消息指定路由键,队列在与交换机绑定时也约定路由键,这样当消息发送到交换机的时候,交换机就会根据约定的路由键来向特定的队列发送消息。具体的我们来看示例代码,其中也有详细的注释。生产者package com.mmr.rabbitmq.direct;import java.io.IOExcepti...原创 2018-07-08 23:49:47 · 209 阅读 · 0 评论 -
RabbitMq03——轮询分发
相对来说生产者生产消息是比较容易的,但是消费者在处理消息的时候则需要更多的时间,甚至若干倍于生产者,所以如果只是使用简单队列的话,生产者和消费者之间的关系是一一对应的,这样当消费者处理需要耗费较长时间的时候,就会造成消息大量的积压,不能得到及时的处理。因此,我们需要学习新的工作队列,即一个消息队列可以对应多个消费者,它们将共同消费队列的消息,这样就会成倍的提升处理的...原创 2018-07-01 01:16:00 · 917 阅读 · 0 评论 -
RabbitMq02——简单队列
2、简单队列即生产者将消息发送到消息队列,消费者从队列之中取得消息,为单对单的模式。2.1、获取MQ连接Mq也是在数据库中来存放消息,所以就如同连接数据库一样,我们首先需要获取到MQ的连接。在获取连接时一定要注意导入正确的包。package com.rabbitmq.util;import java.io.IOException;import java.util.concu...原创 2018-06-26 00:42:03 · 195 阅读 · 0 评论 -
RabbitMq01——安装指南
rabbitMq作为一种消息中间件,现在很多的公司都在使用,接下来我们就简单介绍一下rabbitMq的安装:1.我们可以从官网(http://www.rabbitmq.com/)下载mq,点击Docs,然后再点击下面标出的链接进入下载页面。2.根据自己的操作系统选择,如我的是Windows我选择的就是该选项。3.在安装rabbitMq之前,需要安装Erlang语言,这样rabb...原创 2018-06-24 15:06:07 · 297 阅读 · 0 评论