linux笔记
文章平均质量分 96
记录linux的学习笔记
dong132697
还在学习中,文章中的完整代码可以私聊我,无偿发。
展开
-
Linux调试器-gdb使用
提示:以下是本篇文章正文内容,下面案例可供参考GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。原创 2023-09-16 15:54:38 · 922 阅读 · 0 评论 -
UDP协议与TCP协议
所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。端口号(Port)标识了一个主机上进行通信的不同的应用程序。在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看)。原创 2023-12-27 11:12:13 · 937 阅读 · 0 评论 -
HTTPS协议
下面这个图为http和https的关系。HTTPS协议也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。我们在学习http协议时,也分析了http协议中传输数据都是明文传输,所以是不安全的,所以才会有了https协议,https协议会将http协议发送到网络中的数据先进行加密,然后再收到数据时再进行解密,这样在网络中传输的数据就是经过加密后形成的密文,这些数据就不是以明文的方式传输了。要了解HTTPS协议,我们就需要先了解加密和解密。加密就是把明文(要传输的信息)进行一系列变换,生成密文。原创 2023-12-22 13:44:35 · 709 阅读 · 0 评论 -
HTTP协议
平时我们说的一个网站的网址,其实就是说的URL。下面我们来分析一个网站的url。URL是统一资源定位器,即根据URL就可以定位互联网中唯一的一个资源。原创 2023-12-21 12:36:28 · 951 阅读 · 0 评论 -
linux网络版计算机
协议是一种 “约定”. socket api的接口, 在读写数据时, 都是按 “字符串” 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢?例如, 我们需要实现一个服务器版的加法器. 我们需要客户端把要计算的两个加数发过去, 然后由服务器进行计算, 最后再把结果返回给客户端。约定方案一:客户端发送一个形如"1+1"的字符串;这个字符串中有两个操作数, 都是整形;两个数字之间会有一个字符是运算符, 运算符只能是 +;数字和运算符之间没有空格;原创 2023-12-19 10:32:05 · 876 阅读 · 0 评论 -
linux网络编程套接字
文章目录一、预备知识1、IP地址和MAC地址二、简单的UDP网络程序在windows系统下运行客户端程序三、简单的TCP网络程序一、预备知识1、IP地址和MAC地址IP地址IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4IP地址是在IP协议中, 用来标识网络中不同主机的地址;对于IPv4来说, IP地址是一个4字节, 32位的整数;我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用原创 2023-12-16 13:19:08 · 786 阅读 · 0 评论 -
linux线程池
一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。需要大量的线程来完成任务,且完成任务的时间比较短。WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大,你可以想象一个热门网站的点击次数。原创 2023-12-04 13:26:52 · 923 阅读 · 0 评论 -
linux线程
在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。下面我们先来看一下之前我们学习的进程地址空间。原创 2023-11-13 17:23:46 · 196 阅读 · 0 评论 -
linux进程信号
你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时,你该怎么处理快递。也就是你能“识别快递”。当快递员到了你楼下,你也收到快递到来的通知,但是你正在打游戏,需5min之后才能去取快递。那么在这5min之内,你并没有下去去取快递,但是你是知道有快递到来了。也就是取快递的行为并不是一定要立即执行,可以理解成“在合适的时候去取”。在收到通知,再到你拿到快递期间,是有一个时间窗口的,在这段时间,你并没有拿到快递,但是你知道有一个快递已经来了。原创 2023-11-02 21:14:49 · 106 阅读 · 0 评论 -
linux进程间通信
当程序为单进程时,那么也就无法使用并发能力,就更加无法实现多进程协同了。而要是想要程序变为多进程的话,那么各个进程之间需要传输数据、同步执行流、消息通知等。所以进程间通信的目的就是解决这些问题。数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。原创 2023-10-27 17:39:08 · 163 阅读 · 0 评论 -
linux基础IO
经过前面的学习,我们知道了文件 = 文件内容 + 属性(也是数据),所以当我们创建了一个文件并没有给里面写内容时,此时该文件也占有了空间,因为文件的属性也需要空间来存储。所以我们对文件的所有操作就是:(1). 对内容。(2). 对属性。通过上面对文件类系统调用接口的使用,我们发现了这些接口都离不开一个变量,即open系统调用的返回值fd,那么这个fd是什么呢?通过上面的使用我们可以知道close、write、read接口就是靠这个fd来找到要操作的文件,其实这个fd就是文件描述符。原创 2023-10-21 11:43:47 · 292 阅读 · 0 评论 -
Linux进程控制
在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。原创 2023-10-03 19:21:18 · 159 阅读 · 0 评论 -
Linux进程概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库,shell程序等等)计算机管理硬件1. 描述起来,用struct结构体2. 组织起来,用链表或其他高效的数据结构系统调用和库函数概念在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。原创 2023-09-26 18:32:59 · 367 阅读 · 0 评论 -
Linux 软件包管理器-yum使用
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,原创 2023-09-15 20:55:25 · 317 阅读 · 0 评论 -
Linux编译器-gcc/g++使用
查看版本安装命令GCC(GNU Compiler Collection,GNU编译器套件)是由 GNU 开发的编程语言 译器。GNU 编译器套件包括C、C++、Objective-C、Java、Ada 和 Go 语言前 端,也包括了这些语言的库(如 libstdc++,libgcj等)。实际上,这个宏只是标志着编译器将会把代码按 C 还是 C++ 语法来解释,如上所述,如果后缀为 .c,并且采用 gcc 编译器,则该宏就是未定义的,否则,就是已定义。原创 2023-09-13 15:56:17 · 1796 阅读 · 0 评论 -
Linux编辑器-vim使用
我们知道之前我们在VS下写的.c文件要变成计算机硬件可以识别的二进制文件,需要经过以下的过程。我们使用VS开发工具在运行时感觉一瞬间.c文件就被编译成了可执行程序,这是因为VS为集成开发环境。集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。原创 2023-09-12 21:09:30 · 1215 阅读 · 0 评论 -
Linux权限问题
(1). Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。(2). Shell 既是一种命令语言,又是一种程序设计语言。(3). Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问 Linux 内核的服务。(1). Shell 脚本(shell script),是一种为 shell 编写的脚本程序,一般文件后缀为 .sh。原创 2023-09-09 15:05:23 · 184 阅读 · 0 评论 -
linux常见指令
在学习linux之前,一定要了解并且可以使用linux系统的常见指令,这样才能更好的进行一些操作。提示:以下是本篇文章正文内容,下面案例可供参考。原创 2023-09-08 17:31:03 · 233 阅读 · 0 评论