c/c++
陈宸-研究僧
这个作者很懒,什么都没留下…
展开
-
常用代码模板3——搜索与图论(Bellman-Ford算法 、spfa 算法、floyd算法、Kruskal算法、染色法、匈牙利算法 )
一、树与图的存储树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,...原创 2020-02-17 18:15:43 · 423 阅读 · 0 评论 -
c/c++:Libevent应用(Libevent介绍、 事件处理框架 - event_base、事件循环、事件、带缓冲区的事件、链接监听器)
目录1. Libevent介绍1.1 安装Libevent2. 事件处理框架 - event_base2.1 event_base API函数event_base和fork(进程)关系:3. 事件循环3.1 设置事件循环3.2终止事件循环4. 事件4.1事件基本操作事件的创建 event_new事件的释放事件的添加、删除4....原创 2019-12-31 16:05:21 · 2022 阅读 · 0 评论 -
c/c++:UDP(udp通信、广播、组播),本地套接字
目录1. udp1.1 udp通信流程1.2操作函数send、sendtorecv、recvfrom2. 广播2.1 广播通信流程2.2 设置广播属性函数:setsockopt2.3广播代码3 组播3.1 组播地址3.2组播通信流程3.3 设置组播属性函数:setsockopt3.4 组播代码4. 本地套接字4.1 结构体soc...原创 2019-12-28 17:33:33 · 10707 阅读 · 3 评论 -
c/c++:端口复用(setsockopt)、io多路转接(select、 poll、epoll)
目录1. 端口复用setsockopt函数2. IO多路转接2.1selectselect函数演示:io多路转接(select函数)服务器代码模板3.2poll2.3 epollepoll_create 创建函数epoll_ctl 控制函数epoll_wait检测函数2.4 epoll 的工作模式2.4.1LT模式(默认)epoll...原创 2019-12-25 10:56:20 · 2013 阅读 · 1 评论 -
c/c++:基于TCP协议实现Linux下客户端与服务器之间的通信,实现多线程、多进程服务器代码模板
目录TCP协议Linux多进程服务器代码模板:TCP协议Linux多线程服务器代码模板:客户端代码模板:TCP协议Linux多进程服务器代码模板:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include...原创 2019-12-21 14:02:53 · 1719 阅读 · 1 评论 -
c/c++:网络通信基础socket(网络设计模式、字节序、IP地址转换、sockaddr数据结构、套接字函数、TCP通信流程)
目录1. 概念1.1 网络设计模式 - B/S - C/S- IP和端口- OSI/ISO 网络分层模型2. 协议格式3. socket编程3.1 字节序- 接口转换函数3.2 IP地址转换3.3 sockaddr数据结构3.4 套接字函数4. TCP通信流程tcp 服务器server通信操作流程:tcp 客户端client通信操...原创 2019-12-17 12:10:29 · 1645 阅读 · 0 评论 -
c/c++:线程同步(互斥锁、死锁、读写锁、条件变量、生产者和消费者模型、信号量)
目录1. 概念2. 互斥锁3. 死锁4. 读写锁5. 条件变量5.1 生产者和消费者模型6. 信号量1. 概念线程同步:> 当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作。 > - 在多个线程操作一块共享数据的时候 > - 按照先后顺序依次访问 > - 有原来的 并...原创 2019-12-15 20:23:19 · 2747 阅读 · 3 评论 -
c/c++:守护进程、线程、线程之间共享和非共享资源、线程常用函数
目录一、 守护进程1.1进程组1.2会话1.3创建守护进程的步骤二、线程2.1 线程之间共享和非共享资源2.2创建线程pthread_create2.3 获取当前线程的线程ID pthread_self2.4 线程退出pthread_exit2.5 回收子线程资源 pthread_join2.6 线程分离 pthread_d...原创 2019-12-12 21:39:18 · 2315 阅读 · 1 评论 -
c/c++: 进程间通信(匿名管道、有名管道、内存映射)
进程间通信的方式?- 管道 - 匿名管道 - 有名管道 - 内存映射 - 本地套接字 - 网络套接字 - 消息队列 - 共享内存- 父子进程始终共享什么东西? - 文件描述符 - 内存映射区目录一、管道1.1匿名管道创建匿名管道匿名管道的原理:实现过程:匿名管道的局限性:栗子:(使...原创 2019-11-27 14:08:58 · 1160 阅读 · 0 评论 -
c/c++:进程(PCB进程控制块、进程状态、exec族函数、进程控制)
目录一、进程概述1、PCB(Processing Control Block)2、进程状态二、进程创建2.1 进程ID2.2 进程的创建2.3 父子进程三、exec族函数四、进程控制4.1 结束进程4.2 孤儿进程4.2 僵尸进程4.3 进程回收waitwaitpid一、进程概述1、PCB(Processing Contro...原创 2019-11-26 17:18:42 · 1927 阅读 · 0 评论 -
c/c++:文件IO(Linux系统IO、C标准库IO、标准C 库IO和 Linux系统IO的关系、虚拟地址空间、文件描述符表和文件描述符、dup,dup2,fcntl函数)
目录一、Linux系统IO和C标准库IO1.1 标准C库IO函数1.2 标准C 库IO和 Linux系统IO的关系二、 虚拟地址空间三、文件描述符表和文件描述符6.1 dup和dup2函数dup 复制文件描述符dup2重定向文件描述符fcntl四、Linux系统IO函数五、Linux其他系统函数一、Linux系统IO和C标准库IO...原创 2019-11-22 15:02:41 · 658 阅读 · 0 评论 -
c++:STL常用算法
算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等...<numeric>体积很小,只包括在几个序列容器上进行的简单运算的模板函数.<functiona...原创 2019-11-12 19:59:38 · 176 阅读 · 0 评论 -
c++:STL函数对象、谓词、内建函数对象、函数适配器
目录一、函数对象二、谓词三、内建函数对象四、函数适配器4.1 函数对象适配器4.2 取反适配器4.3 函数指针适配器4.4成员函数适配器一、函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用...原创 2019-11-12 16:26:12 · 263 阅读 · 0 评论 -
c++:STL容器及其接口(string、vector、deque、stack、queue、list、set/multiset、map/multimap)
STL(Standard Template Library,标准模板库)目录一、STL 六大组件简介二、 string容器2.1 string容器基本概念2.2string 构造函数2.3string基本赋值操作2.4string存取字符操作2.5string拼接操作2.6string查找和替换2.7 string比较操作2.8string子...原创 2019-11-09 21:20:34 · 713 阅读 · 0 评论 -
c++:类型转换(静态转换[static_cast]、动态转换[dynamic_cast]、常量转换[const_cast]、重新解释转换[reinterpret_cast])
无论什么原因,任何一个程序如果使用很多类型转换都值得怀疑. 目录一、静态转换(static_cast)二、动态转换(dynamic_cast)三、常量转换(const_cast)四、重新解释转换(reinterpret_cast)一、静态转换(static_cast)用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。进行上行转换...原创 2019-11-05 17:14:22 · 352 阅读 · 0 评论 -
c++: 泛型编程(函数模板、模板机制剖析、模板的局限性、类模板)
c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。c++提供两种模板机制:函数模板和类模板目录一、函数模板1.1 函数模板和普通函数区别1.2 函数模板和普通函数...原创 2019-11-04 21:14:31 · 274 阅读 · 0 评论 -
C++ :多态(类型转换及问题、虚函数、C++如何实现动态绑定、多态成立的条件、抽象基类和纯虚函数、虚析构函数)
多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。目录一、类型转换及问题1.2 问题解决思路1.3 问题解决方案(虚函数,vitual function)二、C++如何实现动态绑定三、多态成立的条件四、抽象基类和纯虚函数(pure virtual function)五、虚析构函数c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符...原创 2019-11-01 20:53:32 · 464 阅读 · 0 评论 -
c++: 运算符重载(运算符重载碰上友元函数、自增自减(++/--)运算符重载、赋值(=)运算符重载、等于和不等于(==、!=)运算符重载、重载&&、||)
目录一、运算符重载基本概念二、运算符重载碰上友元函数三、可重载的运算符四、自增自减(++/--)运算符重载五、赋值(=)运算符重载六、等于和不等于(==、!=)运算符重载七、不要重载&&、||八、符号重载总结一、运算符重载基本概念运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。 ...原创 2019-10-30 17:00:12 · 2580 阅读 · 0 评论 -
C++ :友元
同类对象间无私处,异类对象间有友元类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办?解决方法是使用友元函数,友元函数是一种特权函数,c++允许友元访问私有成员。可以把一个全局函数、某个类中的成员函数、甚至整个类声明为友元。目录一、友元几点说明二、全局函数做友元三、类做友元四、类中的成...原创 2019-10-27 20:58:39 · 189 阅读 · 0 评论 -
c :静态成员(静态成员变量、静态成员函数、const静态成员属性、单例模式、成员变量和函数的存储 、this指针、常函数、常对象)
不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。目录一、静态成员变量二、 静态成员函数三、const静态成员属性四、单例模式五、成员变量和函数的存储六、this指针6.1 this指针工作原理6.2this指针使用6.3this指针的本质和常函数(const修饰成员函数)6.4常对象(const修饰对象)...原创 2019-10-26 15:45:34 · 368 阅读 · 0 评论 -
面试题:C++ 对C的扩展最全总结
c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++继承了c语言高效,简洁,快速和可移植的传统。c++融合了3种不同的编程方式:c语言代表的过程性语言.c++在c语言基础上添加的类代表的面向对象语言.c++模板支持的泛型编程。目录一、 ::作用域运算符二、 名字控制2.1 C++命名空间(namespace)2.2using声明三、全局变量...原创 2019-10-22 15:11:49 · 771 阅读 · 0 评论 -
c ++ :对象的构造和析构
目录一、构造函数和析构函数二、 构造函数的分类及调用三、拷贝构造函数的调用时机四、构造函数调用规则五、深拷贝和浅拷贝六、初始化列表七、explicit关键字对象的初始化和清理也是两个非常重要的安全问题,一个对象或者变量没有初始时,对其使用后果是未知,同样的使用完一个变量,没有及时清理,也会造成一定的安全问题。c++为了给我们提供这种问题的解决方案,构造函数和析...原创 2019-10-24 10:13:10 · 341 阅读 · 0 评论 -
c/c++:内存对齐详解
目录一、内存对齐原因二、如何内存对齐三、内存对齐案例3.1对齐模数:83.2 对齐模数:43.3 实践说明四、32位机和64位机内存对齐的区别一、内存对齐原因我们知道内存的最小单元是一个字节,当cpu从内存中读取数据的时候,是一个一个字节读取,所以内存对我们应该是入下图这样:但是实际上cpu将内存当成多个块,每次从内存中读取一个块,这个块的...原创 2019-10-14 14:50:02 · 1614 阅读 · 2 评论 -
c学习笔记:数组指针的定义方式
1、先定义出数组的类型,再通过类型定义出数组指针void test01(){ int arr[5] = { 1, 2, 3, 4, 5 }; typedef int(ARRAY_TYPE)[5]; //ARRAY_TYPE 是一个 有5个int元素的数组的 类型 ARRAY_TYPE * arrP = &arr; // *arrP ==== arr f...原创 2019-10-09 15:31:27 · 286 阅读 · 1 评论 -
c学习笔记:结构体(结构体数组、结构体嵌套结构体、结构体指针变量、堆区的结构体数组、共用体)
目录知识点1【结构体】知识点2【结构体数组】知识点3【结构体嵌套结构体】知识点4【结构体指针变量】知识点5【堆区的结构体数组】知识点6【结构体指针变量作为函数参数】知识点7【结构体数组名作为函数的参数】知识点8【指针变量作为函数的成员】知识点9【const修饰结构体指针变量】知识点10【共用体】知识点1【结构体】结构体中的成员空间是独立的3种...原创 2019-09-25 16:09:09 · 1101 阅读 · 4 评论 -
c学习笔记:内存(普通局部变量、普通全局变量、静态局部变量、静态全局变量、普通函数与静态函数、内存的分区、动态申请堆区空间、函数内部给外部指针变量申请空间 )
目录知识点1:普通局部变量、普通全局变量、静态局部变量、静态全局变量普通局部变量普通全局变量静态局部变量(static修饰的局部变量)静态全局变量普通函数 与 静态函数(加static修饰)知识点2:内存的分区详解知识点3:内存操作注意事项1、函数不要返回局部变量的地址。2、函数可以返回静态局部变量的地址 (因为静态局部变量在函数结束后不被释放)3、 不...原创 2019-09-24 17:11:03 · 442 阅读 · 0 评论 -
c学习笔记:函数(指针数组、二级指针、指针作为函数参数、数组名作为函数参数、字符数组名作为函数参数)
目录知识点1:多文件编程知识点2:二级指针知识点3:指针作为函数的参数案例1:普通变量作为函数的参数(函数内部修改不了函数外部的值)案例2:指针变量作为函数的形参知识点4:数组名作为函数的参数知识点5:字符数组名作为函数的参数知识点7:字符串指针变量 与 字符数组的区别知识点8:字符指针数组知识点1:多文件编程指针数组: 本质是数组只是每个元素的类型是指...原创 2019-09-22 17:10:26 · 903 阅读 · 0 评论 -
c学习笔记:函数概述(多文件、return和exit、*与&、void修饰、const修饰)
目录知识点1:多文件编程知识点2:return和exit的区别知识点3:内存概述知识点4:在使用中*与&的关系知识点5:void修饰指针变量知识点6:操作指针注意事项知识点7:const修饰指针变量知识点1:多文件编程除了mian.c之外,有一个.c文件就要有一个.h文件栗子:(代码格式)知识点2:return和exit...原创 2019-09-21 15:30:15 · 140 阅读 · 0 评论