自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络基础(下)socket套接字 UDP/TCP网络通信

n 对应是 network(网络)h 对应是 host(主机)s 对应是 short(16位)l 对应是 long(32位)表示面向字节流(sock_steram(tcp))还是面向用户数据报(sock_dgram(udp))客户端的端口推荐是不主动绑定策略,这样可以尽可能的避免端口冲突,让系统选择合适端口绑定,因此不固定。HTTP协议是应用层协议 在传输层基于TCP协议实现(可靠是TCP提供的 TCP提供字节流传输)IP协议是网络层协议 TCP和UDP协议在网络层都是基于IP协议的(实现数据报传输)

2024-02-16 15:27:38 796

原创 网络基础(上)

MAC:MAC地址是物理网卡硬件地址,在出厂时就会设定,MAC地址与网络无关 不能修改,它的大小是6字节,用于识别相邻设备,在链路层完成相邻设备之间的数据传输。每个网络都会有不同的网段,网段是该网络的标识,在该网络中分配的IP地址都会带有网段标识,标识自己所属网络,这样路由器才能进行路径规划,协议分层: 7层,自下而上为,物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。令牌环网:在局域网的中存在一张令牌,只有持有令牌的计算机才能在局域网中发生消息,这张令。

2024-02-14 22:37:33 758

原创 生产消费者模型 线程同步 条件变量 信号量 锁 线程池 单例模式

条件变量 信号量用于进程间通知和唤醒互斥锁 读写锁用于对共享资源的安全访问条件变量需要搭配互斥锁使用,信号量不需要(仅仅做出判断)信号量既可以实现同步还可以实现互斥(自带计数器可以实现条件判断进行操作)条件变量在等待被唤醒时需要重新对条件进行判断(循环判断 因为多线程访问)mutex(挂起等待锁),cond(条件变量),sem(信号量) 这三个是常用的无锁化编程方法:原子性操作 只有一个生产者和消费者 rcu(版本更新)cas(自认为不会更改数据)

2024-02-13 15:01:18 586

原创 多线程 锁 上

也就是说现在的操作大体为:某个线程访问某数据 进行到对该数据更改(使用)时 另一条线程也访问该数据 第一条线程挂起(等待)第二条线程对数据更改完后 第一条数据继续更改 并不会考虑数据实际情况。当多个线程交叉执行并使用同一个数据时 并不会考虑数据数量 容易造成负数据(数据不一致 抢票系统可以很好的体现)这是单个锁的使用 用完销毁(必须)然后再创建 再销毁 太麻烦 有全局的 创建一次就好。多个线程访问临界资源时 只能当前线程执行完 才能执行下一条线程(原子性)。不返回静态或全局数据 只调用参数。

2024-02-06 15:50:04 207

原创 线程(轻量级进程)

进程比线程安全是不会公用一个堆 线程会同步消耗少 进程之间通信需要调用内核接口 线程没有资源 只是调度 进程资源由系统分配。TCB:线程控制块 (和PCB一样 所以Linux直接使用PCB管理进程和线程 不用TCB)线程在进程虚拟地址空间有独立空间 本质和进程用一个地址空间 没有自己的地址 只是有栈空间。线程都共享一个虚拟地址空间 一个页表 进程中的绝大部分资源都是所有线程共享的。又称轻量级进程(LWP)(进程需要CPU执行全部 线程只需要执行一部分)线程是调度的基本单位 进程是资源分配的基本单位。

2024-02-04 15:50:40 144 1

原创 信号的生命周期

signal:更改信号处理方式注意:9号信号不会被更改。

2024-02-03 20:34:43 343 1

原创 本地通信 共享内存 消息队列 信号量

简述:一方把不同的通信内容一块块以队列的方式排好 另一方从队头一个接一个慢慢找(队头可跳)很随意 不是严格的先进先出。传递方式:内存中的共享内存空间 通过自身的物理地址 经页表映射到 双方进程的虚拟地址 然后二者就建立链接了。引子:不止一口锅,吃这口锅里饭的有多少人,这口锅是哪部分人的,这伙人之前有没有锅,这口锅给没给过去。IPC_CREAT | IPC_EXCL:不存在 创建 存在 错误返回(使用率高)最快的通信方式(无需进入内核进行系统调用 不需要内核态与用户态之间的数据拷贝)

2024-02-01 20:22:37 183

原创 匿名管道 命名管道

进程间通信就是两个及其往上的进程有着以下的行为数据传输:一个进程传数据给另一个进程资源共享:共享同一块资源进行通知:一个进程给另一个进程发消息进程控制:一个进程控制另一个进程。

2024-02-01 16:01:11 155 1

原创 C++11 学习笔记

return 0;

2023-10-02 19:45:01 71 1

原创 C++ 树(部分)

其实这些树原理都很容易说出来,重点在于去实现,以及各个问题的亲为。我暂时不会直接在本文中给出源代码,而是重点说原理和模拟实现误区。

2023-09-07 18:42:21 103 1

原创 C++ 继承&多态

当我们遇到两个功能相似缺仍有偏差的类,但是二者并不能互相代替,就可以使用继承手段,呈现了面向对象程序设计的层次结构,继承是类设计层次的复用class person //父类/基类public:protected:class student : public person //student就是派生类/子类 public是继承方式protected:int _stuid;

2023-07-31 12:57:09 106 1

原创 运算符重载

这里明显看出两个区别,先说 int 效果就是让函数构成重载,并没有实质意义,第二个区别 & 前置++是先++在返回,可以把参数直接带回去,后置呢,是先返回再++,所以不能直接带回去,建立一个变量带回去。可是直接放里呢,又会说 E0344 此运算符函数的参数太多 原因呢,就和拷贝构造函数一样,是带有隐形参数的,就是赋值对象,就是主比较对象,我愿意叫他主对象。对象,也可以说是结构体,怎么做到像 C 里的运算符那样运算方便呢。这里需要注意的最后一个点呢就是++,因为++有前置的,也有后置的。

2023-05-03 22:53:44 126

原创 Linux学习笔记 三

程序就是二进制文件,文件保存在磁盘中,想要运行程序,就要把磁盘中的文件转到内存中,因为不可能只有一个程序,所以要批量化管理,就产生了一个个数据结构,内核产生的数据结构(pcb)+内存中的代码和数据就是进程。当内存紧张时,操作系统会自主杀死一些休眠进程,当某一部分进程需要磁盘帮助进行拷贝时,会进入这个状态,如果被杀死,就会导致数据丢失,所以有这个状态。在我们平时输入指令时,也是一个进程,所有进程的父进程都是bash(命令行解释器,也是进程),每个进程有对应的pid,查看其父进程就是ppid。

2023-04-17 08:00:00 88

原创 Linux学习笔记 二

在硬件方面(输入设备就是键盘什么的,存储器就是内存,磁盘等等),所遵循的规则就是这套体系结构,红色部分是所谓的数据流动,就是上半部分的凹字,就是这样的凹,把每个用户链接了起来。因为\r把光标回调了,只能输出光标之前的内容,而后面的就留在缓冲区了,但是这里加一个函数fflush(stdout)就可以了。意思就是缓冲区内容全输出后清理。我认为对于现在所学的知识,能有一个浅显的认知就可以,因为一旦深入,就像泥潭一样,深深陷入久拔不出。第三个:打断点,b 行号,info b,查看所有断点,d 断点序号,删除断点。

2023-04-16 08:00:00 85

原创 Linux学习笔记 一

Linux(核心)作为一个操作系统,我们不能直接使用,就像windows,我们是通过图形化界面去操作,是会有错误提示的那种。相而,我们是通过shell以命令行的方式去使用核心,而Xshell也会去报错或者拒绝请求等,这种保护形式叫外壳。总的来说就是shell起了一个中间人的作用。Linux文件:当我们以ll去查询时候,就可以看到这些数据,这里文件类型需要说一下。Linux中,不用文件后缀区分文件类型,而是用文件属性第一列第一个字母查看。-:普通文件,文本,可执行,归档文件等。d:目录。

2023-04-15 21:18:45 88

原创 Linux环境变量 学习笔记

其实这个我是想接着上一篇写的,但是被说抄袭发不出来了,等发出来的我在接回去吧,我寻思我全是一个一个字码的咋能抄袭呢。说环境变量之前先说下孤儿进程孤儿进程就是父进程先于子进程退出,导致子进程成了“孤儿”,然后被操作系统收养,ppid也就成了“1”。并且在后台运行:关闭后台运行有两种,一种是killall+文件名,一种是kill -9 +进程序号。这里的父进程被其父进程回收,并没有成为僵尸进程。

2023-04-11 17:14:37 63

原创 链表的中间节点 力扣链表每日小解

小小的一题

2023-01-26 17:33:28 82

原创 C++ 学习笔记初阶

芜湖!开始啦

2023-01-07 15:21:59 231

原创 Linux基本指令 学习笔记

个人学习笔记啦

2022-12-02 22:25:40 278

原创 一句话解决汉诺塔(C语言递归)每日一练

看题目:编写一个程序,对于一个有n个盘子的汉诺塔,列举将这n个盘子从柱子 A 移动到柱子 C 需要的所有移动步骤》一句话时间:规律是二的n次方减一,步骤思想是把除了最大的盘子的所有盘子借助C都放在B上(第一步),然后把最大的盘子放在C上(第二步),最后把B上的所有盘子借助A放在C上(第三步)》#include <stdio.h>//显示步骤函数void move(char pos1, char pos2){ printf("%c->%c ", pos1, po

2022-04-25 11:55:36 1195

原创 一句话理解青蛙跳台阶(C语言递归求解)每日一题

阿巴阿巴

2022-04-25 10:52:57 1049

原创 超适合初学者刷的170道C基础编程题 选自牛客网 个人超详细解析(有彩蛋哟~)

在最开始先简单说下为什么刷题,可能大家在刚开始学的时候认识不到动手或者认识到但并不知道刷题的重要性。简单来说即十分巩固当前知识,让学到脑子里的知识学以致用。其次一点就是在最开始不再担心写代码的恐惧,认为其反而是一种乐趣。链接我发不出来,这里步骤给大家:进入牛客网主页->登录之后找到上方题库->中间偏上的在线编程->彩色的编程初学者模块写在前面:题解可能就没知识那么有趣了(个人认为),槽点太少哈哈哈哈。这个我打算分模块解,少就全说,多就经典。感谢大家观看,评论区轻喷谢谢。目录

2022-04-04 19:43:53 6139

原创 C语言初学 学习笔记

不是标题党,持续日日更ing

2022-04-01 11:13:51 6421 3

原创 日行一小步,坚持一大步

这篇文章是本人深思熟虑良久后,偶然看到自己导师的视频,醍醐灌顶,决心发表的一篇文章,算是作为一个小白正式决定走好接下来每一步路的第一个脚印。本文无任何干货知识,只是为己摆脱当前游闲状态的一个引子,分享下自己从开始到现在为时五个月的心路历程。在一次偶然的思考中,大一的我决定了自己的往后生活和生存手段,不在无所事事,奈何因因果果,速成的大学也是速成的老师。于是开始自学编程语言,懵懵懂懂的我在网络上找各种各样,花式百开的c语言教程(至于为什么不找别的我忘了),偶然遇到一位自称全b站最好的c语言教程的连续剧

2022-03-18 15:59:19 5798

空空如也

空空如也

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

TA关注的人

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