
Linux
文章平均质量分 94
记录学习,交流学习~
皮皮蜥
每天都在加油中哦!
展开
-
视频点播项目
允许用户通过浏览器访问视频网站,浏览多个线上视频,并允许点开一个视频进行观看。同时,也可以对视频进行增删改查。本项目可用于课设以及个人编程技术锻炼。原创 2024-07-20 14:39:14 · 977 阅读 · 0 评论 -
boost搜索引擎
boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。boost网站提供了大量的文档,实现一个搜索引擎可以帮助我们在大量的文档中准确快速找到自己所需求的文档。原创 2024-06-09 13:43:56 · 1578 阅读 · 0 评论 -
一篇文章学会高级IO
IO是数据在传输时的一种动作描述,分为输入数据(I)和输出数据(O)两种动作。和一般而言,IO都需要维护一个收发数据的缓冲区,例如read、recv函数和write、send函数,它们的数据缓冲区都是由系统帮助创建的。对于C语言中常用到的scanf函数和printf函数,同样不需要用户自己去维护缓冲区(scanf的接收缓冲区由C语言库维护)。但是,也正是程序员无法过度干涉缓冲区的原因,IO的细节并不会直接暴露程序员,默认的一套IO机制在某些场景下可能并不合适。原创 2023-05-13 16:12:56 · 1666 阅读 · 3 评论 -
网络通信之网络层与数据链路层
讲在前面由于网络层和数据链路层息息相关,因此在讲解的时候会出现两者知识点各有穿插的情况出现,在讲解网络层时仅仅可能会涉及一些数据链路层的概念,并不会造成理解上的困扰。原创 2023-04-30 22:52:38 · 1945 阅读 · 1 评论 -
网络通信之传输层协议
传输层协议其实包括UDP协议和TCP协议,这个在之前写的一篇应用层协议文章中提到过,应用层的代码实现是要基于传输层协议的。话说回来,由于UDP是面向数据报的一种协议,因此可靠性不如面向连接和字节流的TCP协议。因此TCP被广泛应用于各种网络领域的传输层原创 2023-04-21 22:50:51 · 1474 阅读 · 1 评论 -
网络通信之应用层协议--Linux
简而言之,应用层协议是一种数据转换成字符串的转换方式,使得程序员可以按需传送相当复杂的数据结构。并且,协议可以由程序员自己规定,只要有人认同并使用该程序员的协议,那么就可以实现正常的网络通信了。经过网络发展的几十年,一些比较成熟的协议被几乎所有的程序员所认同,例如著名的http和https,都已经写好并投入使用好多年,作为网络协议的初始学习对象是再合适不过的,但在学习http与https相关协议之前,我们不妨试着自己写一个简单的协议,具体感受一下协议的定制过程,加深对协议的了解。原创 2023-03-27 21:45:33 · 721 阅读 · 1 评论 -
网络通信--Linux
网络通信是建立在多层协议之下,最终利用数据传输线路进行数据通信。首先必须要认识到,一般我们所使用的应用软件如QQ、微信来进行通信时,数据并不是简简单单的直接通过我们的软件跑到对方的软件那么简单,中间会经过一系列的包装与解包装才行。这就涉及到了分层传输的概念,有 OSI七层模型 和 TCP/IP四层模型,其中OSI模型是逻辑上的模型,并不是特别实用,因此大多采用TCP/IP四层模型。原创 2023-03-03 01:28:37 · 2336 阅读 · 2 评论 -
线程互斥与同步--Linux
线程的互斥保证线程安全,线程同步则可以有效避免多线程的饥饿问题,这两者在生产者与消费者模型中体现的非常明显,线程的互斥与同步对线程的应用至关重要,是使用多线程的基本功。对于生产者消费者模型,个人认为理解不同角色之间的关系是最重要的,其中关于并发的理解也必须认识到位:生产任务和消费任务是可以同时进行的!原创 2023-02-01 15:01:40 · 847 阅读 · 2 评论 -
线程控制--Linux
线程控制重点掌握pthread_create、pthread_exit、pthread_cancel、pthread_join、pthread_detach这几个函数就可以原创 2023-01-26 10:26:05 · 822 阅读 · 0 评论 -
进程信号--Linux
信号的三个重要知识点:产生、接收、处理。其中衍生出来了许多的附带知识点,重点掌握系统函数以及信号集相关的函数。原创 2023-01-17 13:11:33 · 887 阅读 · 0 评论 -
进程间通信--共享内存篇
共享内存字面理解就是进程间共同享有的存储空间,不同于管道通信,共享内存就像是进程自己的空间一样,不像管道文件还得使用文件描述符去访问文件,通过文件交流信息。共享内存则是实时信息交流,几乎不存在信息的中间转换。那么共享内存在哪里呢?就真的是在每个进程中都保留一份么?也不是,开辟的共享内存在整个内存空间中独一份,但是可以通过页表映射到不同的进程中去,让各个进程都能够看到这份资源,实现通信原创 2022-12-15 19:53:17 · 1995 阅读 · 0 评论 -
匿名管道、命名管道--Linux
管道就是文件。这句话才是最关键的,所有关于管道的操作都是围绕文件进行的。管道作为进程间通信方式的一种,算是比较基础的了。这算是我第一次接触进程间的通信方法吧,感觉之前学习的各种知识已经串起来了,继续努力😎!原创 2022-11-11 20:23:39 · 2074 阅读 · 4 评论 -
动静态库--Linux
大伙最开始接触计算机语言–C语言时,应该都是从printf(“Hello world!\n”)写起的吧(怀念捏😏)。当时只知道必须得写上头文件stdio.h,但是并不清楚为什么要这么做。后来随着逐渐学习,又了解到原来包含的头文件是C语言提供的库哇,但是也仅限于此了。库到底是干什么的,又是怎样的结构呢?库就像是一个打包器,将你所需要用的所有函数、宏等等全都包含在内。就比如上面使用到的printf函数,首先这肯定不是我们自己写的,我们也写不出这么底层的函数,因为这需要和硬件(键盘)建立联系。那么就只能依靠会写原创 2022-11-09 17:43:52 · 1020 阅读 · 1 评论 -
重定向(dup、dup2、dup3)--Linux
重定向的知识并不简单,首先得清楚文件描述符的概念,其次得知道进程替换的具体应用细节。并且还得熟练掌握dup函数族,实际应用还是比较重要的。我在整理这篇博客的时候也是又回头看了一下才疏通了知识脉络,希望正在学习的你能够从这篇文章中有所收获吧,有问题欢迎留言或私信,我们一起学习进步🐾。原创 2022-11-07 15:46:14 · 2562 阅读 · 1 评论 -
文件描述符与文件操作函数(open、write……)--Linux
文件描述符字面意思就是描述文件的符号。说起文件描述符,就得和进程联系起来讲。总所周知,对文件进行操作首先得在进程中打开一个文件,然后才能对文件进行读写更改属性之类的操作。说起来简单,但对于操作系统来说,做的事就比较多了。首先要解决的就是文件在一个或多个进程中以某种形式打开之后,文件怎么被管理起来。是的,文件只有被管理起来才能有序正常的被使用!由于被打开的文件隶属于被打开时所在的进程,因此文件的管理是操作系统透过进程来实现的,而文件在进程中被管理起来的形式就是文件操作符。原创 2022-11-04 23:38:57 · 1340 阅读 · 0 评论 -
进程控制--Linux
进程控制的内容很多,并且有很多细节需要注意,涉及的基础知识也是很广泛:进程地址、环境变量、系统函数调用等等。这部分知识就先分享到这了,以后估计会有扩展的内容,那肯定是以后再讲啦。嘴贫到此结束,再见😋。原创 2022-10-04 13:02:56 · 625 阅读 · 0 评论 -
进程地址空间--Linux
谈及进程,我们对进程的概念并不陌生,但对于进程所在的地方,我们得搞清楚。那么我们平常写的程序运行起来之后,所在的进程是直接放在了内存上吗?其实并不是,我们平常所看到的进程地址空间是程序地址空间,也叫虚拟地址空间。这种地址空间处理实际上是对内存空间的高效利用和保护,我们后面再讲。进程之间的独立性由于写时拷贝的存在,虽然父子进程共用一套地址空间,但只要一方写入,就会自动进行拷贝分离,这样就不会出现地址冲突的问题。虚拟地址设计思路让进程或者程序可以以种统一的视角看待内存!原创 2022-10-01 12:02:18 · 2995 阅读 · 0 评论 -
git三板斧--Linux
git的功能有很多,我在这里只写了本地文件的上传操作。以后有机会的话会继续更新😋。原创 2022-09-24 22:22:22 · 2647 阅读 · 0 评论 -
Linux下的文件权限管理
Linux操作系统下皆文件,这句话在我们学习Linux的时候会贯彻到底。同时,也从侧面说明了Linux的权限管理实际上就是文件的权限的管理。Linux的用户分为两种,一种是超级用户(root用户),一种是普通用户。提及用户的区别的原因在于超级用户对普通用户拥有着绝对的控制权。等会儿我们在下文谈及的普通用户的各种文件权限对于超级用户来说根本没用,超级用户不受限制。这也是超级用户的特殊性,因此下文再涉及到权限的讲解时,我们不考虑超级用户这一特殊情况。上面的文件属性最基础的涉及到文件的类型。在Linux操作系统下原创 2022-07-09 09:58:59 · 1628 阅读 · 0 评论