自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 交叉编译执行应用程序出现:No such file or directory

问题分析当我在arm板子上执行交叉编译过的程序的时候发现了这个错误。通过百度查询基本都是缺少32位库什么的,但是都不能解决问题。然后我用ll指令,也排除了权限的原因。我们用ldd指令发现,它不是动态执行的,虽然我们可以使用-static指令来完成,但是执行出来的程序会比较大,并不是我们想到的。我装的是32位系统不是64位系统,所以不是64位系统没有32位库造成的然后我们通过我们需要的是ld-linux-armhf.so.3加载程序我们发现并没相对于的加载库我们发现ld-linux

2022-03-09 15:56:14 3376

转载 简单图和多重图

一、简单图   ① 不存在重复边;   ② 不存在顶点到自身的边;二、多重图  ① 某两结点之间边数多于一条;  ② 允许顶点通过一条边和自己关联;

2021-12-15 12:36:33 3674

原创 数据结构(七)图的遍历(递归非递归方法)

图的遍历(递归非递归方法)#include<iostream>#include<stdio.h>#include<stack>#include<queue>using namespace std;typedef char VertexType;typedef int EdgeType;#define MAXVEX 100#define INF 65535bool visited[MAXVEX] ;typedef struct Gra

2021-12-15 12:26:20 1753

原创 计算机组成原理(二)数据的表示和运算

计算机组成原理(二)数据的表示和运算一、BCD码二、奇偶校验码三、海明码四、循环冗余校验码(CRC)五、乘法运算原码乘法补码乘法除法运算原码除法补码除法浮点数的表示与运算![在这里插入图片描述](https://img-blog.csdnimg.cn/230d276e273e4bf5a4ba402c5ef26172.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2hlbnNoaWRhXw==,siz

2021-12-13 14:58:45 999 4

原创 计算机组成原理(一)计算机系统概述

计算机组成原理(一)计算机系统概述一、计算机系统层次结构冯诺伊曼机计算机工作过程多级层次结构一、计算机系统层次结构冯诺伊曼机特点:计算机由五大部件组成指令和数据以同等地位存于存储器,可按地址寻访指令和数据用二进制表示指令由操作码和地址码组成存储程序以运算器为中心计算机工作过程取指令:pc->MAR->M->MDR->IR,首先根据pc取指令到IR。将pc的内容送到MAR,MAR中的内容送到地址线,同时控制器将信号送读/写信号线,主存根据地址线上的地址

2021-12-12 11:23:40 261

原创 操作系统(五)输入/输出(I/O)管理

操作系统(五)输入/输出(I/O)管理一、I/O控制器二、I/O控制方式程序直接控制方式中断驱动方式DMA方式通道控制方式I/O软件层次结构![在这里插入图片描述](https://img-blog.csdnimg.cn/e04612aa097d46ee912db354a3a64efd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2hlbnNoaWRhXw==,size_20,c

2021-11-11 14:14:38 850

原创 如何在Ubuntu上安装GCC编译器

如何在Ubuntu上安装GCC编译器1.首先更新包列表sudo apt update2.安装build-essential软件包:sudo apt install build-essential3.验证GCC编译器是否已成功安装,请使用gcc --version命令打印GCC版本root@ubuntu:/home/csd# gcc --version...

2021-11-03 09:33:42 6893

原创 操作系统(四)文件管理

操作系统(四)文件管理一、文件系统基础1.文件逻辑结构无结构文件有结构文件2.文件目录文件控制块(FCB)目录结构单级目录两级目录结构多级目录结构无环图目录结构3.文件保护口令保护加密保护访问控制文件共享硬链接软链接文件系统实现文件物理结构连续分配链接分配隐式链接显式链接索引分配文件存储空间管理文件系统的层次结构磁盘结构磁盘调度算法先来先服务算法(FCFS)最短寻找时间优先(SSTF)扫描算法(SCAN)LOOK 调度算法循环扫描算法(C-SCAN)C-LOOK 调度算法一、文件系统基础1.文件逻辑结构

2021-09-28 10:41:12 473

原创 操作系统(三)内存管理

操作系统(三)内存管理一、程序执行过程装入的三种方式链接的三种方式二、内存管理的概念内存空间的分配与回收连续分配管理方式单一连续分配固定分区分配动态分区分配首次适应算法最佳适应算法最坏适应算法邻近适应算法非连续分配管理方式基本分页存储管理两级页表基本分段存储管理方式段页式管理三、内存空间的扩充覆盖技术交换技术四、虚拟内存虚拟内存的实现请求分页管理缺页中断机制页面置换算法最佳置换算法(OPT)先进先出置换算法(FIFO)最近最久未使用置换算法(LRU)时钟置换算法(CLOCK)改进型的时钟置换算法页面分配策略

2021-09-19 11:10:05 408

原创 操作系统(二)进程管理

操作系统(二)进程管理一、程序和进程进程控制块(PCB)进程的组成进程的特征进程的状态与转换进程状态的转换进程的组织链接方式索引方式一、程序和进程程序:是静态的,编译好的二进制文件,存储在磁盘中,.exe程序进程:是动态的,是程序的一次执行过程进程控制块(PCB)进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。进程的状态,有就绪、运行、挂起、停止等状态。进程切换时需要保存和恢复的一些CPU寄存器。描述虚拟地址空间的信息。描述控制终端的信息。

2021-09-05 12:44:31 229

原创 操作系统(一)计算机系统概述

操作系统(一)计算机系统概述一、操作系统的概念二、功能和目标资源的管理者向上层提供服务对硬件的扩展三、操作系统的特征并发共享虚拟异步四、操作系统的发展与分类手工操作阶段批处理阶段单道批处理系统多道批处理系统分时操作系统实时操作系统操作系统的运行机制中断和异常中断类型中断机制的基本原理系统调用分类系统调用的过程操作系统的体系结构大内核微内核一、操作系统的概念操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用

2021-09-04 12:56:14 197

原创 计算机网络(四)网络层

计算机网络(四)网络层一、概述和功能TCP/IP协议栈IP数据报格式IP数据报分片二、ipv4网络地址转换(NAT)子网划分子网掩码ARP协议(地址解析协议)DHCP协议ICMP协议二、ipv6ipv4和ipv6的区别IPv6基本地址类型IPv6向IPv4过渡的策略三、路由算法及路由协议内部网关协议IGPRIP(距离向量路由算法)RIP特点距离向量算法OSPF协议特点链路状态路由算法OSPF的区域外部网关协议(EGP)BGP协议BGP协议报文格式BGP协议特点BGP-4的四种报文三种路由协议比较四、IP组播

2021-09-04 10:39:20 707

原创 计算机网络(三)数据链路层

计算机网络(三)数据链路层1.基本概念2.功能概述3.组帧字符计数法字符填充法零比特填充法违规编码法4.差错控制检错编码奇偶校验码CRC循环冗余码纠错编码海明码流量控制停止等待协议滑动窗口协议后退N帧协议(GBN)选择重传协议5.介质访问控制静态划分信道(信道划分介质访问控制)动态分配信道随机访问介质访问控制ALOHA协议CSMA协议1-坚持CSMA非坚持CSMAp-坚持CSMACSMA/CD协议CSMA/CA协议轮询访问介质访问控制令牌传递协议1.基本概念数据链路层负责通过一条链路从一个结点向另一

2021-09-01 00:33:04 212

原创 计算机网络(二)物理层

计算机网络(二)物理层一、通信基础物理层接口特性1.机械特性2.电气特性3.功能特性4.规程特性典型的数据通信模型三种通信方式1.单工通信2.半双工通信/双向交替通信3.全双工通信/双向同时通信数据传输方式串行传输并行传输同步传输异步传输二、数据交换方式1.电路交换2.报文交换3.分组交换虚电路虚电路一、通信基础物理层接口特性物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层主要任务:确定与传输媒体接口有关的一些特性1.机械特性定义物理连接的特性,规定物理连

2021-08-29 23:31:50 4549

原创 计算机网络(一)计算机网络体系

计算机网络(一)计算机网络体系一、计算机网络概述概念功能组成分类二、体系结构和参考模型ISO/OSI模型物理层:数据链路层:主要任务是把网络层传下来的数据报组装成帧。数据链路层/链路层的传输单位是帧。功能一:成帧(定义帧的开始和结束)功能二:差错控制 帧错+位错功能三:流量控制功能四:访问(接入)控制 控制对信道的访问主要协议:SDLC、HDLC、PPP、STP网络层传输层会话层表示层应用层OSI参考模型与TCP/IP参考模型OSI参考模型与TCP/IP参考模型不同5层参考模型一、计算机网络

2021-08-29 07:13:30 111

原创 数据结构(六)二叉树的遍历(递归非递归方法)

数据结构(六)二叉树的遍历(递归非递归方法)一、递归方法1.先序遍历void PreOrder(BiTree T){ visit(T); PreOrder(T->LChild) PreOrder(T->RChild)}2.先序遍历void PreOrder(BiTree T){ PreOrder(T->LChild) visit(T); PreOrder(T->RChild)}3.先序遍历void PreOrder(BiTree T){

2021-08-16 11:08:52 100

原创 剑指 Offer 58 - II. 左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”class Solution {public: string reverseLeftWords(strin

2021-08-16 10:46:08 74

原创 剑指Offer05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution {public: string replaceSpace(string s) { int count=0; int len=s.size(); string ans; //计算空格个数 for(int i=0;i<le

2021-08-16 10:32:06 52

原创 剑指 Offer 11. 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:01.暴力解class Solution {public: int minArray(vector<int>& numbers) { int

2021-08-01 00:06:44 53

原创 剑指Offer10- II. 青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1class Solution {public: int numWays(int n) { int a=1; int b=2; i

2021-07-31 23:40:38 60

原创 剑指Offer04. 二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。相当于二叉搜索树,左孩子比根节点小,有孩子比根节点大class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if (matrix.s

2021-07-23 13:24:16 47

原创 剑指 Offer 10- I. 斐波那契数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。常规递归,会有栈溢出的风险if(n==0) { return 0; }

2021-07-21 09:41:46 55

原创 c++面向对象总结

c++面向对象总结什么是面向对象?面向对象的三大特性重写和重载的区别隐藏和重写,重载的区别什么是面向对象?面向对象的三大特性面向对象:对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。面向对象的三大特性:封装:将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。继承:子类继承父类的特征和行为,子类有父类的非 private 方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性,但是当父类中的成员变量、成员函数或者类本身被

2021-07-21 09:39:28 107

原创 剑指Offer03.数组中重复的数字

找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3class Solution {public: int findRepeatNumber(vector<int>& nums) { int temp[10

2021-07-20 00:43:40 41

原创 剑指Offer09. 用两个栈实现队列

class CQueue {public: stack<int> stack1,stack2; CQueue() {//初始化栈 while(!stack1.empty()) { stack1.pop(); } while(!stack2.empty()) { stack2.pop(); } } void ap

2021-07-20 00:04:59 35

原创 c++智能指针

c++智能指针简介具体使用使用智能指针可能出现的问题简介c++没有自动回收的机制,需要程序猿new一个空间,同时delete掉一个空间,免的造成内存的泄露。智能指针就能有效的解决这一问题。具体使用对于编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来的方法则使用“.”操作符。C++11 中智能指针包括以下三种:C++

2021-07-19 07:53:16 71

原创 c++类对象的创建方式

对象创建限制在堆或栈c++类对象的创建方式对象创建限制在堆或栈C++ 中的类的对象的建立模式如何将类限制在堆上呢?C++ 中的类的对象的建立模式C++ 中的类的对象的建立模式分为两张:静态建立,动态建立静态建立:由编译器为对象在栈空间上分配内存,直接调用类的构造函数创建对象。例如:A a;动态建立:使用 new 关键字在堆空间上创建对象,底层首先调用 operator new() 函数,在堆空间上寻找合适的内存并分配;然后,调用类的构造函数创建对象。例如:A *p = new A();如何将

2021-07-17 23:21:00 1324

原创 计算机的网络体系以及参考模型

计算机的网络体系以及参考模型一、OSI七层模型二、TCP/IP参考模型三、TCP/IP 五层参考模型四、OSI 模型和 TCP/IP 模型异同比较五、OSI 和 TCP/IP 协议之间的对应关系六、为什么 TCP/IP 去除了表示层和会话层?七、数据如何在各层之间传输(数据的封装过程)一、OSI七层模型OSI 七层模型可分为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,第三层统称为通信子网,主要完成数据传输的功能,高三层统称为资源子网,主要完成数据的处理等功能。应用层:其作用是通过

2021-07-17 00:20:46 1671 6

原创 变量之间的区别

全局变量、局部变量、静态全局变量、静态局部变量的区别c++变量根据定义具有不同的生命周期,会有不同的作用域,主要有六个作用域:全局作用域,局部作用域,文件作用域,类作用域,语句作用域,命名空间作用域。从作用域看:全局变量:具有全局作用域,全局变量只需在一个源文件定义,就能在所有的文件中使用。在不含有该全局变量的文件中使用时,需要用extern的关键字声明这个变量静态全局变量:具有文件作用域,它只作用域定义该变量的文件中,不能作用域其他文件。**局部变量:**具有局部作用域,在程序运行期间并不是一直

2021-07-16 11:27:23 332

原创 c++内存管理

c++内存分区:堆、栈、全局/静态存储区、常量区、代码区栈:存放函数的局部变量、函数参数、函数返回地址等,由编译器自动分配和释放堆:动态申请的内存空间,可以有malloc函数来申请,通常需要程序员通过free释放,如果程序执行结束还释放,由操作系统来自动回收全局/静态存储区(.bss段和.data段):存放全局变量和静态变量,程序执行结束自动释放,未初始化的放在.bss段,初始化的放在.data段常量区(.data段):存放是常量,不可以被修改,程序运行结束自动释放代码区:存放代码,不可以被修改,

2021-07-16 08:05:22 100

原创 c++程序编译过程

c++程序编译分成四个过程:编译预处理,编译,汇编,链接编译预处理:处理以#为开头编译:将.cpp文件翻译成.s汇编文件汇编:将.s汇编文件翻译成机器指令.o文件链接:汇编生产的目标文件.o文件,并不会立即执行,因为可能会出现.cpp文件中的函数会引用到某个库的函数或者另一个文件中定义的符号,链接的目的是将这些文件对于的目标文件连接成一个整体,从而生成可执行文件整体流程:链接分为两种:静态链接:静态链接是在链接阶段,将源代码中用到的库函数与汇编生成的目标文件.o合并生成可执行文件动态链接:

2021-07-15 23:45:21 238 1

原创 c/c++错题总结

1.类名 对象名默认调用“对象名()”这个构造函数,在栈内存中存在对象名,在堆内存中存在实际对象;2.类名 对象名(一个或以上个参数)默认调用相应的构造函数,在栈内存中存在对象名,在堆内存中也是存在实际对象的;3.类名 对象名()不调用任何构造函数创建对象,仅在栈内在中存在对象名,在堆内存中并不存在实际的对象;所以就是0+1+3+0+0+1=5A选项:虽然两个数组是不同的,但关键点是数组的地址不可修改,所以错误B选项:两边的元素类型不一样,左边是指针,右边是int,当然不可以。&nbsp.

2021-07-14 08:15:20 65

原创 leetcode(167)两数之和 II - 输入有序数组

两数之和 II - 输入有序数组给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例 1:输入:numbers = [2,.

2021-07-13 22:55:33 44

原创 leetcode(283)移动零

283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。方法一:冒泡排序的改版,暴力解class Solution {public: void moveZeroes(vector<int>& nums) { int i,j,temp; for

2021-07-11 23:59:19 56

原创 leetcode(189) 旋转数组

**给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:

2021-07-11 23:33:19 48

原创 leetcode(977)有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]面对这样的题目,先把原来的数据平方后,有几种算来进行排序1.直接插入排序:class Solu

2021-07-10 12:34:59 58 1

原创 leetcode(二)二分法查找算法

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1class Solution {p

2021-07-09 07:49:30 101

原创 leetcode(一)刷题两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,2]示例 3:输入:nums = [3,3], target = 6输出:[0,1]首先

2021-07-08 15:04:33 49

原创 C++四种强制类型转换

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档C++四种强制类型转换一、static_cast二、dynamic_cast三、const_cast四、reinterpret_cast一、static_caststatic_cast主要用于一种类型转化成另外一种类型主要用于:1.用于类层次结构中基类和派生类之间指针或引用的转换上行转化(把派生类的指针或引用转换成基类表示)是安全的下行转化(把基类的指针或引用转换成派生类表示)不安全,并不像dynamic_cast有检测2.

2021-07-07 00:11:38 229

数组名和取数组名的区别

先来个简单的小案例#include <stdio.h>#include <iostream>using namespace std;int main(){ int a[10] = { 0 }; printf("%d\n", a); printf("%d\n", &a); printf("%d\n", a+1); printf("%d\n", &a+1); printf("%d\n", &a[0]+1); printf("%d\

2021-07-03 23:49:55 41

空空如也

空空如也

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

TA关注的人

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