摘要: 关于赋值,可以写成连锁形式:int x, y, z;x = y = z = 15; //赋值连锁形式赋值采用右结合律,故上述赋值被解析为:x = (y = (z = 15)); 为了实现连锁赋值,赋值操作符必须返回一个reference引用指向操作符的左侧实参。下面示例是为classes实现赋值操作符时应该遵循的协议:class Widget{public: ... Widget& operator=(const Widget& rhs) //返回类型是个reference,指向当前对象 { ... return *this; //返回左侧对象 } ...};这个协议不仅适用于 阅读全文
posted @ 2013-12-10 23:59 陌上归人 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 不该在构造函数和析构函数期间调用virtual函数,这一点是C++与jave/C#不同的地方之一。假设有一个class继承体系,用来模拟股市交易如买进、卖出的订单等等。这样的交易一定要经过审计,所以每当创建一个交易对象,在审计日志中也需要创建一笔适当记录。正确的做法是在基类Transaction内将logTransaction函数改为non-virtual,然后要求派生类构造函数传递必要信息给基类Transaction的构造函数,这样那个构造函数便可安全地调用non-virtuallogTransaction。正确用法如下:class Transaction{public: Transacti 阅读全文
posted @ 2013-12-10 23:21 陌上归人 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 问题:如果一个类的析构函数必须执行一个动作,而该动作可能会在失败时抛出异常,该怎么办?举个例子,假设使用过一个class负责数据库连接:class DBConnection{public: ... static DBConnection create(); //此函数返回DBConnection对象 void close(); //关闭联机;失败则抛出异常};一个较佳策略是创建一个用来管理DBConnection资源的DBConn类,DBConn类自己提供一个close函数,因而赋予客户一个机会得益处理“因该操作而发生的异常”。DBConn也可以追踪其所管理的DBConnection是否已.. 阅读全文
posted @ 2013-12-10 22:12 陌上归人 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 有一个项目上的数据库使用了几个月.mdf文件与.ldf文件加起来竟然达到了100G+,这样下去硬盘会被撑爆的。这样的原因是因为异常情况造成某个数据表中有大量的冗余数据,将异常数据表的冗余数据清理之后,mdf文件并没有变小,因为对数据库进行了删除操作,ldf文件反而变增大很多!根据项目情况考虑使用作业方式定时压缩数据文件大小,压缩之后只有十几兆的大小。Setp1:开启SQL Server Agent服务使用作业需要SQL Agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行。以下步骤开启服务:开始——>运行——>输入"services.msc"—— 阅读全文
posted @ 2013-08-28 19:33 陌上归人 阅读(1438) 评论(10) 推荐(1) 编辑
摘要: 1.1字符在.NET Framework中,字符都是用16位Unicode编码(UTF-16)的(编译时用UTF-16编码成2进制存到硬盘,程序运行时再用utf-16解码显示代码中的字符串,在内存中相应的字节流就是用UTF-16编码过的),也就是说所有字符都是占2个字节16位,这简化了国际化应用程序的开发。Unicode字符集有很多种编码方案,常用的有:UTF-16:所有字符被编码成2个字节UTF-8:十进制小于128的字符被编码成1个字节(可表示欧美地区使用的字符),128~2047的字符被编码成2个字节(可表示欧洲和中东语言),大于2047的字符被编码成3个字节(可表示东亚地区的语言)UT 阅读全文
posted @ 2013-08-23 18:28 陌上归人 阅读(695) 评论(0) 推荐(1) 编辑
摘要: 将一个项目由VS2010升级为VS2012后,在确保代码无误的情况下编译程序出现以下错误提示:解决方法:将4.0.0.0的程序集Microsoft.Expression.Interactions、及System.Windows.Controls.Toolkit升级为5.0.5.0版本的 阅读全文
posted @ 2013-08-16 19:24 陌上归人 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 现象:编译项目时提示未找到类型或命名空间名称"... "解决方法:如果是未找到类型,检查是否引用了类型所在的命名空间,使用using指令;如果是未找到命名空间,那么检查是否引用了程序集。这样的低级错误一般情况很少会犯,如果确认引用了程序集与命名空间,那么还有什么情况会导致编译程序时提示未找到类型或者命令空间呢,我本人就遇到过这样一个问题,其中一个工程无法引用另一个工程生成的库文件(并且这两个工程都在一个解决方案下,而其他工程却可正常引用此库文件,解决方案下有三十多个工程)仔细检查之后发现因以下原因导致:起初此项目由VS2010创建,SL版本为Silverlight4;后来讲 阅读全文
posted @ 2013-08-16 18:48 陌上归人 阅读(1473) 评论(2) 推荐(0) 编辑
摘要: 解析数据 XML 解析器通常情况下会处理XML文档中的所有文本。 当XML元素被解析的时候,XML元素内部的文本也会被解析,例如: Hello Word!XML解析器这样做的原因是XML元素内部可能还包含了别的元素。再例如下面的例子,name元素内部包含了first和last两个元素: zhang san 解析器会认为上面的代码是这样的: zhang san 但是例如"&"、"这种情况,必须将字符"&"转换成实体,例如: 下面是五个在XML文档中预定义好的实体: 和 & & ... 阅读全文
posted @ 2013-08-16 17:22 陌上归人 阅读(1852) 评论(0) 推荐(0) 编辑
摘要: 在本系列中,主要介绍LINQ to SQL基础的东西,因为LINQ太强大了,它对我们平常使用不同的数据源有着不同的内容,其包括对于SQL Server 数据库的LINQ to SQL;对于XML 文档的LINQ to XML;对于 ADO.NET 数据集的LINQ to DataSet;对于.NET 集合、文件、字符串等的LINQ to Objects。例外也出现了一些对LINQ支持的开源项目,例如LINQ to JSON,LINQ for NHibernate等等。在这个系列中,一些关于LINQ to SQL基础的东西就这么多了,这一篇用一些例子说明一下Null语义和String/DateT 阅读全文
posted @ 2013-07-26 09:51 陌上归人 阅读(340) 评论(0) 推荐(0) 编辑
摘要: NET中的正则表达式是处于 System.Text.RegularExpressions 命名空间中的,该命名空间提供了正则表达式的各种强大的功能。用的较多的类有:Group、GroupCollection、Match、MatchCollection、RegexRegex类表示不可变的正则表达式。Regex类包含几个static方法,这些方法和Regex对象方法的功能是一样的。在 .NET Framework 2.0 版中它们有点小区别。在.NET2.0中,将缓存通过调用静态方法而编译的正则表达式,而不会缓存通过调用实例方法而编译的正则表达式。默认情况下,正则表达式引擎将缓存 15 个最近使用 阅读全文
posted @ 2013-06-21 16:43 陌上归人 阅读(869) 评论(0) 推荐(0) 编辑