触发器

.Net Core in Docker - 使用阿里云Codepipeline及阿里云容器镜像服务实现持续交付/部署(CD)

非 Y 不嫁゛ 提交于 2020-01-02 04:05:22
上一次演示了如何 使用阿里云Codepipeline,阿里云容器镜像服务实现CI ,讲到这里我们push一下代码后就自动编译、自动跑单元测试、自动构建镜像、自动推送镜像到私仓。那么离我们最初设定的目标只差那么一小步了,那就是自动部署到测试/生产环境,这一步就是持续交付/部署(CD)。 CD其实是两个意思 (1)Continuous delivery (持续交付) 指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。 (2)continuous deployment(持续部署) 指的是代码通过评审以后,自动部署到生产环境。 摘自阮一峰大神的blog 之前我一直以为CD只是持续部署的意思,最近仔细查资料才发其实是有两层意思。虽然是两层意思,但是其实也差不多,都是部署到某个可以运行起来的环境中,把程序跑起来。持续交付一般是部署到测试环境,供测试团队评审;持续部署是指通过测试评审后把程序部署到生产环境。既然差不多这里我就不细分了,因为都是部署,只是部署的位置不一样。 流程 上次的流程到把镜像推送到私仓(阿里云容器镜像服务)后就结束了,后面的流程需要手动跑shell脚本来完成。我们要把后面的流程串起来,让shell脚本自动运行起来,需要一个触发机制,比如webhook。幸好,阿里云容器镜像服务有这么一个功能,可以让我们把流程串起来

Quartz.NET 入门

拥有回忆 提交于 2020-01-01 22:30:18
转载自:http://www.cnblogs.com/jys509/p/4628926.html 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。 参考 官方学习文档: http://www.quartz-scheduler.net/documentation/index.html 使用实例介绍: http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html 官方的源代码下载: http://sourceforge.net/projects/quartznet/files/quartznet/ 或者到我上传的csdn下载: http://download.csdn.net/detail/jys1216/8878305 下载下来官方的例子,我们来分析一下: 解压后,看到的文档 打开后,看到的项目结构如下: 项目可以直接运行: 运行后,我们可以看到,每隔10秒有输出,那是因为,在配置quart

Quartz.NET总结(三)如配置jobs

江枫思渺然 提交于 2020-01-01 22:13:59
  前两篇文章,已经介绍了Quartz.NET的使用和Cron表达式表达式的写法,今天说一说Quartz的配置,Quartz相关的配置有三个quartz.config、quartz_jobs.xml、log4net.config。其中quartz.config是基本的配置, quartz_jobs.xml是相关的job 任务配置文件,log4net.config则是日志记录的配置。 1. quartz.config , 是Quartz.NET是基本的配置,主要是配置quartz_jobs.xml 的路径,及其他相关的参数。默认的quartz任务配置文件为quartz_jobs.xml,在quartz服务的根目录下,可以通过quartz.config中quartz.plugin.xml.fileNames = ~/quartz_jobs.xml进行设置。 # You can configure your scheduler in either <quartz> configuration section # or in quartz properties file # Configuration section has precedence quartz.scheduler.instanceName = ServerScheduler # configure thread pool

Quartz.NET总结(三)Quartz 配置

为君一笑 提交于 2020-01-01 22:13:31
转载自:http://www.cnblogs.com/zhangweizhong/p/4894354.html 前两篇文章,已经介绍了Quartz.NET的使用和Cron表达式表达式的写法,今天说一说Quartz的配置,Quartz相关的配置有三个quartz.config、quartz_jobs.xml、log4net.config。其中quartz.config是基本的配置, quartz_jobs.xml是相关的job 任务配置文件,log4net.config则是日志记录的配置。 1. quartz.config , 是Quartz.NET是基本的配置,主要是配置quartz_jobs.xml 的路径,及其他相关的参数。默认的quartz任务配置文件为quartz_jobs.xml,在quartz服务的根目录下,可以通过quartz.config中quartz.plugin.xml.fileNames = ~/quartz_jobs.xml进行设置。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 # You can configure your scheduler in either <quartz>

Quartz.NET开源作业调度架构

我是研究僧i 提交于 2020-01-01 22:11:59
Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 Quick Start 1、项目官网: http://www.quartz-scheduler.net/ 2、建议官网下载压缩包,浏览下源码的大概(里面源码、使用示例) ,src/Quartz可以引入到自己的项目中,Quartz.NET框架需要第三方库,引入这些三方库是必需的 NuGet方式: Install-Package Quartz 3、使用配置文件 1)appconfig或webconfig <configSections> <section name="quartz" type="System.Configuration.NameValueSectionHandler,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> </configSections> <quartz> <add key="quartz.scheduler

通过配置文件实现任务调度

孤街醉人 提交于 2020-01-01 22:11:18
Quartz.NET 2.0 可以很方便的通过配置的xml文件方式实现灵活的任务调度配置(1.0版本就已经支持了,只是配置文件格式有些变化) 默认的quartz任务配置文件为quartz_jobs.xml,在quartz服务的根目录下,可以通过quartz.config中 quartz.plugin.xml.fileNames = ~/quartz_jobs.xml进行设置 默认quartz.config文件结构如下 quartz.config 1 # You can configure your scheduler in either <quartz> configuration section 2 # or in quartz properties file 3 # Configuration section has precedence 4 5 quartz.scheduler.instanceName = ServerScheduler 6 7 # configure thread pool info 8 quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz 9 quartz.threadPool.threadCount = 10 10 quartz.threadPool.threadPriority

视图、触发器、事务、存储过程、函数

拥有回忆 提交于 2020-01-01 03:29:46
视图、触发器、事务、存储过程、函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+ | 1 | 生物 | 1 | | 2 | 物理 | 2 | | 3 | 体育 | 3 | | 4 | 美术 | 2 | +-----+--------+------------+ 4 rows in set (0.00 sec) mysql> select * from teacher; +-----+-----------------+ | tid |

MySQL的学习--触发器

家住魔仙堡 提交于 2020-01-01 03:28:28
MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER; trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。 由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。 trigger_event 详解 M ySQL 除了对 INSERT、UPDATE

利用SqlServer触发器自动更新表updatetime字段值

人盡茶涼 提交于 2019-12-31 20:48:27
本文主要记录了使用SqlServer数据库触发器自动更新表的"更新时间updatetime"字段   在 MySQL数据库中,某行数据创建时间字段 createtime 、 行最新更新时间字段updatetime 建表时可分别 用" datetime DEFAULT CURRENT_TIMESTAMP " 和 " datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP "约束,MySQL建表如下: ? 1 2 3 4 5 6 7 8 9 CREATE TABLE `student` ( `id` int (10) unsigned not null auto_increment, ` name ` varchar (60) default '' comment '学生姓名' , `sex` varchar (1) default 'Y' comment '性别' , `createtime` datetime DEFAULT CURRENT_TIMESTAMP , `updatetime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO

MySQL基础篇(03):系统和自定义函数总结,触发器使用详解

浪尽此生 提交于 2019-12-31 08:06:21
本文源码: GitHub·点这里 || GitEE·点这里 一、系统封装函数 MySQL 有很多内置的函数,可以快速解决开发中的一些业务需求,大概包括流程控制函数,数值型函数、字符串型函数、日期时间函数、聚合函数等。以下列出了这些分类中常用的函数。 1、控制流程函数 case...when 根据值判断返回值,类比编程中的IF-ELSE判断。 -- DEMO 01 SELECT CASE DATE_FORMAT(NOW(),'%Y-%m-%d') WHEN '2019-12-29' THEN 'today' WHEN '2019-12-28' THEN 'yesterday' WHEN '2019-12-30' THEN 'tommor' ELSE 'Unknow' END; -- DEMO 02 SELECT (CASE WHEN 1>0 THEN 'true' ELSE 'false' END) AS result; if(expr1,expr2,expr3) 如果表达式 expr1 是TRUE,则 IF()的返回值为expr2; 否则返回值则为 expr3。 SELECT IF(1>2,'1>2','1<2') AS result ; SELECT IF(1<2,'yes ','no') AS result ; SELECT IF(STRCMP('test','test'),