QuartZ中的Cron表达式

一个cron 表达式是由6或者7个以空格分隔的字段组成。字段能够包含任何允许值,伴随着特殊字符不同组合。这些字段如下所示: 字段名称 是否一定需要 允许的值 允许的特殊字符串 Seconds YES 0-59 , – * / Minutes YES 0-59 , – * / Hours YES 0-23 , – * / Day of month YES 1-31 , – * ? / L W Month YES 1-12 or JAN-DEC , – * / Day of week YES 1-7 or SUN-SAT… Continue reading QuartZ中的Cron表达式

常用的SQL优化技巧

常见的字段类型选择 •字符类型建议采用varchar/nvarchar数据类型 •金额货币建议采用money数据类型 •科学计数建议采用numeric数据类型 •自增长标识建议采用bigint数据类型   (数据量一大,用int类型就装不下,那以后改造就麻烦了) •时间类型建议采用为datetime数据类型 •禁止使用text、ntext、image老的数据类型 •禁止使用xml数据类型、varchar(max)、nvarchar(max) 约束与索引 每张表必须有主键 •每张表必须有主键,用于强制实体完整性 •单表只能有一个主键(不允许为空及重复数据) •尽量使用单字段主键 不允许使用外键 •外键增加了表结构变更及数据迁移的复杂性 •外键对插入,更新的性能有影响,需要检查主外键约束 •数据完整性由程序控制 索引设计准则 •应该对 WHERE 子句中经常使用的列创建索引 •应该对经常用于连接表的列创建索引 •应该对 ORDER BY 子句中经常使用的列创建索引 •不应该对小型的表(仅使用几个页的表)创建索引,这是因为完全表扫描操作可能比使用索引执行的查询快 •单表索引数不超过6个 •不要给选择性低的字段建单列索引 •充分利用唯一约束 •索引包含的字段不超过5个(包括include列) 不要给选择性低的字段创建单列索引 •SQL SERVER对索引字段的选择性有要求,如果选择性太低SQL SERVER会放弃使用• •不适合创建索引的字段:性别、0/1、TRUE/FALSE •适合创建索引的字段:ORDERID、UID等 充分利用唯一索引 唯一索引给SQL Server提供了确保某一列绝对没有重复值的信息,当查询分析器通过唯一索引查找到一条记录则会立刻退出,不会继续查找索引 •表索引数不超过6个, 表索引数不超过6个(这个规则只是携程DBA经过试验之后制定的。。。) •索引加快了查询速度,但是却会影响写入性能 •一个表的索引应该结合这个表相关的所有SQL综合创建,尽量合并 •组合索引的原则是,过滤性越好的字段越靠前 •索引过多不仅会增加编译时间,也会影响数据库选择最佳执行计划 SQL查询 •禁止在数据库做复杂运算 •禁止使用SELECT * •禁止在索引列上使用函数或计算 •禁止使用游标 •禁止使用触发器… Continue reading 常用的SQL优化技巧

C# 中发送和接收MSMQ的一个示例

Ok, 直接上代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace WindowsFormsApplication3 { public class Form1 : Form { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param… Continue reading C# 中发送和接收MSMQ的一个示例

C# volatile

关于volatile关键字, 大家用的可能不多,  因为经常大家用的时候都是使用的lock, 或者其它的线程锁, 来避免并发时对变量的更改, 引用的不同步. volatile 关键字, 是一个轻量级的lock, 它会进行更多的优化, 具体的优化哪些东西我也不清楚, 性能也要比lock方式好. 所以一般情况下, 使用volatile即可. 下面摘取msdn 上对于这个关键字的描述: volatile 关键字指示一个字段可以由多个同时执行的线程修改。 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制。 这样可以确保该字段在任何时间呈现的都是最新的值。 volatile 修饰符通常用于由多个线程访问但不使用 lock 语句对访问进行序列化的字段。 using System; using System.Threading; public class Worker { // This method is called when the thread is started. public void DoWork() { while (!_shouldStop) { Console.WriteLine(“Worker thread: working…”); }… Continue reading C# volatile

VIM 基本命令

VIM For windows默认安装后,在桌面上会有2个Shortlink, 但是这2个link都是带有参数的, 一个是/y, 进去以后就是insert模式, 非常不方便。 一个是/R, 进去以后永远是Readonly, 无法更改数据。 所以我们需要直接将gvim.exe建立快捷方式至桌面, 并且copy 一份到system32, 以便于命令行直接启动。 Linux下的vim命令, 大多在windows下也可以使用, 这里截取了一段来自网上的Vim commands.

x509

x509证书一般会用到三类文件,key,csr,crt。 Key是私用密钥,openssl格式,通常是rsa算法。 csr是证书请求文件,用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。 crt是CA认证后的证书文件(windows下面的csr,其实是crt),签署人用自己的key给你签署的凭证。 1.key的生成 openssl genrsa -des3 -out server.key 2048 这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key: openssl rsa -in server.key -out server.key server.key就是没有密码的版本了。 2.生成CA的crt openssl req -new -x509 -key server.key -out ca.crt -days 3650 生成的ca.crt文件是用来签署下面的server.csr文件。 3.csr的生成方法: openssl req -new -key server.key -out server.csr 需要依次输入国家,地区,组织,email。最重要的是,有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。 4.crt生成方法 CSR文件必须有CA的签名才可形成证书. 可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢. openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key… Continue reading x509

Ubuntu+LAMP+Nginx

好久没有玩linux了, 下午的时候有点时间, 搭了一套环境. 使用的VMware workstation安装的Ubuntu 12 Server, 网络连接使用的NAT, Remove掉了Floppy. Host是Intel Core i5-4570 3.2GHz的64Bit CPU, Memory 是4G. 配置还可以, 故给VMware配置了1G的Memory, 20G的Disk. Ubuntu的安装过程现在是越来越简单了, 过程也记不清了, 这里就不说了.  总之顺利安装成功. Host 的IP是 192.168.82.81, Client的IP是192.168.206.129. 因为Company里有Security Audit, 所以需要通过Proxy才能上外网, 故第一步给Ubuntu设置代理服务器. editor /etc/profile 添加: http_proxy=http://192.168.88.80:3128 https_proxy=http://192.168.88.80:3128 ftp_proxy=http://192.168.88.80:3128 export http_proxy https_proxy ftp_proxy 然后Reboot. OK, 可以上外网了. 现在开始更新apt源, 由于默认安装后的源是Ubuntu在国外的服务器, 非常慢, 所以先更改源地址: editor /etc/apt/sources.list 然后在所有的archive.ubuntu.com前加上cn., 即: http://cn.archive.ubuntu.com/ubuntu/ , cn.archive.ubuntu.com… Continue reading Ubuntu+LAMP+Nginx

统计信息, SQLServer自动更新和自动创建统计信息选项

统计信息是如何提高SQLServer查询性能的?统计直方图用作在查询执行计划中查询优化器的选择依据。如果一个查询谓词包含统计信息的列,那么查询优 化器不需要预测该查询中影响行数,因此,查询优化器有足够的信息去创建执行计划。SQLServer创建执行计划有一下几种不同的方式: 统计信息会在每个新创建的索引中自动创建统计信息。 如果数据库中AUTO_CREATE_STATISTICS被设置为ON,SQLServer将会自动对查询中用到的,且没有索引的列自动创建统计信息。 AUTO_CREATE_STATISTICS选项: 当把该选项设为ON时,查询优化器会对在谓词中使用的到列,如果这些列的统计信息不可用,则会单独对每列创建统计信息。这些统计信息对创建一个查询 计划非常必要。它们创建于那些现有统计对象中不存在直方图的列上,名字包括列名和对象ID的十六进制格 式:_WA_Sys_<column_name>_<XXXX>。这些统计信息用于查询优化器决定使用何种优化后的执行计划。 可以通过以下语句启用自动统计信息创建功能: ALTER DATABASE[你的库名] SET AUTO_CREATE_STATISTICS ON Auto Update Statistics选项: 统计信息会在查询编译或者执行缓存执行计划前被检查。当在以下情况下,统计信息会被认为过期: 1、  在一个空表中有数据的改动。 2、  当统计信息创建时,表的行数只有500或以下,且后来统计对象中的引导列的更改次数大于500. 3、  当表的统计信息收集时,超过了500行,且统计对象的引导列后来更改次数超过500+表总行数的20%时。 4、  在Tempdb中的表,少于6行且最少有6行被更改。