自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 即时通讯软件

通信协议发送消息可以是个struct客户端分两个线程:读取服务器,给服务器发(否则会导致阻塞)read和write的第二个参数类型是:void *buf——————不仅仅是一个字符串,也可以是一个结构体等等,传首地址,第三个参数传字节数。

2023-10-05 21:57:01 130

原创 C10K问题:高并发模型设计

循环服务器模型:阻塞:同一时间只能处理一客户端的请求(读写请求或者连接请求),accept和recv会非阻塞:2.recv非阻塞:recv函数的flag位置为MSG_DONTWAIT;3.read非阻塞:fcntl设置文件描述符的flags位;

2023-10-05 15:49:49 145

原创 Linux 网络编程

广播只能在局域网内部有效,广播数据是无法越过路由器的,也就是说路由器就是广播数据的边界。广播只能在局域网内部有效,广播数据是无法越过路由器的,也就是说路由器就是广播数据的边界。【当有客服端连接到服务器的时候,此时服务器端按下ctrl + c,断开连接,此时需要等待2MSL,才能再次用原来的ip和端口号新建客户端,为了去除这种等待2MSL的】的概念上并不存在,连接描述符通常是由套接字描述符派生出来的,因此关闭连接描述符时实际上是关闭了套接字描述符。会关闭整个套接字的发送和接收功能,不管是否有连接建立。

2023-09-30 18:38:48 425

原创 Linux C 网络基础

被用于通过本地环回网络接口,来访问本机运行的服务,并且将会绕过任何物理网纳接口硬件【加入本机运行了一个服务器,想要访问这个服务器,就访问这个地址】问题:网络环境不可靠,导致每一次发送的数据包可能会丢失,如果机器A发送了数据包丢失了,那么机器B永远接收不到数据,机器A永远在等待。应用层:应用程序的使用;给一个ip发消息,怎么确定是哪个应用程序接收(只有一个网卡),是由传输层决定的,就得知道这个应用程序的。如果原先的数据包并没有丢失,只是在网络中待的时间比较久,这个时候机器B会受到两个数据包,无法辨别。

2023-09-22 00:11:07 226

原创 Linux C 多线程

————————>>>> 进程实现多任务的缺点:线程是任务调度和执行的基本单位 线程的特点线程不安全,不稳定,不健壮————(一个线程的释放可能会影响其他线程)线程切换的开销很低————(实质就是函数的切换)线程通信机制简单(但不安全)————(访问全局变量)线程函数(不是OS提供,不是系统调用API,而是线程库libpthread.a/.so,库函数则可以跨平台)线程库和函数手册的安装sudo apt-get install glibc-doc :安装线程库sudo apt-get in

2023-09-15 17:48:35 249

原创 Linux C进程间通信(IPC)

好处————安全缺点:开销大(独立的地址空间);进程的通信更加困难(对其他进程的操作开销也大)广义上的进程间通信:A进程写给文件/数据库,B进程从文件/数据库里读取狭义上的真正的“进程间通信”管道信号消息队列共享内存信号量套接字。

2023-09-06 22:38:27 333

原创 Linux C 多进程编程(面试考点)

单任务————多任务并发————并行单核CPU ————多核CPU。

2023-08-24 20:52:02 658

原创 文件IO编程 1 & 2

头文件包含路径这样划分,是为了保护内核的核心组件,不被轻易访问和修改安全的访问内核空间所谓系统调用是指操作系统提供给用户的组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务文件IO:一切皆为文件用来管理文件IO:文件分为四大类:dlc/bpsf把一切抽象成文件,用统一的方式管理设备和文件,节省开发资源;用过文件来操作硬件知道一个文件的id(文件指针),操作该id就是操作该文件;

2023-08-16 22:49:09 152

原创 数据结构-1

1.2线性结构树状结构网状结构(表 数 图)数据:数值型 非数值型 1.2.3数据类型和抽象数据类型 1.3抽象数据类型概念小结:

2023-08-07 16:10:41 613

原创 4.3 C++成员模板参数、显示实例化、特化

因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的模板实例化时会优先匹配"模板参数"最相符的那个特化版本。依赖是指依赖于一个模板参数O——typedef类型名是指这里最终要指出的是个类型名。内嵌是指定义在类的定义中的。using给模板起别名。

2023-08-06 16:39:03 67

原创 4.2 C++ 类模板 (补习)

栈和队列会写类模板缺省参数模板

2023-08-05 19:49:52 93

原创 4.1 C++函数模板

显示调用(指定类型时),就会。

2023-08-05 19:44:56 55

原创 3.8 RTTI

1.某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水.计算月薪总额并显示全部信息。然后进行升级,经理升为4级,技术人员和销售经理升为3级,推销员仍为1级。销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5%。RTTI是“Runtime Type Information”的缩写,意思是运行时类型信息,它提供了运行时确定对象类型的方法。相关类型转换(基本类型转换,基类和派生类之间的上下转换。

2023-08-05 15:46:50 41

原创 3.5 C++ 纯虚函数、抽象类 3.6 依赖倒转原则

java、python:继承抽象类的的子类。一个类内有纯虚函数,这个类就叫抽象类;充当功能接口或者类接口。

2023-08-04 21:25:49 101 1

原创 3.4 C++多态

是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。),注意,构造函数默认为私有的,私有的方法和属性在子类中是不可以被继承的,在子类中是无法访问的。2.在派生类中重新定义此函数称为覆写,要求函数名,返值类型,函数参数个数及类型全部匹配。在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类继承的成员。3.为了避免在派生类写错虚函数,可在派生类里的虚函数中添加。1.派生类对象赋值给基类对象;

2023-08-04 13:09:27 44

原创 3.3 C++多继承与虚基类

上图中:A是虚基类;virtual的继承方式就是虚继承。

2023-08-03 22:07:04 43

原创 3.1 C++ 继承、继承方式 3.2 C++继承后的构造函数执行顺序

如下。

2023-08-03 20:23:48 112

原创 2.8 C++ 友元机制 2.9 运算符重载

是一种允许非类成员函数访问类的非公有成员(private和protected)的一种机制。

2023-08-03 00:50:00 46

原创 2.7 const 、指向类成员

空类<Empty>

2023-08-01 23:10:20 45

原创 2.6 C++static关键字

1.set / get 方法;C&C++混合编程时,C的接口需要函数的地址作为参数时,只能将类内的非静态成员函数变成静态成员函数。一.当类内定义了一个 static int count。这样的静态成员函数,只能访问静态成员,不能访问非静态成员。称作:静态成员函数(又称:类的成员函数);二.当类的方法,加上static修饰。四.什么情况下需要使用static。

2023-08-01 20:31:57 38

原创 2.5 C++对象移动 移动拷贝构造函数 移动运算符重载函数

2.定义了一个移动构造函数或移动赋值运算符的类必须也定义自己的拷贝构造函数和拷贝赋值运算符,否则拷贝构造函数和拷贝赋值运算符会被定义delete的。1.一个类定义了自己的拷贝构造函数,拷贝赋值运算符或析构函数,编译器就不会为它合成移动构造函数和移动赋值运算符。提高程序运行效率(把拷贝对象变成移动对象,省去调用拷贝构造函数,拷贝赋值构造函数,省去开辟空间过程)3.使用=default显式要求编译器生成合成的移动操作,且编译器不能移动所有成员。解决临时对象拷贝问题;移动拷贝构造函数和移动赋值运算符: 加。

2023-08-01 13:43:53 72

原创 2.4 C++ 初始化列表

如果只是单纯的添加到class的属性里,会报错;这时,将引用放在初始化列表里。【初始化列表的效率高于在构造函数内;优先使用初始化列表!:无 “默认的 ‘ 无参的构造函数 ‘ ’” 的对象。为什么需要初始化列表?:定义时就需要初始化(绑定一个变量);【构造函数的语义是:定以。

2023-08-01 00:00:08 39

原创 2.1 封装 & 2.2 构造函数 &2.3 拷贝构造函数、深浅拷贝问题 &this指针

封装可以实现,对外开放接口,屏蔽程序;对内数据开放尽量使代码和功能独立作业:面向对象编程,使用封装,实现单链表优点:实例化对象对自动调用缺点:调用时机固定,不灵活特点:1.没有返回值; 2.函数名与类型相同; 3.可以重载; 4.当实例化对象时,会自动调用当class内没有定义时,系统会自动定义一个无参的构造函数;即定义时不需要赋初值;如果定义了构造函数,系统不会自动生成 ~~~~~~~~~~~~;则定义时必须要赋初值。当编码时,不需要系统自动生成无参的构造函数时,可以使用:student()

2023-07-31 22:30:18 39

原创 1.9 C++ vector

vector也是一种容器;需要包含# include <vector>以后定义数组,最好可以用vector来定义。

2023-07-30 23:35:17 33

原创 1.8 C++ string

char*是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。定义string时,会产生两个指针,一个指针指向第一个有效字符,另一个指针指向最后一个有效字符的下一个空间。例如: 查找find,拷贝copy,删除delete 替换replace,插入insert。string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。string是C++风格的字符串,而string本质上是一个。string的属性和方法————

2023-07-30 16:24:28 36

原创 1.7 C++ struct class

如何对private和protected 进行外部赋值和访问:set 和get方法。c++中:struct 内可以定义函数(c不可以)定义时,可以省略struct关键字。struct的升级目的是为了引入。类内定义属性名:以m_开头。

2023-07-27 23:24:42 42

原创 1.4 C++ new 1.5 C++引用 1.6 函数重载

a: b}预处理阶段处理 编译时检查语法、运行时函数进行栈进栈出傻瓜式替换(没有空间分配过程) 处理过程:通过函数名找到函数的入口地址;不做语法检查,不安全 给形参分配空间;传值,执行函数体内的语句;函数返回;释放空间以空间换时间。

2023-07-26 21:13:33 39

原创 1.3 C++ 关键字升级

C++:当对register变量取地址时,会将该变量重新保存到内存中。仅能修饰局部变量,不能修饰全局变量和函数;防止编译器优化(将变量优化到寄存器中(寄存器存在边际效应))寄存器变量,提高运行效率,省去了cpu从内存抓取数据的情况。而不修饰所指向的空间———函数命名规则:解决函数形参的可读性(实现自注释性)C语言中:auto int num=5;工程应用:更好的可读性 更好的移植性。c++ 中~~~可以做左值,可以被复制。:运算器 存储器(寄存器)和控制器。c语言,三目运算符的结果只能作右值。

2023-07-22 22:47:44 41

原创 C++ 1.2.命名空间、输入与输出

提高代码的维护性;:提高代码的复用性;:提高代码的扩展性环境安装xshell的使用使windows下能够访问linuxsublime text 、notepad——windows下查看源码的工具mind manager——思维导图工具自学:git/svn git+GitHub。

2023-07-22 11:19:23 91

原创 74&75&76&77. fgets、fputs、fprintf、stdin、stdout、stderr和文件操作(随机读取)

个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。该函数返回一个非负值,如果发生错误则返回 EOF。,因为不指定输入的长度,所以可能会导致越界。而fgets比较安全:——————sprintf——功能类似。必须以二进制方式打开!

2023-07-17 23:33:25 105

原创 68.文件操作(打开、读写和关闭)&69.文件操作(文件读写位置)& 70 ftell 、feof、‘EOF‘

函数库的使用不要类比字符串函数,仅掌握正确使用,不考虑如何实现文件有编号:暂时认为是文件指针———————————————————————— FILE指针(文件指针———【】)实际上是结构体的重定义:对文件句柄的操作就等于对文件的操作mode 有下列几种形态字符串:r 以只读方式打开文件,该文件r+ 以可读写方式打开文件,该文件w 打开只写文件,若文件则文件长度清为0,即该文件内容会。若文件则该文件w+ 打开可读写文件,若文件则文件长度清为0,即该文件内容会。

2023-07-16 21:46:25 42

原创 67.复合数据类型——enum

enum(枚举):相当于定义了一系列。

2023-06-28 00:19:08 33

原创 64.复合数据类型 union(共用体或联合体)& 65、union:判断大小端字节序

与struct一致。

2023-06-27 22:28:07 53

原创 60,61,62,63.复合数据类型(struct)

1.如何定义,怎么使用2.使用注意事项:struct 内存空洞3.应用场景。

2023-06-25 20:35:10 31

原创 56.关键字(register volatile)& 57.static、extern & 58.const & 59.typedef

inline。

2023-06-19 18:30:37 22

原创 54.预处理(条件编译:debug——msg指令)55.防止头文件重复包含

条件编译:(理解下图代码)命令行编译时定义一个宏:【-D<宏>】————向源文件定义一个条件编译的使用场景:1.注释代码。

2023-06-11 10:25:25 51

原创 53.预处理(# ## 内置宏的使用)

注意:自定义宏不要用“_”开头,否则容易与内置宏产生冲突。3、4 打印日期和时间。

2023-06-08 22:07:45 27

原创 51.预处理 宏定义

【也有用空间换取时间;c99标准:inlien:修饰函数(不超过5行,不能有全局变量和静态变量)(内嵌函数),在定义函数的时候,前面加上inline,使得每次调用处,都换成函数内语句】宏函数:傻瓜式替换,不占用空间,在预处理阶段处理(如果一个大程序运行中,有多次调用自定义函数,自定义函数会更占用内存和时间) 用编译时间换取运行时间。自定义函数:会占用多余的空间(开销大:给形参分配空间;一系列操作:函数调用、函数返回,分配空间、释放空间)看上去像函数,并不是函数的机制处理的;定义复杂宏函数,可用。

2023-06-06 23:28:29 27

原创 50.内存管理

缺:对用户要求高,需要良好的编码习惯和经验。缺:开销大,实时性差,用户无法干预。内存分析诊断工具:valgrind。内存管理(防止内存泄露)优:有效防止内存泄漏。

2023-06-04 23:33:28 14

原创 48函数(可变参数)

实现原理:函数形参在内存上开辟空间时,是连续的。

2023-06-04 11:53:18 20

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除