declare @a nvarchar
--set @a=''
select * from students where (id between 1 and 5) and ((@a is null) or Name=@a)

这样实现where 后面多条件查询就简单很多!

posted @ 2012-02-10 17:55 ωǒじ落叶 阅读(21) 评论(0) 编辑

 刚刚使用静态类中的静态构造函数,有一些不太懂的地方,于是google了一下,看了一些文章,把自己的一些总结发上来吧。

  google的初衷就是因为这个:

在类中初始化成员到底是直接初始化还是在类的静态构造函数中初始化呢?

   还是先把最终的建议给展示出来:

第一就是简单静态成员,例如类型为值类型等,使用成员初始化语句来完成;

第二静态成员初始化比较复杂,或者有可能出现异常,那么用静态构造函数来完成。

   下面是在网上找的一个例子,主要是熟悉下静态构造函数的执行顺序:

    

static class A
{
public static int X = B.Y;
static A()
{
++X;
}
}

static class B
{
public static int Y = A.X;
static B()
{
++Y;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(A.X);
Console.WriteLine(B.Y);
Console.Read();
}
}

不卖关子,先说下执行结果

2

1

下面来解释下:首先执行Console.WriteLine(A.X),于是,便会跳到类A中去,因为调用了成员X,于是先给X分配空间,并初始化为0,于是又执行X = B.Y这句,执行时候变跳到了类B中,首先也是初始化成员Y,并初始化为0,继续执行Y = A.X,因为A.X已经初始化为0了,所以直接Y=0,接着再执行类B的静态构造函数,于是Y变成了1,执行完后在回到X=B.Y这句中,以为B.Y==1,所以X=1,然后再执行A类的静态构造函数,于是A.X==2了。

  可能上面有些绕,其实执行顺序就是,先初始化类中的静态成员,然后在执行类的静态构造函数,执行顺序:类的静态成员>类的静态构造函数。

  一上就上对静态构造函数的一些理解。

posted @ 2012-01-26 16:57 ωǒじ落叶 阅读(32) 评论(0) 编辑

  犯了个低级错误,将静态字段定义在了方法中(不管是静态方法或者普通方法),结果编译器一直报:“修饰符static 对该项无效”。结果查了些资料然后自己整理了下,大概如下:

  在类中,静态成员是属于类的一级成员,也就是说和类中的方法和属性等是同一个等级的,自然不能将一个静态的字段放在方法中去。反过来说如果你将一个静态字段放入了一个方法中,但是这个字段是静态的,所以按理来说是输入这个类的,可以直接使用“类名.方法名.静态变量”来访问,但是,方法在未调用时候是没有初始化的,既然方法没有初始化,方法中的成员又是属于方法的局部成员,自然按理来说也是访问不到的。那这样,不也是矛盾了。

  仅记录下来,让自己少犯这种错误!

 

posted @ 2012-01-08 10:54 ωǒじ落叶 阅读(22) 评论(0) 编辑

在4.0中微软带来了动态属性dynamic,于是我们可以用来实现反射的一些功能,并且可以大大提高性能。

下面先举一个不用dynamic来实现反射的例子

 class Program
{
static void Main(string[] args)
{
DynamicSample dynamicSample = new DynamicSample();
//通过反射得到DynamicSample的方法
var add = dynamicSample.GetType().GetMethod("Add");
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 100000; i++)
{
int re = (int)add.Invoke(dynamicSample, new object[] { 1, 2 });
}
watch.Stop();
Console.WriteLine(watch.ElapsedMilliseconds);//200毫秒左右
Console.Read();
}
}
public class DynamicSample
{
public string Name { get; set; }
public int Add(int a, int b)
{
return a + b;
}
}

试过几次,耗时基本在200毫秒左右,然后我们用dynamic来实现反射,看看性能如何

    class Program
{
static void Main(string[] args)
{
dynamic dynamicSample = new DynamicSample();
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 100000; i++)
{
int re = dynamicSample.Add(1, 2);
}
watch.Stop();
Console.WriteLine(watch.ElapsedMilliseconds);//50毫秒左右
Console.Read();
}
}
public class DynamicSample
{
public string Name { get; set; }
public int Add(int a, int b)
{
return a + b;
}
}

不仅代码变少了, 而且性能也提高了一个数量级,所有,大家能用动态属性实现反射的情况下建议都用动态属性来试下!

posted @ 2012-01-06 15:05 ωǒじ落叶 阅读(51) 评论(0) 编辑

   

张孝祥老师于2011年12月31日在北京不幸急病突发意外逝世,终年38岁,张孝祥追悼会将于2012年1月4日上午7时开始,在北京八宝山兰厅举行。

 

    听到这个消息,真的挺震惊的,张老师的java视频还是挺受大家的欢迎的,可没想到,居然就这么去世了,真是天妒英才啊。

   本不是技术文章不想发首页的,但是,为了大家着想,还是望大家多看看,身体才是革命的本钱,望广大园友好好珍惜自己的身体,不要以为年轻就不当回事!

   虽然我们不用日晒雨淋,但是我们每天都要面对着电脑,“享受”着各种辐射,坐在位置上也许一坐就是十来个小时不动弹。记得开始有张程序员肚子变化的图片的,找了下没找着,反正就是随着编程时间越来越久,你的肚子越来越大。

   所以园友们,给大家几点建议:

   1、在能不加班的时候就尽量早点休息,一天中最佳的休息时间:晚上10点到凌晨2点,是身体修复,保养皮肤的重要时段;凌晨1点到3点,是养肝的时间;3点到5点,是养肺的时间;5点到7点养大肠.争取早睡晚起,那是最好的了。

  2.上班时,为了减少辐射,可以在电脑旁放一盆仙人掌,或者多喝点绿茶,这样能够减少电脑带给你的辐射危害。

  3.每个星期一定要有那么几天,坚持锻炼,比如说晚上慢跑慢跑,或者休息的时候去打打球之类的,那样保证身体的强壮,不会由于突然的运动而感觉到很累,这样也能调节好自己的身体。

  4.很多程序员喜欢方便,于是就经常吃方便面,或者之类的垃圾食品,而且饮食会很不规律,经常早上不吃早点或者晚上很晚又要吃夜宵,劝一句 ,不是逼不得已,还是调整好自己的一日三餐,让其变得有规律,不要因为code而忘记了吃饭!

  5.每天不要一直坐着电脑旁一动不动,一两个小时就起来走动走动,活动下筋骨,尤其是颈部,不然很容易患肩周炎的。

  2012的第一天!最后还是希望大家能够身体倍儿棒,技术进步!

  csdn链接:http://news.csdn.net/a/20120101/310025.html

posted @ 2012-01-01 23:54 ωǒじ落叶 阅读(7248) 评论(51) 编辑
摘要: 世间本没有模式,只是programer用多了,便成就了各种模式。 这些天,开始慢慢的接触一些新模式和复习一些常用的模式 ,那就从简单工厂开始吧。 1.简单工厂的定义定义一个用于创建对象的接口,让子类决定实例化哪个类,Factory Method使一个类的实例化延迟到其子类中。参与者有:IProduct 产品接口,ProductA和ProductB......实现IProduct接口的类,Creator提供了FactoryMethod,FactoryMethod决定实现哪个类(ProductA或B,或者其他的)。不想说那么多了 ,还是直接用个通俗的例子来说吧。 eg:我们要实现这么一个功能,就是阅读全文
posted @ 2011-11-27 21:46 ωǒじ落叶 阅读(42) 评论(1) 编辑
摘要: 最近逛点点网,发现有两个圆(貌似是用于查看关注状态的东东)挺好看的,起初以为是图片,结果用工具一看居然都是用纯css样式画出来的 ,赶快学习了下。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <titl阅读全文
posted @ 2011-11-27 14:23 ωǒじ落叶 阅读(26) 评论(0) 编辑
摘要: 今天去了一家刚创业的公司(也不能说完全是刚创业吧,更确切点是刚步入软件行业这边),之前是要交一个项目,然后前几天通知我今天去面试,详细说说吧。面试我的是一个技术牛人,首先谈到了我大学都学了哪些课程,然后我balabala把大学三年学的课程说了一遍,什么c语言,c++,数据结构,操作系统原理,微机原理,计算机组成等等软件工程必修的课程都说了遍。然后便开始问我大学里面最喜欢的课程是哪门。说实话,大学里面学的很好的课程确实没有几门,都是属于那种半桶水的,如果我说了最喜欢哪门,他肯定要问我里头一些细节的东西,然后我就拐弯抹角的说大学里的课程有点和现在公司开发脱节,说我现在主要是做.NET这块的,想让他阅读全文
posted @ 2011-11-06 09:33 ωǒじ落叶 阅读(4377) 评论(52) 编辑
摘要: public class Singleton{ private static Singleton _instance = null; private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { _instance = new Singleton(); } return _instance; }}public class Singleton{ private vola...阅读全文
posted @ 2011-11-04 09:57 ωǒじ落叶 阅读(49) 评论(0) 编辑
摘要: 也许由于C#一些特性的原因,结构体(struct)很少使用(但是在 System.Drawing.Point、Size、Color这几个依然是用的结构体!),似乎都快被人们遗忘了,甚至于有些新手会不知道在C#中有结构体的存在 ,这几天刚好复习了下,于是便想拿出来和大家分享下。阅读全文
posted @ 2011-08-22 20:14 ωǒじ落叶 阅读(2233) 评论(9) 编辑
友情博客大熊的外星球  |cuitsl的一些小心思