自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 56 网络层

理解网络层的作用,深入理解IP协议的基本原理对整个TCP/IP协议有系统的理解对TCP/IP协议体系下的其他重要协议和技术有一定的了解。

2024-07-22 19:15:30 578

原创 01 安装

安装和卸载中,用户全部切换为root,一旦安装,普通用户也能使用初期不进行用户管理,全部用root进行,使用mysql语句。

2024-07-18 23:59:29 975

原创 55 TCP协议

全称为“传输控制协议(Transmission Control Protocol),可以对数据的传输详细的控制在应用层定义的缓冲区是用户级缓冲区,每创建一个连接,tcp创建发送缓冲区和接收缓冲区,保证可以在发送的同时接收,做到全双工。应用层只需要将需要发送的数据交付给传输层,至于数据什么时候发送?发多少?出错怎么办?都由tcp自主决定。发送数据其实和read,write文件io操作一样,将数据拷贝到缓冲区内。

2024-07-18 17:27:53 975

原创 54 UDP协议

udp协议采用定长报头,前8字节的端口号是发送的一方填写的,16为udp长度表示整个报文的长度,这样就可以将数据和报头分离,报文和报文之间有明显的界限划分。校验和验证数据的正确性,如果失败,直接丢弃,不通知不保证可靠性。

2024-07-15 10:45:39 404

原创 53 传输层

作用:负责数据能够从发送端传输接收端。

2024-07-14 23:35:49 340

原创 40 空间配置器(补充)

空间配置器,顾名思义就是为各个容器高效的管理空间(空间的申请与回收的),在默默的工作。虽然在常规使用STL时,可能用不到它,但原理可以了解一下有很大的帮助。

2024-07-10 10:14:53 868

原创 39 线程库

在c++11之前,涉及到多线程问题,都是和平台相关的,如windows和linux下各有自己的接口,这使得代码的可移植性差。c++11中最重要的特性就是对线程支持,使得c++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库的线程,必须包含头文件。C++11线程类函数名功能thread()构造一个线程对象,没有关联任何线程函数,即没有启动任何线程构造一个线程对象,并关联线程函数fn,args1,args2,…为线程函数的参数get_id获取线程id。

2024-07-09 17:39:44 943

原创 38 IO流

c语言中,想要将一个整形变量的数据转化为字符串格式,怎么做1.使用itoa()函数2.使用sprintf函数但是两个函数在转化时,需要先给出保存结果的空间,空间给多大,不好界定,而且转化格式不匹配时,可能会得到错误的结果甚至程序崩溃//c++如果是sql2+=的对象是自定义结构体,不支持这个操作。想把结构体转为字符串可以对每个成员单独转,有些麻烦c++可以使用stringstream避开此问题。必须要包含头文件。

2024-07-06 20:36:03 1001

原创 37 类型转换

每次使用强制类型转换前,应该自习考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用域,以减少发生错误的机会。用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用这个,但它不能用于两个不相关的类型转换。因此c++提出了自己的类型转化风格,注意因为c++要兼容c语言,所以c++中还可以使用c语言的转化风格。缺陷:转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以追踪错误的转换。将父类指针/引用转换为子类对象的指针或引用(动态转换)

2024-07-05 23:01:58 519

原创 36 特殊类设计

拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝。原因:1.设置为私有:如果只声明没有设置成private,用户自己如果在类外定义了,就不能禁止拷贝了2.只声明不定义:不定义是y8inwei该函数根本不会调用,定义了也没有意义,不写反而更简单,如果定义了就不会防止成员函数内部拷贝了。

2024-07-05 17:26:33 322

原创 35 智能指针

内存泄露指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况,并不是指内存在物理上消失,而是应用程序分配某段内存后,因为设计错误,失去了对这段内存的控制,因而造成了内存的浪费危害:长期运行的程序出现内存泄露,影响很大,如操作系统、后台服务等等,出现内存泄露导致响应越来越慢,最终卡死// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.

2024-07-04 11:06:59 999

原创 34 异常

很多时候会自定义异常体系管理,如果一个项目随便抛异常,那么外层的调用者就没法处理,所以有一套规范,排出的都是继承的派生类对象,捕获一个基类就好了// 服务器开发中通常使用的异常继承体系public:, _id(id){}protected:int _id;return str;

2024-07-03 00:56:06 519

原创 33 包装器

std::bind函数定义在头文件中,是一个函数模板,就像一个函数包装器(适配器),接受一个调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表。arg_list中的参数可能包含形如_n的名字,其中n是一个证书,这些参数是“占位符”,表示newCallable的参数,它们占据了传递给newCallable的参数的“位置”。其中,newCallable本身是一个可调用对象,arg_list是一个逗号分隔的参数列表,对应给定的callable的参数。

2024-07-02 13:54:10 374

原创 32 lambda表达式

c++11。

2024-07-02 09:46:12 1122

原创 31 C++11

在2003年标准委员会提交了一份计数勘误表(简称TC1),使得c++03这个名字已经取代了c++98称为c++11之前的最新的c++标准名称。不过由于c++03(TC1)主要是对c++98标准中的漏洞进行修复,语言的核心部分没有改动,因此人们习惯性的把两个标准合并称为c++98/03标准。从c++0x到c++11,c++标准10年磨一剑,第二个真正意义上的标准姗姗来迟。

2024-07-01 21:15:34 907

原创 30 哈希的应用

给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何判断一个数是否在这40亿个整数中1.遍历,时间复杂度O(N)2.二分查找,需要先排序,排序(N*logN),二分查找,logN。1个g大约存储10g字节,40亿个整数就需要160g字节,需要16个g的连续空间,内存中无法开出这么大的容量。3.位图。判断一个数在不在的最小单位可以是位,将整数的范围全部做一个映射,有的值设置为1,没有就设置为0。这样,需要的空间就是42亿个位,0.5个g就可以存下。

2024-06-29 22:06:15 1022

原创 29 unordered_set和unordered_map

用哈希结构封装map和set。

2024-06-24 16:35:58 313

原创 28 哈希

unordered_map在线文档说明1.unordered_map是存储键值对的关联式容器,其允许通过key快速的索引到与其对应的value2.键值对通常用于唯一的标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同3.在内部,没有对按照任何特定的顺序排序,为了能在常数范围内找到key对应的value,将相同哈希值的键值对放在对应的桶中4.通过key访问单个元素比map快,但它通常在遍历元素子集的范围迭代方面效率较低。

2024-06-24 11:12:36 860

原创 27 map和set封装

map和set可以采用两套红黑树实现,也可以用同一个红黑树,就需要对前面的结构进行修改迭代器的好处是可以方便遍历,是数据结构的底层实现与用户透明。stl明确规定,begin和edn代表的是一段前闭后开的区间,而对红黑树进行中序遍历后,可以得到一个有序序列,因此:begin可以放在红黑树中最小节点(即最左侧节点)的位置,end放在最大结点(最右侧节点)的下一个位置,关键是最大节点的下一个位置在哪?如果给成nullptr,end的–操作要能找到最后一个元素的位置,最好的方式是将end放在头节点的位置。

2024-06-20 01:12:37 624

原创 26 红黑树

枚举一个颜色,红和黑,节点中加入颜色enum colorRED,BLACKcolor _col;{}为什么节点默认是红色?因为每条路径的黑色节点数量都必须相等,如果插入结点默认为黑色,就会对所有路径造成影响。如果是红色,最多只会影响自己所在的路径。

2024-06-18 22:39:50 628

原创 25 avl树

节点保存左右孩子和模板数据,因为要调整高度,所以保存双亲和平衡因子int _bf;{}假如以pParent为根的子树不平衡,即pParent的平衡因子为2或者-2,分以下情况考虑1.pParent的平衡因子为2,说明pParent的右子树高,设pParent的右子树的根为pSubR当pSubR的平衡因子为1时,执行左单旋当pSubR的平衡因子为-1时,执行右左双旋2.pParent的平衡因子-2,说明pParent的左子树高,设pParent的左子树的根为pSubL。

2024-06-17 01:12:27 927

原创 23 二叉搜索树

1.内容安排说明2.二叉搜索树实现3.应用分析4.进阶题。

2024-06-08 11:05:53 858

原创 52 https

加密就是把明文(要传输的信息)进行一系列变换,生成密文解密就是把密文再进行一些列变换,还原成明文在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥(正确发声yue四声,平时都读yao四声)比如7是要发送的明文,5是密钥,把7和5计算一下得到密文发送给客户端,客户端拿到了秘钥5,就可以对密文再次异或得到要发送的数据7| 83版《火烧圆明园》,有人要谋反干掉慈禧太后,恭亲王依苏给慈溪第的折子,| | 内容只是家常,套上一张挖了洞的纸就能看到真实表达的意思。

2024-05-31 10:25:19 933

原创 51 html网页

上节内容的网页是hello world的字符串,但实际上网页应该是html格式的这种超文本标记语言,这一节完善一下网页的各种格式和内容。

2024-05-29 11:01:53 928

原创 50 http通用服务器

虽然我们说,应用层协议是我们程序猿自己定的但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用,http(超文本传输协议)就是其中之一。

2024-05-23 01:01:33 1062

原创 49 序列化和反序列化

理解应用层的作用,初识http协议理解传输层的作用,深入理解tcp的各项特性和机制对整个tcp/ip协议有系统的理解对tcp/ip协议体系下的其他重要协议和技术有一定的了解学会使用一些网络问题的工具和方法。

2024-05-20 17:48:21 840

原创 48 守护进程

运行简单的打印程序运行之后,会不断往屏幕上打印hello…,输入命令没有反应切换到后台运行后还是不断往屏幕打印,但可以正常接收命令了,说明标准输出并不能区分前台和后台当有用户登录的时候,就会形成一个会话,会话中有1个前台进程和n个后台进程。当上面的程序运行的时候,bash这个接收命令输入的前台进程会自动放到后台,test程序结束后又切换回来。

2024-05-17 15:30:44 611

原创 47 tcp网络程序

下面用到的API,都在sys/socket.h中bind ()myaddr初始化:1.整个结构体清零2.设置地址类型为AF_INET3.网络地址为INADDR_ANY,这个宏表示本地的任意IP地址,因为服务器可能有多个网卡,每个网卡也可能绑定多个IP地址,这样设置可以在所有的IP地址上监听,直到与某个客户端建立了连接时才确定下来到底用哪个ip地址4.端口号为SERV_PORT,可以定义为9999listen ()accept ()connect ()

2024-05-14 23:40:45 821

原创 46 udp网络程序

使用自定义函数类型,run调用实例出的函数,实现数据处理方法的自定义//定义函数类型。

2024-05-11 00:25:08 806

原创 45 套接字

认识ip地址,端口号,网络字节序等网络编程中的基本概念学习scoket,api的基本用法能够实现一个简单的udp客户端/服务端能够实现一个简单的tcp客户端/服务器(但链接版本,多进程版本,多线程版本)理解tcp服务器建立连接,发送数据,断开连接的过程。

2024-05-08 00:57:20 611

原创 44 网络基础

了解网络发展背景,对局域网/广域网的概念有基本认识了解网络协议的意义,重点理解TCP/IP五层结构模型学习网络传输的基本流程,理解封装和分用。

2024-05-06 23:39:34 829

原创 43 单例模式

单例模式是一种经典的,常用的,常考的设计模式针对一些常用场景,给定了相应的解决方案,这个就是设计模式。

2024-05-04 15:29:38 1247 1

原创 42 线程池

一种线程使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性能。线程池维护多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价,线程池不仅能保证内核的充分利用,还能防止过分调度,可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量线程池的应用场景:1.需要大量的线程来完成任务,且完成任务的时间比较短。WEB服务器完成网页请求这样的任务,使用线程池是非常合适的。因为单个任务小,任务数量巨大,可以想象一个热门网站的点击次数。

2024-05-04 11:51:15 300

原创 41 POSIX信号量

POSIX信号量和System V信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的,但POSIX可以用于线程同步31节说了信号量,信号量的本质是一个计数器。将共享资源从一个整体划分为很多不部分,就和电影院的座位一样,信号量就是资源总共的数量。信号量的获取就是一种对资源的预定机制,申请信号量成功,资源数量–,当数量为0时,申请失败。申请和释放就是PV操作。

2024-05-03 18:59:33 794

原创 40 生产者消费者模型

为何要使用生产者消费者模型,这个是用过一个容器解决生产者和消费的强耦合问题。生产者和消费者之间不需要通讯,通过阻塞队列通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列取,阻塞队列相当于缓冲区,平衡了双方的能力,用来解耦的上面超市的例子。消费者需要泡面的话不用去找供货商要货,而是去超市取。如果找供货商,消费者只需要一包,供货商开启生产设备只生产一包,多次这样很浪费效率也不高。

2024-05-02 23:49:42 1362

原创 39 死锁

1.死锁2.线程同步3.条件变量4.案例。

2024-05-02 23:27:34 21

原创 38 线程互斥

用时间换取安全加锁的表现:线程对于临界区代码串行执行加锁原则:尽量的保证临界区代码越少越好,串行执行的代码就越少,其他线程等的时间就越少。

2024-04-30 20:55:21 548

原创 37 线程控制

局部存储可以保存线程里调用流需要多次读取的值,不需要传入参数或调用函数就可以访问。

2024-04-29 11:54:43 778

原创 36 线程概念

线程是进程内的一个执行分支,线程的执行粒度比进程要细上面是进程的内存结构,地址空间是进程的资源窗口。当我们创建一个进程后,会拥有自己的pcb,地址空间和页表等,父子进程互相独立。如果这时我们创建一个进程,它拥有自己的pcb结构,代码和数据共用父进程的一部分,这样页表也可以用父进程的映射,不需要创建多余的内容就可以执行,把这种结构成为线程进程是承担分配系统资源的基本实体,线程是系统调度的基本单位以前说过,进程=内核数据结构(task struct)+代码和数据,这种说法不冲突。

2024-04-27 22:44:42 1223

原创 35 信号处理

如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,称为捕捉信号,由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:用户程序注册了SIGQUIT信号的处理函数sighandler。当前正在执行main函数,这时发生中断或异常切换到内核态,在中断处理完毕后要返回用户态的main函数之前检查到有信号SIGQUIT递达。

2024-04-26 11:45:22 1807 3

空空如也

空空如也

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

TA关注的人

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