自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 无人机多任务寻径仿真软件与实验平台(6)

本篇文章是对整个项目前端部分的总结性概括前端应用层即前端软件,由前端界面,数据接口,坐标转换模块构成,实现了用户输入坐标,对坐标点进行图形化显示以供用户查看,将坐标汇总后以固定格式发送给算法模块,接受算法模块的数据并以图形化方式显示路径,用户选择路径发送到数据服务器存储的功能。坐标转换模块提供将室内动作捕捉系统坐标系下的坐标转换为无人机 NED 坐标系下坐标的功能。前端应用基于 React 框架开发,通过接口与云函数连接,进行数据传输等功能。

2022-06-09 02:45:59 245 1

原创 无人机多任务寻径仿真软件与实验平台(5)

使用react-router提供的组件,在app.jsx中整体布局使用了antd的栅格布局,Row组件代表一行,Col代表一列,span表示宽度NavLink标签的作用是改变浏览器的地址栏的路径,而Switch标签则是根据浏览器地址栏的路径,选择对应的Route标签对应的组件。点击菜单同时会修改当前的菜单状态值,当前选中的菜单项会高亮显示Point-list遍历redux的point数组显示,每个列表项显示一个坐标的基本信息,并包含一个删除按钮。删除按钮绑定了redux中的删除点操作。Path-lis

2022-06-09 02:32:05 157

原创 无人机多任务寻径仿真软件与实验平台(4)

redux的作用是,管理在多个组件之间共享的状态数据组件之间共享的数据共有两种:分别为坐标点数组、路径数组首先需要梳理状态数据的操作类型,添加到action-types.js文件中共有六种数据操作,其中前三种是坐标点数组的操作,后三种是路径数组的操作将每种数据对应的操作逻辑,添加到reducers.js文件中,需要为每一种数据写一个函数Point函数为坐标点的操作逻辑Add_point - 使用push方法,将新的点添加到当前状态中 需要传入的数据为坐标Remove_point –

2022-06-09 02:23:07 156

原创 无人机多任务寻径仿真软件与实验平台(3)

本篇主要记载了开发过程中需求的进一步明确以及技术选型和模块划分页面结构包含两个部分,列表和画布页面菜单有两个选项,坐标点和路径菜单切换时不改变页面结构,只改变显示的内容在坐标点页面,可以手动添加坐标点坐标点列表和路径列表均可删除任意数据react框架 – 显示页面redux – 状态管理react-router – 内容切换antd – UI库echart – 图表绘制App.jsx – 主模块Components – 组件Containers –容器(react-redux)Redux – 状态管理Api

2022-06-09 02:18:47 116

原创 无人机多任务寻径仿真软件与实验平台(2)

经过会议讨论与分工,我主要负责项目前端部分的相关工作。对本次项目的需求分析初步规划如下:

2022-06-09 02:01:28 67

原创 无人机多任务寻径仿真软件与实验平台(1)

无人机多任务寻径仿真软件与实验平台(1)

2022-05-23 20:04:39 120

原创 Linux内核文件系统14

2021SC@SDUSCsuper.c(1)接下来分析另一个核心部分super.c文件。这个文件中存的是文件系统里超级块(super_block)的相关函数,对于文件系统有极大的重要性。并且这个文件代码量也很大,还是分次进行介绍。锁排序注意i_mmap_sem (EXT4_I(inode)->i_mmap_sem)和i_mmap_rwsem (inode->i_mmap_rwsem)之间的区别页面错误路径:mmap_lock -> sb_start_page

2021-12-27 12:56:05 543

原创 Linux内核文件系统13

2021SC@SDUSCinode.c(4)/* * ext4_get_inode_loc在成功时返回一个针对inode底层buffer_head的额外refcount。 如果'in_mem'为真,则在内存中有重新创建该inode的磁盘版本所需的所有数据。 */static int __ext4_get_inode_loc(struct super_block *sb, unsigned long ino, struct ext4_iloc *iloc, int in_mem,

2021-12-24 15:43:33 1365

原创 Linux内核文件系统12

2021SC@SDUSCinode.c(3)/* * 强制为给定的 inode 分配所有延迟分配块。 */int ext4_alloc_da_blocks(struct inode *inode){ trace_ext4_alloc_da_blocks(inode); if (!EXT4_I(inode)->i_reserved_data_blocks) return 0; /* * 我们现在做一些简单的事情。 filemap_flush() 也将开始触发数据块的

2021-12-21 08:06:33 761

原创 Linux内核文件系统11

2021SC@SDUSCinode.c(2)/** 请注意,除非我们记录数据,否则我们不需要启动事务,因为我们应该从 ext4_page_mkwrite() 填充漏洞。 我们甚至不需要在有序模式下将 inode 归档到事务列表中, 因为如果我们写回通过 write() 添加的数据,inode 已经在那里, 如果我们写回通过 mmap() 修改的数据,没有人保证数据将在哪个事务中访问磁盘。 如果我们正在记录数据,我们不能直接启动事务,因为事务启动高于页面锁,所以我们必须做一些mag

2021-12-17 13:04:24 1193

原创 Linux内核文件系统10

2021SC@SDUSCinode.c(1)今天来分析inode.c文件。有了前面对ext4_jbd2.h、acl.h等头文件的分析做基础,今天的分析将相对简单。在看代码之前,首先要说一下inode数据结构。inode是Linux内核文件系统中最重要的数据结构之一,里面保存了文件的大小、文件块的大小、创建时间等参数,可以说,一个inode就代表了一个文件。因为软连接、硬连接的存在,指向一个文件的路径可能有多个,即一个文件可以有多个dentry,但是一个文件只能有一个inode。ext

2021-12-13 22:57:45 858

原创 Linux内核文件系统09

2021SC@SDUSC今天来分析balloc.c文件。balloc.c文件包含block的分配和回收例程,在文件系统属于比较底层的,理解起来会有些困难。以下是balloc.c文件的代码解读// SPDX-License-Identifier: GPL-2.0/* * linux/fs/ext4/balloc.c * * Copyright (C) 1992, 1993, 1994, 1995 * Remy Card (card@masi.ibp.fr) * Labora

2021-12-06 22:03:05 438

原创 Linux内核文件系统8

2021SC@SDUSC今天来分析ext4_jbd2.h 和 ext4_jbd2.c文件。以下是ext4_jbd2.h头文件的代码分析// SPDX-License-Identifier: GPL-2.0+/* * ext4_jbd2.h * * Written by Stephen C. Tweedie <sct@redhat.com>, 1999 * * Copyright 1998--1999 Red Hat corp --- All Rights Reser

2021-12-05 23:35:22 452

原创 Linux内核文件系统7

2021SC@SDUSC今天来分析ext4_extents.h 、 xattr.h 、 truncate.h 三个头文件,为以后分析inode.c核心文件打下基础。以下是ext4_extents.h头文件的代码分析// SPDX-License-Identifier: GPL-2.0/* * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com * Written by Alex Tomas &l

2021-12-05 20:48:53 866

原创 Linux内核文件系统6

2021SC@SDUSC

2021-11-21 22:24:01 638

原创 Linux内核文件系统5

2021SC@SDUSC

2021-11-14 22:15:05 1193

原创 Linux内核文件系统4

2021SC@SDUSC接上一篇的acl.h文件,今天来看ext4源码的acl.c文件部分,主要是一些acl权限控制的具体实现。首先需要说一下里面两个比较重要的结构体:acl结构体和posix结构体。鉴于acl结构体在上一篇已经讲过,所以以下部分只说一下posix结构体的实现:struct posix_acl { /*引用计数*/ atomic_t a_refcount; /*内部有几个acl项*/ unsigned int a_count; /*实际数据区*/ struct

2021-11-02 20:28:36 146

原创 Linux内核文件系统3

2021SC@SDUSC首先来分析一下ext4文件系统的acl.h文件(位于fs/ext4文件夹下)的源代码。先简单说一下什么是acl技术吧。acl(Access Control Lists,访问控制列表),是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。举个例子,比如说有三个用户在一个group里,分别是甲,乙,丙。甲跟乙的关系比较好,跟丙的关系不好,所以甲的文件想让乙查看,但不想让丙查看。可以让甲和乙再建一个group,但这就增加了不必要的开销

2021-10-20 21:21:07 211

原创 Linux内核文件系统2

2021SC@SDUSC上一条博文已经讲过,除了本身的Ext2之外,Linux支持多种文件系统(Ext4,FAT等),用户可以通过一个文件系统界面(系统调用)来操作不同的文件系统。从用户的角度看,我们并不需要关注文件系统的类型以及怎么进行具体的操作,这就是虚拟文件系统(VFS)。VFS为用户提供了一组系统调用,如读写文件reed()、write()以及移动文件指针lseek()等。那么,内核与不同的文件系统的接口是怎么实现的呢?这就要提到include\Linux文件夹下fs.h..

2021-10-11 15:27:26 108

原创 Linux内核文件系统1

2021SC@SDUSC一、概述 Linux系统主要由4个部分组成:内核、shell、文件系统和应用程序。内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。 文件系统中的文件是数据的集合。文件系统不仅保存文件中包含的数据,而且还保存文件系统的结构。它包含Linux用户和进程所看到的文件、目录、软链接、文件保护信息等所有信息。此外,它必须安全地..

2021-09-30 23:58:57 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除