不只会敲代码
码龄2年
关注
提问 私信
  • 博客:63,339
    社区:1
    视频:68
    63,408
    总访问量
  • 62
    原创
  • 63,378
    排名
  • 279
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:辽宁省
  • 加入CSDN时间: 2022-11-18
博客简介:

2202_75305885的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    528
    当月
    15
个人成就
  • 获得408次点赞
  • 内容获得30次评论
  • 获得644次收藏
  • 代码片获得1,727次分享
创作历程
  • 19篇
    2024年
  • 38篇
    2023年
  • 5篇
    2022年
成就勋章
TA的专栏
  • 字符串函数
    1篇
  • Makefile
    1篇
  • 多线程
    3篇
  • IO
    1篇
  • 内存
    1篇
  • 浮点型
    1篇
  • 网络
    1篇
  • C++
    5篇
  • 数据结构
    1篇
  • 二叉树
    1篇
兴趣领域 设置
  • 编程语言
    c++c语言
  • 数据结构与算法
    算法数据结构链表
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

[linux]IO多路复用机制:select、poll、epoll

​首先我要向大家输出一个IO的概念:IO在我看来就是 等 + 拷贝(简化IO模型),等就是等待系统资源(设备。数据等)就绪(比如等待文件描述符就绪,等待数据就绪),拷贝就是拷贝数据资源(比如将你写的把内容将它从写缓冲区拷贝到读缓冲区,让用户可以正常读取)。如果想要IO速度快,减少等待时间是提高IO性能的关键。等待时间通常包括等待硬件资源(如磁盘、网络)就绪的时间以及等待操作系统调度的时间。在IO密集型应用中,多个IO操作可能同时进行。减少每个操作的等待时间可以显著提高整体吞吐量,因为更多的操作可以在相同的
原创
发布博客 2024.07.13 ·
830 阅读 ·
25 点赞 ·
0 评论 ·
32 收藏

[Linux]详细的Makefile使用教程(每一步都有例子)

一、Makefile的基本结构二、Makefile的工作原理三、Makefile的常用命令和选项:make命令,make clean,make -f file,make -C dir,make -n,make -s 四、Makefile中的变量:$(变量名) $@,$
原创
发布博客 2024.07.12 ·
7932 阅读 ·
42 点赞 ·
1 评论 ·
68 收藏

[Linux]fcntle将一个文件描述符从阻塞状态改为非阻塞状态

fcntl复制文件描述符F_DUPFD命令可以复制一个现有的文件描述符,并返回一个新的文件描述符。这个新文件描述符与原始文件描述符在底层引用的是同一个文件表项,即它们指向同一个打开的文件。获取/设置文件描述符标记:通过F_GETFD和F_SETFD命令,可以获取或设置与文件描述符相关联的特定标记,如FD_CLOEXEC(表示在exec调用时是否关闭该文件描述符)。获取/设置文件状态标记:通过F_GETFL和F_SETFL命令,可以获取或设置文件描述符的状态标记,如O_NONBLOCK(非阻塞模式)、
原创
发布博客 2024.07.12 ·
469 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

[Linux]五种IO模型(图文讲解+故事讲解)

五种IO模型:1.阻塞IO:在内核将数据准备好之前,系统调用将会一直等待,所有的套接字, 默认都是阻塞方式.阻塞IO是最常见的IO模型。2.非阻塞IO:也称为非阻塞轮询式IO,如果内核未将数据准备好,系统调用不会等待阻塞,会直接返回,且返回的是EWOULDBLOCK错误码。注意:使用非阻塞IO,一般要进行轮询操作,即反复的进行IO操作(如读写文件等操作,看看文件描述符是否已经就绪)直到操作完成,这对CPU是一个很大的消耗,一般只有特定的场景才使用。3.信号驱动IO:内核将数据准备好之后,发送SIGIO信号通
原创
发布博客 2024.07.11 ·
1093 阅读 ·
13 点赞 ·
0 评论 ·
30 收藏

[linux网络编程]UDP协议和TCP协议的使用

意思就是启动服务器,端口号为8888,这里在服务端我们没有设置ip, 只要端口号正确,任意IP都能和我们的服务器连接。这样做是为了确保结构体的所有未明确赋值的字段都被初始化为0,防止未初始化的内存导致的问题。这是为了确保结构体中的所有字段都被正确地初始化为默认值,避免使用未初始化的内存。函数用于将端口号从主机字节序转换为网络字节序(大端字节序),因为网络通信中通常使用网络字节序。结构体的所有字节设置为0,确保结构体的所有未明确赋值的字段都被初始化为0。函数用于将主机字节序的端口号转换为网络字节序。
原创
发布博客 2024.04.27 ·
1048 阅读 ·
8 点赞 ·
0 评论 ·
22 收藏

udp代码运行展示

发布视频 2024.04.27

[网络编程]socket嵌套字的一些常用接口

一、socket常用接口1.sockaddr_in2.socket3.bind4.listen5.accept6.connect7.send8.sendto9.recv10.recvfrom11.close二、 字节序之间的转换函数1. inet_ntoa 2. inet_aton 3.inet_addr 4.inet
原创
发布博客 2024.04.23 ·
1035 阅读 ·
10 点赞 ·
0 评论 ·
17 收藏

[C++]深入解析:如何计算C++类或结构体的大小

内存对齐是指将数据存储在内存中时,按照一定的规则让数据排列在规定的地址上,以提高数据访问的效率和速度。在C++中,结构体(类)内部的每一个成员变量都需要存储到内存中,因此需要进行内存对齐以保证内存的访问效率。1.第一个成员从在与对象偏移量为0的地址处开始存放。int i;第一个成员变量存放位置如图:2.其他成员变量要对齐到对齐数的整数倍的地址处。
原创
发布博客 2024.03.27 ·
480 阅读 ·
4 点赞 ·
0 评论 ·
7 收藏

[C++]内联函数(内联函数的概念,内联函数的特性,内联函数与宏的区别)

C++编译器会在调用内联函数的位置将内联函数展开,内联函数没有调用函数参数压栈的开销,内联函数可以提高程序的运行效率。首先给一个宏函数的列子供大家回忆回忆宏函数的写法。以inline修饰的的函数叫内联函数,
原创
发布博客 2024.03.26 ·
705 阅读 ·
8 点赞 ·
0 评论 ·
8 收藏

[C++]函数重载(什么是函数重载,函数重载的原理(底层怎么实现))

函数重载是指在同一作用域内,可以有多个功能类似具有相同函数名,不同参数列表(包括参数类型、参数个数、参数顺序)的函数。编译器会根据函数调用时提供的参数来决定调用哪一个具体的函数。注意:只有返回值类型不同并不构成函数重载!原因:编译器对函数名字修饰时(下面会讲)修饰后的函数名不会包含函数的返回值类型。
原创
发布博客 2024.03.26 ·
974 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

[C++]缺省参数(什么是缺省参数,怎么使用缺省参数,使用缺省参数时的注意事项)

在声明或者定义函数时为函数的参数指定一个默认值。在调用该函数时如果没有传递实参,则使用默认认值,否则使用指定的实参。
原创
发布博客 2024.03.25 ·
532 阅读 ·
14 点赞 ·
0 评论 ·
2 收藏

[C++]命名空间(命名空间的概念,命名空间的语法,是否要展开命名空间)

命名空间就是一个新定义的作用域,里面可以存放自定义类,变量,函数等,主要用来防止命名冲突。
原创
发布博客 2024.03.25 ·
465 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

[Linux]条件变量:实现线程同步(什么是条件变量、为什么需要条件变量,怎么使用条件变量(接口)、例子,代码演示(生产者消费者模型))

在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步。饥饿问题饥饿问题指的是某些线程由于某种原因无法获得它们所需要的资源或执行机会,导致它们长时间得不到处理,甚至永远得不到处理的现象。这种情况通常发生在多个线程竞争有限资源时,其中一些线程可能因为优先级过低、调度算法的不公平性、同步机制使用不当或其他原因而无法获得足够的执行时间。
原创
发布博客 2024.03.21 ·
4750 阅读 ·
29 点赞 ·
10 评论 ·
71 收藏

[Linux]互斥锁(什么是锁,为什么需要锁,怎么使用锁(接口),什么是死锁,怎么避免死,锁演示代码)

什么是锁?锁是一种同步机制,用于控制多个线程对共享资源的访问。通过锁,可以确保一次只有一个线程能够访问特定的代码段或数据,从而防止数据竞争和不一致。锁的主要目的是确保数据的一致性和线程安全性。为什么需要锁?需要锁的主要原因在于确保多线程或多用户环境中共享资源访问的原子性和数据一致性。在多线程应用中,若多个线程同时访问并修改同一资源,可能导致数据冲突、不一致甚至损坏。
原创
发布博客 2024.03.18 ·
1687 阅读 ·
31 点赞 ·
2 评论 ·
29 收藏

[Linux]多线程(在Linux中的轻量级进程(LWP),怎么使用线程(接口))

在Linux系统中没有线程的概念,只有轻量级进程(LWP)的概念,OS不会提供线程的接口,只提供轻量级进程的接口,那么我们怎么在Linux创建线程呢?原来Linux系统中提供了一个第三方库:pthread原生动态库,OS通过pthread原生动态库就可以创建线程。如图:编译链接、时应该链接pthread原生线程库(动态库)不会连接动态库的可以看我这篇文章。
原创
发布博客 2024.03.17 ·
1195 阅读 ·
30 点赞 ·
0 评论 ·
20 收藏

[linux]进程信号(信号的概念,信号的产生方式,信号的相关接口、指令,函数,信号怎么保存(原理),信号怎么处理)

信号是进程之间事件异步通知的一种方式,属于软中断。每个信号只有一个bit的未决标志,非0即1,不记录该信号产生了多少次,阻塞标志也是这样表示的。因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而在未决信号集中“有效”和“无效”的含义是该信号是否处于未决状态。
原创
发布博客 2024.02.27 ·
806 阅读 ·
28 点赞 ·
0 评论 ·
14 收藏

[linux]进程间通信(IPC)———共享内存(shm)(什么是共享内存,共享内存的原理图,共享内存的接口,使用演示)

共享内存区是的(进程间通信)IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。:共享内存没有进行同步与互斥!共享内存不会自动销毁,要手动销毁。
原创
发布博客 2024.02.22 ·
1645 阅读 ·
16 点赞 ·
0 评论 ·
15 收藏

shm演示视频

发布视频 2024.02.22

[linux]:匿名管道和命名管道(什么是管道,怎么创建管道(函数),匿名管道和命名管道的区别,代码例子)

我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。而匿名管道顾名思义,就是一种没有名字的“管道”。如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。命名管道是一种特殊类型的文件。
原创
发布博客 2024.02.07 ·
1494 阅读 ·
31 点赞 ·
0 评论 ·
33 收藏

[Linux]动静态库(什么是动静态库,怎么生成动静态库,怎么使用(连接)动静态库)

静态库本质就是将库中的源文件直接编译成.o目标二进制文件,然后打包。程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)
原创
发布博客 2024.01.30 ·
979 阅读 ·
20 点赞 ·
0 评论 ·
31 收藏
加载更多