1.缘起:对于需要进行线程同步的地方,我们经常用的就是.NET内置的lock关键字和ReaderWriterLock类。lock的功能相对简单,因为它不区分读写,也就是说如果都在lock块中,读线程都会阻塞另一个读线程,在很多读远远多于写的应用中,这会极大地折损性能。所以我们也经常需要使用读写分离的锁ReaderWriterLock,使用它,我们可以明确的指定是要获取“读”锁还是“写”锁。而且,当前的“读”线程是不会阻塞其它的“读”线程的。lock的使用非
系统 2019-08-29 22:05:23 2275
我偶然在google或yahoo这样的搜索引擎搜索GRASP发现,除了国外的网站,国内网站多介绍和讨论GoF而很少介绍GRASP,即使这少量的文章也讲解非常粗略。个人认为作为优秀的开发人员,理解GRASP比GoF更重要,故写此文章。前面我在《(原创)一个优秀软件开发人员的必修课:GRASP软件开发模式浅析》中介绍了使用GRASP的目的,今天允许我调换一下顺序,先从低耦合讲起,因为诸如创建者模式、信息专家模式的根本目的就是降低耦合。1.低耦合(LowCoup
系统 2019-08-29 21:58:58 2275
有很多的书籍讨论敏捷方法是怎样工作的(Howitworks?),在这个主题演讲中,MartinFowler和他的同事NealFord讨论了敏捷方法能够在软件开发项目中行之有效的原因(Whyitworks?)。作为敏捷方法的发起人和传道者,MartinFowler和ThoughtWorks一直试图从理论层面证明敏捷方法的可行性,同时不厌其烦地解答着客户们的各种困惑,正如他们所说,敏捷方法中的很多概念不是特别的直观,除非人们真正实践过一段时间,否则有些概念很难
系统 2019-08-29 21:58:50 2275
一、字节和地址为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”。1.计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号,这个编号就称为地址。就好像酒店是以房间为单位的,每个房间都有一个唯一的房号,我们根据房号就能找到对应的房间。里面的每个小框框就代表着内存中的一个字节,白色数字就是每个字节的地址(这里采取十六进制来显示,地址值是随便写的,仅作为参考,真实情况中的地址值不一定是这个),可以发现,内存中相邻字
系统 2019-08-12 09:29:35 2275
Type属性与RangeValidator相同。Operator属性是比较操作符,有DataTypeCheck(类型检查),Equal(=),GreaterThan(>),GreaterThanEqul(>=),LessThan(<),LessThanEqual(<=),NotEqual(!=),当这些为True时再不出现提示。ValueToCompare,与某个值比较大小;ControlToCompare,与另一控件进行比较。实例:在表单上放入一text
系统 2019-08-12 09:27:02 2275
启动时:Hibernate:insertintoSessionInfo(lastModificationDate,rulesByteArray,startDate,OPTLOCK)values(?,?,?,?)取得连接Hibernate:insertintoProcessInstanceInfo(lastModificationDate,lastReadDate,processId,processInstanceByteArray,startDate,st
系统 2019-08-12 09:26:58 2275
in和exists的区别与SQL执行效率分析本文对in和exists的区别与SQL执行效率进行了全面整理分析……最近很多论坛又开始讨论in和exists的区别与SQL执行效率的问题,本文特整理一些in和exists的区别与SQL执行效率分析SQL中in可以分为三类:1、形如select*fromt1wheref1in('a','b'),应该和以下两种比较效率select*fromt1wheref1='a'orf1='b'或者select*fromt1whe
系统 2019-08-12 01:54:52 2275
今天在做dram的模拟时候,需要用rand()函数模拟dram的cell的retentiontime,所以查看了一个rand()函数,该函数能产生0到RAND_MAX之间的数。不同平台下RAND_MAX值不同,我在32bit的windowsVC6.0下测试,得出RAND_MAX的值为32767(即2^15-1)。我在64bit的ubuntu下,测试,得到RAND_MAX的值为2147483647(即2^31-1)。rand()函数的最大值问题
系统 2019-08-12 01:54:24 2275
问题:从上到下打印二叉树的每一行分析:先搜出二叉树的高度,然后遍历高度,每次搜索一个高度classSolution{public:intdfs(TreeNode*root){if(root==NULL)return0;if(root->left==NULL&&root->right==NULL)return1;returnmax(dfs(root->left),dfs(root->right))+1;}voidDdfs(TreeNode*root,intt
系统 2019-08-12 01:52:25 2275
核心:使用“导入导出数据”工具(微软自带的)头疼了很多天的问题,异地数据库怎么备份到本机上。换句话说就是说如何从别人的计算机上把人家的数据库本分到你自己的机器上。可能有人会说,只要能连接上,右键备份,一步步走不就行了。但是你没发现你备份完的东西在别人的机器存上,难道你要拿着U盘去人家那拷?那假如是服务器呢?你都不知道在那怎么拷?所以,后来在网上找,也没找到中意的,就研究了一下开始——MicrosoftSQLServer2005文件下有一“导入和导出数据(3
系统 2019-08-12 01:52:00 2275