摘要: 闲来无事做了个ASP.NET的网站玩玩,后端用到了一个轻便的数据库SQLite,在调试中发现了这样一个现象:每当我向数据库里添加一条新信息时,网页打开速度都会明显变慢,而且会提示重新登录(后台有逻辑如果发现session中没有用户信息会跳转到登录页面)。程序的session用的是最基本的InProc模式,也即是存储在进程中,按理说进程没有重启,session这么短的时间更不可能过期了,那是哪里出了问题?既然这个问题是每次向数据库中插入数据时发生的,那就很好查找问题了。由于该程序将SQLite的数据库文件放到了bin目录下(不好的习惯),所以导致每次向数据库写数据时会导致db文件更新,w3wp在 阅读全文
posted @ 2013-01-14 12:54 我就是砖家 阅读(365) 评论(1) 推荐(0) 编辑
摘要: 原文链接:http://blogs.msdn.com/b/tianlin/archive/2011/10/26/syswow64.aspxWow!什么是Wow64今天有个同事,被SysWow64搞晕了。这里简单介绍一下。64位的Windows并不是简单地把所有东西都编译成64位就万事大吉的。关于64位的CPU应该做成什么样子,Intel和AMD曾有各自的打算。AMD的回答直接了当:新的64位处理器,应该能在提高更高处理能力的同时,保持对32位应用程序的兼容性。而Intel则希望借此机会,把下一代的处理器,设计得更完美。于是,就有了AMD的x86-64(后被称为amd64)的处理器和Intel的 阅读全文
posted @ 2012-11-06 12:48 我就是砖家 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\jre1.5.0_15 目录下,后面这套比前面那套少 阅读全文
posted @ 2012-08-22 14:29 我就是砖家 阅读(202) 评论(1) 推荐(0) 编辑
摘要: CLR要求将接口方法标记为virtual,如果源代码中没有显示地将方法标记为virtual,编译器会将它们标记为virtual和sealed,这会阻止派生类重写接口方法。 一个类型加载到CLR中时,会为该类型创建并初始化一个方法表。在这个方法表中,类型引入的每个新方法都有一条对应的记录项;另外,还为该类型继承的所有虚方法添加了记录项。 可以用显示接口方法实现(EIMI)来增强编译时的类型安全性:... 阅读全文
posted @ 2011-05-25 22:25 我就是砖家 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 读了园子中一些前辈的关于C#中协变与逆变的文章,收获很大,分享一下我的个人理解,希望用较浅显的方式理解这个比较绕弯的概念。 协变与逆变应该是CLR的特性,我仅对我熟悉的C#举例说明。 说白了,它主要解决的是一个类型转换的问题,用一个最简单的泛型表达式就是: S<T1> = S<T2> 当然这只是一个抽象的表达式,而且只包含了一个泛型类型参数,意思是将一个S<T2>的实例赋值给一个S<T1>的实例... 阅读全文
posted @ 2011-05-08 00:59 我就是砖家 阅读(1921) 评论(3) 推荐(3) 编辑
摘要: 今天Review时看到自己写的这样一段类似的代码: internal class TestClass{ private bool _inited = false; private int _count = 0;}简单地说就是一个类中的私有字段被显示地赋上了默认值。根据我们惯有的经验,这么做不仅多此一举,而且画蛇添足。因为false和0分别是bool型和int型的默认值,也即是如果我们没有显示赋值,... 阅读全文
posted @ 2011-05-04 23:35 我就是砖家 阅读(280) 评论(0) 推荐(0) 编辑
摘要: Tips: 可选参数和默认参数的配合: static void Test(){ M(c: 5);}static void M(int a = 1, int b = 2, int c = 3){ //do sth}这样可以前两个参数使用默认值。 从CLR的角度看,out和ref完全一致。C#编译器将这两个关键字区别对待,这个区别决定了由哪个方法负责初始化所引用的对象。 可以为索引器重命名,默认为It... 阅读全文
posted @ 2011-05-02 23:06 我就是砖家 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 今天被培训了C#代码规范,为了统一风格。其中我比较有异议的两点如下:类型实例的私有字段应采用骆驼命名法(camelCasing),不应该有任何前缀,在使用时前边加"this.”; 要用FCL类型而不是C#的基元类型,例如要使用Int32代替int。 首先对于第一点,个人比较习惯的做法是前边加下划线,说不上好坏,这两种写法在各种开源框架的源码中都见到过。由于VS默认并不提供像Eclipse那样的对私有字段变色的功能,所以如果只是简单的使用camelCasing的话会很难区分哪些是私有字段,哪些是局部变量,所以才有了加this的要求。那么来做个比较:public void Test(){ 阅读全文
posted @ 2011-04-28 22:07 我就是砖家 阅读(4124) 评论(39) 推荐(6) 编辑
摘要: 做点笔记,不要遗漏自己觉得重要的或者以前不知道的东西,也督促自己学下去,不要半途而废。Tips:is和as操作符都会校验对象是否兼容于指定类型,强转也会检验。所以最佳搭配是as后判断是否为null,而不是is后as或is后强转。前者只会有一次校验,后者都会有两次。 命名空间是C#等的语言特性,CLR并不知道命名空间的任何事情。 类型对象中保存了类型对象指针,同步索引块,静态字段和方法(静态,虚,非虚)。方法执行时会先进行JIT编译(如果需要的话),然后调用JIT编译的代码。 JIT编译器会根据环境生成不同的CPU指令(如x86,x64等),所以方法在第一次执行时性能损耗较大,后边会有显著提高。 阅读全文
posted @ 2011-04-19 23:26 我就是砖家 阅读(289) 评论(1) 推荐(2) 编辑