文档章节

C++知识点

 悠米海
发布于 2014/06/12 22:44
字数 963
阅读 10
收藏 1

#define SECONDS_PER_YEAR  (60*60*24*365)UL

 

#define MIN(A,B) ((A) <=(B) <= (A):(B))

 

static关键字,静态变量、静态函数

 

Const 只读

 

Volatile 告诉编译器变量是会意外改变的,不能使用寄存器备份

能修饰const、指针,两次volatile的指针值是不一定会相同的

 

比特操作:

&  0全是0,全1才是1

|  11,全0才是0

~ 取反 10,逢01

^ 异或 操作相同为0,不同为1

<< 左移 左边移动抛弃右边补0

>> 右移 右边的移动抛弃左边补0

例子:A^B^B = A

 

函数模板与类模板

函数模板由函数调用时编译器自动完成,类模板实例化时由程序显式指定

 

Tcp/IP建立过程

三次握手:Client => Server=>等待(SYN_SEND)

  Server=>Clien=>等待(SYN_RECV)

  Client=>Server=>完成(ESTABLISHED)

 

winSock建立步骤

服务器:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接

客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()recv(),读写数据,直至数据交换完毕,closesocket()关闭套接字

服务器:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。新套接字使用send()recv(),读写数据,直至数据交换完毕,closesocket()关闭套接字

 

selectepoll

select是所有连接轮询操作,epoll是对活跃连接操作;select最大量接受操作系统内核限制,epoll不是;

 

动态链接库

载入时类似于本地函数明确调用则需要dlllib描述文件;运行时动态链接可以通过LoadLibraryLoadLibraryEx载入DLL

 

C++面向对象的三个基本特征

封装、继承、多态(实现方式覆盖和重载)

 

纯虚函数和虚函数

纯虚函数vitual func() = 0,构建的类不能生成实例,抽象类,只能用作基类

 

友元函数的优缺点

有点:能直接访问类的私有保护对象,提升效率

缺点:破坏了类的封装,有安全漏洞

 

线程和进程

线程是最小的执行单元,一个进程包含多个线程进程有独立的地址空间,进程崩溃对其他进程没影响;线程有自己的堆栈和局部变量,没有单独的地址空间,一个线程死掉进程就会出现问题;进程切换耗费的资源比线程切换大;

 

进程间通信

无名管道(pipe)、高级管道(popen)、有名管道(named pipe)、信号量、消息队列、信号、共享内存、Socket

 

线程间通信

全局变量、消息队列、临界区、互斥区、事件、信号量

 

进程和线程同步方式

临界区、互斥区、事件、信号量

 

tcpudp区别

Tcp传输控制协议需要建立可靠地连接,三次握手,速度慢;

Udp:用户数据报协议,不与对方建立连接直接发送数据,可靠性差,速度快;

 

tcp/ip的状态

TCP连接:

1.CLOSED2.LISTEN3.SYN_SENT4.SYN_RCVD5.ESTABLISHED

TCP关闭

1.FIN_WAIT_12.FIN_WAIT_23.CLOSE_WAIT4.LAST_ACK5.CLOSING6.TIME_WAIT

 

程序什么时候应该使用线程,什么时候单线程效率高

1.耗时的操作使用线程,提高应用程序响应 

2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。

3.多CPU系统中,使用线程提高CPU利用率 

4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独 立的运行部分,这样的程序会利于理解和修改。 其他情况都使用单线程。

 


© 著作权归作者所有

共有 人打赏支持
粉丝 12
博文 96
码字总数 37547
作品 0
浦东
程序员
私信 提问
学习C++的50条,谨以送给C++的粉丝们

1.把C++当成一门新的语言学习(和C没啥关系!真的);   2.看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差);   3.看《The C++ Programming Language》(这...

地瓜儿
2013/01/11
1K
7
c语言基础学习11_项目实战:IDE(集成开发环境)

============================================================================= ============================================================================= 涉及到的知识点有: 一......

黑泽明军
2018/01/29
0
0
C#转C++的一点分享

从C#转C++有段时间了,一直想分享点什么,但又不太好意思分享,毕竟自己做C++的时间不太长,最近感觉自己已能胜任现有工作,想分享的想法又强了点,前几天看到这样一篇博客《那些年·我们读过的专业...

爱情经纬线
2014/01/17
3.7K
10
C++总结 — C++知识导论图

C++知识导论图 以上就是C++的知识的一点总结,当然这也只是延伸到面,并没有延伸到点. 具体更加细致的知识点需要你更加努力的学习. 上面的知识点我基本也 有对应的博客,特别是面向对象那块的...

Dawn_sf
2018/01/14
0
0
VS2010/MFC编程入门教程之目录和总结(鸡啄米)

鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事...

weixin_40647819
2018/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
47分钟前
6
0
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
8
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部