软件工程
李兰溪
好奇并探索着
展开
-
Effective Cpp 条例解析
Effective 条例解析Effective 条例解析 一 让自己习惯C 1 视C为一个语言联邦 2 尽量以constenuminline 替换define 3 尽可能使用const 4 确保对象在使用前已经被初始化 二构造析构赋值运算 1 了解C默默编写并调用哪些函数 2 如果不想使用编译器提供的函数应当明确拒绝 3 为多态基类声明virtual析构函数 4 别让异常逃离析构函数 5 绝不在构造原创 2016-01-07 23:33:17 · 870 阅读 · 0 评论 -
Mysql 事务
Mysql 事务Mysql 事务 一概述 二事务的特征 二事务隔离级别 事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 一、概述在数据库访问过程中,一系列相关的操作单元我们称之为事务。例如在一个论坛的管理系统中,当我们删除一个用户时,也要删除该用户的邮箱以及相关文章。 下面是SQL语句: 例1delete from use原创 2016-09-01 20:26:12 · 537 阅读 · 0 评论 -
重构手法之重新组织函数
重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释)。重新组织函数的驱动力,往往都是由于函数过长。因为函数过长就以为着包含了更多属性和逻辑,这样复杂的逻辑和诸多属性(如函数内部的局部变量或者静态变量等)会让代码变得难以维护,需要对其进行重新组织。 提炼函数在冗长的函数中提炼出精小的函数,让每个短小函数负责的功能简洁,并原创 2016-08-05 13:54:42 · 414 阅读 · 0 评论 -
C++设计模式之装饰模式
C++设计模式之装饰模式 动态地给一个对象增加一些额外的职责,就增加对象的功能来说,装饰模式比生成子类更为灵活。装饰模式是一种对象结构模式。 一、缘由我们常常通过继承的方式来对一个既有的类进行功能添加,但继承方式有显著的局限性,因为 继承具有侵入性 继承是一种is a的关系,具有强耦合性,难以复用代码。 例如在窗口控件当中,要增加新的功能如增加滚动条,增加背景图片,通过继承的方式来增加新的功能,原创 2016-03-06 17:00:53 · 893 阅读 · 0 评论 -
C++设计模式之组合模式
C++设计模式之组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 C设计模式之组合模式 一缘由 二实现 三实例代码 一、缘由在自然界中常常存在着许多树形关系,例如公司的结构,有子公司,部门。又如文件系统的结构,目录下边有目录或者文件,而目录下的目录又有目录和文件,如此递归下去。而组合模式就是为了处理这种树形关系而存在的原创 2016-03-05 23:42:22 · 851 阅读 · 0 评论 -
C++设计模式之建造者模式
C++设计模式之建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 C设计模式之建造者模式 一缘由 二实现 三代码分析 四总结 一、缘由当我们在构造一个窗口控件的时候,往往包含三个方面的初始化工作: UI初始化 动画初始化 信号槽初始化 这样我们就可以构造好一个窗口控件了,我们可以看以下类图:乍一看该实现并没有什么问题CenterWidget类在其构造函数中调原创 2016-03-05 03:02:07 · 625 阅读 · 0 评论 -
C++设计模式之桥接模式
C++ 设计模式之桥接模式 将抽象部份与它的实现部份分离,使它们都可以独立地变化。 C 设计模式之桥接模式 一缘由 二实现 三代码 四总结 一、缘由假设现在需要大、中、小、三种型号的画笔来绘制7种不同的颜色,如果使用蜡笔,就需要准备 3*7 = 21支蜡笔。而如果使用毛笔,则只需要3支毛笔和7中颜料。显然使用毛笔的形式要比蜡笔简单许多,这其中缘由在于在蜡笔这个对象中型号和颜料两个不同维度的因素耦原创 2016-03-05 21:58:04 · 849 阅读 · 0 评论 -
C++设计模式之适配器模式
C++设计模式之适配器模式 将一个接口转换成客户希望的另一个接口使得接口不兼容的那些类可以一起工作 C设计模式之适配器模式 一缘由 二实现 三示例代码一、缘由适配器模式是我个人使用频率比较高的模式,十分简单实用。在许多情况下,我们自己的系统A,要使用既有对象B的接口,但无奈我们的既有系统A和B接口不兼容,这时候适配器可以帮我们解决这个问题。二、实现假设现在有一个函数static void req原创 2016-03-05 15:13:52 · 677 阅读 · 0 评论 -
C++设计模式之单例模式
C++设计模式之单例模式C设计模式之单例模式 一使用情景 二实现 三代码分析 四多线程环境下的单例模式一、使用情景在很多环境下,我们需要保证某些特殊对象在整个系统中的唯一性。windows的资源管理器就是一个很好的例子。无论我们点击多少次“启动任务管理器”都只弹出来一个任务管理器窗口。因为如果弹出多个窗口,而这些窗口的内容都一模一样,全部都是重复的对象,那是没有意义的,而且还会浪费系统资源。而单例模原创 2016-03-02 22:44:29 · 499 阅读 · 0 评论 -
STM32工程
在LINUX下开始一个STM32工程在LINUX下开始一个STM32工程 一安装工具 二 如何工作 1 需要作的工作 2 工作分析 21 makefile分析 22 链接器脚本分析 3 分析结果 三开始工作 1 创建文工程目录 3 编写Makefile 32 src子目录Makefile 33 arch子目录Makefile 34 lib子目录Makefile 35 Makefile总结 一、安装工原创 2015-12-09 23:31:02 · 1977 阅读 · 0 评论 -
C++设计模式之原型模式
C++设计模式之原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 C设计模式之原型模式 一缘由 二实现 三代码分析 一、缘由在许多环境下,我们需要从一个A对象生成一个B对象以减小A和B对象的重复代码,例如创建100个只有名字不同而其它信息都相同的Person类实例,这样就可以使用原型对象,从一个Person实例中构造其它99个实例,方便快捷。事实上C++的拷贝构造函数就可原创 2016-03-04 21:22:45 · 489 阅读 · 0 评论 -
C++设计模式之抽象工厂模式
C++设计模式之抽象工厂模式C设计模式之抽象工厂模式 一缘由 二实现 三代码分析 四总结一、缘由在《C++设计模式之工厂方法模式》一文中我们提到,由于简单工厂模式当中的工厂类职责过重,严重违反了单一职责的原则,导致系统扩展十分困难,于是引出了工厂方法模式,工厂方法模式引入抽象的工厂类,具体的创建工作推迟到每个具体的工厂类中,这样每个具体工厂类只负责一种产品的创建,这样每个具体工厂类的职责就足够单一,原创 2016-03-03 17:08:20 · 656 阅读 · 0 评论 -
C++设计模式之工厂方法模式
C++设计模式之工厂方法模式C设计模式之工厂方法模式 一使用情景 二实现 三代码分析 五总结一、使用情景简单工厂模式运用十分简便,但是正如《简单工厂模式》一文中所说的,简单工厂模式具有一个致命的缺点:拓展困难,只要增加新的具体类,就需要对工厂类进行修改,这一点严重违反了开闭原则。我们在思索如何能够实现增加新的产品而不至于修改已有的代码时,工厂方法模式应运而生。二、实现在简单工厂模式中,一个工厂类负责原创 2016-03-03 15:30:26 · 549 阅读 · 0 评论 -
C++设计模式之简单工厂模式
C++ 设计模式之简单工厂模式C 设计模式之简单工厂模式 一使用情景 二实现 三代码分析 五总结一、使用情景在许多情况下,我们需要创建一系列的类的实例,并且这些实例的创建过程都十分繁琐,这时候我们可以将这些类的创建过程都封装到一个工厂类中,由工厂类进行创建,从而屏蔽了创建的细节。 简单工厂的定义如下: 定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常都具有相同的父类。因原创 2016-03-03 00:28:32 · 664 阅读 · 0 评论 -
设计模式之初识UML图
C++设计模式之初识UML图C设计模式之初识UML图 继承 实现 依赖 关联 一般关联 聚合关联 组合关联 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系 实现指的是一个class类实现了interface的功能;实现是类与接口之间最常见的关系。依赖类A使用到了类B,这种使用的关系是运行时的原创 2016-03-02 20:05:13 · 703 阅读 · 1 评论 -
单一职责和里氏替换
单一职责和里氏替换单一职责和里氏替换 一单一职责原则 1 原则解读 2 例1 3 例2 二里氏替换原则 1 原则解读一、单一职责原则1.1 原则解读 原则定义:应该有且仅有一个原因引起类的变更,也可以说成是一个类只负责一件事情。 该原则要求类的职责明确清晰,这样符合该原则的设计有如下好处: 由于单个类只负责一件事情,职责清晰明确,类的复杂性降低 单个类的复杂性降低,整体可读性提高 可读性好,可维原创 2016-03-02 09:34:16 · 665 阅读 · 0 评论 -
Mysql索引扫描排序
使用索引扫描来做排序生成有序结果Mysql有两种操作可以用来生成有序结果: + 排序操作: 将查找出来的结果使用排序算法进行排序 + 按索引顺序扫描: ORDER BY语句后跟着一个被索引的列,如此一来索引的顺序就是索引对应记录的顺序,这样直接顺着索引一直往下读取记录即可得到有序的结果。建立用于排序扫描的索引按照索引顺序扫描的好处是不言而喻的,因为查找出来的结果就是有序结果而无需执行额外的排序操原创 2016-09-02 17:30:57 · 1742 阅读 · 0 评论