编程
文章平均质量分 72
早晨的阳光Sunrise
这个作者很懒,什么都没留下…
展开
-
C++编程规范 设计风格
第5条 一个实体应该只有一个紧凑的职责一次只解决一个问题:只给一个实体(变量、类、函数、名称空间、模块和库)赋予一个定义良好的职责。随着实体变大,其职责范围自然也会扩大,但是职责不应该发散。详细:1、“多个职责”经常意味着“多重性格”——可能的行为和状态的各种组合方式。2、应该用较小的低层抽象构建更高层次的抽象。3、要避免将几个低层抽象集合成一个较大的低层次抽象聚合体。4、原创 2011-11-11 17:06:15 · 572 阅读 · 0 评论 -
Effective C++ 目录
改变旧有的C习惯(Shifting from C to C++) 013条款1:尽量以 const 和 inline 取代 #define 013Prefer const and inline to #define.条款2:尽量以 取代 017Prefer to .条款3:尽量以 new 和 delete 取代 malloc() 和 free() 019Prefer原创 2011-08-19 17:34:32 · 784 阅读 · 0 评论 -
C++ 编程规范及惯用法(未完成)
最近重读了一下一些经典的 C++ 书籍,再次感觉到 C++ 的难与浩大,为了日后编程能够减少错误和提高效率,故希望把一些编程规范做一下总结及收集,同时也把一些编程的最佳实践和惯用法总结一下,方便日后开发的时候能够根据需要应用上。这个工作说容易也容易,基本就是把这些书籍的目录罗列一下。说难也难,要做到能够指导日后的快速开发,这个确实不容易。反正尽量做吧,应该会有点用的。首先,把我认为比较好的原创 2011-08-19 17:33:53 · 1457 阅读 · 0 评论 -
Exceptional C++ 目录
第1章 泛型程序设计与 C++ 标准库条款1:迭代器条款2:大小写不敏感的字符串——之一条款3:大小写不敏感的字符串——之二条款4:可重用性最大的泛型容器——之一条款5:可重用性最大的泛型容器——之二条款6:临时对象条款7:标准库的使用(再论临时对象)第2章 异常安全性的问题与技术条款8:编写异常安全的代码——之一条款9:编写异常安全的代码——之二条原创 2011-11-11 11:32:16 · 791 阅读 · 0 评论 -
More Exceptional C++ 目录
泛型程序设计与C++标准库条款1:流条款2:Predicates,之一:remove() 删除了什么?条款3:Predicates,之二:状态带来的问题条款4:可扩充的模板:使用继承还是 traits?条款5:typename条款6:容器、指针和“不是容器的容器”条款7:使用 vector 和 deque条款8:使用 set 和 map条款9:等同的代码吗?原创 2011-11-11 11:41:25 · 663 阅读 · 0 评论 -
C++编程规范 目录
组织和策略问题第0条 不要拘泥于小节(又名:了解那些东西不应该标准化)第1条 在高警告级别干净利落地进行编译第2条 使用自动构建系统第3条 使用版本控制系统第4条 在代码审查上投入设计风格第5条 一个实体应该只有一个紧凑的职责第6条 正确、简单和清晰第一第7条 编程中应知道何时和如何考虑可伸缩性第8条 不要进行不成熟的优化第9条 不要进行不成原创 2011-08-19 17:36:01 · 1325 阅读 · 0 评论 -
C++编程规范 函数与操作符
第25条 正确地选择通过值、(智能)指针或者引用传递参数正确选择参数:分清输入参数、输出参数和输入/输出参数,分清值参数和引用参数。正确地传递参数。详细:1、对于只输入参数:始终用 const 限制所有指向只输入参数的指针和引用;优先通过值来取得原始(如 char、float)和复制开销比较低的值对象(如 Point、complex)的输入;优先按 const 的引用取得其他用户定义类原创 2011-11-11 17:09:16 · 561 阅读 · 0 评论 -
C++编程规范 类型安全
类型安全返回 目录返回《C++ 编程规范及惯用法》原创 2011-11-11 17:16:06 · 647 阅读 · 0 评论 -
C++编程规范 STL: 算法
STL: 算法返回 目录返回《C++ 编程规范及惯用法》原创 2011-11-11 17:15:22 · 596 阅读 · 0 评论 -
C++编程规范 STL: 容器
STL: 容器返回 目录返回《C++ 编程规范及惯用法》原创 2011-11-11 17:14:40 · 588 阅读 · 0 评论 -
More Effecitve C++ 目录
基础议题(Basics) 009条款1:仔细区别 pointers 和 references 009Distinguish between pointers and references.条款2:最好使用 C++ 转型操作符 012Prefer C++-style casts.条款3:绝对不要以多态(polymorphically)方式处理数组 016Never treat原创 2011-08-19 17:35:03 · 635 阅读 · 0 评论 -
Effective STL 目录
容器条款1:仔细选择你的容器条款2:小心对“容器无关代码”的幻想条款3:使容器里对象的拷贝操作轻量而正确条款4:用 empty 来代替检查 size() 是否为 0条款5:尽量使用区间成员函数代替它们的单元素兄弟条款6:警惕 C++ 最令人恼怒的解析条款7:当使用 new 得指针的容器时,记得在销毁容器前 delete 那些指针条款8:永不建立 auto_ptr 的原创 2011-08-19 17:35:30 · 539 阅读 · 0 评论 -
Exceptional C++ Style 目录
泛型编程与 C++ 标准库 1第1条 vector 的使用 2第2条 字符串格式化的“动物庄园”之一:sprintf 9第3条 字符串格式化的“动物庄园”之二:标准的(或极度优雅的)替代方案 14第4条 标准库成员函数 23第5条 泛型性的风味之一:基础 26第6条 泛型性的风味之二:够“泛”了吗 30第7条 为什么不特化函数模板 36第8条 友元模板 42第9原创 2011-11-11 11:58:21 · 633 阅读 · 0 评论 -
C++编程规范 组织和策略问题
第0条 不要拘泥于小节(又名:了解那些东西不应该标准化)只规定需要规定的事情:不要强制施加个人喜好或者过时的做法。详细:1、应该使用缩进来体现代码的结构。建议每个缩进使用4个空格或者设置编辑器的制表符大小为4个空格,并且应该在每个文件中保持一致。2、应该保证代码行的长度有利于阅读。建议每行不超过10个单词。3、应该使用一致的、有意义的命名规范。必须永远不要使用“晦涩的名称”,必原创 2011-11-11 17:35:37 · 987 阅读 · 0 评论 -
传输层的各种模式——ZeroMQ 库的使用
最近在研究 ZeroMQ 库的使用,所以在这里总结一下各种模式,以便日后拿来使用。关于 ZeroMQ 库,我就不多介绍了,大家可以参考下面一些文章,以及他的官网、使用指南、API 参考、项目仓库等内容。开源点评:ZeroMQ简介ZeroMQ的学习和研究ZeroMQ 的模式ZeroMQ 的目标是成为 OSI 模型的传输层(Transport Layer)的标准协议,所原创 2013-03-22 13:46:59 · 7995 阅读 · 0 评论 -
C++编程规范 模板与泛型
第64条 理智地结合静态多态性和动态多态性1 加 1 可远远不止是 2 :静态多态性和动态多态性是相辅相成的。理解它们的优缺点,善用它们的长处,结合两者以获得两方面的优势。详细:1、动态多态性是以某些类的形式出现的,这些类含有虚拟函数和(通过指针或者引用)间接操作的实例。静态多态性则与模板类和模板函数有关。2、多态性的优势在于,同一段代码能够操作于不同类型,甚至可以是在编写代码时不原创 2011-11-11 17:13:05 · 887 阅读 · 0 评论 -
C++编程规范 名字空间与模块
第57条 将类型及其非成员函数接口置于同一名字空间中非成员也是函数:如果要将非成员函数(特别是操作符和辅助函数)设计成类 X 的接口的一部分,那么就必须在与 X 相同的名字空间中定义它们,以便正确调用。详细:1、公有成员函数和非成员函数都是类的公有接口的组成部分。接口原则是这样表述的:对于一个类 X 而言,所有在同一个名字空间中“提及” X 和“随” X “一起提供的”函数(包括非成员原创 2011-11-11 17:11:43 · 1089 阅读 · 0 评论 -
Entity Framework 之领域驱动设计实践
最近在了解实体框架(Entity Framework)和领域驱动设计(Domain Drivern Design),找到了一个非常好的文章,故收集在此,以便以后再次查阅。EntityFramework之领域驱动设计实践 - 前言EntityFramework之领域驱动设计实践(一):从DataTable到EntityObjectEntityFramework之领域驱动设计实践(二):分层架转载 2011-12-13 10:11:28 · 951 阅读 · 0 评论 -
C++编程规范 错误处理与异常
第68条 广泛地使用断言记录内部假设和不变式使用断言吧!广泛地使用 assert 或者等价物记录模块内部(也就是说,调用代码和被调用代码由同一个人或者小组维护)的各种假设,这些假设是必须成立的,否则就说明存在编程错误(例如,函数的调用代码检查到函数的后条件不成立)。(另见 C70)当然,要确保断言不会产生任何副作用。详细:1、按照信息论的原理,一个事件中所含的信息量与该事件发生的概率是原创 2011-11-11 17:13:55 · 3121 阅读 · 0 评论 -
C++编程规范 构造、析构与复制
第47条 以同样的顺序定义和初始化成员变量与编译器一致:成员变量初始化的顺序要与类定义中声明的顺序始终保持一致;不用考虑构造函数初始化列表中编写的顺序。要确保构造函数代码不会导致混淆地指定不同的顺序。详细:1、违反的危害性很大,而且很难发现。2、C++ 这么设计是为了确保销毁成员的顺序是唯一的,避免底层开销。3、解决方案是,总是按成员声明的顺序编写成员初始化语句。第48原创 2011-11-11 17:10:49 · 713 阅读 · 0 评论 -
C++编程规范 类的设计与继承
第32条 弄清所要编写的是那种类了解自我:有很多种不同的类。弄清楚要编写的是哪一种。详细:1、值类模仿的是内置类型,应该:有一个公用析构函数,复制构造函数和带有值语义的赋值。没有虚拟函数(包括析构函数)。是用作具体类,而不是基类(见 C35)。总是在栈中实例化,或者作为另一个类直接包含的成员实例化。2、基类是类层次结构的构成要素,应该:有一个公用而且虚拟,或者保护而且非虚拟的析构函原创 2011-11-11 17:10:12 · 914 阅读 · 0 评论 -
C++11 下使用 Boost.Serialization 库实现智能指针的序列化
最近在 Visual Studio 2010 下,使用 C++11 的新特性进行一些开发的时候,在用到 Boost.Serialization 库实现序列化的时候遇到了问题。C++11 的标准库已经提供了原来在 Boost 库下面的智能指针的实现了,所以当然要使用标准库内的设施了,但是在序列化这些智能指针的时候,就不能顺利进行了。主要由于 Boost.Serialization 库内的实现目前只支原创 2011-12-07 13:41:03 · 3441 阅读 · 0 评论 -
C++编程规范 编程风格
第14条 宁要编译时和连接时错误,也不要运行时错误能够在编译时做的事情,就不要推迟到运行时:编写代码时,应该在编译期间使用编译器检查不变式(invariant),而不应该在运行时再进行检查。运行时检查取决于控制流和数据的具体情况,这意味着很难知道检查是否彻底。相比而言,编译时检查与控制流和数据无关,一般情况下能够获得更高的可信度。详细:1、静态检查与数据和控制流无关。2、静态表示的原创 2011-11-11 17:08:28 · 679 阅读 · 0 评论 -
C++0x FAQ中文版 - [C++11 FAQ]
今天看到了一篇关于 C++0x 的非常好的系列文章,是翻译自 C++ 之父 Bjarne Stroustrup 的 C++11 FAQ 的。我们已经可以开始使用 C++0x 进行开发了。原文:http://www2.research.att.com/~bs/C++0xFAQ.html译文:http://imcc.blogbus.com/logs/106046323.html值得一读的转载 2011-11-21 14:28:53 · 1014 阅读 · 0 评论 -
用 Python 开发 Web 站点的两个开源框架 Django 和 TurboGears
Django 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 一流的 URL 设计 设计者友好的模板语言 缓存系统 相关介绍参考:Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点 TurboGears 开发人员称这个项目是一个 “大框架(megaframework)”,这原创 2011-05-20 15:49:00 · 1234 阅读 · 0 评论 -
白话数字签名(1)——基本原理
摘要 本系列通过通俗易懂的讲解,让您就像读小说一般,轻轻松松就能理解数字签名的基本原理和应用方法(即使您是一个并不精通计算机的企业老总,也能读懂本篇文章)。然后我们再逐步深入技术细节,最后将给出一个在B/S信息系统中使用数字签名的DEMO。 由于数字签名基于非对称加密技术,所以我们需要先啰嗦一下对称加密和非对称加密技术。 对称加密 何谓加密?加密是一种“把数据搞乱掉”的技术。加密技术涉及到4种东东: 明文:可以被人或程序识别的数据。例如一个文本文件、一段歌词、一个Wo转载 2011-04-01 15:53:00 · 1577 阅读 · 0 评论 -
大型系统中涉及的架构知识点(不断完善中)
由于典型的大型应用系统中涉及的与具体业务逻辑无关的架构模式、设计模式及常用的功能非常多,这里自己总结一下可能会遇到的功能点、知识点,方便自己学习及查找资料。 系统描述: 1、系统是N层架构,包括客户端、服务器端程序 2、客户端可能存在多个不同的版本 3、服务器端由登陆服务器、网站服务器、文件服务器、数据库服务器、服务层服务器等。 4、通信协议主要有:Http、Ftp、TCP、UDP、自定义通信协议等 5、服务器需要提供负载均衡、容错、容灾及扩展能力 6、系统具有实时监控及管理的能力 涉及功能原创 2011-04-01 16:19:00 · 740 阅读 · 0 评论 -
白话数字签名(番外篇)——签名EXE文件(下)
摘要 如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢? 签名EXE文件的两种方法 上篇写到如果我们在IEXPLORE.EXE上面右击,再点击“属性”,可以看到并没有显示数字签名页,但是在Process Explorer中却可以成功验证签名,这是怎么回事呢?这是因为有两种签名EXE文件的方法:1. 将签名数据嵌入到EXE文件内部,就是上篇里介绍的那种方法。2. 将签名数据存放转载 2011-04-01 16:13:00 · 1255 阅读 · 0 评论 -
白话数字签名(番外篇)——签名EXE文件(上)
摘要 人家微软的软件都有数字签名,感觉好酷哦,我们写的软件也要弄个签名炫一炫。 带有签名的软件非常酷 在QQ的安装文件上右击,选“属性”,就可以看到QQ的数字签名了。 使用Process Explorer或SREng查看系统中正在运行的程序时,也可以验证程序是否有数字签名,如果我们的程序显示“Unable to verify”,那显得多不专业呀。 给自己的程序加上签名 上图中的那个MathLover121.exe是我在上学的时候用C++ Builder写的转载 2011-04-01 16:13:00 · 1070 阅读 · 2 评论 -
白话数字签名(3)——Web程序中的数字签名
摘要 阅读本文并探索 - 如何突破Web程序无状态性这个让人抓狂的障碍实现自动显示签名结果和批量签名功能。 - 如何将签名功能封装到一个实现了IHttpHandler接口的类库中,使Client端的代码尽可能的简单。 - 使用数字签名API函数需要注意的几个问题。 本文介绍在Web程序中使用数字签名所遇到的特殊困难和解决方法,并给出一个超简单但相当实用的DEMO。 DEMO程序的效果 让我们先来看看实现之后的效果。转载 2011-04-01 15:56:00 · 2636 阅读 · 0 评论 -
白话数字签名(2)——软件&设备
然而它太慢了 非对称加密算法有一个重大缺点——加密速度慢,或者说得更拽一些,编码率比较低。例如在上一篇里我给Clark传的那个1GB的小电影,进行非对称加密足足用了66小时。那个借条小一些吧,也用了将近2分钟。所以在实际使用非对称加密的时候,往往不直接对文件进行加密,而是使用摘要算法与非对称算法相结合(适用于数字签名)或对称加密和非对称加密相结合(适用于加密传输文件)的办法来解决或者说绕过非对称加密算法速度慢的问题。 摘要算法 摘要算法,又叫作Hash算法或散列算法,是一种将任意长度转载 2011-04-01 15:54:00 · 557 阅读 · 0 评论 -
深入 HTTP Web 服务
❝ A ruffled mind makes a restless pillow. ❞ — Charlotte Brontë ‣ 显示目录 深入# 简单地讲,HTTP web 服务是指以编程的方式直接使用 HTTP 操作从远程服务器发送和接收数据。如果你要从服务器获取数据,使用HTTP GET;如果你要向服务器发送新数据,使用HTTP POST. 一些更高级的HTTP Web 服务 API也允许使用HTTP PUT 和 HTTP DELETE来创建、修改和删除数据。 换句话说,HTT转载 2011-05-13 11:30:00 · 1574 阅读 · 0 评论 -
常用的正则表达式
日常工作中经常会遇到的一些验证、匹配、替换等字符串操作都会用到一些常用的正则表达式,如果要用的时候才去构造则会浪费不少时间,所以这里收集了一些常用的,方便日后工作的需要。 用途 正则表达式 例子 备注 非负整数 ^/d+$ 0, 1, 2, 03, 00原创 2011-05-11 18:14:00 · 552 阅读 · 0 评论 -
Silverlight 入门
今天看到了一个关于 Silverlight 入门的系列文章,为方便学习故收录下来:Silverlight 入门:第一部分——开发工具与程序入门Silverlight 入门:第二部分——定义界面布局和导航Silverlight 入门:第三部分——数据访问Silverlight 入门:第四部分——数据绑定Silverlight 入门:第五部分——整合其它控件Silverligh转载 2011-06-03 13:31:00 · 712 阅读 · 0 评论 -
Enterprise Library 企业库文章
值得参考的一些 Enterprise Library 企业库相关的文章。 来源:http://www.bianceng.cn/Programming/net/201101/23775.htm转载 2011-06-01 17:38:00 · 407 阅读 · 0 评论 -
加密算法的安全级别
今天在网上看到一个关于加密算法的安全性及性能的表格,特摘录下来以便日后参考使用,原表是英文的,这里直接翻译成中文方便查阅。另外还找了一些关于密码学相关的信息,附录在后。加密算法的安全级别(Security Level of Cryptographic Algorithms)安全级原创 2011-07-14 14:33:32 · 15747 阅读 · 2 评论 -
Visual Studio 2010搭建QT开发环境
因为Qt现有的SDK都是用mingw编译的,所以在搭建Qt开发环境时需要用VS 2010重新编译QT,以下是在搭建开发环境中用到的工具及其下载地址1、Qt-4.7.4-src http://get.qt.nokia.com/qt/source/qt-everywhere-op转载 2011-10-10 14:30:00 · 6017 阅读 · 0 评论 -
VC2010 + TFS2010 结合 Boost.Test 库进行自动化构建及自动化测试
最近做了一个实验,结合 VC2010 + TFS2010 + Boost.Test 建立自动化构建和自动化测试。实验成功实现了目标。下面简述一下整个过程。前提是已经建立了 TFS2010 构建系统,VC2010 已经设置好引入 Boost 库的配置。首先,需要建立测试的目原创 2011-09-27 17:19:53 · 3750 阅读 · 0 评论 -
Visual Studio 2010 中 C++ 引入的新特性
Visual Studio 2010 的 C++ 引入了 C++0x 的一些新特性,特摘录如下,供大家参考:Lambda 表达式类似如下代码:for_each(v.begin(), v.end(), [](int n){ cout << n; if (0 ==转载 2011-08-29 11:28:01 · 1714 阅读 · 0 评论 -
极具威力的 DBPROP_CLIENTCURSOR
今天做了一个测试,结果令我非常吃惊,没想到会有这么大的差异。原本是想测试 C# 的 ADO.NET 的性能和 C++ 的 OLEDB 的性能差异如何的。原以为应该是 OLEDB 优胜于 ADO.NET 的,但是结果却相反。数据库是 SQL Server 2005 的,数据原创 2011-09-23 18:25:48 · 703 阅读 · 0 评论