- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 按照层序序列建立二叉树
需求现给出一个数字序列nums={1,2,3,4,5,6,7},请根据该数字序列按层建立二叉树举例:{1,2,3,4,5,6,7}构造的二叉树为:1/ 2 3/ \ / 4 5 6 7请给出具体的代码实现。代码实现#include<iostream>#include<vector>#include<queue>#include<string>using namespace std;ty
2021-06-17 17:30:29
1892
原创 LeetCode---547 省份数量
题目描述有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。解法采用并查集解决,并查集的主
2021-06-17 16:05:45
181
原创 vector申请固定大小内存时的问题
在C++类中,以如下方法声明vector,会报错: “expected parameter declarator”。class A{private: vector<int> aux(5); //意欲申请长度为5的vector};错误原因是:编译器无法区分该语句是成员变量声明还是成员函数声明。解决办法是:消除歧义。有以下三种方法:利用构造函数列表初始化class A{private: vector<int> aux;public: A(
2021-06-17 15:59:45
1131
原创 可信编译器构造途径简介
可信编译器基本介绍:可信编译具有两方面含义:一是编译器自身是可信的。即必须保证整个编译操作的可信性, 保证编译器在编译过程中不会给编译处理对象带来任何安全性问题, 防止恶意攻击者通过修改编译器, 在编译过程中对代码的原始语义进行篡改, 影响程序代码本身的可信性。编译器本身是一个可执行程序, 同样会遭受到攻击, 造成编译器自身的不可信。二是编译所得可执行程序代码是可信的。可信编译器除实现传统的编译功能外,还需对其编译对象的安全性进行检测加强、可信性进行验证, 确保系统安全、可靠运行。1. 主要构造途径
2021-06-03 13:47:50
473
原创 Makefile编写指南
1. 简介简单来讲,Makefile定义了一种编译和链接的规则,它会根据定义的规则在当前文件夹的目录下寻找编译的目标以及其依赖文件。Makefie的好处是可以极大的方便开发者对工程的管理,尤其是对大型的工程项目起到了方便管理,提高开发效率的作用。在完成Makefile的编写后,用户只需一个make指令便可完成整个项目的编译工作。2. Makefile的写法#写法target: prerequiries .... command目标(target)通常是要产生的文件的名称,目标的例子是可执行文
2021-06-03 09:47:05
414
原创 CLFS-8.2交叉编译版
1----Binutilsmkdir buildcd build…/configure --build=KaTeX parse error: Expected 'EOF', got '\' at position 9: LFS_BLD \̲̲--prefix=/tools…LFS –with-lib-path=/tools/lib –target=$LFS_HOST –disabl...
2021-06-01 15:29:48
255
原创 Cyclictest测试Linux内核的实时性
概述本文主要介绍了如何编译测试Linux实时内核的实时性的流程及方法。1. 编译RT内核RT-patch内核源码给内核打补丁:cd linux-4.19patch -p1 < ../patch....编译内核:make menuconfigGeneral setup----Preemption ModelFully Preemptible Kernel(RT)make sudo make modules_installsudo make installsudo updat
2021-06-01 15:14:37
3187
2
原创 Linux模块解析
1. 简介 模块是一种能够向Linux内核添加设备驱动程序、文件系统及其他组件的方法,它不需要重新编译内核或者重启系统。对于内核来讲,它需要处理的就是模块的装载和卸载以及模块间的依赖关系。因为模块是在内核空间运行的,因此模块必须使用内核提供的函数,我们也可以使用模块来调用相应的内核函数,这属于内核态编程的一种方式。模块文件的本质是一种可重定位的二进制文件,一般以*.ko的形式出现。 Linux模块可以通过静态或动态的方法加载到内核空间,静态加载是指在内核启动过程中加载;动态加载是指在内核运行的过程中
2021-06-01 15:03:31
468
原创 内存管理小解
内核在内存中的位置在默认情况下,Linux内核被装载到一个内存中固定的位置,该位置在编译时确定,配置选项PHYSICAL_START用于确定内核在内存中的位置。Linux内核的初始化start_kernel—>setup_arch—>…内存相关的初始化工作:创建列表,包括系统占据的内存区以及空闲内存区。通过setup_memory确定每个结点可用的物理内存页的数目,初始化bootm内存分配器(采用位图来管理内存页),分配各种内存区等。通过page_init初始化内核页表(用户空间
2021-05-31 21:40:33
114
原创 Xilinx zynq-7000系列板子启动流程介绍
1. 背景资料 Zc706评估板核心是Zynq-7000 XC7Z045-2FFG900C AP SoC,Ax 7Z1000核心为XC7Z100-2FFG900,与xc7z045只有频率的不同,因此在核心板相同的情况下可使用同一版本的uboot。对于Zynq-7000系列的板子来说,其核心板配置基本相同 ,主要差别在扩展板上的外设不同,这就导致我们在使用其他板子时可能需要根据自己的需求定制设备树(DTS)文件,然后使用Petalinux来简化编译生成启动镜像的过程。2. Qemu for Xilinx
2021-05-31 15:53:42
2471
原创 u-boot启动详解
1. U-Boot启动流程分析参考文献1 超详细分析Bootloader(Uboot)到内核的启动流程1.1 U-boot主要目录结构:- board 目标板相关文件,主要包含SDRAM、FLASH驱动;- common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;- cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;- driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)- doc U-
2021-05-31 15:44:04
1262
原创 Kconfig与Makefile的简单介绍
1. Kconfig介绍与使用来源-Kconfig介绍背景介绍在分析u-boot源码的时候,我发现很多文件夹下面都有一个Kconfig文件,我很好奇它是干什么用的。通过网上查阅资料,我发现它对于u-boot的配置极为重要,因此特记录下自己对kconfig的理解。什么是kconfigLinux kernel的目录结构下一般都会存在Kconfig和Makefile两个文件。分布在各级目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在
2021-05-31 15:16:10
1290
原创 AXI总线介绍
AXI总线介绍参考文档:UG761-AXI Reference Guide(v14.3)AXI入门深入AXI总线(一)深入AXI总线(二)AXI是什么?axi是一种总线协议,他是ARM AMBA(Advanced Microcontroller Bus Architecture)中最重要的一部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱
2021-05-31 15:11:47
5859
1
原创 PetaLinux v2020.2下usb不识别
问题描述在使用petalinux制作完成启动镜像,在实际的开发板上运行,发现usb无法被识别解决修改project-spec/meta-user/recipes-bsp/device-tree/files下的system-user.dtsi文件如下:/include/ "system-conf.dtsi"/ { usb_phy0: phy0 { compatible = "usb-nop-xceiv"; #phy-cells = <0x0>;
2021-03-22 16:43:23
700
原创 SoftRoCE实践
简介SoftRoCE是RDMA的一种纯软件实现的方式,因此不需要特定的硬件支持,但是其性能与硬件支持的RDMA还是有一些差距的。通过softRoCE我们可以在传统的以太网进行RoCE通信。环境搭建实验环境ServerClientubuntu 18.04ubuntu 18.04kernel 5.4.0kernel 5.4.0x86x86安装相关软件sudo apt-get install libibverbs-dev librdmacm-dev
2020-12-14 11:26:02
3529
原创 Linux设备驱动程序简介
简介1.总线系统分类总线名称特点PCI支持热插拔ISA古老的总线,IBM引入SBusSUN公司设计IEEE1394(FireWare)USB通用外部总线SCSI用于寻址硬盘并口和串口简单效率低下2.与外设的交互方法I/O端口I/O内存映射轮讯和中断3. 访问设备内核采用主从设备号来标记匹配的驱动程序 ,b为块设备,c为字符设备。/dev中的设备节点在基于磁盘的文件系统中动态创建,由udevd守护进程负责管理(创建和
2020-08-10 14:42:43
274
原创 进程虚拟内存管理
概述在32位linux系统中,每一个进程拥有3GB的虚拟内存空间,所有进程共享1GB的内核空间。对每一个进程来讲,都有一个task_struct结构体,包含该进程的所有信息,其中就包括最为重要的mm_struct,它提供了进程在内存布局中的所有必要信息。相关的数据结构mm_struct操作系统运用了面向对象的思路对mm_struct进行封装,Linux就是通过mm_struct实现了内存管理。一个进程的虚拟地址空间主要由两个数据结构进行描述,一个是mm_struct,另一个是vm_area_stru
2020-07-22 19:53:53
662
转载 内存管理---Slab原理分析
概念介绍什么是slab?slab是slab内存分配器从buddy system申请页面的基本单位。然而slab的大小不是固定的,slab从属于某个kmem cache实例,不同的kmem cache实例,其slab的大小是不同的。slab的大小必须是2^order个pages,order不能超过buddy system所支持的最大的order。slab内存分配器从buddy system分配了slab之后,会将其挂在对应的kmem cache实例的node节点。什么是object?object是s
2020-07-21 15:30:26
1822
原创 龙芯平台内核编译
内核的编译主机环境:gentoo based on Loongson3A3000GCC版本:gcc-9.2.0源码包:loongson-linux编译步骤:1.将config文件放到loongson-inux目录下,并改名为.config2.配置内核make menuconfig进入选项菜单3.编译安装:make -j4安装模块make modules_install安装内核...
2019-12-18 10:52:19
1496
1
原创 MySQL配置
MySQL安装与配置:1. 下载的zip文件解压,将解压之后的文件夹放到任意目录下,这个目录就是mysql的安装目录。2. 在系统变量PATH后面添加: 你的mysql bin文件夹的路径(如C:\Program Files\mysql-5.6.41-winx64\bin)我的电脑->属性->高级->环境变量->系统变量添加路径:F:\mysql\mysql-5....
2019-12-17 10:07:01
99
原创 Ubuntu搭建镜像服务器
主机环境系统:Ubuntu 18.04服务器:Apache Tomcat 8.57java环境:jdk-8实现1.配置安装JDKsudo apt-get install openjdk-8-jdk查看是否安装成功:java -version
2019-11-20 21:08:12
1082
原创 yocto使用
下载: git clone git://git.yoctoproject.org/poky.git在Ubuntu上安装必备软件:apt-get install sed wget subversion git-core coreutils \unzip texi2html texinfo libsdl1.2-dev docbook-utils fop gawk \python-pysql...
2019-10-16 11:17:18
831
原创 LFS-MIPS-8.2全过程
1-- binutilsmkdir buildcd build../configure --prefix=/tools \--with-sysroot=$LFS \--with-lib-path=/tools/lib \--target=$LFS_TGT \--disable-nls \--disable-werror \--with-abi=64 \--with-e...
2019-10-16 11:06:43
898
原创 安装loongnix系统
1.下载官方iso文件sudo wget http://ftp.loongnix.org/os/loongnix/1.0/liveinst/loongnix-1.0.1906.iso2.格式化U盘为ext3#查看分区sudo fdisk -l....#创建ext3文件系统sudo mkfs.ext3 /dev/xxx3.将iso中的文件拷贝到U盘中#挂载iso文件sudo ...
2019-10-16 10:28:35
2928
原创 Buildroot在构建基于MIPS的文件系统时的应用
相关文档Buildroot用户手册下载地址:https://buildroot.org/downloads/buildroot-2016.11.tar.gz
2019-09-17 11:03:09
881
原创 精简LFS-7.7
LFS到目的是从零开始编译一个Linux操作系统,主要思想是从一个宿主系统编译出一个独立的Linux操作系统,要达到这个目标,需要有如下几个步骤完成:为新做系统分配磁盘分区并激活,创建一个环境变量几乎为空的编译用户lfs在lfs用户下首先编译(第一次编译)出编译程序必须使用的工具:BinutilsGCCLinux API HeadersGlibc此时的汇编器和链接程序还都...
2019-09-02 15:17:06
565
转载 Linux文件权限解析
在linux中,有时候可以看到一个文件的权限如下所示-rw-r–r--第一个字符表示文件类型,d是文件夹,l是连接文件,-是普通文件。后面的9个字符表示权限。权限分为4中,r表示读取权限,w表示写入权限,x表示执行权限,-表示无此权限。9个字符共分为3组,每组3个字符。第1组表示创建这个文件的用户的权限,第2组表示创建创建这个文件的用户所在的组的权限,第3组表示其他用户的权限。在每组中...
2019-08-22 16:35:29
358
转载 汇编文件.s和.S的区别
转载https://blog.csdn.net/zuotian5212008/article/details/82856195.s 汇编语言源程序; 操作: 汇编.S汇编语言源程序;操作: 预处理 + 汇编1.小写的 s文件,在后期阶段不会再进行预处理操作了,所以我们不能在其内写上预处理语句。一般是 .c 文件经过汇编器处理后的输出。 如 GCC 编译器就可以指定 -S 选项进行输出,...
2019-08-16 09:35:39
839
原创 兰州大学计算机专硕复试上机题
题目描述:句子正序输入一个字符串 可能会有多个连续空格如student. a am I把句子正序 正确输出I am a student.如果句子中有多个连续的空格 输出省略为一个#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;string&amp;amp;amp;gt;using namespace std;int main()
2019-03-10 15:27:01
1662
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人