摘要: 介绍 cobra是一个用来构建现代CLI工具的库。相比flag标准库,它提供更多方便的特性和功能。Cobra 由 Go 项目成员和 hugo 作者 spf13 创建,已经被许多流行的 Go 项目采用,比如 GitHub CLI 和 Docker CLI。 源码地址: [https://github. 阅读全文
posted @ 2024-03-11 17:08 lgc202 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 控制反转和依赖注入 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)。依赖注入是生成灵活和松散耦合代码的标准技术,通过明确地向组件 阅读全文
posted @ 2024-03-11 14:54 lgc202 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 一、统计对象中某个成员变量的访问次数 解决方法一: #include <iostream> using namespace std; class Test { private: int i; mutable int m_count; public: Test(int v) { i = v; m_co 阅读全文
posted @ 2018-03-25 13:12 lgc202 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 1、效率分析 2、长度相同的的两个SeqList,插入和删除操作平均耗时并不相同 原因:如插入操作 假设一个顺序表里面的元素为int型,一个为string,插入过程中涉及到元素的拷贝,字符串的拷贝过程比int型的拷贝过程耗时 3、以下代码是否正确? 答案是否定的,两个指针指向了同一片内存,意味着析构 阅读全文
posted @ 2017-09-06 16:31 lgc202 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 1、StaticList设计要点 -类模板:(1)、使用原生数组作为顺序存储结构 (2)、使用模板参数指定数组大小 #ifndef STATICLIST_H #define STATICLIST_H #include "SeqList.h" namespace DTLib { /* *StaticL 阅读全文
posted @ 2017-08-31 10:43 lgc202 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 一、课程目标 1、完成顺序存储结构的抽象实现,既然是抽象实现,自然就是抽象类,不能生成对象 (1)、抽象类模板,存储空间的位置和大小由子类完成 (2)、这里只实现顺序存储结构的关键操作(增、删、查等) (3)、提供数组操作符,方便快速获取元素(要提供const版本的,方便const对象调用) 二、具 阅读全文
posted @ 2017-05-09 23:00 lgc202 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 一、顺序存储结构的定义 1、线性表的存储结构指的是用一段地址连续的存储单元依次存储线性表中的数据元素 二、设计线性表存储结构的思路 1、可以用一维表来实现顺序存储结构 (1)、存储空间:T* m_array; (2)、当前长度:int m_length 三、顺序存储结构的元素获取操作 (1)、判断目 阅读全文
posted @ 2017-05-09 13:34 lgc202 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 一、线性表(List)的表现形式 1、零个或者多个数据元素组成的集合 2、数据元素在位置上是有序排列的 3、数据元素的个数是有限的 4、数据元素的类型必须相同 二、线性表(List)的抽象定义 1、线性表是具有相同类型的n(>=0)个数据元素的有限序列 {a0,a1,a2,....an-1} ai是 阅读全文
posted @ 2017-05-08 22:29 lgc202 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 一、遵循经典设计原则 DTLib中的所有类位于单一继承树 IvalidOperationEXception是新增的异常类,描述某些成员函数在状态不对的时候被抛出 二、改进的关键点 1、EXception类继承自Object类:堆空间中创建异常对象失败时,返回NULL指针,用的是自己的new版本 更改 阅读全文
posted @ 2017-05-08 21:18 lgc202 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 一、当代软件架构实践中的经验 1、尽量使用单继承的方式进行系统设计(单继承+多个接口的方式) 2、尽量保持系统中只存在单一继承树(创建一个顶层的抽象父类) 3、尽量使用组合关系代替继承关系(后面会讲) 不幸的事实 (1)、c++语言的灵活性使得代码中可以存放多个继承树 (2)、c++编译器的差异使得 阅读全文
posted @ 2017-05-08 19:51 lgc202 阅读(521) 评论(0) 推荐(0) 编辑