自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 健身记录--每日更新

健身随记

2022-10-08 17:12:22 357 1

原创 冒泡法C语言(输入输出)

#include <stdio.h>#include <stdlib.h>#define swap(a,b) {a=a^b;b=a^b;a=a^b;}void bs(int len,int a[]){ int i,j; for(i=0;i<len-1;i++){ for(j=0;j<len-1-i;j++){ if(a[j]<a[j+1]){ swap(a[j],a[j+1]); } }

2021-09-06 13:13:23 509

原创 合并有序链表(输入输出)

#include<stdio.h>#include<stdlib.h>//实现合并两个链表//建立链表struct listNode{ int val; struct listNode *next; };//合并两个有序链表struct listNode* makeTwoList(struct listNode* pHead1,struct listNode* pHead2){ if(pHead1 == NULL){ return pHe

2021-09-06 13:12:07 429

原创 快速排序C语言,处理输入输出

#include <stdio.h>#include <stdlib.h>//编写快速排序代码//首先要传入数组,左标和右标//小的放左边,大的放右边//.我们需要选定一个中心点(pivot)//2.大于中心点的数字放在中心点的左边//3.小于中心点的数字放在中心点的右边//4.重复上述步骤直到排序结束void QuickSort(int a[],int l,int r){ if(l>=r){ return ; } int left

2021-09-06 10:26:45 351

原创 C语言二分法(含处理输入输出)

#include <stdio.h>#include <stdlib.h>//传入关键字,数组,数组长度//二分法主要就是,首先选取数组中间的位置记录,然后将关键字和中间位置作比较//若是相等则查找成功,若是不相等则判断关键字和中间位置的大小关系//若是关键字比中间大,就对右边进行再一次二分,否则即对左边二分void binaryS(int key,int a[],int n){ int high,low,mid; int flag=0;//查找成功的次数

2021-09-06 10:09:31 5041

原创 Linux应用编程之高级IO

文章目录前言一、阻塞与非阻塞1.阻塞2.非阻塞3.阻塞式IO的困境4.实例证明阻塞式IO的困境5.总结二、并发式IO的解决方案1、非阻塞式IO2、多路复用IO3、异步IO三、存储映射IO1、反映在mmap函数2、例子3、存储映射IO的特点前言本文是看了朱有鹏老师的Linux应用编程之高级IO的一些学习理解一、阻塞与非阻塞1.阻塞当前进程的执行条件不满足,内核将进程挂起,直到进程的执行条件满足。(linux在设计时,默认阻塞式)(1)常见的阻塞wait、pause、sleep等函数本身就是.

2021-08-23 12:11:48 124

原创 对于面经中进程和线程的区别中的“多个线程依附于一个进程,共享于这个进程的数据和地址空间,当多个线程中的某一个线程死掉以后,这个进程也跟着死掉了“这句话的理解,以及对于主线程和子线程的理解

对于面经中进程和线程的区别中的"多个线程依附于一个进程,共享于这个进程的数据和地址空间,当多个线程中的某一个线程死掉以后,这个进程也跟着死掉了"这句话的理解"多个线程依附于一个进程,共享于这个进程的数据和地址空间,当多个线程中的某一个线程死掉以后,这个进程也跟着死掉了"首先我们要了解正常退出与异常退出正常退出1.main函数调用return2.进程调用exit(),标准C库3.进程调用_exit()或者_Exit(),属于系统调用4.进程最后一个线程返回5.最后一个线程调用pthread_e

2021-08-22 20:43:01 262

原创 何为交叉编译

问:何为交叉编译?为什么需要交叉编译何为交叉编译?交叉编译就是在A机上编写,编译得到的可执行程序,在B机上运行为什么需要交叉编译?因为嵌入式开发的CPU都较为简单,本身可能连搭建编译环境都做不到,交叉编译可以用高性能机器为低性能机器开发软件...

2021-08-20 19:57:04 83

原创 Linux应用编程,网络编程练习--------ftp云盘(详细版)

文章目录前言一、实现的功能1.客户端2.服务端二、实现思路1.建立socket连接2.客户端和服务端进行信息的交互三、具体流程分析(代码)第一步:建立socket连接第二步:客户端和服务端进行信息的交互四、整体流程分析(代码)1.客户端2.服务端3.共有文件:五、实现效果(图片)六、反思与总结前言本文章是前段时间学习linux编程的一个小总结,如果不总结的话我怕我学完就忘emmm(其实已经忘的差不多了),本文是跟着上官可编程老师与朱有鹏老师学习之后的练手作品,本人学疏才浅,暂时只能到这个地步提示:

2021-08-19 14:21:51 1424 2

原创 从0开始写出一个最简单的shell(基于x210)

从0开始写出一个最简单的shell什么是shell?实现的shell回显功能以及定义简单命令集基本思路:1.打印命令行提示符2.获取用户输入的命令3.解析用户输入的命令(1)解析成功即打印出对于命令(2)解析失败则打印出NULL上代码:#include<stdio.h>#include<string.h>#define max_command_length 256 //定义命令行的长度/*定义命令*/#define led "led"#de

2021-08-16 00:09:08 1284

原创 解决VMWareTools安装图标为灰色且桌面上没有DVD形状的VMWareTools安装包

解决VMWareTools安装图标为灰色且没有DVD形状的VMWareTools安装包如题,今天突然发现VMWareTools工具不能用了,然后上网查了一下资料,说是用VMWareTools安装包(形似为DVD形状的那个安装包)安装,我寻思这不是废话,我要是有安装包我还用得着找教程?解决方案很简单,将虚拟机关机,然后开机的时候 重新安装VMWareTools 这个图标就会亮起来了,然后就可以点击了了,点击就会在开机后自动生成一个DVD形状的VMWareTools安装包,然后进行解压安装就可以了1.虚

2021-08-14 10:56:04 2266 1

原创 安装完交叉编译工具链验证的时候出现arm-none-linux-gnueabi-gcc: no input files或是arm-linux-gcc:command not found的解决方案

安装完交叉编译工具链验证的时候出现arm-none-linux-gnueabi-gcc: no input files或是arm-linux-gcc:command not found的解决方案如题,今天在实现交叉编译的时候突然就发生了这么两个问题,在查阅了相关的资料后,总结出以下几个问题出现以及解决的方案:1.环境变量的问题2.64位的ubantu运行32位的交叉编译工具链需要32位的运行库首先排查第一个环境变量的问题:使用指令echo $PATH查看环境变量:需要分别排查普通用户与root用

2021-08-14 10:07:53 6002 1

原创 快速排序C语言详细版

快速排序本质上就是两个指针交替进行以及基本的递归大致思路:1.我们需要选定一个中心点(pivot)2.大于中心点的数字放在中心点的左边3.小于中心点的数字放在中心点的右边4.重复上述步骤直到排序结束/*快速排序,传入数组arr,左指针left,右指针right*/void quickSort(int *arr,int left,int right){ int pivot = arr[left];/*选取一个中心点,一般是最左边,也就是左指针的位置*/ wile(left<right

2021-08-11 23:11:04 231

原创 牛客NC45 实现二叉树先序,中序和后序遍历C语言详细版

题干朴实无华的分别要求返回二叉树的先序,中序和后序遍历,思路很简单就是先序遍历一遍,中序遍历一遍,后序遍历一遍,然后存起来,返回,就可以了,但是因为我们要用C语言,所以就有很多需要注意到的地方了上代码/*基本思路:*//*计算二叉树大小*/void getTreeSize(struct TreeNode* root,int* count){ /*求二叉树的节点个数就是左子树,右子树,根的个数总和*/ ++(*count);//根 /*右子树*/ if(root->right){

2021-08-11 21:30:38 338 1

原创 leetcode第1398题 判断给定的序列是否是从根到叶的路径

leetcode第1398题 判断给定的序列是否是从根到叶的路径因为这题属于leetcode上面的会员题,而我的会员马上过期了,所以在此记录一下解法(具体解法看注释)bool isValid(struct TreeNode* root,int*arr,int arrSize,int start){//如果树根为0,则返回falseif(root==NULL) return false;//如果此时所在的位置是大于等于(不能等于是因为题干要求必须树根到树叶而等于如果成立的话不一定是树根到树叶)数组的

2021-08-09 19:07:29 98

原创 使用FileZilla连接ubantu FileZilla提示错误:认证失败,严重错误,无法连接到服务器

## 众所周知,在windows和Linux的文件相互传输中,可以使用共享文件夹也可以使用一些辅助工具如:FileZilla连接,SSH Secure File Transfer Client连接等我习惯于用FileZilla,但是今天创建新的连接的时候突然提示错误:认证失败,严重错误,无法连接到服务器,分享一下这个问题的解决方案FileZilla有两种连接方式,一种通过ftp协议,一种通过ssh方式。(注意:非root用户名登录的传输会有文件访问权限问题)这里说一下ssh方式1.点击站点管理器图标

2021-08-06 20:44:42 5974

原创 C语言指针的类型与各类型的用法

void Snake(){printf("平平无奇的函数");}、int main(){/一般情况下来说同类型的指针只能取得同类型的变量的值/int *p; //只能存放整形的地址char *p2;//只能存放字符的地址int a;char c;p=&a;p2=&c;//指针++printf("%p\n",++p/* 先把地址往后移再++ */);printf("%p\n",p++/* 先使用地址再++ */);return 0;//操作中看到乱

2021-04-11 19:33:16 395

原创 Linux中链表的使用

一、什么是链表通俗的来说链表就是一种数据结构,数据存放的思想,数组是内存中连续存放一些地址组成,缺点:不灵活,难以增加或者减少以及内存空间大小是固定的。链表是不连续的,可以用指针的方式将地址连接起来,容易增加或减少,内存空间的大小也可以随意更改...

2021-04-09 21:31:42 752

原创 微机总线地址物理地址虚拟地址概述

一、地址1.总线地址通俗的讲就是cpu能够访问内存的范围地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。2.物理地址硬件上实际存在的真地址在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。3.虚拟地址软件层次的地址,假地址虚拟地址是W

2021-04-07 16:06:44 199

原创 Linux基于框架编写底层驱动代码(基础篇)

一、驱动框架#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h> //class devise声明#include &l

2021-04-07 15:49:58 1590

原创 Linux系统编程之socket网络编程

123

2021-04-06 16:39:56 66

原创 Linux学习记录备份

uname -r查看树莓派版本rm * -rf全部删除ctrl shift + 放大终端xrandr -s +分辨率pwd显示当前文件夹file 文件 查看文件的属性unsigned int millis (void) 这个函数返回 一个 从你的程序执行 wiringPiSetup 初始化函数(或者wiringPiSetupGpio ) 到 当前时间 经过的 毫秒数。返回类型是unsigned int,最大可记录 大约49天的毫秒时长。unsigned int micros (void)

2021-03-31 17:19:59 117

原创 如何解决Could not get lock /var/lib/dpkg/lock-frontend

使用apt安装时报错:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?解决方案:方案一:sudo killall apt apt-get如果提示

2021-03-31 17:16:00 269

原创 基于ncurse的贪吃蛇小游戏

一、基本要求C编程基础以及Linux基本操作C编程基础:包括但不限于数据结构链表基础,C变量,流程控制,函数,指针,结构体等Linux基本操作:包括但不限于 如何编写代码,如何编译代码,如何运行程序,如何创建文件夹二、为什么需要ncurse通俗易懂的来讲就是,C语言基础自带的库不存在单按方向键就能直接控制蛇的移动,必须按下方向键和回车键才可以响应,ncurse封装的一些库不需要按下回车,直接按下方向键就可以响应三、安装ncurse编译linux内核需ncurses, Ubuntu命令:sud

2021-03-31 17:14:01 212

原创 Linux内核结构介绍

内核结构框图从上到下依次解读为用户态应用程序 (由基础C,C库组成)调用C库(C库是提供应用程序支配内核干活的接口)C库通过系统调用接口来支配底层硬件内核态虚拟文件系统VFS(里面有系统调用接口)设备驱动程序底层硬件Linux的架构应用程序调用C库进入内核VFS分配对应的接口然后进去驱动再判断调用哪个底层硬件什么是shell一个shell对应一个终端 (terminal)。曾经来说,终端是一个硬件设备,用来输入并显示输出。如今,由于图形化界面的普及,是一个图形化的窗口。你可以通过

2021-03-30 18:47:44 123 1

原创 什么是虚拟文件系统

什么虚拟文件系统Virtual File System ?vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口虚拟文件系统有什么作用?简化应用程序员的开发不管是什么文件类型,不管文件是磁盘还是设备,都只用open read write统一操作...

2021-03-30 18:12:42 707

原创 Linux文件系统认知

文件系统1.什么是文件系统常规认识(根目录)并不准确文件系统是操作系统用于明确存储设备组织文件的方法以上说的方法:就是文件管理系统(程序),简称文件系统2. 文件系统(文件管理系统的方法)的种类有哪些?FAT VFAT NTFS EXT1/2/3/4 HFS …树莓派查看文件系统的命令: df -Tvfat : boot(bootloader, kernel)ext4 : 根目录tmpfs : 内存文件系统3. 什么是分区?windows: 随意(面向普通用户PC),目录即分

2021-03-30 18:06:43 68

原创 Linux系统编程之进程间通信

进程间通信(IPC)介绍进程间通信(IPC)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享内存、socket、streams等。其中socket、streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是UNIX系统IPC最古老的形式。1.特点1.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。2.它只能用于具有亲缘关系的进程之间的通信(也是父子进程或兄弟进程之间)。3.它可以看成是一种特殊的文

2021-03-09 21:38:17 133

课件-详解linux设备树全集.txt

课件-详解linux设备树全集.txt

2022-09-05

空空如也

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

TA关注的人

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