c++设计模式
声明:本文记录c++ 设计模式及示例代码
1. 面向对象设计原则
总原则:减少变化带来的影响
单一职责原则(SRP)
开放封闭原则(OCP)
对扩展开放,对更改封闭。
里氏替换原则(LSP:Liskov substitution principle)
子类必须能够替换它们的基类(IS-A)。
接口隔离原则(ISP:Interface Segregation Principle)
不应该强迫客户程序依赖它们不用的方法。
接口应该小而完备。
依赖倒置原则(DIP)
高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定) 。
抽象(稳定)不应该依赖于实现细节(变化) ,实现细节应该依赖于抽象(稳定)。
例如, 当我们需要邮箱联系时如图, 此时使用DIP 方式,当我们需要添加或修改邮箱时不必关心上层的改动123456789101112131415161718//not DIPclass People{public: bool Contact(GMail); bool Contact(QMail); ...};//D ...
step文件初探
声明:本文简单介绍step 文件的基础知识
1. 什么是STEP标准STEP 全称Starndard for Exchange of Product Model Data,即产品模型数据交换规范,代号为ISO-10303. 它提供一种不依赖具体系统的中性机制,旨在实现产品间数据的交换和共享,从而提高产品的开发效率。比如说芯片设计环节可能先建模,再对模型求解,此时就可能需要在建模软件和求解软件这两种产品间传递模型数据。目前工业应用中涉及模型的部分基本会兼容这种格式,比如CAD, HFSS等。
2. STEP标准层次结构STEP 系统主要分为三个层次, 如图(出自参考资料④)
每part对应一个ISO文档,每个ISO 文档都要收费,不过 道巴客客 还能看到免费的文档, 国标也有一些协议会直接引用这些ISO协议(国标对于我们是免费查看的)
一般而言,我们只需要关注应用层协议即可, 主流的建模协议主要如下(出自参考资料 ⑤ ,其各自特性可以前往参考, 目前最广泛的应该是AP214):
AP203:Configuration controlled 3d design of mech ...
程序员的自我修养
声明:本文是《程序员的自我修养》(俞甲子、石凡、潘爱民)的个人笔记(略去了windows部分)。
1. 温故而知新
计算机三大组成部件: CPU,内存,IO控制芯片
硬件结构框架, 北桥PCI Bridge, 南桥ISA Bridge
系统软件分为两种: 一为平台性质的, 比如操作系统,内核,驱动程序,运行库,系统工具等 二为开发程序所用的,比如编译器,汇编器,链接器等开发工具和开发库
内存分段, 利用率太低
内存分页
MMU 将虚拟地址转换程物理地址,一般集成在cpu 内部了
标准线程一般由线程ID, PC,寄存器集和堆栈组成频繁等待的成为IO密集型线程, 少等待的称为CPU密集型, 通常IO 密集型容易获得优先级的提升,线程的优先级改变的三种方式:
用户指定
根据等待频繁程度修改
长时间得不到执行而提升优先级
Linux 的多线程:Linux将所有的执行实体(无论是线程还是进程)都称为任务(Task);每一个任务概念上都类似于一个单线程的进程,具有内存空间、执行实体、文件资源等。Linux下不同的任务之间可以选择共享内存空间,因而在实际意义上,共享了同一个 ...
c++快速入门(3)--STL
声明:本文是c++快速入门视频 的讲义,可能会有部分修改
1 模板1.1 模板的概念模板就是建立通用的模具,大大提高复用性
模板的特点:
模板不可以直接使用,它只是一个框架
模板的通用并不是万能的
1.2 函数模板
C++另一种编程思想称为 ==泛型编程== ,主要利用的技术就是模板
C++提供两种模板机制:函数模板和类模板
1.2.1 函数模板语法函数模板作用:
建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
语法:
12template<typename T>函数声明或定义
解释:
template — 声明创建模板
typename — 表面其后面的符号是一种数据类型,可以用class代替
T — 通用的数据类型,名称可以替换,通常为大写字母
示例:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051//交换整型函数void ...
c++快速入门(2)--面向对象
声明:本文是c++快速入门视频 的讲义,有部分修改。
1 内存分区模型C++程序在执行时,将内存致划分为4个区域
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量和静态变量以及常量
栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
内存四区意义:
不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程
1.1 程序运行前 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域(实际上不太严谨,初学先这么看吧)
代码区:
存放 CPU 执行的机器指令
代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可
代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令
数据区:
全局变量和静态变量存放在此.
数据区还包含了常量
==该区域的数据在程序结束后由操作系统释放==.
示例:
12345678910111213141516171819202122 ...
c++快速入门(1)--基础语法
声明:本文是c++快速入门视频 的讲义,有部分修改。
1 C++初识1.1 第一个C++程序1234567891011#include<iostream>using namespace std;int main() { cout << "Hello world" << endl; system("pause"); return 0;}
1.2 注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码
两种格式
单行注释:// 描述信息
通常放在一行代码的上方,或者一条语句的末尾,==对该行代码说明==
多行注释: /* 描述信息 */
通常放在一段代码的上方,==对该段代码做整体说明==
提示:编译器在编译代码时,会忽略注释的内容
1.3 变量作用:给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初始值;
示例:
123456789101112131 ...