Quartz

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 定义任务bean -->
    <bean name="paymentOrderJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <!-- 指定具体的job类 -->
        <property name="jobClass" value="com.sugou.store.order.job.PaymentOrderJob" />
        <!-- 指定job的名称 -->
        <property name="name" value="paymentOrder" />
        <!-- 指定job的分组 -->
        <property name="group" value="Order" />
        <!-- 必须设置为true,如果为false,当没有活动的触发器与之关联时会在调度器中删除该任务  -->
        <property name="durability" value="true"/>
        <!-- 指定spring容器的key,如果不设定在job中的jobmap中是获取不到spring容器的 -->
        <property name="applicationContextJobDataKey" value="applicationContext"/>
    </bean>
    
    <!-- 定义触发器 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="paymentOrderJobDetail" />
        <!-- 每一分钟执行一次 -->
        <property name="cronExpression" value="0 0/1 * * * ?" />
    </bean>
    
    <!-- 定义调度器 -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger" />
            </list>
        </property>
    </bean>

</beans>





package com.sugou.store.order.job;

import org.joda.time.DateTime;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;

import com.sugou.store.order.mapper.OrderMapper;

/**
 * 扫描超过2天未付款的订单关闭
 */
public class PaymentOrderJob extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        ApplicationContext applicationContext = (ApplicationContext) context.getJobDetail().getJobDataMap()
                .get("applicationContext");
        //时间参数,当前时间向前推2天
        applicationContext.getBean(OrderMapper.class).paymentOrderScan(new DateTime().minusDays(2).toDate());
    }

}

orderMapper.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sugou.store.order.mapper.OrderMapper">

    <sql id="tableName">tb_order</sql>
    
    <resultMap type="Order" id="pojoResultMap" autoMapping="true">
        <id column="order_id" property="orderId"/>
        <association property="orderShipping" javaType="OrderShipping" column="order_id"
            select="queryOrderShippingByOrderId" autoMapping="true"></association>
        <collection property="orderItems" javaType="Arraylist" ofType="OrderItem" autoMapping="true"
            select="queryOrderItemByOrderId" column="order_id">
        </collection>
    </resultMap>
    
    <select id="queryOrderItemByOrderId" resultType="OrderItem" parameterType="String">
        SELECT * FROM tb_order_item WHERE order_id = #{orderId};
    </select>
    
    <select id="queryOrderShippingByOrderId" resultType="OrderShipping" parameterType="String">
        SELECT * FROM tb_order_shipping WHERE order_id = #{orderId};
    </select>

    <select id="queryList" resultMap="pojoResultMap">
        SELECT
            *
        FROM
            <include refid="tableName"/>
    </select>
    
    <select id="queryByID" resultMap="pojoResultMap">
        SELECT
            *
        FROM
            <include refid="tableName"/>
        WHERE order_id = #{id};
    </select>
    
    <select id="queryByWhere" parameterType="Where" resultMap="pojoResultMap">
        SELECT
            *
        FROM
            <include refid="tableName"/>
        WHERE  ${where.column} ${where.operater} #{where.value} LIMIT 1;
    </select>
    
    <select id="queryListByWhere" parameterType="Where" resultMap="pojoResultMap">
        SELECT
            *
        FROM
            <include refid="tableName"/>
        WHERE  ${where.column} ${where.operater} #{where.value};
    </select>
    
    <insert id="save">
        INSERT INTO <include refid="tableName"/> VALUES (#{orderId},#{payment},#{paymentType},#{postFee},#{status},#{createTime},#{updateTime},#{paymentTime},#{consignTime},#{endTime},#{closeTime},#{shippingName},#{shippingCode},#{userId},#{buyerMessage},#{buyerNick},#{buyerRate});
        INSERT INTO tb_order_item VALUES
        <foreach collection="orderItems" item="item" separator=",">
            (#{item.itemId},#{orderId},#{item.num},#{item.title},#{item.price},#{item.totalFee},#{item.picPath})
        </foreach>
        ;
        INSERT INTO tb_order_shipping VALUES (#{orderId},#{orderShipping.receiverName},#{orderShipping.receiverPhone},#{orderShipping.receiverMobile},#{orderShipping.receiverState},#{orderShipping.receiverCity},#{orderShipping.receiverDistrict},#{orderShipping.receiverAddress},#{orderShipping.receiverZip},NOW(),NOW());
    </insert>
    
    <update id="update">
        UPDATE <include refid="tableName"/>
        <set>
            <if test="payment !=null and payment != ''">
                payment = #{payment},
            </if>
            <if test="postFee !=null and postFee != ''">
                post_fee = #{postFee},
            </if>
            <if test="status !=null and status != ''">
                status = #{status},
            </if>
            <if test="updateTime !=null and updateTime != ''">
                update_time = #{updateTime},
            </if>
            <if test="paymentTime !=null and paymentTime != ''">
                payment_time = #{paymentTime},
            </if>
            <if test="consignTime !=null and consignTime != ''">
                consign_time = #{consignTime},
            </if>
            <if test="endTime !=null and endTime != ''">
                end_time = #{endTime},
            </if>
            <if test="closeTime !=null and closeTime != ''">
                close_time = #{closeTime},
            </if>
            <if test="shippingName !=null and shippingName != ''">
                shipping_name = #{shippingName},
            </if>
            <if test="shippingCode !=null and shippingCode != ''">
                shipping_code = #{shippingCode},
            </if>
            <if test="buyerMessage !=null and buyerMessage != ''">
                buyer_message = #{buyerMessage},
            </if>
            <if test="buyerRate !=null and buyerRate != ''">
                buyer_rate = #{buyerRate},
            </if>
        </set>
        WHERE order_id = #{orderId};
    </update>
    
    <delete id="deleteByID" parameterType="Long">
        DELETE FROM <include refid="tableName"/> WHERE order_id = #{orderId};
        DELETE FROM tb_order_item WHERE order_id = #{orderId};
    </delete>
    
    <delete id="deleteByIDS" parameterType="list">
        DELETE FROM <include refid="tableName"/> WHERE order_id IN
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>;
        DELETE FROM tb_order_item WHERE order_id IN
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>;
    </delete>
    
    <update id="paymentOrderScan" parameterType="Date">
        UPDATE tb_order SET
            status = 6,
            update_time = NOW(),
            close_time = NOW(),
            end_time = NOW()
        WHERE status = 1 AND payment_type = 1 AND create_time &lt;= #{date}
    </update>

    
</mapper>




package com.sugou.store.order.mapper;

import java.util.Date;




import org.apache.ibatis.annotations.Param;

import com.sugou.store.order.pojo.Order;

public interface OrderMapper extends IMapper<Order>{
    
    public void paymentOrderScan(@Param("date") Date date);

}


深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值