Day4:Linux系统编程1-60P
我的学习方法是:Linux系统编程(看pdf笔记) + Linux网络编程 + WebServer
01P-17P Linux相关命令及操作
-
cp -a dirname1 dirname2
复制目录cp -r dirname1 dirname2
递归复制目录 1 到目录 2这里-a 和-r 的差别在于,-a 是完全复制,文件权限,改动时间什么的也完全相同。
-
more filename
和cat
差不多,但是对于大文件查看很强势 -
head -n filename
查看文件前 n 行 -
tail -n filename
查看文件后 n 行 -
ln -s file file.s
创建一个软链接(相当于win的快捷方式),最好使用绝对路径 -
ln file file.h
创建一个硬链接,文件和硬链接的 Inode 是相同的,每个文件都有唯一的 Inode(硬链接一改都改,类似于cpp的引用) -
find命令
-type按种类,-name按名字 -
grep 命令:找文件内容
,与ps配合使用ps aux | grep 'cupsd'
-
gzip 和 bzip2
都是压缩命令,配合tar使用,rar压缩需要安装rar。 -
ifconfig
查看网卡信息
18P - 24P Vim相关(一刷不看)
25P-27P gcc相关
- gcc中间文件及步骤:
28P-37P 动态库和静态库
- 静态和动态的优劣:静态库在文件中静态展开,所以有多少文件就展开多少次,非常吃内存,但是这样的好处就是静态加载的速度快;使用动态库会将动态库加载到内存,10 个文件也只需要加载一次,然后这些文件用到库的时候临时去加载,速度慢一些,但是很省内存。(如何理解动态和静态:静态的写在源代码里的函数,相对 main 函数偏移是一定的,链接时,回填 main 函数地址之后,其他源代码 里的函数也就得到了地址,动态则用plt代替,之后加载的时候再替换掉 )
- 编译器只能隐式声明返回值为 int 的函数形式:int add(int ,int ); 如果函数不是返回的 int,则隐式声明失效,会报错:在使用自己编写的静态库时,需要在Main中加入函数声明 。但这个方法需要库的使用者知道库里的函数,完事儿一个一个加到代码里,不太行,解决方法:使用头文件加载静态库:这样防止多次展开静态库带来额外开销。
38P-40P GDB调试(跳过)
41P-46P Makefile(跳过)
47P-51P 系统调用open
- 系统调用是内核提供的函数,库调用是程序库中的函数;
open()
函数出错时,程序会自动设置 errno,可以通过 strerror(errno)来查看报错数字的含义 以打开不存在文件为例(如果成功fd会返回打开文件所得到对应的 文件描述符)
52P-53P 系统调用read/write(复制命令)
- 系统调用(write/read)和库函数调用(fgetc/fputc)的区别:read每次写n个字节,会疯狂进行内核态和用户态的切换,所以非常耗时。fgetc/fputc,有个缓冲区,预读入缓输出机制。
54P 文件描述符
- 文件描述符是指向一个文件结构体的指针。
- 在Linux中,文件描述符是一个非负整数,用于标识一个进程正在使用的文件或者其他输入/输出资源。每个进程都有一个文件描述符表,其中存储了该进程打开的文件描述符。标准输入、标准输出和标准错误输出分别使用文件描述符0、1和2。其他文件描述符从3开始递增。文件描述符可以用于读取、写入、关闭文件以及进行其他文件操作。标准输入输出一般指的就是键盘输入/输出;
55P 阻塞和非阻塞
- 阻塞/非阻塞是设备文件、网络文件的属性(常规文件没有阻塞的概念)。
- 比如读取
dev/tty
(这也是个文件),如下写法就是阻塞的:
/* 使用阻塞的read读取终端(标准输入输出)*/
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>int main(){char buf[10];int n;n = read(STDIN_FILENO, buf, 10);if(n < 0){perror("read STDIN_FILENO");exit(1);}write(STDOUT_FILENO, buf, n);return 0;
}
56P-57P 系统调用fcntl
fcntl(file control)
是一个系统调用,用来改变一个【已经打开】的文件的访问控制属性- 函数声明
int fcntl(int fd, int cmd, ... /* arg */ );
cmd表示命令,比如下面这句代码将阻塞改为非阻塞:其中F_SETFL设置,F_GETFL获取
flags = fcntl(STDIN_FILENO, F_GETFL); //获取 stdin 属性信息if(flags == -1){perror("fcntl error");exit(1);}flags |= O_NONBLOCK;int ret = fcntl(STDIN_FILENO, F_SETFL, flags);if(ret == -1){perror("fcntl error");exit(1);}
58P 系统调用lseek
lseek
函数通常用于随机访问文件,例如读取文件中的某个特定位置的数据。- 函数声明:
#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);
fd
是文件描述符,offset
是偏移量,whence
是偏移量的起始位置。whence
可以取以下三个值之一:
- `SEEK_SET`:偏移量相对于文件开头。
- `SEEK_CUR`:偏移量相对于当前位置。
- `SEEK_END`:偏移量相对于文件末尾。
返回值是新的文件偏移量(-1表示错误)
- 常用作用:使用lseek 获取文件大小、配合truncate拓展文件大小
- 使用lseek获取文件大小的例子:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[]) {if (argc != 2) {fprintf(stderr, "Usage: %s <filename>\n", argv[0]);exit(1);}int fd = open(argv[1], O_RDONLY);if (fd == -1) {perror("open error");exit(1);}off_t size = lseek(fd, 0, SEEK_END);if (size == -1) {perror("lseek error");exit(1);}printf("File size: %ld bytes\n", size);close(fd);return 0;
}
59P 传入传出参数
传入参数: 1. 指针作为函数参数。 2. 同常有 const 关键字修饰。 3. 指针指向有效区域, 在函数内部做读操作。
传出参数: 1. 指针作为函数参数。 2. 在函数调用之前,指针指向的空间可以无意义,但必须有效。 3. 在函数内部,做写操作。 4。函数调用结束后,充当函数返回值。
传入传出参数: 1. 指针作为函数参数。 2. 在函数调用之前,指针指向的空间有实际意义。 3. 在函数内部,先做读操作,后做写操作。 4. 函数调用结束后,充当函数返回值。
60P 目录和inode
- inode:它是文件系统中的一个数据结构,用于存储文件的元数据信息。每个文件在文件系统中都有一个唯一的
inode
号码,通过这个号码可以访问文件的元数据信息,例如文件的权限、所有者、大小、创建时间、修改时间等等。 - 在Linux文件系统中,文件名和
inode
号码是分开存储的。文件名存储在目录中,而inode
号码存储在文件系统的inode
表中。 - 一个文件主要由两部分组成,dentry(目录项)和 inode。所谓的删除文件,就是删除 inode,但是数据其实还是在硬盘上,以后会覆盖掉。(参考某些数据恢复措施)
相关文章:
Day4:Linux系统编程1-60P
我的学习方法是:Linux系统编程(看pdf笔记) Linux网络编程 WebServer 01P-17P Linux相关命令及操作 cp -a dirname1 dirname2 复制目录 cp -r dirname1 dirname2 递归复制目录 1 到目录 2 这里-a 和-r 的差别在于,-a 是完全复制…...
【HuggingFace】Transformers(V4.34.0 稳定)支持的模型
Transformer 4.43.40 版本是自然语言处理领域的一个重要工具包,为开发者提供了丰富的预训练模型资源,可以用于各种文本处理任务。在这个版本中,Transformer 支持了众多模型,每个模型都具有不同的优势和适用领域。下面是一个 Trans…...
oracle 导入数据泵常用语句
oracle常用语句 window10 导出导入数据泵文件导入数据泵文件导出数据泵文件 oracle表空间查询、剩余空间查询查询表空间大小及对应文件查询各个表空间大小扩充表空间 window10 导出导入数据泵文件 导入数据泵文件 首先将数据泵文件放在oracle安装得对应位置,例如&…...
tensorflow中的常见方法
1.tf.argmax(input,axis) tf.argmax(input,axis)根据axis取值的不同返回每行或者每列最大值的索引。 axis 0: 比较每一列的元素,将每一列最大元素所在的索引记录下来,最后输出每一列最大元素所在的索引数组。 test[0] array([1, 2, 3]) test[1] …...
【周末闲谈】“PHP是最好的语言”这个梗是怎么来的?
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言最早的出处关于PHP语言优点缺点网络评价 总结 前言 …...
四位十进制数字频率计VHDL,仿真视频、代码
名称:四位十进制数字频率计VHDL,quartus仿真 软件:Quartus 语言:VHDL 代码功能: 使用直接测频法测量信号频率,测频范围为1~9999Hz,具有超量程报警功能 演示视频:四位十进制数字频…...
Unity实现设计模式——策略模式
Unity实现设计模式——策略模式 策略模式是一种定义一些列算法的方法,这些所有的算法都是完成相同的工作,只是实现不同。它可以通过相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。 策略模式的 Strategy 类层次为 Contex…...
C++基础——数据类型
1 概述 在创建变量和常量的时候,都需要指定其数据类型,以便为其分配合适的内存空间。 其中宏常量不需要指定类型,是因为宏定义是字符替换。 2 整型 整型表示的是整数,C中的整型有以下几种: 数据类型占用空间取值范…...
文本自动输入/删除的加载动画效果
效果展示 CSS 知识点 绕矩形四周跑的光柱动画实现animation 属性的 steps 属性值运用 页面基础结构实现 <div class"loader"><!-- span 标签是围绕矩形四周的光柱 --><span></span><span></span><span></span>&l…...
PHP8的匿名类-PHP8知识详解
PHP8支持通过new class 来实例化一个匿名类。所谓匿名类,就是指没有名称的类,只能在创建时使用new语句来声明它们。 匿名类是一种没有命名的即时类,可以用于简单的对象封装和实现接口。 以下是PHP 8中匿名类的基本语法示例: $ob…...
WebKit Inside: CSS 样式表的匹配时机
WebKit Inside: CSS 的解析 介绍了 CSS 样式表的解析过程,这篇文章继续介绍 CSS 的匹配时机。 无外部样式表 内部样式表和行内样式表本身就在 HTML 里面,解析 HTML 标签构建 DOM 树时内部样式表和行内样式就会被解析完毕。因此如果 HTML 里面只有内部样式…...
<HarmonyOS第一课>从简单的页面开始——闯关习题及答案
加入鸿蒙应用开发公开课系统学习HarmonyOS应用开发 判断题 1.在Column容器中的子组件默认是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向,在Row容器中的组件默认是按照从左到右的水平方向布局的,其主轴的方向是水平方向。ÿ…...
视频下载plus+:一款强大的视频下载小程序
引言 在当下,随着视频号的火爆和用户数量的不断增加,视频下载已经成为了众多用户追求的目标。尽管市面上有很多视频下载助手,但是很多人对于如何下载视频还是摸不着头脑。今天我将向大家推荐一款我自己使用并且非常好用的视频下载小程序——…...
扭线机控制
扭线机属于线缆加工设备,线缆加工设备种类非常多。有用于网线绞合的单绞,双绞机等,有关单绞机相关算法介绍,大家可以查看专栏相关文章,有详细介绍,常用链接如下: 线缆行业单绞机控制算法&#…...
Android App启动优化之启动框架
android启动优化是个比较重要的部分,也是一大难题,一个优秀的app首先给人第一感觉就是启动速度,启动速度非常影响用户的体验,那么我们今天展开说说启动优化相关的问题。 我们先来简单分析一下启动过程、启动优化方向,…...
zookeeper入门篇之分布式锁
文章目录 前言非公平锁公平锁 前言 上一篇说过,zookeeper是一个类似文件系统的数据结构,每个节点都可以看做是一个文件目录,也就是说,我们所创建的节点是唯一的,那么分布式锁的原理就是基于这个来的。 代码仓库&…...
leetcode解题思路分析(一百四十九)1297 - 1304 题
子串的最大出现次数 给你一个字符串 s ,请你返回满足以下条件且出现次数最大的 任意 子串的出现次数: 子串中不同字母的数目必须小于等于 maxLetters 。 子串的长度必须大于等于 minSize 且小于等于 maxSize 。 首先能想到的是从MinSize开始遍历查找&am…...
你的librosa和scikit-learn打架了吗?
被这个问题困扰好久!!!!!!!!!!!!!! 我的原来版本librosa0.7.1 和 scikit-learn1.3.1 一直拆了按,按…...
理解自动驾驶感知技术
理解自动驾驶感知技术 文章目录 什么是自动驾驶感知技术?自动驾驶感知技术的关键组成部分1. 雷达(Radar)2. 摄像头(Camera)3. 激光雷达(Lidar)4. 超声波传感器(Ultrasonic Sensors&a…...
一款简化Python自然语言处理的开源库
迷途小书童 读完需要 3分钟 速读仅需 1 分钟 1 简介 TextBlob 是一个 Python 库,用于处理文本数据的自然语言处理(NLP)任务。它提供了简单且易于使用的 API,使得对文本进行分析、情感分析、词性标注、名词短语提取等任务变得更加简…...
常用Redis界面化软件
对于Redis的操作,前期有过介绍【Centos 下安装 Redis 及命令行操作】。而在Redis的日常开发调试中,可使用可视化软件方便进行操作。 本篇主要介绍Redis可视化的两款工具:Redis Desktop Manager和AnotherRedisDesktopManager。 1、Redis Desk…...
电脑散热——液金散热
目录 1.简介 2.传统硅脂与液金导热区别 3.特点 4.优点 5.为什么液金技术名声不太好 6.使用方法 1.简介 凡是对于电脑基础硬件有所了解的人,都知道硅脂是如今高性能电脑设备中必不可少的东西。芯片表面和散热器接触面,虽然肉眼看上去是非常光滑的金属…...
多线程锁-synchronized字节码分析
从字节码角度分析synchronized实现 javap -c(v附加信息) ***.class 文件反编译 synchronized同步代码块 >>>实现使用的是monitorenter和monitorexit指令 synchronized普通同步方法 >>>调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置…...
SpringCloud学习笔记-Eureka的服务拉取
假设是OrderService里面拉取Eureka的服务之一User Service 1.依然需要在该服务里面引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependenc…...
COLLABORATIVE DESIGNER FOR SOLIDWORKS® 新功能
共享和标注 优点:收件人在浏览器中访问共享文 件,无需安装3DEXPERIENCE 平台应用程序。 • 与 SOLIDWORKS 中来自您组织内部或外部的任何人无缝 共享您的设计。 • 直接将评论和标注附加到您的设计作品中,便于立即获得 反馈。 支持 SOLIDWO…...
AMD CPU 虚拟机安装 macos 系统的各虚拟机系统对比
软硬件环境: CPU:AMD R7 7735HS 8核16线程 显卡:AMD R680M 集显 内存:32GB DDR5 硬盘:2TB SSD Windows11 1、VMware Workstation 我用的是17 的版本,使用方便,对于macos 12及以下的安装在需要修改vmx 文…...
php实战案例记录(20)时间比较
在PHP中,有几种常见的方法可以进行时间比较。以下是其中的一些方法: 使用比较运算符:可以使用比较运算符(如小于"<“、大于”>“、小于等于”<“、大于等于”>“、等于”“、不等于”!"等)来比…...
web中缓存的几种方式
看了构建高性能的web站点一书,对其中的集中web缓存进行一个总结 1 应用程序实现的动态页面缓存 应用程序把动态文件生成的html文件缓存到文件服务器,以后用户请求动态文件,直接从文件服务器加载对应的静态缓存的html文件返回给用户ÿ…...
Stable Diffusion生成图片
画质 masterpiece,best quality,illustration,extremely detail CG unity 8k wallpaper,ultra-detailed,depth of field 杰作,最佳质量,插图,极度详细的8K壁纸,超高详细度,景深 画风 Chinese ink painting,water color…...
MySQL增删查改(进阶1)
一、数据库约束 约束:按照一定条件进行规范的做事; 表定义的时候,某些字段保存的数据需要按照一定的约束条件; 1.null约束 字段null:该字段可以为空;not null:该字段不能为空不指定的话就是…...
RabbitMQ-发布订阅模式和路由模式
接上文 RabbitMQ-工作队列 1 发布订阅模式 将之前的配置类内容都替换掉 Bean("fanoutExchange")public Exchange exchange(){//注意这里是fanoutExchangereturn ExchangeBuilder.fanoutExchange("amq.fanout").build();}Bean("yydsQueue1")publ…...
RabbitMQ-主题模式
接上文 RabbitMQ-发布订阅模式和路由模式 1 主题模式 #通配符 代表0个或多个。*通配符 代表 1个或多个 进行测试,修改配置文件 Configuration public class RabbitConfiguration {Bean("topicExchange") //这里使用预置的Topic类型交换机public Exchan…...
阅读文献小技巧
在科研中,文献的阅读是非常重要的一环。对于汇报论文的文献阅读,更是需要有一定的技巧。下面列出一些阅读汇报论文文献的技巧。 1.明确阅读目的和任务。在阅读每篇文献之前,需要明确阅读该文献的目的和任务,例如是否需要了解该领域的最新进展、寻找相关数据或案例等。是为…...
简易的贪吃蛇小游戏(以后或许会更新)C++/C语言
第一版: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <windows.h>#define WIDTH 20 #define HEIGHT 20int gameOver; int score; int x, y; // 蛇头的坐标 int fruitX, fruitY; // 食物的坐标 int tailX[100], t…...
23云计算全国职业技能大赛容器云-容器编排
erp 2.2.1 容器化部署 MariaDB [0.5 分]2.2.2 容器化部署 Redis [0.5 分]2.2.3 容器化部署 Nginx [0.5 分]2.2.4 容器化部署 ERP[0.5 分]2.2.5 编排部署 ERP管理系统[1 分] 2.2.1 容器化部署 MariaDB [0.5 分] 编写 Dockerfile 文件构建 mysql 镜像,要求基于 centos…...
哨兵(Sentinel-1、2)数据下载
哨兵(Sentinel-1、2)数据下载 一、登陆欧空局网站 二、检索 先下载2号为光学数据 分为S2A和S2B,产品种类有1C和2A,区别就是2A是做好大气校正的影像,当然数量也会少一些,云量检索条件中记得要按格式&#x…...
开启AI大模型时代|「Transformer论文精读」
论文地址: https://arxiv.org/pdf/1706.03762v5.pdf 代码地址: https://github.com/tensorflow/tensor2tensor.git 首发:微信公众号「魔方AI空间」,欢迎关注~ 大家好,我是魔方君~~ 近年来,人工智能技术发展迅猛&#…...
【小沐学前端】Windows下搭建WordPress(nginx1.25、PHP8.2、WordPress6.3、MySQL5.7)
文章目录 1、简介1.1 Nginx1.2 PHP1.3 WordPress1.4 MySQL 2、下载2.1 Nginx2.2 PHP2.3 WordPress2.4 MySQL 3、搭建环境3.1 Nginx3.2 PHP3.3 WordPress3.4 MySQL 4、配置WordPress4.1 选择语言4.2 配置数据库4.3 登录界面4.4 常规设置4.5 写作操作 结语 1、简介 WordPress是基…...
centos8 Error: Failed to download metadata for repo ‘appstream‘
2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL&a…...
键盘上F1至F12键的作用
多年来,我们习惯了最上排的12个按键,从F1到F12,它们被称为“快速功能键”,可以让你更轻松地操作电脑;但是,很多人可能从未使用过它们,也从来不知道它们的用途。那么今天,就向大家科普…...
2023年湘潭大学OJ作业2 2023年下学期《C语言》作业0x01-数学计算 XTU OJ 1080,1081,1082,1083,1084
第一题 #include<stdio.h> #include<math.h>int main() {double a3.2,b4.7;aa*a,bb*b;double ressqrt(ab);printf("%g\n",res);return 0; } 注意math.h头文件的使用,还有sqrt是双精度的 第二题 #include<stdio.h> #include<math…...
C/C++ 进程间通信system V IPC对象超详细讲解(系统性学习day9)
目录 前言 一、system V IPC对象图解 1.流程图解: 编辑 2.查看linux内核中的ipc对象: 二、消息队列 1.消息队列的原理 2.消息队列相关的API 2.1 获取或创建消息队列(msgget) 实例代码如下: 2.2 发送消息到消…...
python—如何提取word中指定内容
假设有一个Word,该Word中存在 “联系人” 关键字,如何将该Word中的联系人所对应的内容提取出来呢? 该Word内容如下所示: 要在给定的Word文档中提取出与"联系人"关键字对应的内容,可以使用Python的py…...
分享几个通用个人简历模板|行业通用
Home(https://cvjury.com/) 专业设计的简历模板。 在竞争激烈的就业市场中脱颖而出的有效策略。 侧重于向招聘人员传达独特的价值主张。 帮助创建引人注目的简历、求职信和LinkedIn资料。 面向毕业生和学生的个性化简历解决方案。 添加图片注释,不超过 140 字&…...
如何正确操作封箱机
前文跟大家分享过封箱机错误操作三案例,那么封箱机到底如何才能正确操作呢?今天就和您分享一下如何正确操作封箱机。 1、确定正确的电源电压进行接入。目前国内封箱机均采用220v 50hz电源电压,但也有一些定制型设备可能使用380v电源ÿ…...
mysql面试题7:MySQL事务原理是什么?MySQL事务的隔离级别有哪些?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL事务原理是什么? MySQL事务的原理是基于ACID(原子性、一致性、隔离性、持久性)特性来实现的,具体原理如下: Atomicity(原子性):事务…...
vue 项目打包性能分析插件 webpack-bundle-analyzer
webpack-bundle-analyzer 是 webpack 的插件,需要配合 webpack 和 webpack-cli 一起使用。这个插件可以读取输出文件夹(通常是 dist)中的 stats.json 文件,把该文件可视化展现,生成代码分析报告,可以直观地…...
C++ day2
1->x.mind 2->...
【Kafka专题】Kafka集群架构设计原理详解
目录 前言前置知识课程内容一、Kafka的Zookeeper元数据梳理1.1 zookeeper整体数据1.2 Controller Broker选举机制1.3 Leader Partition选举机制1.4 Leader Partition自动平衡机制*1.5 Partition故障恢复机制1.6 HW一致性保障-Epoch更新机制1.7 总结 学习总结感谢 前言 Kafka的…...
Docker 镜像的缓存特性
Author:rab 目录 前言一、构建缓存二、Pull 缓存总结 前言 首先我们要清楚,Docker 的镜像结构是分层的,镜像本身是只读的(不管任何一层),当我们基于某镜像运行一个容器时,会有一个新的可写层被…...