十九.Linux开发之根文件系统移植——根文件系统的原理

2023-05-16

有道云笔记地址:

详情看这里链接,记录太多,就不一一排版了。

http://note.youdao.com/noteshare?id=f9c7c1b589233d7b6ed661c3749f1ce8&sub=25EABCF0C60B4BCE89E8C1DFBE6B3072

 

一、Linux 文件系统简介

1.文件系统与根文件系统

根,可以理解为基础的意思。根文件系统是一种最基础的文件系统

我们知道在 Windows 系统下,磁盘被划分为 C、 D、 E 等各个盘,

同理, Linux 系统也可以将磁盘或 Flash 等存储设备划分为若干个分区,在不同的分区存放不同类型的 文件,比如我们 A8 开发板的 Nor Flash 中:在某个分区存放 uboot 的可执行文件;在某个分区存放内核映像文件,在另一分区存放根文件系统映像文件等。与 Windows 的 C 盘类似, Linux 也需要在一个分区上存放系统启动的必要文件,

比如内核启动运行后的第一个程序( init进程)、用于挂接文件系统的脚本、给用户提供操作界面的 shell 程序,应用程序所要依赖的库等,这些必要、基本文件的集合称为根文件系统,它们存放在一个分区中。

 Linux 系统启动后首先会挂载这个分区,这称为挂载( mount)根文件系统。

其他分区上的所有目录、文件的集合, 称为文件系统。因为其他的文件系统还没用到,所以在我们的 A8 开发板中只有根文件系统。

为什么需要根文件系统?

(1)init进程的应用程序在根文件系统上

(2)根文件系统提供了根目录/

(3)内核启动后的应用层配置(etc目录)在根文件系统上。

    几乎可以认为:发行版=内核+rootfs

(4)shell命令程序在根文件系统上。譬如ls、cd等命令

总结:一套linux体系,只有内核本身是不能工作的,必须要rootfs(上的etc目录下的配置文件、/bin  /sbin等目录下的shell命令,还有/lib目录下的库文件等···)相配合才能工作。

在嵌入式Linux应用中,主要的存储设备为 RAM(DRAM, SDRAM)ROM(常采用FLASH存储器)

常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

Linux的文件系统结构如下:

二、Linux根文件系统目录结构

从前面的讲解,我们知道文件系统是一个文件与目录的集合,那么根文件系统下的目录又有哪些呢?目录里的文件又有什么作用呢?这节提及的目录都是我们待会移植根文件系统时要用到的目录,为你在移植前先热热身。

 (1) /bin 目录 该目录下存放所有用户(包括系统管理员和一般用户)都可以使用的、基本 的命令,里面常用的命令有: ls、 cd、 mkdir、 rm、 kill、 ps、 cp、 mv、 cat、 chmod 等。

(2) /sbin 目录 该目录下存放系统命令,即只有管理员能够使用的命令,系统命令还可以存 放/usr/sbin、/usr/local/sbin 目录下。/sbin 目录中存放的是基本的系统命令, 它们用于启动系统、修复系统等。它里面常用的命令有: shutdown、reboot、fdisk、 fsck 等。不是急迫需要使用的系统命令存放在/usr/sbin 目录下。

 (3) /dev 目录 该目录下存放的是设备文件。设备文件是 Linux 中特有的文件类型,在 Linux 系统下,以文件的方式访问各种外设,即通过读写某个设备文件操作某个具体硬件。比如通过“ /dev/ttySAC0”文件可以操作串口 0,通过“ /dev/mtdblock0” 可以访问 MTD 设备( Nand Flash)的第 0 个分区。

 设备文件有两种:字符设备文件和块设备文件。在 PC 上用命令:

ls -l /dev/tty0 /dev/hdc

其中字母“ b”、“ c”表示这是一个块设备文件或字符设备文件;“ 22, 0”、“ 4, 0”表示设备文件的主、次设备号;主设备号用来表示这是哪类设备,次设备号 用来表示这是这类设备中的哪个。

 (4) /etc 目录 该目录下存放各种配置文件。对于 PC 机上的 Linux 系统, /etc 里的目录和 文件非常多。这些目录、文件都是可选的,它们依赖于系统中所拥有的应用程序, 依赖于这些程序是否需要配置文件。

 (5) /lib 目录 该目录主要存放共享库,共享库用于启动系统、运行根文件系统中的可执行 程序,比如/bin、 /sbin 目录下的程序。

 (6) /proc 目录 在内核启动之前,这是一个空目录,常作为 proc 文件系统的挂载点。 proc 文件系统是个虚拟的文件系统,它没有实际的存储设备,在内核启动之后, /proc 目录里面的目录、文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件来控制系统。

 (7) /tmp 目录 用于存放临时文件,通常是空目录。一些需要生成临时文件的程序要用到 /tmp 目录,所以/tmp 目录必须存在并可以访问。

三、制作ext3格式的根文件系统

1、mke2fs介绍

(1)mke2fs是一个应用程序,在ubuntu中默认是安装了的。这个应用程序就是用来制作ext2、ext3、ext4等格式的根文件系统的。

(2)一般用来制作各种不同格式的rootfs的应用程序的名字都很相似,类似于mkfs.xxx(譬如用来制作ext2格式的rootfs的工具叫mkfs.ext2、用来制作jffs2格式的rootfs的工具就叫mkfs.jffs2)

(3)ubuntu14.04中的mkfs.ext2等都是mke2fs的符号链接而已。

2、动手制作ext2格式的根文件系统

(1)创建rootfs.ext2文件并且将之挂载到一个目录下方便访问它

参考资料:http://blog.csdn.net/zhengmeifu/article/details/24174513

我们选择的是在这个目录下创建  porting_x210/rootfs,使用如下命令

dd if=/dev/zero of=rootfs.ext2 bs=1024 count=2048

losetup  /dev/loop1 rootfs.ext2

mke2fs -m 0 /dev/loop1 2048

mount -t ext2 /dev/loop1 ./rootfs/  (在当前的目录下需要创建一个rootfs文件这句命令才能正确执行)

消除错误影响:(如果执行上面用的ext3格式,这里想要制作ext2,就用下面这两句命令消除之前的影响)

umount /dev/loop1 

losetup -d /dev/loop1

(2)我们向镜像中写入一个普通文件linuxrc(包括下面的nfs挂载实验,都是一个没有任何作用的linuxrc文件,所以,挂载后肯定提示linuxrc失败。)

使用命令:touch linuxrc

这个文件就会成为我们制作的镜像中的/linuxrc。内核挂载了这个镜像后就会尝试去执行/linuxrc。然后执行时必然会失败。我们将来实验看到的现象就应该是:挂载成功,执行/linuxrc失败。

(3)将来真正去做有用的rootfs时,就要在这一步添加真正可以执行的linuxrc程序,然后还要添加别的/lib目录下的库文件,/etc目录下的配置文件等。

(4)在rootfs的外面卸载掉,然后镜像就做好了。

umount /dev/loop1

losetup -d /dev/loop1

当卸载了之后,进入rootfs/就什么都看不到了,因为里面的东西就已经拿走了

将制作的rootfs.ext2文件拷贝到windows共享文件下进行下面的烧录

3、烧录制作的rootfs.ext2

遇到的问题:必须使用210的uboot,即重新烧录/bsp/uboot/目录下的uboot到sd卡,因为尝试使用我们移植的uboot,执行下面的刷机过程,都会出现报错:remote: failed to flash partition,即Flash分区失败;使用210的原版uboot,则不会出现这种问题)

(1)烧录过程参考裸机中第三部分的刷机过程。注意bootargs传参设置

> fastboot flash system rootfs.ext2

> fastboot  reboot

 (2)实验现象,通过tftp烧录zImage,查看内核启动信息

(遇到的问题:这里的内核一定要是/bsp/kernel下的原版zImage,其他版本的zImage下载进去,都会挂载失败。)

在/bsp/kernel下使用命令:cp arch/arm/boot/zImage /tftpboot/ -f

挂载成功,执行/linuxrc失败。很预期一样的现象,说明我们挂载成功。

四、nfs方式启动自制简易文件夹形式的rootfs

1、什么是nfs

(1)nfs是一种网络通讯协议,由服务器和客户端构成。

(2)nfs的作用。利用nfs协议可以做出很多直接性应用,我们这里使用nfs主要是做rootfs挂载。

开发板中运行kernel做nfs客户端,主机ubuntu中搭建nfs服务器。在主机ubuntu的nfs服务器中导出我们制作的文件夹形式的rootfs目录,则在客户端中就可以去挂载这个文件夹形式的rootfs进而去启动系统。

(3)搭建nfs服务器。(参考前面的搭建网络环境章节)

(4)配置/etc/exports 

sudo vi /etc/exports 

文本末添加 

/root/porting_x210/rootfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)

然后在终端中执行以下命令:

chmod -R 777 /root/porting_x210/rootfs/rootfs

sudo exportfs −r 更新

sudo showmount localhost -e  //导出本地nfs目录

sudo /etc/init.d/nfs-kernel-server restart  //重启 nfs 服务 

到这里,nfs环境已经搭建完成

(5)挂载测试

mount -t nfs -o nolock 192.168.1.141:/root/porting_x210/rootfs/rootfs /opt

//这样就把rootfs文件夹 以 NFS的方式挂载到了/opt下。 

//在opt中的操作就是在rootfs中的操作。

//注意最好不要挂载在/mnt目录下。最好在opt或者tmp下 

//用了mnt就会导致共享文件夹不能使用。

在opt目录下创建ab文件,在/root/porting_x210/rootfs/rootfs文件夹下也看见有这个ab,说明挂载成功。

(6)卸载(不用之后,一定记得卸载)

umount /opt/

2、配置内核以支持nfs作为rootfs

(1)设置nfs启动方式的bootargs

【NFS方式启动的bootargs】

【注意!在串口终端中需要手动修改bootargs 】 

代码解读: 

//根文件系统在:/dev/nfs 

//nfsroot=192.168.1.141:/root/s3c2440/build_rootfs/aston_rootfs 

linux的地址 主机的目录 

(故我们的主机目录是:/root/porting_x210/rootfs/rootfs)

//ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off 

开发板ip: 主机ip : 网关 : 子网掩码:主机网卡:off

故我们使用nfs需要设置的bootargs 如下:

setenv bootargs root=/dev/nfs nfsroot=192.168.1.141:/root/porting_x210/rootfs/rootfs ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off  init=/linuxrc console=ttySAC2,115200

使用tftp烧录zImage后,显示如下,原因是在menuconfig没有开启对NFS的启动支持

(2)在menuconfig中配置支持nfs启动方式

按照如下方法设置make  menuconfig,

设置保存,拷贝同步zimage到tftpboot文件下,

从新烧录zimage启动如下:说明挂载rootfs成功,linuxrc失败。

3、总结

(1)nfs方式启动相当于开发板上的内核远程挂载到主机上的rootfs

(2)nfs方式启动不用制作rootfs镜像

(3)nfs方式不适合真正的产品,一般作为产品开发阶段调试使用

五、到底什么是linuxrc

1、/linuxrc是一个可执行的应用程序

(1)/linuxrc是应用层的,和内核源码一点关系都没有

(2)/linuxrc在开发板当前内核系统下是可执行的。因此在ARM SoC的linux系统下,这个应用程序就是用arm-linux-gcc编译链接的;如果是在PC机linux系统下,那么这个程序就是用gcc编译链接的。

(3)/linuxrc如果是静态编译链接的那么直接可以运行;如果是动态编译链接的那么我们还必须给他提供必要的库文件才能运行。

但是因为我们/linuxrc这个程序是由内核直接调用执行的,因此用户没有机会去导出库文件的路径,因此实际上这个/linuxrc没法动态链接,一般都是静态链接的。

2、/linuxrc执行时引出用户界面

(1)操作系统启动后在一系列的自己运行配置之后,最终会给用户一个操作界面(也许是cmdline,也许是GUI),这个用户操作界面就是由/linuxrc带出来的。

(2)用户界面等很多事并不是在/linuxrc程序中负责的,用户界面有自己专门的应用程序,但是用户界面的应用程序是直接或者间接的被/linuxrc调用执行的。用户界面程序和其他的应用程序就是进程2、3、4·····,这就是我们说的进程1(init进程,也就是/linuxrc)是其他所有应用程序进程的祖宗进程。

3、/linuxrc负责系统启动后的配置

(1)就好像一个房子建好之后不能直接住,还要装修一样;操作系统启动起来后也不能直接用,要配置下。

(2)操作系统启动后的应用层的配置(一般叫运行时配置,英文简写:etc)是为了让我们的操作系统用起来更方便,更适合我个人的爱好或者实用性。

4、/linuxrc在嵌入式linux中一般就是busybox

(1)busybox是一个C语言写出来的项目,里面包含了很多.c文件和.h文件。这个项目可以被配置编译成各个平台下面可以运行的应用程序。

我们如果用arm-linux-gcc来编译busybox就会得到一个可以在我们开发板linux内核上运行的应用程序。

(2)busybox这个程序开发出来就是为了在嵌入式环境下构建rootfs使用的,也就是说他就是专门开发的init进程应用程序。

(3)busybox为当前系统提供了一整套的shell命令程序集。譬如vi、cd、mkdir、ls等。在桌面版的linux发行版(譬如ubuntu、redhat、centOS等)中vi、cd、ls等都是一个一个的单独的应用程序。

但是在嵌入式linux中,为了省事我们把vi、cd等所有常用的shell命令集合到一起构成了一个shell命令包,起名叫busybox。

六、rootfs中还应该有什么

1、最重要的就是上节课讲过的/linuxrc

2、dev目录下的设备文件。在linux中一切皆是文件,因此一个硬件设备也被虚拟化成一个设备文件来访问,在linux系统中/dev/xxx就表示一个硬件设备,我们要操作这个硬件时就是open打开这个设备文件,然后read/write/ioctl操作这个设备,最后close关闭这个设备。

在最小rootfs中/dev目录也是不可少的,这里面有一两个设备文件是rootfs必须的

3、sys和proc目录。在最小rootfs中也是不可省略的,但是这两个只要创建了空文件夹即可,里面是没东西的,也不用有东西。这两个目录也是和驱动有关的。属于linux中的虚拟文件系统。

4、usr是系统的用户所有的一些文件的存放地,这个东西将来busybox安装时会自动生成。

5、etc目录是很关键很重要的一个,目录中的所有文件全部都是运行时配置文件。/etc目录下的所有配置文件会直接或者间接的被/linuxrc所调用执行,完成操作系统的运行时配置etc目录是制作rootfs的关键,所以后面下一个课程专门讲这个etc目录。

6、lib目录也是rootfs中很关键的一个,不能省略的一个。lib目录下放的是当前操作系统中的动态和静态链接库文件。我们主要是为了其中的动态链接库。

七、补充:VFS简介

1.什么是VFS

(1)VFS是linux内核的一种设计理念、设计机制。VFS就是vitrual file system,叫虚拟文件系统。

(2)具体的一些文件系统如FAT、NTFS、ext2、ext3、jffs2、yaffs2、ubi等主要设计目的是为了管理块设备(硬盘、Nand···)

(3)VFS是借鉴了文件系统的设计理念(通过文件系统将底层难以管理的物理磁盘扇区式访问,转换成目录+文件名的方式来访问),

将硬件设备的访问也虚拟化成了对目录+文件的访问。

所以有了VFS后我们可以通过设备文件(目录+文件名,譬如/dev/mmcblk0p2)的方式来访问系统中的硬件设备。

(4)以上可以初步看出VFS的一些厉害之处,但是VFS不止于此。

2、VFS的意义

(1)上面说过的对硬件设备的访问,将对硬件设备的访问和对普通文件的访问给接口统一化了(linux中一切皆是文件)。

(2)将操作系统上层(应用层)对下层不同文件系统类型的访问细节给屏蔽掉了。

因此如果没有VFS那我们写cp命令(其他命令也一样)的时候就不得不去考虑你cp的这个文件在什么文件系统类型下。

所以cp命令非常复杂,因此要考虑具体的文件系统类型。有了VFS后情况就不同了。VFS成了一个隔离层,隔离了下层的不同文件系统的差异性,对上层应用提供一个统一的接口。

(3)VFS将不同文件系统和下层硬件设备(块设备)驱动之间的细节也给屏蔽了。

不同类型的文件系统在本身设计时是不用考虑各种不同的硬件设备的具体操作差异的,这里有一个类似于VFS的设计理念。

Linux的文件系统结构如下:

3、VFS和我们学习的关系

(1)VFS机制和rootfs挂载,和其他文件系统的挂载都是有关联的。

(2)内核中有一些sys proc这种虚拟文件系统,这东西也是和VFS机制有关。

(3)/dev/目录下的设备文件都和VFS有关,所以学习驱动绕不开VFS。

加好友:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

十九.Linux开发之根文件系统移植——根文件系统的原理 的相关文章

  • Hadoop之MapReduce

    摘要 xff1a MapReduce是Hadoop的又一核心模块 xff0c 从MapReduce是什么 xff0c MapReduce能做什么以及MapReduce的工作机制三方面认识MapReduce 关键词 xff1a Hadoop
  • Linux常用命令

    摘要 xff1a 采用命令行模式操控Linux系统非常重要 本文总结Linux常用的命令 xff0c 包括命令的含义 xff0c 命令的用法以及命令的拓展 关键词 xff1a 命令行模式 Linux常用命令 给Linux系统下达命令 xff
  • Hadoop之HDFS文件操作

    摘要 xff1a Hadoop之HDFS文件操作常有两种方式 xff0c 命令行方式和JavaAPI方式 本文介绍如何利用这两种方式对HDFS文件进行操作 关键词 xff1a HDFS文件 命令行 Java API HDFS是一种分布式文件
  • R实战读书笔记四

    第三章 图形入门 本章概要 1 创建和保存图形 2 定义符号 线 颜色和坐标轴 3 文本标注 4 掌控图形维数 5 多幅图合在一起 本章所介绍内容概括如下 一图胜千字 xff0c 人们从视觉层更易获取和理解信息 图形工作 R具有非常强大的绘
  • R语言——数据分析的一把利剑

    R语言 xff0c 我把它称之为数据分析的一把利剑 为什么这么说呢 xff1f 先让我们看一下 xff0c 什么是数据分析 xff1f 所谓数据分析 xff0c 就是以商业目的为驱动 xff0c 所开展的获取数据 处理数据 分析数据 展示数
  • 【爱上Linux】第一课 Linux概述

    学习应该是快乐的事情 快乐的东西应该要分享开来 xff0c 人人都快乐 xff01 爱上Linux 第一课 Linux概述 在本课中 xff0c 和朋友们一起来思考这些问题 问题一 xff1a 谈Linux学习 xff1f 从四个方面来看
  • 链表的创建与遍历

    链表 xff0c 简而言之 xff0c 就是基于链式储存结构下的线性表 链表包括单向链表 双向链表以及循环链表 链表是一种很常用的数据结构 xff0c 其定义如下 xff1a 单向链表的定义 定义说明 xff1a 包括数据域和指针域 typ
  • Java异常机制

    Java异常 xff08 Exception xff09 又称例外 xff0c 是一种运行时错误 Java异常机制就是对于Java异常的处理方法 xff0c 使用Java异常机制能提升程序的容错性 xff0c 从而使程序更加健壮与安全 ja
  • Java序列化与反序列化

    Java序列化与反序列化是什么 xff1f 为什么需要序列化与反序列化 xff1f 如何实现Java序列化与反序列化 xff1f 本文围绕这些问题进行了探讨 1 Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程
  • Java语言中几个常用的包

    Java采用包结构来组织和管理类和接口文件 本文介绍Java语言类库中几个常用的包 xff0c 因为这几个包在软件开发与应用中经常需要用到 xff0c 其中有些包是必要的 若是离开它 xff0c 还真不能做事情了 第一个包 xff1a ja
  • 计算机网络

    Cname和A记录 CNAME和A记录 A记录 Address记录 xff0c 代表指向关系 www xx com 1 1 1 1 www yy com 2 2 2 2 CNAME cname 代表一种映射关系 www yy com www
  • AI芯片面试总结

    基础书籍有哪些 xff1f 重点章节以及概念 xff1f 计算机体系结构 量化研究方法 xff1b 计算机组成与设计 软硬件接口 xff1b deep learning 深度学习 xff1b python xff1b CMOS数字集成电路
  • Android的系统架构

    Android的系统架构采用了分层架构的思想 xff0c 如图1所示 从上层到底层共包括四层 xff0c 分别是应用程序程序层 应用框架层 系统库和Android运行时和Linux内核 图1 xff1a Android系统架构图 每层功能简
  • ensp实验一网络设备基本操作

    实验一 网络设备基本操作 一 实验目的 熟悉网络设备的基本配置 xff1b 掌握网络设备文件系统管理 xff1b 掌握设备的基本调试方法 二 实验学时及环境 1 实验学时 xff1a 2 2 操作系统 xff1a Windows 3 模拟环
  • sudo rosdep init出错 rosdepc update的解决方案

    https mp weixin qq com s VGs8oWdhHH6XsHcx21lN4Q 或者搜索 本文之后 xff0c 世上再无rosdep更新失败问题 xff01 如果有 小鱼就
  • pixhawk学习笔记---创建新的应用程序

    最近转到无人机领域的开发中 xff0c 感觉和以往搞android驱动差别比较大 xff0c 以前搞android驱动的时候网上的资料满天飞 xff0c 但是现在关于飞控相关的资料却少之又少 xff0c 一些资料都是从原理上入手 xff0c
  • 伽马贝塔函数

    在数理方程 概率论等学科经常遇到以下的含参变量的积分 xff0c 它们依次为第一类和第二类欧拉 xff08 Euler 1707 1783瑞士数学家 xff09 积分 xff0c 或依次称为贝塔 xff08 Bata xff09 函数和伽马
  • http-parser用法

    头文件说明 xff1a 解析类型定义 xff1a enum http parser type HTTP REQUEST HTTP RESPONSE HTTP BOTH 解析函数声明 xff1a void http parser init h
  • gazebo崩溃

    1 虚拟机下打开gazebo报错 xff1a VMware vmw ioctl command error Invalid argument INFO 1610283240 619937255 0 180000000 LeePosition
  • k8s中文网站

    https www kubernetes org cn doc 11

随机推荐

  • 【平衡车】PID控制原理到底如何理解?建议收藏!

    文章目录 前言PID算法PID算法的形成P算法 xff0c 即比例控制算法 I算法 xff0c 即积分控制算法D算法 xff0c 即微分控制算法PID总体的数学模型 xff1a 基于单片机的PID控制算法 xff1a 单片机中的PID算法的
  • 嵌入式C语言修炼之道.屏幕操作篇

    汉字处理 现在要解决的问题是 xff0c 嵌入式系统中经常要使用的并非是完整的汉字库 xff0c 往往只是需要提供数量有限的汉字供必要的显示功能 例如 xff0c 一个微波炉的LCD上没有必要提供显示 34 电子邮件 34 的功能 xff1
  • CDN—内容分发网络

    CDN 1 含义 CDN的全称是Content Delivery Network xff0c 即内容分发网络 CDN是构建在现有网络基础之上的智能虚拟网络 xff0c 依靠部署在各地的边缘服务器 xff0c 通过中心平台的负载均衡 内容分发
  • BeautifulSoup

    代码 xff1a from bs4 import BeautifulSoup 一个html格式的内容 doc 61 39 lt html gt lt head gt lt title gt Page title lt title gt lt
  • Ubuntu Server 22.04.1配置(配置root账号、设置固定IP、更改SSH端口、配置UFW、VM扩展磁盘后Ubuntu的扩容)

    为了能快速的创建虚拟机 xff0c 通过VM创建了一个2核CPU 4G内存 40G硬盘 xff0c 安装Ubuntu Server 22 04 1的虚拟机 xff0c 以便在需要的时候随时克隆一个新的虚拟机出来 在新的虚拟机克隆出来后可能会
  • 使用ado连接orical数据库

    使用ADO连接数据库有三种方法 xff1b 方案1 安装Orical数据库软件比方说说oracle 11g R2 32位软件 这里有一个需要注意的地方就是如果你编译的是win32如下图 xff0c 那么就必须要使用32位的数据库软件 其实在
  • QT操作 influxdb时序数据库(libcur)

    概述 最近在项目中需要用到influxdb 数据库 xff0c 当时使用了libcur库之后 xff0c 插入数据的速度一直不太理想 创建字表的速度 1W的话需要11Min xff0c 对于这样的时间完全达不到合格 经过研究进行了打包处理
  • linux中的环境变量

    临时添加环境变量的方法 exprort PATH 61 usr lib PATH export fnp 变量名称 61 变量设置值 参数说明 xff1a f 代表 变量名称 中为函数名称 n 删除指定的变量 变量实际上并未删除 xff0c
  • Linux(openEuler)没有界面连接互联网方法

    前言 系统版本openEuleropenEuler 22 03 LTS x86 64 dvd 我们在安装linux之后 xff0c 一般都是无界面的情况 大部分情况都是需要自己安装界面的 xff0c 如果路由器的情况下直接插上网络就好了 下
  • c#实现内存映射文件共享内存

    内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去 xff0c 在此之后进程操作文件 xff0c 就像操作进程空间里的地址一样了 xff0c 比如使用c语言的 memcpy等内存操作的函数 这种方法能够很好的应用在需要频繁处理一个文件
  • c#Gdi画图的两种方式

    用Graphics绘图的两种方法 在学习C 画图的时候非常的蛋疼 其中的一条原因是之前没有搞过 xff0c 其中之二是办公的环境有点差 这就是我找的2种学习非常蛋疼的原因 虽然是这样但是学还是要学的 本篇文章都是在xxx paint obj
  • 一个小巧的C++Log输出到文件类

    一个小巧的C 43 43 Log输出到文件类 xff08 转 xff09 作者 xff1a wangyin159 http www cnblogs com mazhenyu p 4139352 html 一个小巧的C 43 43 Log输出
  • beego创建项目

    span class token comment 安装beego框架 span go get u github com beego beego v2 span class token comment 安装bee工具 span go get
  • 我的C++回调函数的理解

    今天在看一个多线程下载文件的代码时 xff0c 让我很头痛 因为该程序中运用了大量的回调函数 在我们学习一种技术的时候我们就要去知道几个问题 1 回调函数是什么东西 xff1f 2 回调函数怎么开发 xff0c 怎么使用 xff1f 3 回
  • c++ 中文和十六进制的互转

    CString CHexAndStrDlg StrToHex CString strData 初始化 CString strTemp 61 34 34 int iLenth 61 strData GetLength char cArrDat
  • 一篇文章,中文发完英文发,算“一稿多投”吗?

    近期有作者问小编 xff08 www unionpub cn xff09 xff0c 为什么有人换种语言 xff0c 发表了两篇同样内容的文章 而不算 34 一稿多投 34 一稿多投 是被明确禁止的 xff0c 但上述 34 二次发表 的行
  • 【CCF推荐专区】计算机类优质SCI&EI好刊,期刊质量高,部分期刊仅有少量版面

    x1f308 智能传感类 xff08 TOP xff09 CCF C类 期刊简介 IF 7 0 8 0 xff0c JCR1区 xff0c 中科院2 1区 检索情况 SCI amp EI 双检 xff0c 正刊 xff0c CCF C类 征
  • 考研杭电非全计算机技术调剂上岸

    考研杭电非全计算机技术调剂上岸 简介初试考完心态复试写这个的目的 简介 昨天看见杭电考研群里说到传承 xff0c 我觉得很有价值 xff0c 所以打算也写了我的一些想法 xff0c 希望对你们有帮助 本人31岁 xff0c 有老婆有孩子 x
  • 各种滤波算法的比较

    原文地址 xff1a http www wtoutiao com p 1fe9dPI html xfeff 各种滤波算法的比较 数字滤波 digital filtering 数字滤波 digital filtering 用数字设备 xff0
  • 十九.Linux开发之根文件系统移植——根文件系统的原理

    有道云笔记地址 xff1a 详情看这里链接 xff0c 记录太多 xff0c 就不一一排版了 http note youdao com noteshare id 61 f9c7c1b589233d7b6ed661c3749f1ce8 amp