0%

在windows平台和Linux平台下都大量存在着库,库的本质还是一个文件,这个文件里面就是程序员编写的经过编译,汇编后的功能代码,写成库的方式可以实现代码保密,以及分发和部署方便。通常分为静态链接库和动态链接库,下面来看看两者的概念和区别。

六大设计原则

既然说到设计模式那就顺便回顾一下六大设计原则,六大设计原则是心法,二十三种设计模式是内功,下面只是简明的叙述了一下,后面还会有更详细的说明! 一 、 类单一职责原则:Single Responsibility Principle (SRP) 一个类只有一个引起这个类变化的原因。即一个类只完成一个功能,如果做不到一个类只完成一个功能,最少要保证一个方法只完成一个功能。

二、依赖倒置原则:Dependency Inversion Principle (DIP) 高层组件应该依赖抽象而不依赖具体,即面向接口编程,一般依赖的成员变量或者参数都应该是抽象的不应该是具体的。

三、里氏替换原则:Liskov Substitution Principle (LSP) 凡是父类出现的地方都可以用子类代替并且原功能没有发生变化,子类不应该覆盖父类的非抽象方法。

四、迪米特法则:Least Knowledge Principle (LKP) 一个类要尽量的封装自己,一个对象应该对其他对象有最少的了解,一个类只需要知道自己需要耦合或者调用类的public方法即可。

五、接口隔离原则:Interface Segregation Principle (ISP) 一个接口完成的功能尽可能的单一,不要让一个接口承担过多的责任。

六、开闭原则:The Open-Closed Principle (OCP) 对扩展开放,对修改闭合。

一、fopen函数

1#include <stdio.h>
2FILE *fopen(const char *path, const char *mode);

参数说明: path:要打开的文件路径+文件名 mode:打开模式,下面是第二个参数的说明 来自CentOS 7:man 3 fopen

函数重载

方法重载 (overload) C++允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading),借助重载,一个函数名可以有多种用途。

永远记住一点:函数重载只与参数列表有关,与返回值类型无关

编辑器-Vim

都知道vim是Linux下的编辑器之神,当然还有emacs也是特别NB的,个人在Linux下比较常用的也就是Vim了,接下来说说vim的一些配置技巧:

配置常见的代码模板

 1func Setfilehead()
 2    call append(0, '/***********************************************')
 3    call append(1, '#      Filename: '.expand("%"))
 4    call append(2, '#        Author: Tim 15291418231@163.com')
 5    call append(3, '#   Description: ---')
 6    call append(4, '#        Create: '.strftime("%Y-%m-%d %H:%M:%S"))
 7    call append(5, '# Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
 8    call append(6, '***********************************************/')
 9    call append(7, '')
10    call append(8, '#include <stdio.h>')
11    call append(9, '#include <stdlib.h>')
12    call append(10, '#include <unistd.h>')
13    call append(11, '#include <sys/types.h>')
14    call append(12, '')
15    call append(13, 'int main(int argc, char *argv[]){')
16    call append(14, '')
17    call append(15, '	return 0;')    
18    call append(16, '}')
19endfunc
20
21"映射F1快捷键,生成后跳转至第14行,然后进入vim的插入模式
22map <F1> :call Setfilehead()<CR>:14<CR>o

这样的话只要新建源文件的时候按一下F1,代码就会自动添加到源文件中了!

插入排序

基本思想

每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止

进程创建

fork&vfork

fork与vfork同样都是创建子进程,但是注意两者的区别:

  • fork():子进程拷贝父进程的数据段,代码段
  • vfork ():子进程与父进程共享数据段
  • fork():父子进程的执行次序不确定
  • vfork(): 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec或exit 之后父进程才可能被调度运行
  • vfork():保证子进程先运行,在她调用exec 或exit 之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁