cuarzo lograr regulares de limpieza de basura subida de imágenes fotografías que se obtienen

1, en primer lugar resolver lo que, cargados de imágenes en dos pasos

  1. Después de la primera carga a someterse a un segundo plano, salvación tiene éxito, devuelve un camino
  2. La segunda comunicación se presenta con la ruta de la imagen y otra información de fondo para ahorrar

Por lo tanto, después de la aplicación con éxito del primer paso, el segundo paso se produce cuando por alguna razón no puede someterse, entonces el primer paso para subir fotos inútil, esta vez para basura imágenes, estas imágenes no hay necesidad de continuar Guardar

2, para el caso anterior, el programa de diseño de la siguiente manera:
(Los siguientes esquemas incluyen sólo cuando el camino [], y otra información adicional almacenada, el otro, como editar, borrar, por analogía con la situación real)

Crear un proyecto maven, no a los Baidu

  1. Breve cuarzo y cros expresiones
    cuarzo es un campo abierto proyecto de código de programación Trabajo (Programación), cuarzo se puede utilizar por sí sola también puede ser integrado con el uso del marco de resorte, use generalmente este último en el desarrollo real. El cuarzo puede ser utilizado para desarrollar una o más tareas regulares, cada vez que el tiempo de ejecución de tareas se puede especificar de forma individual, por ejemplo, ejecuta una vez cada hora, una vez al mes a cabo el primer día 10:00, 17:00 del último día de cada mes tales como la implementación de una
    expresión cros :? * * * * 0/10, Baidu será capaz de saber el aprendizaje puede línea específica
    expresión cros generada en línea

  2. Unirse a la dependencia Maven

		<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
  1. archivo de configuración web.xml
	 <!-- 加载spring容器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  1. Crear un archivo de configuración de primavera
    (1) applicationContext-redis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                         http://www.springframework.org/schema/beans/spring-beans.xsd
        				http://www.springframework.org/schema/mvc
                          http://www.springframework.org/schema/mvc/spring-mvc.xsd
        				http://code.alibabatech.com/schema/dubbo
                          http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        				http://www.springframework.org/schema/context
                          http://www.springframework.org/schema/context/spring-context.xsd">

    <!--Jedis连接池的相关配置-->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal">
            <value>200</value>
        </property>
        <property name="maxIdle">
            <value>50</value>
        </property>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="true"/>
    </bean>
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
        <constructor-arg name="poolConfig" ref="jedisPoolConfig" />
        <constructor-arg name="host" value="192.168.1.19" />
        <constructor-arg name="port" value="6379" type="int" />
        <constructor-arg name="timeout" value="30000" type="int" />
    </bean>
</beans>

(2) applicationContext-jobs.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
							http://www.springframework.org/schema/beans/spring-beans.xsd
							http://www.springframework.org/schema/mvc
							http://www.springframework.org/schema/mvc/spring-mvc.xsd
							http://code.alibabatech.com/schema/dubbo
							http://code.alibabatech.com/schema/dubbo/dubbo.xsd
							http://www.springframework.org/schema/context
							http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启spring注解使用-->
    <context:annotation-config></context:annotation-config>
    <!--注册自定义Job-->
    <bean id="clearImgJob" class="com.zeny.jobs.ClearImgJob"></bean>

    <bean id="jobDetail"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 注入目标对象 -->
        <property name="targetObject" ref="clearImgJob"/>
        <!-- 注入目标方法 -->
        <property name="targetMethod" value="clearImg"/>
    </bean>
    <!-- 注册一个触发器,指定任务触发的时间 -->
    <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!-- 注入JobDetail -->
        <property name="jobDetail" ref="jobDetail"/>
        <!-- 指定触发的时间,基于Cron表达式 -->
        <property name="cronExpression">
            <!--
            <value>0 0 2 * * ?</value>
            -->
            <value>0/30 * * * * ?</value>
        </property>
    </bean>
    <!-- 注册一个统一的调度工厂,通过这个调度工厂调度任务 -->
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <!-- 注入多个触发器 -->
        <property name="triggers">
            <list>
                <ref bean="myTrigger"/>
            </list>
        </property>
    </bean>
</beans>
  1. La creación de clearImgJob
package com.zeny.jobs;

import com.zeny.constant.RedisConstant;
import com.zeny.util.QiniuUtils;
import org.springframework.beans.factory.annotation.Autowired;
import redis.clients.jedis.JedisPool;
import java.util.Set;
public class ClearImgJob {

    @Autowired
    private JedisPool jedisPool;

    public void clearImg() {
        //sdiff(大集合,小集合) 计算差值
        Set<String> set = jedisPool.getResource().sdiff(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
        if (set != null) {
            for (String picName : set) {
                //删除七牛云服务器的图片
                QiniuUtils.deleteFileFromQiniu(picName);
                //从Redis集合中删除图片的名称
                jedisPool.getResource().srem(RedisConstant.SETMEAL_PIC_RESOURCES, picName);
                System.out.println("定时删除垃圾图片: " + picName);
            }
        }
    }
}

Redis constantes categorías:

public class RedisConstant {
    //图片所有图片名称
    public static final String SETMEAL_PIC_RESOURCES = "setmealPicResources";
    //图片保存在数据库中的图片名称
    public static final String SETMEAL_PIC_DB_RESOURCES = "setmealPicDbResources";
}
  1. obtener
    Aquí Insertar imagen Descripción
  2. Análisis
    después de la primera carga de la imagen es correcta, el nombre de la ruta de retorno de imagen (Nombre de la imagen no se repite) en Redis, la constante es la clase Redis SETMEAL_PIC_RESOURCESen
    segundo éxito guardar la información después de que el nombre de la imagen en Redis, que Redis es una constante de clase SETMEAL_PIC_DB_RESOURCES, el cálculo de la diferencia, que es una basura imágenes, eliminar regularmente
Publicado 26 artículos originales · ganado elogios 0 · Vistas 556

Supongo que te gusta

Origin blog.csdn.net/qq_36609994/article/details/104876937
Recomendado
Clasificación