数据编码 为什么需要数据编码 应用程序一直处在变化中,这些变化可能需要修改存储的数据:新增字段或者记录类型,新的方式呈现现有数据. 数据库支持数据模式的修改,但是对于大型系统...
![240](https://cdn2.jianshu.io/assets/default_avatar/13-394c31a9cb492fcb39c27422ca7d2815.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
数据编码 为什么需要数据编码 应用程序一直处在变化中,这些变化可能需要修改存储的数据:新增字段或者记录类型,新的方式呈现现有数据. 数据库支持数据模式的修改,但是对于大型系统...
前两篇都是在介绍一些数据密集型应用的名词,包括可靠性,可扩展性,可维护性,数据模型等,这一篇我们来从数据存储的角度看看,不同的数据模型,怎样存储和检索数据.这里开始是比较硬核...
数据模型应该是软件开发中最重要的部分,它不仅对软件编码方式,而且对如何思考待解决的问题都有深远的影响. 数据模型 关系模型 在关系模型中,数据被组织成关系,在SQL中被称为表...
什么样的系统是数据密集型系统? 对于数据密集型系统而言,CPU的处理能力不是第一限制因素,关键是数据量,数据的复杂度和数据的快速多变性.一般包括如下模块: 数据库:持久化保存...
应用器与操纵器 操纵器:以某种方式作用于他的参数所表示的数据.应用器: 重载一个运算符,他的操作数是一个可操作的值和一个作用于这个值的操纵器. 问题 在C++中我们可以通过重...
问题 假设我们有一些需要一起释放的对象,这些对象的类型并不完全一致.我们需要一种方式跟踪这些对象并且在合适的时候一起释放他们. 设计方案 按照C++的传统艺能:用类来表示概念...
根据C++提供的构造函数,析构函数我们可以实现在对象创建的时候和对象销毁的时候根据我们的需要进行一些输出操作.我们可以在调用的函数中开始的时候声明这样一个对象,用来跟踪函数执...
前面一篇库设计就是语言设计[//www.greatytc.com/p/8b2767d8e7b7] 向我们展示了在设计类库的过程中,会遇到与设计语言相似的问题. 这一...
这一篇中我们将通过设计一个简单的String类来了解为什么说类库的设计就是语言设计。C++允许用户自定义的类型当作内建类型使用。通过定义自己的类型,我们可以实现定制化C++语...
这篇我们将从一个C程序入手简单分析C库在日常中的使用,然后在根据使用提出一些问题,进而为了解决这些问题,我们采用C++进行简单封装,看看这样做能带给我们什么好处。首先看下例子...
这篇是关于阅读《C++沉思录》记录的目录,方便进行查看。 类和继承 类设计者的核查表[//www.greatytc.com/p/7bce71769e07] 代理类[...
这一章书里面采用了比较古老的方式实现的需求,我们基于C++11以后的版本来实现一下,因为现在的C++STL库已经已经提供了regex的功能。 问题 假设我们存在两份文件,第一...
上一篇我们介绍了函数对象是如何帮助我们在运行时可以动态创建新的函数的。这一篇我们将聚焦在不编写定制化的函数对象类型,怎么创建出新的函数。首先我们看一个例子: 这个例子使用了S...
函数对象是STL库提供的除了迭代器,迭代器配接器以外的另外一种概念。简单来说:函数对象提供了一种方法,将要调用的函数与准备传递给这个函数的隐藏参数捆绑在一起。即:该对象实现了...
在模版和泛型算法[//www.greatytc.com/p/75ca37e858e4]中我们实现了一个查找算法: 可以帮助我们查找任意的线性结构,我们将start和...
上一篇中我们介绍了迭代器的分类,下面我们将集中精力分析一个小程序,通过修改使用迭代器的类型,让这个程序做不同的事情。 迭代器类型 上面copy函数使用的In和Out分别对应于...
存在的问题 上一篇中我们最终实现了find的算法: 这个算法针对Iter进行了一些假设: 支持operator++。 支持operator* 支持operator!=。 也就...
从具体开始 首先让我们先实现一个查找数组中是否存在一个数的例子开始: 在array这个数组中查找x,如果存在则返回位置p否则返回nullptr;针对这个函数我们看看find1...
前面几篇我们了解了模版的经典用途:建立容器类。下面我们来看看模版另外的重要用途:描述一个或者一组程序接口的通用方式。 第一个例子 我们从一个计算数组中元素和的例子开始: 主程...
技术现状 前面我们通过迭代器和容器类的方式建立了c++容器的常规范例。迭代器的思路很适合传统的数据结构,但是在实践过程中,我们需要为每一种容器都提供两种类型的迭代器:Iter...