博客园 - 我就是砖家
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=78417
2013-01-14T04:54:16Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
feed.cnblogs.com
https://www.cnblogs.com/Tyr-Tian/archive/2013/01/14/2859503.html
修改bin目录下的文件导致session丢失的问题 - 我就是砖家
闲来无事做了个ASP.NET的网站玩玩,后端用到了一个轻便的数据库SQLite,在调试中发现了这样一个现象:每当我向数据库里添加一条新信息时,网页打开速度都会明显变慢,而且会提示重新登录(后台有逻辑如果发现session中没有用户信息会跳转到登录页面)。程序的session用的是最基本的InProc模式,也即是存储在进程中,按理说进程没有重启,session这么短的时间更不可能过期了,那是哪里出了问题?既然这个问题是每次向数据库中插入数据时发生的,那就很好查找问题了。由于该程序将SQLite的数据库文件放到了bin目录下(不好的习惯),所以导致每次向数据库写数据时会导致db文件更新,w3wp在
2013-01-14T04:54:00Z
2013-01-14T04:54:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】闲来无事做了个ASP.NET的网站玩玩,后端用到了一个轻便的数据库SQLite,在调试中发现了这样一个现象:每当我向数据库里添加一条新信息时,网页打开速度都会明显变慢,而且会提示重新登录(后台有逻辑如果发现session中没有用户信息会跳转到登录页面)。程序的session用的是最基本的InProc模式,也即是存储在进程中,按理说进程没有重启,session这么短的时间更不可能过期了,那是哪里出了问题?既然这个问题是每次向数据库中插入数据时发生的,那就很好查找问题了。由于该程序将SQLite的数据库文件放到了bin目录下(不好的习惯),所以导致每次向数据库写数据时会导致db文件更新,w3wp在 <a href="https://www.cnblogs.com/Tyr-Tian/archive/2013/01/14/2859503.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2012/11/06/2756751.html
(转)什么是SysWow64 - 我就是砖家
原文链接: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的
2012-11-06T04:48:00Z
2012-11-06T04:48:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】原文链接: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的 <a href="https://www.cnblogs.com/Tyr-Tian/archive/2012/11/06/2756751.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2012/08/22/2650797.html
(转)jdk与jre的区别 - 我就是砖家
很多程序员已经干了一段时间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 目录下,后面这套比前面那套少
2012-08-22T06:29:00Z
2012-08-22T06:29:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】很多程序员已经干了一段时间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 目录下,后面这套比前面那套少 <a href="https://www.cnblogs.com/Tyr-Tian/archive/2012/08/22/2650797.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2011/05/25/2057444.html
Learning CLR via C#(3) - 我就是砖家
CLR要求将接口方法标记为virtual,如果源代码中没有显示地将方法标记为virtual,编译器会将它们标记为virtual和sealed,这会阻止派生类重写接口方法。 一个类型加载到CLR中时,会为该类型创建并初始化一个方法表。在这个方法表中,类型引入的每个新方法都有一条对应的记录项;另外,还为该类型继承的所有虚方法添加了记录项。 可以用显示接口方法实现(EIMI)来增强编译时的类型安全性:...
2011-05-25T14:25:00Z
2011-05-25T14:25:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】CLR要求将接口方法标记为virtual,如果源代码中没有显示地将方法标记为virtual,编译器会将它们标记为virtual和sealed,这会阻止派生类重写接口方法。 一个类型加载到CLR中时,会为该类型创建并初始化一个方法表。在这个方法表中,类型引入的每个新方法都有一条对应的记录项;另外,还为该类型继承的所有虚方法添加了记录项。 可以用显示接口方法实现(EIMI)来增强编译时的类型安全性:... <a href="https://www.cnblogs.com/Tyr-Tian/archive/2011/05/25/2057444.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2011/05/08/2040136.html
C#中协变与逆变的个人理解 - 我就是砖家
读了园子中一些前辈的关于C#中协变与逆变的文章,收获很大,分享一下我的个人理解,希望用较浅显的方式理解这个比较绕弯的概念。 协变与逆变应该是CLR的特性,我仅对我熟悉的C#举例说明。 说白了,它主要解决的是一个类型转换的问题,用一个最简单的泛型表达式就是: S<T1> = S<T2> 当然这只是一个抽象的表达式,而且只包含了一个泛型类型参数,意思是将一个S<T2>的实例赋值给一个S<T1>的实例...
2011-05-07T16:59:00Z
2011-05-07T16:59:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】读了园子中一些前辈的关于C#中协变与逆变的文章,收获很大,分享一下我的个人理解,希望用较浅显的方式理解这个比较绕弯的概念。 协变与逆变应该是CLR的特性,我仅对我熟悉的C#举例说明。 说白了,它主要解决的是一个类型转换的问题,用一个最简单的泛型表达式就是: S<T1> = S<T2> 当然这只是一个抽象的表达式,而且只包含了一个泛型类型参数,意思是将一个S<T2>的实例赋值给一个S<T1>的实例... <a href="https://www.cnblogs.com/Tyr-Tian/archive/2011/05/08/2040136.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2011/05/04/2037114.html
编译器对私有字段初始化的优化 - 我就是砖家
今天Review时看到自己写的这样一段类似的代码: internal class TestClass{ private bool _inited = false; private int _count = 0;}简单地说就是一个类中的私有字段被显示地赋上了默认值。根据我们惯有的经验,这么做不仅多此一举,而且画蛇添足。因为false和0分别是bool型和int型的默认值,也即是如果我们没有显示赋值,...
2011-05-04T15:35:00Z
2011-05-04T15:35:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】今天Review时看到自己写的这样一段类似的代码: internal class TestClass{ private bool _inited = false; private int _count = 0;}简单地说就是一个类中的私有字段被显示地赋上了默认值。根据我们惯有的经验,这么做不仅多此一举,而且画蛇添足。因为false和0分别是bool型和int型的默认值,也即是如果我们没有显示赋值,... <a href="https://www.cnblogs.com/Tyr-Tian/archive/2011/05/04/2037114.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2011/05/02/2034673.html
Learning CLR via C#(2) - 我就是砖家
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...
2011-05-02T15:06:00Z
2011-05-02T15:06:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】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... <a href="https://www.cnblogs.com/Tyr-Tian/archive/2011/05/02/2034673.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2011/04/28/2032233.html
关于代码规范 - 我就是砖家
今天被培训了C#代码规范,为了统一风格。其中我比较有异议的两点如下:类型实例的私有字段应采用骆驼命名法(camelCasing),不应该有任何前缀,在使用时前边加"this.”; 要用FCL类型而不是C#的基元类型,例如要使用Int32代替int。 首先对于第一点,个人比较习惯的做法是前边加下划线,说不上好坏,这两种写法在各种开源框架的源码中都见到过。由于VS默认并不提供像Eclipse那样的对私有字段变色的功能,所以如果只是简单的使用camelCasing的话会很难区分哪些是私有字段,哪些是局部变量,所以才有了加this的要求。那么来做个比较:public void Test(){
2011-04-28T14:07:00Z
2011-04-28T14:07:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】今天被培训了C#代码规范,为了统一风格。其中我比较有异议的两点如下:类型实例的私有字段应采用骆驼命名法(camelCasing),不应该有任何前缀,在使用时前边加"this.”; 要用FCL类型而不是C#的基元类型,例如要使用Int32代替int。 首先对于第一点,个人比较习惯的做法是前边加下划线,说不上好坏,这两种写法在各种开源框架的源码中都见到过。由于VS默认并不提供像Eclipse那样的对私有字段变色的功能,所以如果只是简单的使用camelCasing的话会很难区分哪些是私有字段,哪些是局部变量,所以才有了加this的要求。那么来做个比较:public void Test(){ <a href="https://www.cnblogs.com/Tyr-Tian/archive/2011/04/28/2032233.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Tyr-Tian/archive/2011/04/19/2019177.html
Learning CLR via C#(一) - 我就是砖家
做点笔记,不要遗漏自己觉得重要的或者以前不知道的东西,也督促自己学下去,不要半途而废。Tips:is和as操作符都会校验对象是否兼容于指定类型,强转也会检验。所以最佳搭配是as后判断是否为null,而不是is后as或is后强转。前者只会有一次校验,后者都会有两次。 命名空间是C#等的语言特性,CLR并不知道命名空间的任何事情。 类型对象中保存了类型对象指针,同步索引块,静态字段和方法(静态,虚,非虚)。方法执行时会先进行JIT编译(如果需要的话),然后调用JIT编译的代码。 JIT编译器会根据环境生成不同的CPU指令(如x86,x64等),所以方法在第一次执行时性能损耗较大,后边会有显著提高。
2011-04-19T15:26:00Z
2011-04-19T15:26:00Z
我就是砖家
https://www.cnblogs.com/Tyr-Tian/
【摘要】做点笔记,不要遗漏自己觉得重要的或者以前不知道的东西,也督促自己学下去,不要半途而废。Tips:is和as操作符都会校验对象是否兼容于指定类型,强转也会检验。所以最佳搭配是as后判断是否为null,而不是is后as或is后强转。前者只会有一次校验,后者都会有两次。 命名空间是C#等的语言特性,CLR并不知道命名空间的任何事情。 类型对象中保存了类型对象指针,同步索引块,静态字段和方法(静态,虚,非虚)。方法执行时会先进行JIT编译(如果需要的话),然后调用JIT编译的代码。 JIT编译器会根据环境生成不同的CPU指令(如x86,x64等),所以方法在第一次执行时性能损耗较大,后边会有显著提高。 <a href="https://www.cnblogs.com/Tyr-Tian/archive/2011/04/19/2019177.html" target="_blank">阅读全文</a>