软开知识点查漏补缺

1.软件设计原则

七大原则:
1. 开闭原则, 每个类或者模块函数都应具备对外可以扩展,对内关闭修改权限的原则。
2. 依赖倒置原则, 高层模块不应依赖底层模块,二者都应该依赖于各个抽象类。将各个模块之间的耦合性降到最低,以求实现彼此独立,互不干扰的效果,提高后期的维护性,可靠性。
3. 单一职责原则, 保证一个类只实现一种功能,而不是多个功能。
4. 接口隔离原则, 使用多个专门的接口而不是用单一的总接口,总体上符合我们对于高内聚低耦合的设计思想。
5. 迪米特原则, 又叫最少知道原则,各个类保持无联系的状态,也就是低耦合,专注于干好自己的事情。
6. 里式替换原则, 也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。这样好处是在于子类父类可以复用。
7. 组合/聚合复用法则, 尽量使用对象组合/聚合,而不是继承关系来达到软件复用的目的。

1.1 设计模式

1) 单例模式
单例模式是一种常用的软件设计模式。
在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。
应用场景:如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

2) 工厂模式
工厂模式主要是为创建对象提供了接口。
应用场景如下:
a、在编码时不能预见需要创建哪种类的实例。
b、系统不应依赖于产品类实例如何被创建、组合和表达的细节。

3) 策略模式
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换。此模式让算法的变化独立于使用算法的客户。
应用场景如下。
a、一件事情,有很多方案可以实现。
b、我可以在任何时候,决定采用哪一种实现。
c、未来可能增加更多的方案。
d、策略模式让方案的变化不会影响到使用方案的客户。
举例业务场景如下。
系统的操作都要有日志记录,通常会把日志记录在数据库里面,方便后续的管理,但是在记录日志到数据库的时候,可能会发生错误,比如暂时连不上数据库了,那就先记录在文件里面。日志写到数据库与文件中是两种算法,但调用方不关心,只负责写就是。

4) 观察者模式
观察者模式又被称作发布/订阅模式,定义了对象间一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
应用场景如下:
a、对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
b、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。

5) 迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
应用场景如下:
当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍 历的时候,就应该考虑用迭代器模式。其实stl容器就是很好的迭代器模式的例子。

6) 模板方法模式
模板方法模式定义一个操作中的算法的骨架,将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。
应用场景如下:
对于一些功能,在不同的对象身上展示不同的作用,但是功能的框架是一样的。

2. C++ 之 lambda 表达式

int main() {
	[](){};
	return 0;
}

C++中的lambda表达式可以看作是一个匿名函数,也可以当作一个内联函数来使用。内联函数的意义在这里不展开讨论,而lambda表达式作为匿名函数在很多地方是大有用处的。
不用可以去想怎么命名该函数,直接使用就好了。

3.Linux 由那几部分组成

一般由:内核、shell、文件系统、应用程序四大部分组成。
(1)内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序
(2)Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
(3)文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。
(4)标准的 Linux 系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。

其中内核又由:进程、线程、内存管理、虚拟文件系统、网络接口 这几大部分。

4.程序编译过程

预编译 .c——>编译 .i——> 汇编 .s——> 链接 .o ——> 可执行文件

5. 指针用法全面解释

1.声明了一个指针之后必须初始化,也就是为其申请内存空间。malloc/free
2.free之后,只是释放了内存,但是指针还存在,需要将其置为NULL
3.指针和const 的使用,常量指针 int const *p; 指针常量 int * const p;.
4.指针函数 int *func(int a); 本质上是一个函数,返回的是一个int 类型的指针。
函数指针 int (*func)(int a);本质上是一个指针,指向的是返回值为整型且形参为一个整型的这么一个函数,

int *function(int a);
int (*fun)(int x,int y);
fun = function;//将function函数的地址赋给函数指针。

6.Linux 查看系统内部常用的一些命令

  1. ps :查看进程
  2. top:cpu性能查看
  3. df:查看磁盘状态,使用情况等信息
  4. netstat :网络连接信息查看,tcpdump 抓取数据包
  5. iostat :I/O 状态数据查看
  6. vmstat:虚拟内存统计的缩写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值