您的位置:首页 > 其它

每日练习

2017-02-25 22:44 344 查看
C/C++

1.

//为了实现链式操作将目的地址返回

//注意source的const

//两个指针不能为空

char * strcpy(char *strDest, const char *strSrc)

{

assert((strDest != NULL) && (strSrc != NULL));

char *address = strDest;

while ((*strDest++ = *strSrc++) != ‘\0’);

return address;

}

2.

在申请完内存以后一定要判断是否申请成功

free后一定要讲指针设置为NULL不然有可能生成野指针

3.0值判断

BOOL : if (!var)

int : if (0 == var)

指针 : if (NULL == var)

float : if ((x <= 0.0000000001) && (x >= -0.0000000001))

4.

当类中包括指针类成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数,这既是对C++程序员的基本要求,也是《Effective C++》中特别强调的条款

class String

{

//注意所有的内存申请以后最好判空

public:

String(const char *str = NULL); // 普通构造函数 if(str==NULL){m_data=new char[1]; *m_data=’\0’;}

String(const String &other); // 拷贝构造函数

~String(void); // 析构函数

String & operator =(const String &other); // 赋值函数,需要释放原先的内存

private:

char *m_data; // 用于保存字符串

};

操作系统:

1.系统的主要功能有

处理机管理,存储器管理,设备管理,文件系统

2.对程序进行编译不是操作系统直接完成的功能

3.共享设备不需要用户安装设备驱动程序

4.为多道系统特意准备的有

(1)特权指令(2)时钟(3)跳转指令

5.分时系统和实时系统对用户的请求在一定的时间内给予及时响应

6.在计算机系统中,操作系统是核心系统软件

7.创建进程必须步骤

(1) 申请空白PCB(进程控制块);

(2) 为新进程分派资源;

(3) 初始化PCB;

(4) 将新进程插入就绪队列;

8.

PV操作:

1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量;

2)semaphore的取值可正可负,负数的绝对值表示正在等待进入 临界区 的进程个数。

P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。

操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;

V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。

操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。

9.

设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示没有一

个进程进入临界区

10.为了实现多道程序设计,计算机最需要更大的内存

11.

活动就绪——suspend——>静止就绪

活动就绪<——active——静止就绪

活动阻塞——suspend——>静止阻塞

活动阻塞<——active——静止阻塞

12.

Unix操作系统的进程控制块中常驻内存是proc结构

Linux:

1.page fault是因为所需访问虚拟内存未被装载

2.建立动态路由需要用到的文件有/etc/gateways

3.推出unix系统账户之后还需要继续运行某个进程,那么可用nohup

4.HTTP在应用层,交换机在数据链路层(网桥也在)

5.uptime命令主要用于获取主机运行时间和查询linux系统负载等信息

vmstat命令可以查看查看cpu负载

sar命令可以查看网络接口信息

6.系统网卡数量不会限制linux服务器并发连接数

7. - rw - r–r–权限表示方法

8.arp协议用了broadcast

9.如何查看linux主机的默认路由,可用route和netstat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: