VS2010下,一些自动完成代码的快捷方法

构造函数: ctor

属性{get;set;}: prop

foreach: 连续二个Tab

switch: 一个 Tab后输入枚举再回车

发表在 未分类 | 留下评论

IIS中查看W3WP.exe进程对应的应用程序池的方法

在进程中发现个别的w3p.exe进程占用资源较高,这个进程每一个代表一个应用程序池,我们就知道哪些网站可能导致了这个原因。先在Windows任务管理器中点击查看–选择列–选择PID(进程标识符),这样在进程中就会显示进程ID号。对于IIS6可以运行 iisapp -a来显示应用程序池的性能列表. iisapp.vbs它是一个脚本程序,在安装2003时需要SP1才有 而IIS7可以直接用它的外壳命令 C:”Windows”System32″inetsrv>appcmd.exe list wp来显示 有时候因为服务器安全问题不能直接运行,我们可以通过下面的方法解决下。 IIS7中查看w3wp进程 在IIS中可以用iisapp命令查看到所有w3wp进程的情况,但IIS7中微软改变了做法,改用了Appcmd命令了,做法如下:

1:在system32文件夹中有appcmd.exe工具,%windir%\system32\inetsrv\appcmd.exe

2:打开doc命令窗口,定位到该文件夹

3:输入查看命令:appcmd list wp,即可看到所有w3wp进程的情况了

发表在 技术分享 | 标签为 , | 留下评论

win7安装IIS后如何远程访问IIS

在Window7操作系统中安装配置好IIS后,本地发布测试网站程序没有问题,但是局域网等远程用户不能正常访问网站程序,提示“Internet Explorer 无法显示该网页”。本地可以正常访问IIS但是远程不能访问IIS,遇到这种情况如何解决呢? 问题解决思路如下: 1、win7安装IIS后,本地测试没有问题,说明IIS的配置正确,如果本地测试有问题,先检查IIS安装配置情况。 2、检查计算机网络情况,发现本地网络正常。如果win7不能访问网络,请先正确配置网络连接。 3、检查防火墙设置,本文遇到的错误就是由于Win7自带的防火墙阻止了网站程序的端口,使得远程用户不能访问IIS。这里有两种方法解决。 A、关闭防火墙。控制面板-Windows防火墙-打开或关闭Windows防火墙(不推荐) win7-防火墙 B、打开:控制面板-Windows防火墙-高级设置-入站规则,在入站规则窗口中找到”BranchCache内容检索(http-in)“选项并启用此规则。这时候远程用户通过网站地址即可访问站点程序,但是如果远程用户访问IIS的非80端口,也会出现不能访问的问题,这是因为“BranchCache内容检索(http-in)”只是启用了80端口。此时只需要添加一条新的入站规则,并指定端口号为网站程序的端口号即可,比如8080。具体方法如下: win7-入站规则 在“Windows 防火墙”窗口的左边栏,选择-“入站规则”,在右边栏选“新建规则”,在弹出的“新建入站规则向导”窗口中执行: 端口–下一步–选中TCP以及特定本地端口,填入要开放的端口号(这里填入8080,当然也可以填写其他端口)–下一步–选中“允许连接”–下一步–选中所有选项:域、专用、共用–下一步–填入名称(这里填入IIS:8080)—完成即可。 转载自:http://www.fmben.com/me/default.asp?tag=win7

发表在 技术分享 | 标签为 , | 留下评论

js call 方法

call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象。 call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj 可选项。将被用作当前对象的对象。 arg1, arg2, , argN 可选项。将被传递方法参数序列。 说明 call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 ——————————————————————————————- 乍一看,很容易把人看迷胡,先做一些简单的说明 obj1.method1.call(obj2,argument1,argument2) 如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入. 举一个具体的例子 function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。 看一个稍微复杂一点的例子 function Class1() { this.name = “class1″; this.showNam = function() { alert(this.name); } } function Class2() { this.name = “class2″; } var c1 = new Class1(); var c2 = new Class2(); c1.showNam.call(c2); 注意,call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,执行的结果就是 :alert(”class2″); 怎么样,觉得有意思了吧,可以让a对象来执行b对象的方法,这是java程序员所不敢想的。还有更有趣的,可以用 call 来实现继承 function Class1() { this.showTxt = function(txt) { alert(txt); } } function Class2() { Class1.call(this); } var c2 = new Class2(); c2.showTxt(“cc”); 这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象就能够直接调用Class1 的方法以及属性了,执行结果就是:alert(“cc”); 对的,就是这样,这就是 javaScript 如何来模拟面向对象中的继承的,还可以实现多重继承。 function Class10() { this.showSub = function(a,b) { alert(a-b); } } function Class11() { this.showAdd = function(a,b) { alert(a+b); } } function Class2() { Class10.call(this); Class11.call(this); } 很简单,使用两个 call 就实现多重继承了 当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴,只是在此说明call 的用法 说了call ,当然还有 apply,这两个方法基本上是一个意思 区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组 转载自 http://www.cnblogs.com/sweting/archive/2009/12/21/1629204.html

发表在 技术分享 | 标签为 | 留下评论

C#扩展方法

扩展方法是C#3.0添加的新特性扩展方法是给现有类型添加一个方法。现在类型既可是基本数据类型(如int,String等),也可以是自己定义的类。 声明扩展方法扩展方法必须申明在静态类中的静态方法: public static class MyHelper { //扩展方法 public static int ToInt32Ext(this string s)  {   return Int32.Parse(s);  } //普通静态方法 public static int ToInt32Static(string s)  {   return Int32.Parse(s);  } } 调用方式如下: class Program {  static void Main(string[] args)  {   string s = “9″;   int i = s.ToInt32Ext(); // LINE A   Console.WriteLine(i);   int j = MyHelper.ToInt32Static(s); // LINE B   Console.WriteLine(j);   Console.ReadLine();  } }

发表在 技术分享 | 留下评论

JavaScript时间的格式化

/**
* 时间对象的格式化;
**/
Date.prototype.format = function (format) {
/**
* eg:format=”yyyy-MM-dd hh:mm:ss”;
**/
var o = {
“M+”: this.getMonth() + 1, //month
“d+”: this.getDate(), //day
“h+”: this.getHours(), //hour
“m+”: this.getMinutes(), //minute
“s+”: this.getSeconds(), //second
“q+”: Math.floor((this.getMonth() + 3) / 3), //quarter
“S”: this.getMilliseconds() //millisecond
}

if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + “”).substr(4 –                RegExp.$1.length));
}

for (var k in o) {
if (new RegExp(“(” + k + “)”).test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : (“00″ +         o[k]).substr((“” + o[k]).length));
}
}
return format;
}

使用方法:

var testDate = new Date();

var testStr = testDate.format(“yyyy年MM月dd日hh小时mm分ss秒”);

document.write(testStr);

发表在 技术分享 | 标签为 | 留下评论

清除SQL Server 企业管理器的服务器连接信息

SQL Server 2005:

X:\Documents and Settings\XXX\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\

键入以上路径,找到mru.dat 删掉即可。

SQL Server 2008:

X:\Documents and Settings\XXX\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell\

键入以上路径,找到SqlStudio.bin 删掉即可。

 

X: —指的是SQL Server 所在安装路径的盘符。

XXX:—指的是当前windows 登录用户名。

当然推荐删掉前做好备份,以防不时之需。

发表在 技术分享 | 标签为 , | 留下评论

ROW_NUMBER、RANK、DENSE_RANK的用法

SQL Server 2005 引入几个新的排序 (排名 )函数 , ROW_NUMBER RANK DENSE_RANK等。 这些新函数使您可以有效地分析数据以及向查询的结果行提供排序值。   

————————————————————————– 

ROW_NUMBER() 

说明:返回结果集分区内行的序列号,每个分区的第一行从 开始。 

语法: ROW_NUMBER () OVER ( [  <partition_by_clause> ]  <order_by_clause> ) 


备注: ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。

参数:

<partition_by_clause> :将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。   

<order_by_clause>:确定将 ROW_NUMBER 值分配给分区中的行的顺序。 

返回类型: bigint  

简单实例:

CREATE TABLE testdd

  (deptno                         NUMBER (*, 0 ),

    ename                          VARCHAR2 ( 4000 ),

    sal                            NUMBER ,

    team                           VARCHAR2 ( 4000 ))

1.以 ” deptno , team ” 分区(组),按照 sal 排序

select deptno , team , row_number () over ( partition by deptno , team order by sal desc rn ,ename , sal

from testdd

DEPTNO

TEAM

RN

ENAME

SAL

1

101

1

Lim

4000

1

101

2

Lee

3000

1

101

3

Qin

2500

1

102

1

Xu

50000

1

102

2

Wang

3100

1

102

3

Zhu

2400

2

102

1

Wong1

2200

2

102

2

Wong2

2000

2

103

1

Ding

3500

2

103

2

Ding1

2500

2

103

3

Ding2

2200

2

103

4

Ding3

2000

 

 

 

 

 

2.整个 table按照 sal 排序

select deptno , team , row_number () over ( order by sal desc rn , ename , sal

from testdd

DEPTNO

TEAM

RN

ENAME

SAL

1

102

1

Xu

50000

1

101

2

Lim

4000

2

103

3

Ding

3500

1

102

4

Wang

3100

1

101

5

Lee

3000

1

101

6

Qin

2500

2

103

7

Ding1

2500

1

102

8

Zhu

2400

2

102

9

Wong1

2200

2

103

10

Ding2

2200

2

103

11

Ding3

2000

2

102

12

Wong2

2000

3.以 ” deptno ” 分区(组),按照 sal 排序

select deptno , team , row_number () over ( partition by deptno order by sal desc rn , ename ,sal

from testdd

DEPTNO

TEAM

RN

ENAME

SAL

1

102

1

Xu

50000

1

101

2

Lim

4000

1

102

3

Wang

3100

1

101

4

Lee

3000

1

101

5

Qin

2500

1

102

6

Zhu

2400

2

103

1

Ding

3500

2

103

2

Ding1

2500

2

102

3

Wong1

2200

2

103

4

Ding2

2200

2

102

5

Wong2

2000

2

103

6

Ding3

2000

4.使用实例: (去掉重复记录 )

update INQUIRE_ALL_DETAIL_CURRENT

set email_type = ‘P’

–delete from INQUIRE_ALL_DETAIL_CURRENT

–delete from inquire_all_email_current

–delete from INQUIRE_ALL_EMAIL_ADDRESS_cur

 where email_id in

(

select distinct ( email_id )

FROM ( SELECT INQUIRE_ALL_DETAIL_CURRENT .*, ROW_NUMBER () OVER ( PARTITION BY INQUIRY_ID ,supplier_id , product_id email_type ORDER BY EMAIL_ID DESC RN ,

COUNT ( 1 OVER ( PARTITION BY INQUIRY_ID supplier_id , product_id email_type COUNTS

 FROM INQUIRE_ALL_DETAIL_CURRENT A

 WHERE COUNTS = and rn = 1

 )

5.利用 CTE来过滤 ROW_NUMBER()的用法 (选择出每个区的前三名):

–CTE filter row_number

 with NumberedRows AS

(

select deptno , team , row_number () over ( partition by deptno order by sal desc rn ,ename , sal

from testdd

)

select from NumberedRows

where rn between and 3

DEPTNO

TEAM

RN

ENAME

SAL

1

101

1

Lim

50000

1

102

2

Xu

50000

1

102

3

Wang

3100

2

103

1

Ding

3500

2

103

2

Ding1

2500

2

102

3

Wong1

2200

 

————————————————————–

RANK() 

  说明:返回结果集的分区内每行的排名。行的排名是相关行之前的排名数加一。 

  语法: RANK () OVER ( [  < partition_by_clause > ]  < order_by_clause > )

  备注:如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。

        例如,如果两位顶尖销售员具有同样的 SalesYTD 值,他们将并列第一。

        由于已有两行排名在前,所以具有下一个最大 SalesYTD 的销售人员将排名第三。

        因此, RANK 函数并不总返回连续整数。   

        用于整个查询的排序顺序决定了行在结果集中的显示顺序。这也隐含了行在每个分区中的排名。

        参数: < partition_by_clause > :将 FROM 子句生成的结果集划分为要应用 RANK 函数的分区。   

         < order_by_clause >:确定将 RANK 值应用于分区中的行时所基于的顺序。

  返回类型: bigint

 

简单例子:

1.按 deptno 分区 排名

SELECT  RANK () OVER ( PARTITION BY deptno order by sal desc as RANK , deptno , team , ename, sal

  FROM testdd 

 

1

1

101

Lim

50000

1

1

102

Xu

50000

3

1

102

Wang

3100

4

1

101

Lee

3000

5

1

101

Qin

2500

6

1

102

Zhu

2400

1

2

103

Ding

3500

2

2

103

Ding1

2500

3

2

102

Wong1

2200

3

2

103

Ding2

2200

5

2

102

Wong2

2000

5

2

103

Ding3

2000

 

2.按每个 depno 内的 team 分区排名

SELECT  RANK () OVER ( PARTITION BY deptno , team order by sal desc as RANK , deptno , team ,ename , sal FROM testdd 

 

RANK

DEPTNO

TEAM

ENAME

SAL

1

1

101

Lim

50000

2

1

101

Lee

3000

3

1

101

Qin

2500

1

1

102

Xu

50000

2

1

102

Wang

3100

3

1

102

Zhu

2400

1

2

102

Wong1

2200

2

2

102

Wong2

2000

1

2

103

Ding

3500

2

2

103

Ding1

2500

3

2

103

Ding2

2200

4

2

103

Ding3

2000

  3.按每个 depno 内的平均分以及排名

    – get average number

  with teamTotal AS

  (

  select deptno , team , sum ( sal as sumSal from testdd group by deptno , team

  )

 

  select deptno , team , sumSal ,

  rank () OVER ( PARTITION BY deptno ORDER BY sumSal , deptno DESC AS Rank ,

  AVG ( sumSal OVER ( PARTITION BY deptno AS Average

  from teamTotal

 

DEPTNO

TEAM

SUMSAL

RANK

AVERAGE

1

101

55500

1

55500

1

102

55500

1

55500

2

102

4200

1

7200

2

103

10200

2

7200

 

 

DENSE_RANK() 

  

  说明:返回结果集分区中行的排名,在排名中没有任何间断。行的排名等于所讨论行之前的所有排名数加一 

  语法: DENSE_RANK () OVER ( [  < partition_by_clause > ]  < order_by_clause > )

  备注:如果有两个或多个行受同一个分区中排名的约束,则每个约束行将接收相同的排名。 

        例如,如果两位顶尖销售员具有相同的 SalesYTD 值,则他们将并列第一。

        接下来 SalesYTD 最高的销售人员排名第二。该排名等于该行之前的所有行数加一。

        因此, DENSE_RANK 函数返回的数字没有间断,并且始终具有连续的排名。   

        整个查询所用的排序顺序确定了各行在结果中的显示顺序。这说明排名第一的行可以不是分区中的第一行 

  参数: < partition_by_clause > :将 FROM 子句所生成的结果集划分为数个将应用 DENSE_RANK 函数的分区。   

         < order_by_clause >:确定将 DENSE_RANK 值应用于分区中各行的顺序。

  返回类型: bigint 

 

简单实例:

1.按 deptno 分区 排名

SELECT  dense_RANK () OVER ( PARTITION BY deptno order by sal desc as RANK , deptno , team ,ename , sal FROM testdd 

 

RANK

DEPTNO

TEAM

ENAME

SAL

1

1

101

Lim

50000

1

1

102

Xu

50000

2

1

102

Wang

3100

3

1

101

Lee

3000

4

1

101

Qin

2500

5

1

102

Zhu

2400

1

2

103

Ding

3500

2

2

103

Ding1

2500

3

2

102

Wong1

2200

3

2

103

Ding2

2200

4

2

102

Wong2

2000

4

2

103

Ding3

2000

 

发表在 技术分享 | 标签为 , | 留下评论

C#的空接合运算符(两个问号)

1、空接合运算符:操作数1??操作数2;

2、第一个操作数必须是一个可空类型或引用类型,第二个操作数必须与第一个操作数类型相同,或者可以隐含的转换为第一个操作数的类型;

3、如果第一个操作数不为null,则表达式的值等于第一个操作数的值,如果第一个操作数为null,则表达式的值等于第二个操作数的值。

发表在 技术分享 | 标签为 , | 留下评论

Linq to sql 使用方法示例-2 left outer join

var query = from s in db.Students

join c in db.Classes on s.ClassID equals c.ClassID into gc

from gci in gc.DefaultIfEmpty()

select new

{

ClassID = s.ClassID,

ClassName = gci.ClassName,

Student = new

{

Name = s.Name,

ID = s.StudentID

}

};

Outer join时必须将join后的表into到一个新的变量gc中,然后要用gc.DefaultIfEmpty()表示外连接。

发表在 技术分享 | 标签为 , | 留下评论