- 博客(507)
- 资源 (8)
- 收藏
- 关注
转载 STL容器迭代过程中删除元素技巧(转)
1.连续内存序列容器(vector,string,deque)序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。vector c;for(vector::iterator it = c.begin(); it != c.end();){if(need_delete()) it = c.erase(it);
2016-06-11 21:29:11 890
转载 Delphi项目构成之单元文件PAS
Delphi项目构成之单元文件PAS单元文件是Pascal源文件,扩展名为.pas。有三种类型的单元文件:窗体/数据模块和框架的单元文件(form/data module and frame units),一般由Delphi自动生成。组件的单元文件(component units),由您或者Delphi生成。通用的单元文件(general-p
2016-05-22 11:22:01 2299
转载 在SQL Server中快速删除重复记录
前几天看了一下赛迪网中的SQL板块的文章,讲了如何在SQL Server中快速删除重复记录。我浏览了一下,作者用了四种方法,有建临时表的,用游标的,用唯一索引的,真可谓穷尽其法。然后我BAIDU了一下,才发现原来我用的方法是最简便的。好东西不敢独享...测试表中的数据如下:ProductIDProductNameUnit
2015-06-01 21:59:57 947
转载 sql之left join、right join、inner join的区别
sql之left join、right join、inner join的区别left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行举例如下: --------------------------
2015-04-07 20:12:01 673
转载 SQL Server游标的使用【转】
游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向
2015-03-04 13:35:18 615
转载 Linux 应用程序调试技术的研究
Linux 应用程序调试技术的研究彭闻宇,陈朔鹰(北京理工大学计算机学院,北京市 海淀区 100081)[摘要] 本文介绍了C/C++函数调用机制,由此引入堆栈回朔(Stack Backtraces)方法,通过从用户堆栈中提取出执行程序的函数调用序列,迅速定位程序异常发生的位置。同时,论文结合Linux 信号机制,剖析了Linux 内核的核心转储(Core Dump)机制,当程
2014-09-29 13:27:34 1081
转载 应用 Valgrind 发现 Linux 程序的内存问题
应用 Valgrind 发现 Linux 程序的内存问题如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在。有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题。掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开发中的内存问题。5 评论:杨 经 (cdl
2014-09-07 11:35:45 729
转载 在linux下利用程序崩溃后的core文件分析bug
浅析Linux下core文件当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出 现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们 如何利用core文件找到出现崩溃的地方。何谓core文件当一个程序崩溃时,在进程当前工作目录
2014-08-20 21:44:09 3217
转载 在Linux中创建静态库.a和动态库.so
我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为
2014-08-17 18:24:37 720
转载 C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visu
2014-08-16 10:15:02 969
转载 回调函数
先泛后精,先浅后深”的道理可是知易行难,所以常常会给技术上的小细节纠缠着,搞得晕晕乎,其中“回调函数”就是其中之一了,虽然回用,但是老是不明白其中的含义,众多的书本也说得隐晦不清。直到不久前看到一篇文章才总算比较清晰了解。概括起来,回调机制包括两部分:服务执行者和服务方式制定者。1. 服务执行者先制定服务规范;2.服务方式制定者然后按照规范制定服务方式;3.然后执行者按照这个方
2014-07-15 17:22:55 644
转载 svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了。错误如下: 解决方法:清空svn的队列1.下载sqlite3.exe 20131107/20131107104636_1406.zip2.找到你项目的.svn文件,查看是否存在wc.db3.将sqlite3.exe放到.svn的同级目录4.执行sqlite3
2014-07-02 13:05:15 757
转载 vld(Visual Leak Detector 内存泄露检测工具
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复 杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的 影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是
2014-05-28 23:40:04 891
翻译 PDB文件:每个开发人员都必须知道的
PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx PDB文件:每个开发人员都必须知道的 一 什么是PDB文件大部分的开
2014-05-28 23:14:12 1181
转载 对单元测试的一点感悟
想当年毕业设计就是测试驱动开发,所以从刚入行开始就对单元测试、测试驱动开发有比较深入的认识,刚开始一直作为敏捷开发的忠实粉丝。但是几年工作下来,我开始对单元测试持矛盾的态度:单元测试当然是一种很好的创举,但是具体使用当中,它却经常会产生种种负作用,使开发人员望而生畏。这当然不是因为单元测试这一技术或思想本身的问题,而是实践这一思想的人的问题。 当前很多公司使用单元测试的怪现象:
2014-04-06 01:10:45 1296 1
翻译 单元测试准则
原文版本:4.0, April 2007原文作者:Geotechnical Software Services原文链接:http://geosoft.no/development/unittesting.html翻译日期:2009 年 6 月译者 ( brantyoung ) 前言:项目主页:G
2014-03-30 21:52:34 2804
转载 TDD可以驱动设计吗?
前段时间有不少朋友发文讨论TDD引起了比较热烈的反响。我学习和实践TDD有近一年时间了,也希望把自己对TDD的理解拿出来讨论分享。本文讲讨论TDD的精髓和盲区,并希望引导TDD的初学者正确认识“TDD可以驱动得出更好的设计”这一著名论断。TDD的精髓提到TDD,最先浮现在我们脑海中的多半是这幅经典的迭代流程图:不过,我认为这幅图的作用只在于与传统开发流程形成对比,更多的是一种形式上
2014-03-29 16:31:02 864
转载 TDD: 解除依赖
1 A类依赖B 类,可以把B类提取成IB接口,解除AB 之间的依赖关系。 通过创建实现了IB接口的BStub 装代码,可以模拟B类进行测试。 这是针对接口编程的典型。适合构造代价大,变化多的情况。应用示例如下: a.上层与下层之间的设计,比如业务层依赖数据访问层。 b. B类是一个复杂对象。 比如 发送邮件,连接网络,调用物理硬件接口等
2014-03-29 15:40:18 778
转载 linux系统编程之管道 匿名管道(pipe)
匿名管道(pipe)一,什么是管道管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文
2014-03-23 12:05:53 850
转载 生活中的PV操作
之前写过操作系统的文章,然后最近发现少了点什么,仔细检查发现,没写PV操作,那么我们接下来就单独为PV操作写一篇博客,让大家不再惧怕PV操作, 我们深入浅出的分析,让大家轻松学习PV操作。学习PV操作之前,我们首先来了解两个很基础的概念:同步、互斥:同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情。还是
2014-03-23 11:40:45 881
翻译 解读TDD的五大误区
摘要:所谓TDD简单地说就是以下两个步骤:确保所有的需求都能被照顾到;在代码不断增加和重构的过程中,可以检查所有的功能是否正确。本文我们一起来看下关于TDD的五大误区。TDD(全称Test Driven Development)测试驱动开发,是一种软件开发的流程,其由敏捷的“极限编程”引入。其开发过程是从功能需求的测试用例开始,先添加一个测试用例,然后运行所有的测试用例看看有没
2014-03-22 18:39:57 832
翻译 Test Driven Development (TDD)介绍
测试驱动开发是一种先开发测试的先进技术,即你在编写足够的产品代码用于测试和重构之前就编写测试。测试驱动开发的初衷是什么呢?一种观点是TDD是一种规范而不是校验。就是说它是在你编码之前就惯穿设计的一种思考。另一个观点是TDD是一种编码技术,就像Ron Jeffries喜欢说的那样TDD可用来编写干净的可工作的代码。尽管我把决定权留给读者,但我想以上两点各有其道理。目录一、 什么是TDD?..
2014-03-22 18:32:47 1545
转载 Enterprise Test Driven Develop
TDD这个概念出现至少也有两年多了, 在大家刚接触它时候, 几乎没人不拍手鼓掌, 测试驱动的概念确实可以为我们带来很多的好处. 泡泡在前不久写了一篇很不错的TDD的文章, 可是我还是忍不住在他的评论中说到这篇文章有点”老”. 确实,同样的概念在书中, 在大家的口中已经被说烂了. 但是TDD真正给我们带来什么呢? 有多少人在用TDD呢? 为什么这么好的技术到了应用中就被人们”抛弃”了呢?(注:
2014-03-19 23:18:52 670
转载 单元测试应该测什么,不应该测什么?
刚才看了idior的一篇文章:Enterprise Test Driven Develop。看后有一些感想,在这里写下这篇文章,讲讲我对这个问题的看法:自动化的单元测试应该测什么。最近有朋友提出意见,觉得我写的文章比较空洞,写的很长,但是很不实在。可能原因是这样的:代码太少了。今天就从一段代码开始吧,这段代码描述电信营业系统中的缴费开机的过程:User user = User.
2014-03-19 22:56:17 975
转载 实例——在编程过程中进行单元测试
实例——在编程过程中进行单元测试这是一个真枪实弹的例子,如何在编程过程中进行单元测试。本文以一个图书馆的书籍管理系统作为例子,讲述一个单元测试——编码的循环过程。这里只讲述一个独立画面的编写。画面的编码分两个部分,业务数据部分和界面表示部分。先介绍业务数据部分的编写。下面具体的描述单元测试是如何融入到设计和编码的过程当中的,单元测试驱动着编码的过程,可以说,编码的目的就在于
2014-03-19 22:46:45 844
转载 单元测试和设计模式在重构中的应用
单元测试和设计模式在重构中的应用本文结合一个事例谈谈设计模式在重构中的应用。在重构过程中,单元测试发挥了很大的作用。这是一个报表系统,每天将公司分散在各处的数据收集产生各种报表。本文只拿出系统的数据访问层面做例子。 系统需要处理的数据源比较多,系统中建立了一个Connection Pool对这些数据源进行管理,外界使用一个数据源的名称,从Connection Pool中得到相应的数
2014-03-19 22:23:46 1151
转载 单元测试之Stub和Mock
在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,记录Log, 文件系统 之类的)。 而我们没法控制这些外部依赖的对象。 为了解决这个问题,我们需要用到Stub和Mock来模拟这些外部依赖的对象,从而控制它们 阅读目录实例设计测试用例什么是外部依赖Stub和Mock的相同处Stub和Mock的区别良好的产品代码才能单元测试
2014-03-12 15:34:58 1170
转载 单元测试中内部输入的六种情形
1、自然输入 自然输入是指对底层函数的正常调用即可获得的内部输入。代码一中Compare()函数内,int a1 = GetArea(r);可以自然取得外接正方形的面积。如果外接正方形面积a1要得到某个预期的值,要传递合适的半径r,半径r称为间接输入。间接输入需根据自然输入及底层函数的功能来倒推,要获得符合预期的自然输入有三个条件:一是底层函数存在,二是底层函数正确,三是间接输入正确。很
2014-03-08 14:43:29 1257
转载 关于tinyxml的剖析及遍历
之前在学习xml文本解析,发现一个比较好用的开源程序,tinyxml,在这里分享一下tinyxml的原理跟XML文件的遍历操作。TinyXML是一个简单的,轻量级的,由C++实现的XML文档的解析器,它可以被其它程序方便地集成进去使用关于tinyxml的剖析:下面是名为 example.xml的文档,后续的剖析都会以这个xml文档为例:example.xml
2014-03-03 19:31:36 1204
翻译 CppUnit 笔记 (一)
1 TestCase, Fixture and SuitCppunit通过上面三个概念(类)来组织测试用例。一般来说,一个Fixture包含 了N个TestCase,而一个Suit又包含了N个Fixture。用图表示就是下面这样: 2 Helper Macros在Helper Macros出现之前,把N个case加到一个suit里是一件非常机械的事, 它不仅
2014-02-26 22:29:22 777
转载 简明CallBack 教程
模块间的通信机制是架构学习的重点, Call-back的应用无疑是最常见的, 由此引申出来的设计模式也非常之多, 如观察者模式, 这篇文章无疑是非常浅显的, 做这个总结, 也是为了将来引出工作中用到的Event配信机制. 后面涉及到通信的文章将会一起串烧. Callback的目的是用来1 V N系统, 即一个系统要负责和N个子系统进行动作或者消息的交互. 目的是为了方便系统的维护. 第
2014-01-29 13:58:33 1530
转载 项目架构思想探讨
软件项目一般经过了以下流程: 需求分析, 方案设计, 编码, 单元测试, 集成测试, 系统测试, 最后到达发布和维护阶段。 当到达最后的阶段时, 依然会有很多编码的任务, 如新需求的开发, 如Bug修复等. 这个就是今天谈及的问题. 怎样让项目容易维护? 老生常谈的软件特点是: 易用性, 可维护性, 以及可扩展性。前者是从用户的体验
2014-01-29 11:39:14 727
转载 OOP(面向对象编程) 和 OPP(面向过程编程) 的异同点及系统总结
近段时间关于OO的思想和OP思想的争论不绝于耳, 不敢确信自己能否做一个全面的分析, 因此参考网上一些经典的文章来总结一些这两种思想在软件架构上的异同。 首先我个人的倾向是: OO和OP的思想务必要结合. OO适合细节上做封装;OP适合在模块级别, 架构级别上做统筹. 后面我会借用一些资料来辅佐这样的论点. 首先还是需要稍微介绍下OO和OP 的基本定义和区别:
2014-01-29 11:29:32 1925
转载 以数据(结构)为中心的架构设计
数据在任何产品的开发和设计中, 始终要摆放在首要位置。 跟数据贴近的两个概念是: 数据库, 数据结构. 这两个概念最终都是数据结构。数据库的表结构就是数据结构。 程序 = 数据结构 + 算法 这一经典的公式, 导致我们误读为: 数据结构和算法的地位是等同的. 但实则不然. 对数据结构的态度已经决定你的架构的优劣。 本文想通过J2EE的项目和普通的C/S架构的项目, 来说明一下, 数据结构为中心的思
2014-01-29 11:19:38 2603
转载 C++ Event Model
一 事件模型 对发生的事件作出的响应——事件模型。1 事件: 在面向对象中,就是对象的属性或者状态发生了变化,操作或者接收到了某些动作时,向外发出了这种变化或者动作对应的通知。 2 事件模型包括的元素: 3 事件模型过程: 二 代码实现1 Ev
2014-01-22 23:20:27 897
转载 设计模式与多线程——用命令模式来设计多线程架构
偶然读到了这篇文章,非常喜欢。转过来略加分析并好好收藏。 在做项目的过程中,经常要用服务端,写一个服务是有现成框架的,如NTService。但是如何保证程序的维护过程中及需求不断膨胀的过程中,数据极可能小的膨胀,处理过程极可能保持较小的耦合,这就需要将处理过程与架构设计好。 命令模式是处理数据的极其方便的结构,接口简单,便于扩展。其与线程池搭配,效果很好。 转自: h
2014-01-21 22:59:31 909
转载 经典软件设计模型 - 事件驱动模型
模型说明在UI编程中,常常要对鼠标点击进行相应,首先如何获得鼠标点击呢?方式一:创建一个线程,该线程一直循环检测是否有鼠标点击,那么这个方式有以下几个缺点:1. CPU资源浪费,可能鼠标点击的频率非常小,但是扫描线程还是会一直循环检测,这会造成很多的CPU资源浪费;如果扫描鼠标点击的接口是阻塞的呢?2. 如果是堵塞的,又会出现下面这样的问题,如果我们不但要扫描鼠标点击,还要扫描键盘
2014-01-21 22:45:53 1216
转载 使用事件驱动模型实现高效稳定的网络服务器程序
几种网络服务器模型的介绍与比较围绕如何构建一个高效稳定的网络服务器程序,本文从一个最简单的服务器模型开始,依次介绍了使用多线程的服务器模型、使用非阻塞接口的服务器模型、利用select()接口实现的基于事件驱动的服务器模型,和使用libev事件驱动库的服务器模型。通过比较各个模型,得出事件驱动模型更适合构建高效稳定的网络服务器程序的结论。顾 锋磊,
2014-01-21 22:33:01 844
转载 Leader/Follower多线程网络模型介绍
之前分享过《轻量级web server Tornado代码分析》,介绍了目前我们采用nginx + tornado的方式搭建升级、配管、数据中心等各类服务组建客户端迭代体系。最近注意到,淘宝目前公开了其网络服务器源代码Tengine。根据官方介绍,Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已
2014-01-21 22:06:24 1054
转载 理解多线程设计模式
多线程设计模式:1.Single Threaded Execution Pattern [同一时刻只允许一个线程操作] 比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。 总结:在多个线程同时要访问的方法上加上synchronized关键字。2.Immutable Pattern [变量赋值一次后只能读取,不能
2014-01-21 21:53:57 868
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人