quartz(5)--作业管理和存储
作业一旦被调度,调度器需要记住并且跟踪作业和它们的执行次数。如果你的作业是30分钟后或每30秒调用,这不是很有用。事实上,作业执行需要非常准确和即时调用在被调度作业上的execute()方法。Quartz通过一个称之为作业存储(JobStore)的概念来做作业存储和管理。Quartz提供两种基本作业存储类型。
RAMJobStore
第一种类型叫做RAMJobStore(默认存储方式),它利用通常的内存来持久化调度程序信息。这种作业存储类型最容易配置、构造和运行。对许多应用来说,这种作业存储已经足够了。
然而因为调度程序信息是存储在被分配给JVM的内存里面,所以当应用程序停止运行时,所有调度信息将被丢失。如果你需要在重新启动之间持久化调度信息,则将需要第二种类型的作业存储。
JDBC作业存储
第二种类型的作业存储实际上提供两种不同的实现,但两种实现一般都称为JDBC作业存储。
两种JDBC作业存储都需要JDBC驱动程序和后台数据库来持久化调度程序信息。这两种类型的不同在于你是否想要控制数据库事务或这释放控制给应用服务器例如BEA's WebLogic或Jboss。
这两种JDBC作业存储是:
· JobStoreTX:当你想要控制事务或工作在非应用服务器环境中是使用
· JobStoreCMT:当你工作在应用服务器环境中和想要容器控制事务时使用。
JDBC作业存储为需要调度程序维护调度信息的用户而设计
----------------------------------------------------------------------我是分割线----------------------------------------------------------------------------
持久化配置
#作业存储配置
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000 #数据源信息
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
org.quartz.dataSource.myDS.user = test
org.quartz.dataSource.myDS.password = test
org.quartz.dataSource.myDS.maxConnections = 5
spring-scheduler.xml
<!-- 配置scheduler 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="configLocation" value="classpath:quartz.properties"></property>
<property name="schedulerName" value="derella-web-scheduler" />
<!-- 这里配置的数据源会覆盖 quartz.properties文件中的配置-->
<property name="dataSource" ref="quartzDataSource"/>
<!-- 触发器 -->
<property name="triggers">
<list>
<!-- <ref bean = "testJobTrigger" /> -->
</list>
</property>
</bean>
spring-datasource.xml数据源配置
<!-- quartz -->
<bean id="quartzDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="test" />
<property name="password" value="test" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>
启动应用,查看quartz数据库QRTZ_SCHEDULER_STATE。 有配置的scheduler

quartz数据表
QRTZ_CALENDARS:以 BLOB 类型存储 Quartz 的 Calendar 信息
QRTZ_CRON_TRIGGERS:存储 Cron Trigger,包括 Cron表达式和时区信息
QRTZ_SIMPLE_TRIGGERS:存储简单的Trigger,包括重复次数,间隔,以及已触的次数
QRTZ_FIRED_TRIGGERS:存储与已触发的 Trigger 相关的状态信息,以及相联 Job的执行信息 QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的 Trigger 组的信息
QRTZ_BLOG_TRIGGERS:Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
QRTZ_TRIGGERS:存储已配置的 Trigger 的信息
QRTZ_SCHEDULER_STATE:存储少量的有关 Scheduler 的状态信息,和别的 Scheduler实例(假如是用于一个集群中)
QRTZ_LOCKS:存储程序的悲观锁的信息(假如使用了悲观锁)
QRTZ_JOB_DETAILS:存储每一个已配置的 Job 的详细信息
QRTZ_JOB_LISTENERS:存储有关已配置的 JobListener 的信息
QRTZ_TRIGGER_LISTENERS:存储已配置的 TriggerListener 的信息
/*Table structure for table `QRTZ_BLOB_TRIGGERS` */ DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`; CREATE TABLE `QRTZ_BLOB_TRIGGERS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`TRIGGER_NAME` varchar(200) NOT NULL COMMENT 'Trigger Name',
`TRIGGER_GROUP` varchar(200) NOT NULL COMMENT 'Trigger Group',
`BLOB_DATA` blob COMMENT 'Trigger存储的数据(java.io.Serializable)',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_TRIGGER_NAME_TRIGGER_GROUP` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='[Trigger]存储数据'; /*Table structure for table `QRTZ_CALENDARS` */ DROP TABLE IF EXISTS `QRTZ_CALENDARS`; CREATE TABLE `QRTZ_CALENDARS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`CALENDAR_NAME` varchar(200) NOT NULL COMMENT 'Calendar Name',
`CALENDAR` blob NOT NULL COMMENT 'Calendar',
PRIMARY KEY (`ID`),
KEY `IDX_SCHED_NAME_CALENDAR_NAME` (`SCHED_NAME`,`CALENDAR_NAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='任务排入的日程表'; /*Table structure for table `QRTZ_CRON_TRIGGERS` */ DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`; CREATE TABLE `QRTZ_CRON_TRIGGERS` (
`SCHED_NAME` varchar(120) NOT NULL,
`TRIGGER_NAME` varchar(200) NOT NULL,
`TRIGGER_GROUP` varchar(200) NOT NULL,
`CRON_EXPRESSION` varchar(120) NOT NULL,
`TIME_ZONE_ID` varchar(80) DEFAULT NULL,
PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*Table structure for table `QRTZ_FIRED_TRIGGERS` */ DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`; CREATE TABLE `QRTZ_FIRED_TRIGGERS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`ENTRY_ID` varchar(95) NOT NULL COMMENT 'Entry Id',
`TRIGGER_NAME` varchar(200) NOT NULL COMMENT 'Trigger Name',
`TRIGGER_GROUP` varchar(200) NOT NULL COMMENT 'Trigger Group',
`INSTANCE_NAME` varchar(200) NOT NULL COMMENT 'Instance Name',
`FIRED_TIME` bigint(13) NOT NULL COMMENT 'Fired Time [触发时间]',
`PRIORITY` int(11) NOT NULL COMMENT 'Priority [Job优先级]',
`STATE` varchar(16) NOT NULL COMMENT 'State',
`JOB_NAME` varchar(200) DEFAULT NULL COMMENT 'Job Name',
`JOB_GROUP` varchar(200) DEFAULT NULL COMMENT 'Job Group',
`IS_NONCONCURRENT` varchar(1) DEFAULT NULL COMMENT 'Is Nonconcurrent [不允许并发]',
`REQUESTS_RECOVERY` varchar(1) DEFAULT NULL COMMENT 'Requests Recovery [任务错误重试机制]',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_ENTRY_ID` (`SCHED_NAME`,`ENTRY_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=511547 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Fired Trigger'; /*Table structure for table `QRTZ_JOB_DETAILS` */ DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`; CREATE TABLE `QRTZ_JOB_DETAILS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`JOB_NAME` varchar(200) NOT NULL COMMENT 'Job Name',
`JOB_GROUP` varchar(200) NOT NULL COMMENT 'Job Group',
`DESCRIPTION` varchar(250) DEFAULT NULL COMMENT 'Description [描述]',
`JOB_CLASS_NAME` varchar(250) NOT NULL COMMENT 'Job Class Name [任务Class]',
`IS_DURABLE` varchar(1) NOT NULL COMMENT 'IS DURABLE',
`IS_NONCONCURRENT` varchar(1) NOT NULL COMMENT 'IS NONCONCURRENT',
`IS_UPDATE_DATA` varchar(1) NOT NULL COMMENT 'Is Update Data',
`REQUESTS_RECOVERY` varchar(1) NOT NULL COMMENT 'Requests Recovery',
`JOB_DATA` blob COMMENT 'Job Data [Job存储的数据]',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_JOB_NAME_JOB_GROUP` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`)
) ENGINE=InnoDB AUTO_INCREMENT=58425 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Job Details'; /*Table structure for table `QRTZ_LOCKS` */ DROP TABLE IF EXISTS `QRTZ_LOCKS`; CREATE TABLE `QRTZ_LOCKS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`LOCK_NAME` varchar(40) NOT NULL COMMENT 'Lock Name',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_LOCK_NAME` (`SCHED_NAME`,`LOCK_NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='锁表'; /*Table structure for table `QRTZ_PAUSED_TRIGGER_GRPS` */ DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`; CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`TRIGGER_GROUP` varchar(200) NOT NULL COMMENT 'Trigger Group',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_TRIGGER_GROUP` (`SCHED_NAME`,`TRIGGER_GROUP`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Paused Trigger'; /*Table structure for table `QRTZ_SCHEDULER_STATE` */ DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`; CREATE TABLE `QRTZ_SCHEDULER_STATE` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`INSTANCE_NAME` varchar(200) NOT NULL COMMENT 'Instance Name',
`LAST_CHECKIN_TIME` bigint(13) NOT NULL COMMENT 'last Checkin Time',
`CHECKIN_INTERVAL` bigint(13) NOT NULL COMMENT 'Checkin Interval',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_INSTANCE_NAME` (`SCHED_NAME`,`INSTANCE_NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=1215989 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Scheduler State'; /*Table structure for table `QRTZ_SIMPLE_TRIGGERS` */ DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`; CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`TRIGGER_NAME` varchar(200) NOT NULL COMMENT 'Trigger Name',
`TRIGGER_GROUP` varchar(200) NOT NULL COMMENT 'Trigger Group',
`REPEAT_COUNT` bigint(7) NOT NULL COMMENT 'Repeat Count',
`REPEAT_INTERVAL` bigint(12) NOT NULL COMMENT 'Repeat Interval',
`TIMES_TRIGGERED` bigint(10) NOT NULL COMMENT 'Times Triggered',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_TRIGGER_NAME_TRIGGER_GROUP` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
) ENGINE=InnoDB AUTO_INCREMENT=58068 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Simple Trigger'; /*Table structure for table `QRTZ_SIMPROP_TRIGGERS` */ DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`; CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`TRIGGER_NAME` varchar(200) NOT NULL COMMENT 'Trigger Name',
`TRIGGER_GROUP` varchar(200) NOT NULL COMMENT 'Trigger Group',
`STR_PROP_1` varchar(512) DEFAULT NULL COMMENT 'String Properties 1',
`STR_PROP_2` varchar(512) DEFAULT NULL COMMENT 'String Properties 2',
`STR_PROP_3` varchar(512) DEFAULT NULL COMMENT 'String Properties 3',
`INT_PROP_1` int(11) DEFAULT NULL COMMENT 'Integer Properties 1',
`INT_PROP_2` int(11) DEFAULT NULL COMMENT 'Integer Properties 2',
`LONG_PROP_1` bigint(20) DEFAULT NULL COMMENT 'Long Properties 1',
`LONG_PROP_2` bigint(20) DEFAULT NULL COMMENT 'Long Properties 2',
`DEC_PROP_1` decimal(13,4) DEFAULT NULL COMMENT 'Decimal Properties 1',
`DEC_PROP_2` decimal(13,4) DEFAULT NULL COMMENT 'Decimal Properties 2',
`BOOL_PROP_1` varchar(1) DEFAULT NULL COMMENT 'Boolean Properties 1',
`BOOL_PROP_2` varchar(1) DEFAULT NULL COMMENT 'Boolean Properties 1',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_TRIGGER_NAME_TRIGGER_GROUP` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Simple Properties Trigger'; /*Table structure for table `QRTZ_TRIGGERS` */ DROP TABLE IF EXISTS `QRTZ_TRIGGERS`; CREATE TABLE `QRTZ_TRIGGERS` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`SCHED_NAME` varchar(120) NOT NULL COMMENT 'Scheduler Name',
`TRIGGER_NAME` varchar(200) NOT NULL COMMENT 'Trigger Name',
`TRIGGER_GROUP` varchar(200) NOT NULL COMMENT 'Trigger Group',
`JOB_NAME` varchar(200) NOT NULL COMMENT 'Job Name',
`JOB_GROUP` varchar(200) NOT NULL COMMENT 'Job Group',
`DESCRIPTION` varchar(250) DEFAULT NULL COMMENT 'Description [描述]',
`NEXT_FIRE_TIME` bigint(13) DEFAULT NULL COMMENT 'Next Fire Time',
`PREV_FIRE_TIME` bigint(13) DEFAULT NULL COMMENT 'Prev Fire Time',
`PRIORITY` int(11) DEFAULT NULL COMMENT 'Priority',
`TRIGGER_STATE` varchar(16) NOT NULL COMMENT 'Trigger State',
`TRIGGER_TYPE` varchar(8) NOT NULL COMMENT 'Trigger Type',
`START_TIME` bigint(13) NOT NULL COMMENT 'Start Time',
`END_TIME` bigint(13) DEFAULT NULL COMMENT 'End Time',
`CALENDAR_NAME` varchar(200) DEFAULT NULL COMMENT 'Calendar Name',
`MISFIRE_INSTR` smallint(2) DEFAULT NULL COMMENT 'Misfire Instr',
`JOB_DATA` blob COMMENT 'Job Data',
PRIMARY KEY (`ID`),
UNIQUE KEY `IDX_SCHED_NAME_TRIGGER_NAME_TRIGGER_GROUP` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
KEY `qrtz_triggers_ibfk_1` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`),
CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`)
) ENGINE=InnoDB AUTO_INCREMENT=59174 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='Trigger';
quartz(5)--作业管理和存储的更多相关文章
- 【淘淘】Quartz作业存储与管理
一.Quartz作业管理和存储方式简介: 作业一旦被调度,调度器需要记住并且跟踪作业和它们的执行次数.如果你的作业是30分钟后或每30秒调用,这不是很有用.事实上,作业执行需要非常准确和即时调用在被调 ...
- Quartz任务调度(3)存储与持久化操作配置详细解
内存存储RAMJobStore Quartz默认使用RAMJobStore,它的优点是速度.因为所有的 Scheduler 信息都保存在计算机内存中,访问这些数据随着电脑而变快.而无须访问数据库或IO ...
- C#使用Quartz.NET详细讲解
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- Quartz.NET作业调度框架详解(转)
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- 详细讲解Quartz.NET
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- .net Quartz 服务 作业调度
.net项目中使用Quartz (1)在web.config中进行相关配置 <configSections> <section name="quartz" t ...
- quartz详解2:quartz由浅入深
http://blog.itpub.net/11627468/viewspace-1763498/ 一.quartz核心概念 先来看一张图: scheduler 任务调度器 trigger 触 ...
- 什么是Quartz?
什么是Quartz Quartz是一个开源的作业调度框架,Quartz根据用户设定的时间规则来执行作业,使用场景:在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知. ...
- 转载:quartz详解:quartz由浅入深
转载网址:http://blog.itpub.net/11627468/viewspace-1763498/ 一.quartz核心概念 先来看一张图: scheduler 任务调度器 ...
随机推荐
- Sql Server 数据库用Transact-SQL语句创建链接服务器
1.在查询编辑器中,输入以下 Transact-SQL 命令以便链接到名为 SRVR002\ACCTG 的 SQL Server 实例: USE [master] GO EXEC master.dbo ...
- lookcss在深夜23:32开通
CSS在深夜23:32开通 话说 哥也耐不住寂寞搞个网站玩玩.顺便记录一些生活和学习和工作和思想和神马的点点滴滴~ 好吧 ~本来想起个名字叫涉趣.谁知道百度了一下,已经有人叫这个名字了,杯具,貌似还是 ...
- 2015-03-18——mongodb的简单配置
参考网址:http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html#3060056 mongod 数据库启动程序 mongo 数据库操 ...
- 让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求
具体设置如下: 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools >Advanced Settin ...
- pandas 修改列名
原始文件 下面是Excel打开以及pd.read_csv() 打开: 里面只是干巴巴的数据,没有列名,so,需要给其设置列名. Method1 不让第一行数据默认当作列名(默认第一行数据是列名了). ...
- Django框架-模板系统
来看一段代码 def current_datetime(request): now = datetime.datetime.now() html = "<html><bod ...
- django--博客系统--后台管理
1.后台管理功能主要实现了,文章的添加与修改,以及富文本的使用 前端页面 母版 <!DOCTYPE html> <html lang="en"> <h ...
- 005-Symbol、Proxy、Reflect
1.Symbol:http://es6.ruanyifeng.com/#docs/symbol 2.Proxy:http://es6.ruanyifeng.com/#docs/proxy Proxy ...
- Go 结构体和map等数据结构转json字符串
Go语言中使用json包中的 Marshal() 函数将数据结构转成json字符串,源代码: func Marshal(v interface{}) ([]byte, error) { e := ne ...
- 采购订单打印并预览PDF
*&---------------------------------------------------------------------* *& Report Z01MMF019 ...