- 博客(94)
- 问答 (1)
- 收藏
- 关注
原创 Linux内核(三)——内存寻址
这是因为段选择符的长度为13比特,所以总共有2^13个数值,但是0值的段选择符是无效的。段描述符的作用就是让CPU能够知道要访问的是内存的哪个位置,如下图中内存有一个段(比如数据段)是CPU要访问的,原本的方式是段寄存器中的段选择符指向描述符表中对应的段描述符,段描述符再指向内存中的段。②从段选择符的index字段计算段描述符的地址,index字段的值乘以8(一个段描述符的大小),这个结果与gdtr或ldtr寄存器中的内容相加(这个内容就是gdt或者ldt的地址,也就是其在内存中的位置)。
2024-12-05 18:02:14
1201
原创 使用VM为Linux扩展硬盘容量
情况说明:装了双内核,空间有点小,所以打算扩展硬盘容量,从虚拟机设置中将硬盘从50G扩展到100G。开机后发现进不去系统,开机界面一片黑。
2024-11-30 11:08:06
429
原创 Linux内核(二)——内核编译与安装
如果一个函数较大,会被反复调用,且没有特别的时间上的限制,我们并不赞成把它做成内联函数。内联函数必须在使用前就将其定义好,否则编译器就没法将这个函数展开。
2024-11-23 16:45:08
1792
原创 Linux内核(一)——Linux内核简介
单内核:单内核就是把它从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间,内核可以直接调用函数,这与用户空间应用程序没有什么区别。不仅如此,Linux还避其微内核设计上性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无须消息传递。内核的概念:内核(Kernel)是操作系统的核心部分,是操作系统中直接与硬件交互的部分。内核空间:内核空间是操作系统核心运行的环境,它直接与硬件交互,控制所有系统资源。
2024-11-22 17:14:50
2036
原创 Linux基础(二十一)——认识系统服务(daemons)
而实际执行的 systemd 启动脚本配置文件, 其实都是放置在 /usr/lib/systemd/system/ 下面的喔!基本的类型有包括系统服务、数据监听与交换的插槽档服务 (socket) 、 储存系统状态的快照类型、 提供不同类似执行等级分类的操作环境 (target) 等等。从 CentOS 7.x 以后, Red Hat 系列的 distribution 放弃沿用多年的 System V 开机启动服务的流程, 就是init 启动脚本的方法, 改用 systemd 这个启动服务管理机制。
2024-11-18 18:51:03
843
原创 Linux基础(二十)——程序管理与 SELinux 初探
而内存当中的数据又都是写入到/proc/* 这个目录下的, 所以啰, 我们当然可以直接观察 /proc 这个目录当中的文件。我们在上一个小节有提到所谓的“父程序、 子程序”的关系, 那我们登陆 bash 之后, 就是取得一个名为 bash 的 PID 了, 而在这个环境下面所执行的其他指令, 就几乎都是所谓的子程序了。从上面可以看出,使用bash新建一个子程序之后,多出来了一个进程,其PID为34743,其PPID(也就是父程序的PID)为34698,而这个PID就是原本bash的PID。
2024-11-18 15:12:03
1060
原创 Linux基础(十九)——例行性工作调度
它的主要特点是即使系统在指定的时间没有运行,也会在系统下次启动时补充执行错过的任务。2.如果 /etc/at.allow 不存在, 就寻找 /etc/at.deny 这个文件, 若写在这个 at.deny 的使用者则不能使用 at , 而没有在这个 at.deny 文件中的使用者, 就可以使用 at 咯;1.先找寻 /etc/at.allow 这个文件, 写在这个文件中的使用者才能使用 at , 没有在这个文件中的使用者则不能使用 at ( 即使没有写在 at.deny 当中);
2024-11-17 08:32:27
351
原创 Linux基础(十七)——Linux 帐号管理与 ACL 权限设置
ACL 是 Access Control List 的缩写, 主要的目的是在提供传统的 owner,group,others 的read,write,execute 权限之外的细部权限设置。ACL 可以针对单一使用者, 单一文件或目录来进行 r,w,x 的权限规范。
2024-11-16 21:08:29
800
原创 Linux基础(十六)——shell scripts
则可得到 0的值喔!shell script 是利用 shell 的功能所写的一个“程序 ( program) ”, 这个程序是使用纯文本文件, 将一些 shell 的语法与指令( 含外部指令) 写在里面, 搭配正则表达式、 管线命令与数据流重导向等功能, 以达到我们所想要的处理目的。**要注意的是, 因为 shell script 的执行方式是由上而下, 由左而右, 因此在 shell script 当中的function 的设置一定要在程序的最前面, 这样才能够在执行时被找到可用的程序段喔 **
2024-11-14 20:15:04
1119
原创 Linux基础(十四)——BASH
在 Linux 中,Bash(Bourne Again Shell)是一种 Unix Shell,也是 Linux 系统的默认命令行解释器。Bash 是 GNU 项目开发的自由软件,旨在兼容传统的 Bourne Shell(/bin/sh),同时加入了更多高级功能和增强特性。Bash 提供了一个交互式环境,用户可以在其中执行命令、脚本和管理系统。硬件、核心与shell的关系:内核就是一套软件,为了内核的安全不能直接修改操作内核,所以shell就是内核与应用程序之间的桥梁。Fle。
2024-11-11 16:15:04
2140
原创 Linux基础(十三)——vim编辑器
比如说我们在上一个小节谈到的编辑 /tmp/vitest/man_db.conf 这个文件时, vim 会主动的创建 /tmp/vitest/.man_db.conf.swp 的暂存盘, 你对 man_db.conf 做的动作就会被记录到这个 .man_db.conf.swp 当中喔!因为中文编码有 big5 与 utf8 两种, 如果你的文件是使用 big5 编码制作的, 但在 vim 的终端接口中你使用的是万国码( utf8) , 由于编码的不同, 你的中文文件内容当然就是一堆乱码了。
2024-11-09 17:00:33
453
原创 Linux基础(十二)——文件与文件系统的压缩、打包和备份
不过, 这些指令通常仅能针对一个文件来压缩与解压缩, 如此一来, 每次压缩与解压缩都要一大堆文件, 岂不烦人?单纯的 tar功能仅是“打包”而已, 亦即是将很多文件集结成为一个文件, 事实上, 他并没有提供压缩的功能, 后来, GNU 计划中, 将整个 tar 与压缩的功能结合在一起, 如此一来提供使用者更方便并且更强大的压缩与打包功能。之所以有这么多的类型的压缩文件,这是因为 Linux 支持的压缩指令非常多, 且不同的指令所用的压缩技术并不相同, 当然彼此之间可能就无法互通压缩/解压缩文件。
2024-11-09 15:21:41
726
原创 Linux基础(十一)——内存交换空间swap
当内存不足的时候, 为了让后续的程序可以顺利的运行, 因此在内存中暂不使用的程序与数据就会被挪到 swap 中了。所以, 早期在安装 Linux 之前, 大家常常会告诉你: 安装时一定需要的两个 partition , 一个是根目录, 另外一个就是 swap( 内存交换空间)。所以swap作用就是:所以swap作用就是:Swap(交换分区)是一种用于虚拟内存管理的机制,其主要作用是在物理内存(RAM)不足时,将一些数据暂时存储到硬盘的交换分区或交换文件中,帮助系统维持正常运行。
2024-11-08 21:44:11
1314
原创 Linux基础(十)——磁盘分区、格式化、检验和挂载
etc/fstab 是开机时的配置文件, 不过, 实际 filesystem 的挂载是记录到 /etc/mtab 与/proc/mounts 这两个文件当中的。但是, 万一发生你在 /etc/fstab 输入的数据错误, 导致无法顺利开机成功, 而进入单人维护模式当中, 那时候的 / 可是 read only 的状态, 当然你就无法修改 /etc/fstab , 也无法更新 /etc/mtab 啰~那怎么办?每个文件系统的 UUID 是唯一的,即使格式相同的两个分区也会有不同的 UUID。
2024-11-08 17:25:56
1229
原创 Linux基础(九)——文件系统操作
从上图可以看出,符号链接的时候,是直接新建一个链接文件,这个链接文件的inode为1,这个新文件有自己的block。的实体链接时,就是在另一个目录(如/root)新增一个记录,并增加一个inode(即1号inode),从1号inode找到档案实际内容的过程和2号inode一样。从上面可以看出,有的文件系统可用大小为0,如 /proc等,因为这些目录是存在于内存当中的,所以是不占用磁盘空间,可用的就是0了。的inode,即号码为real的inode,接下来这个inode会到其对应的block读取对应的内容。
2024-11-07 16:53:18
310
原创 Linux基础(八):EXT与XFS文件系统简介
挂载(Mount)是在操作系统中将一个存储设备(例如硬盘分区、光盘、U盘、网络文件系统等)连接到目录树的过程,使得用户可以通过文件系统路径访问该设备上的内容。挂载之后,设备上的文件和目录将被映射到操作系统的文件系统结构中,从而变得可访问。Tips:挂载点必须是目录。
2024-11-07 11:50:05
1605
原创 Linux基础(七):Linux文件与目录管理
当我们在执行一个指令的时候, 举例来说“ls”好了, 系统会依照PATH的设置去每个PATH定义的目录下搜寻文件名为ls的可可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可可执行文件, 那么先搜寻到的同名指令先被执行!从上面的结果可以看出,使用fle账号进行复制时,文件的User和Group都是fle,这是因为cp命令希望的是用什么账号进行复制操作后,这个复制的文件应该是属于这个账号的。cp不加任何选项的情况下,是不会复制文件的User、Group的,文件的创建时间也会不一样。
2024-10-31 17:01:12
1196
原创 Linux基础(六):linux目录配置
不同的Linux发布版本的目录都是类似的,这是因为Linux系统的目录配置有一个大概的标准——Filesystem Hierarchy Standard( FHS)。FHS规定了目录有4种交互形态:①可分享的: 可以分享给其他系统挂载使用的目录, 所以包括可执行文件与使用者的邮件等数据, 是能够分享给网络上其他主机挂载用的目录②不可分享的: 自己机器上面运行的设备文件或者是与程序有关的socket文件等, 由于仅与自身机器有关, 所以当然就不适合分享给其他主机了。
2024-10-12 22:24:16
1312
原创 Linux基础(五):linux文件种类与扩展名
Linux的文件是没有所谓的“扩展名”的。文件能否执行不像window用exe来标志,而是取决于有无x权限(当然文件本身要有执行码)。但Linux还是仍然希望可以借由扩展名来了解该文件是什么东西, 所以, 通常我们还是会以适当的扩展名来表示该文件是什么种类的。
2024-09-29 22:55:33
699
原创 Linux基础(四):文件权限与目录配置
linux下每个文件都有三种权限类别,分别为使用者(User)、群组(Group)、其他人(Others)。这三种权限类别针对的是账号,也就是登录这个Linux系统的用户的账号(一个Linux服务器会有多个账号登录使用)。举个简单的例子,一台Linux服务器上有5个账号,分别为:王大毛、王二毛、王三毛、张小猪、天神(root)。现在有一个王大毛创建的文件WangDamao.txt,对于这个文件,其User为王大毛,Group为王大毛、王二毛、王三毛,Others为张小猪,当然root可以访问任何文件。
2024-09-29 22:25:20
1508
原创 Linux基础(三):安装CentOS7(系统安装+桥接联网+换源)
由于使用 GPT 的关系, 因此根本无须考虑主/延伸/逻辑分区的差异。CentOS 默认使用 LVM 的方式来管理你的文件系统。使用GPT进行分区:开机管理程序( boot loader) 使用CentOS 7.x默认的grub2软件。
2024-09-28 10:34:55
638
原创 Linux基础(二):磁盘分区
SATA接口的磁盘在Linux中名字为/dev/sdx。/dev 几乎是所有外接设备存放的文件夹:磁盘在Linux中的文件名是不确定的,比如拿一个U盘插到Linux主机,可能第一次名字为sda,拔插后名字为sdc,这取决于Linux主机识别到磁盘的顺序。
2024-09-28 10:27:25
1575
原创 java控制流程
用一对大括号括起来的就是一个块,块确定了变量的作用域。一个块可以嵌套在另一个块中。块外的变量在块内有效,而块内的变量在块外无效。
2024-09-05 16:43:46
356
原创 java输入与输出
首先需要构造一个与标准输入流System.in关联的Scanner对象。①Scanner.nextLine() 方法的工作原理是读取输入直到遇到行结束符(包括 \n 或 \r\n),然后返回该行中内容,但它不会包含行结束符。②Scanner.next() 读取的是下一个以空白字符(空格、换行符、制表符等)分隔的单个标记(token),而且不会包含任何空白字符。之所以会出现上面的错误,是因为只读取了My,后面的字符被用于nextInt函数。注意,当使用的类不在java.lang。
2024-09-05 11:36:54
486
原创 java变量与常量
变量声明格式为数据类型 变量名;有几个要注意的点:①变量名可以由货币符号、字母、下划线、数字组成。但习惯上一般由下划线、数字、字母组成。②可以不用显式地声明变量的类型,使用var代替,可以自动识别出数据类型。③声明一个变量之后,必须显式地初始化这个变量,该变量才能使用④java对变量声明的位置不敏感,变量声明应该靠近变量使用的地方。
2024-09-02 10:07:05
378
原创 java基本程序设计结构与数据类型
编写如下的Main.java上面的程序有几个要注意的点:①public 是访问修饰符,用来表示其他程序对Main类的访问级别。②类名使用驼峰命名法,如HelloWorld③java文件名必须和类名相同。④JVM在执行一个java文件形成的字节码文件时,其类文件必须包含一个main函数,一个类最多只有一个⑤main正常执行的退出码为0,如果要以其他退出码来终止程序,使用System.exit下面使用命令行来编译运行Main.java。
2024-09-01 17:35:03
376
原创 java编辑器——IntelliJ IDEA
java编辑器有两种选择——IntelliJ IDEA和VsCode。其中IntelliJ IDEA现在是企业用的比较多的,是专门为java设计的,而VsCode则是通过插件来实现Java编辑的。
2024-09-01 10:28:15
1429
1
原创 window+anaconda+pytorch+vscode+python调试
在window环境下,从anaconda创建pytorch环境到python在vscode上调试的完整配置过程
2022-11-02 19:07:06
1412
原创 Deep Residual Learning for Image Recognition浅读与实现
Deep Residual Learning for Image Recognition浅读与实现
2022-07-27 18:40:30
2057
5
原创 解决QTCreator使用VS编译中文乱码错误
1、错误现象2、错误原因QT采用UTF-8编码,而用vs编译在window上运行需要ANSI编码。3、解决方法使用notepad++将所有cpp文件和头文件转化为ANSI编码。回到QT再次点击锤子已经不会报错了。
2022-03-12 23:21:11
1334
原创 Esp8266的Flash读写操作以及Flash上传文件
1、Flash的读写操作Esp8266的Flash为4M,其中1M用于存储程序,其他的空间有一部分用于系统,3M中剩下的大部分空间可以用来存放文件。#include <FS.h>String file_name = "/Fle/note.txt"; //被读取的文件位置和名称,放在/Fle文件夹下void setup() { Serial.begin(9600); Serial.println(""); Serial.println("SPIFFS format star
2021-11-13 20:46:19
8112
3
原创 解决esp8266无法连接手机和电脑热点的问题
1、硬件平台我使用的是Esp8266 NodeMcu(Esp-12s)2、开发环境Arduino IDE3、开发板型号选择4、AP模式#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库 const char *ssid = "Fle"; // esp8266建立的wifi名称 const char *password = "gxd001213";
2021-11-13 00:18:56
17522
5
原创 相机姿态估计
目录一、相机姿态估计原理二、相机姿态估计原理实现一、相机姿态估计原理首先介绍一下什么是世界坐标系和相机坐标系——世界坐标系是自己定义的一个坐标系,这里我定义世界坐标系是X轴垂直屏幕指向人,Y轴水平向右,Z轴竖直向上。相机坐标系有统一的规定,如图所示,x轴平行于相机镜头水平向左,y轴平行于相机镜头向下,z轴垂直于镜头水平指向人。我们求相机在世界坐标系中的姿态的需求往往就是求一个相机坐标下的点在世界坐标系下的坐标,或者是一个世界坐标系下的点在相机坐标系的坐标。首先思考一下为什么能在一个确定的世界坐标系
2021-10-16 17:02:43
8379
9
空空如也
树莓派4b拍照耗时问题,注意不是延迟问题
2022-03-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人