自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 问答 (1)
  • 收藏
  • 关注

原创 嵌入式软件开发 day27(QT安装使用)

QT图形界面的开发工具下载百度搜索:download.qt.ioIndex of / (qt.io)手册百度搜索:doc.qtAll Classes | Qt 5.9== 关键字模糊搜索快捷键:ctrl + F==安装创建工程使用工程

2021-09-23 11:31:14 217

原创 嵌入式软件开发 day26(C++基础)

C++c 面向过程c++ 面向对象后缀名:.cpp编译:g++名空间 命名空间管理using namespace std; //指定默认的名空间:: //欲解析运算符,指定名空间的函数C语言头文件:<stdio.h> <string.h>C++头文件:<iostream> <cstring> //兼容性强,可以包含除自己本身的C语言的头文件一、数据的输入与输出1.cin (输入) – 默认与键盘链接,接受从键盘输入的数据信息。

2021-09-22 18:19:52 556

原创 嵌入式软件开发 day25(套接字)

APUE命令:netstat(查看网络状态)-anu :查看udp(报式套接字)-ant:查看tcp(流式套接字)网络IPC:套接字查看网络设备命令:ip ad sh -> 查看设备索引号 ,ifconfigIPC_PRIVATE:匿名ipc/proc/一、套接字描述符1.1 socket()描述:创建一个端口去通信(用协议族domain 中的某个协议protocol 来完成type类型的传输)手册:man socket头文件:#include <sys/typ

2021-09-22 17:28:06 347

原创 嵌入式软件开发 day24(进程间通信)

APUE一、进程间通信什么是进程间通信(ipc)进程间通信数据传输(多个进程间进行数据传输)资源共享(不同进程间使用系统资源不同,eg:文件,内存)事件通知(当进程发生特定事件,希望把这些事件告诉给另外一些进程,让另外一些进程及时作出反应)进程控制(在一个进程里控制另一个进程的执行。eg:用调试工具进行程序调试,需要控制程序单步执行,在调试工具进程里对另一个进程进行控制)Linux系统下的ipc早期unix系统ipc(Linux系统诞生之初已经存在的两个系统间通信)管道(数据

2021-09-22 17:21:52 383

原创 嵌入式软件开发 day23(高级IO)

APUE高级IOIO的操作模式:阻塞,非阻塞回顾嵌入式开发day14文件io一、函数fcntl()描述:改变已经打开文件的属性手册:man fcntl头文件:#include <unistd.h>#include <fcntl.h>函数原型:int fcntl(int fd, int cmd, ... /* arg */ );fd – 打开的文件描述符cmd – 命令位图(详见man手册)例:F_GETFD (void)//获取

2021-09-15 19:40:24 145

原创 嵌入式软件开发 day22(线程)

APUE线程并发只是一套标准,而不是实现标准:posix,openmp线程:程序中正在运行的函数多进程并发:先有实现后有标准(通信:独立于两个进程外的文件:管道,套接字)多线程并发:先有标准后有实现(通信:全局变量)线程ps -axm :以详细的信息进行查看线程ps ax -L :LWP:线程id线程标识pthread_equal()描述:比较线程ID手册:man pthread_equal头文件:#include <pthread.h>函数原型:

2021-09-13 09:41:27 153

原创 嵌入式软件开发 day21(信号)

APUE10章.初级异步 , 11章.强烈异步同步:结果可预见的异步:事件什么时候发生不知道,发生后会引起什么结果不知道setcontext & getcontext => 恢复被打断的函数现场 & 获取函数现场异步事件解决方法:1.查询法(主动去看) – 异步事件发生的比较稠密2.通知法(等待信号打断) – 异步事件发生的比较稀疏eg:1、江边搞到一条鱼(什么时候搞到不知道,发生的结果不知道)查询法:拿网捞,捞出来看看通知法:拿钓竿等,漂动了就知道鱼来了2、

2021-09-09 11:19:19 150

原创 嵌入式软件开发 day20(会话,守护进程)

APUE8.12解释器9.2终端登录13.3编程规则13.6守护进程惯例系统日志:/var/log/ 主日志文件:ubuntu 18.04 => syslog进程关系一、终端物理终端 => 需要依赖于具体设备进行打印信息输出串口终端lcd终端伪终端 => 不是依赖于物理设备的一个终端ssh远程连接产生的终端 ssh => 一个软件桌面系统启动的终端虚拟终端 => Linux内核自带的linux内核自带的,ctrl+a

2021-09-05 10:23:29 153

原创 嵌入式软件开发 day19(fork,wait,exec)

APUEmalloc:延迟分配fork面试题,阅读man手册带*的阻塞:一直死等非阻塞:尝试做,做不了就走进程控制参考day3进程管理PID:用到最大值后,再回到最开始插缝用进程一旦产生,会在就绪队列排队,等待调度,调度后再次进入就绪队列,再等待调度注意:进程间只有父子关系 例: 进程ABC,B死了,A不会管C,C由1号init接管一、进程标识进程标识:pid_t 类型 => 16位整型getpid()描述: 返回当前进程pid手册:man getpid头文件:

2021-09-02 16:55:10 172

原创 嵌入式软件开发 day17(口令)

系统数据文件和信息一、crypt()描述:通过传入的salt加密算法对key生成加密口令。手册:man crypt头文件:#define _XOPEN_SOURCE /* See feature_test_macros(7) */#include <unistd.h>函数原型:char *crypt(const char *key, const char *salt);key – 口令原文(要加密的明文)salt – 杂字串(密钥) 格式: ididi

2021-08-27 16:59:28 186

原创 嵌入式软件开发 day18(进程环境)

进程环境7.3 进程终止 非常非常重要!!!!!!!!!pthread_exit(posix(标准) thread)abort():给本进程自己发送自杀信号一、进程终止1.1 钩子函数1.1.1 atexit()描述:当程序正常终止时,调用指定的函数 func。您可以在任何地方注册你的终止函数,但它会在程序终止的时候被调用。手册:man 3 atexit头文件:#include <stdlib.h>函数原型:int atexit(void (*function

2021-08-27 16:40:22 118

原创 嵌入式软件开发 day16(时间和日期例程)

系统数据文件和信息一、时间和日期例程1.1 time()描述:从内核中拿出一个时间手册:man 2 time头文件:#include <time.h>函数原型:time_t time(time_t *tloc);返回值:成功:返回time_t类型的大时间段失败:-1用法:time_t stamp;1.time(&stamp); //时间会回填到变量中2.stamp = time(NULL); //注意:参数不传的时候要NULL1.2 localti

2021-08-27 16:35:00 310

原创 嵌入式软件开发 day15(文件和目录)

文件和目录一、stat()描述:把文件pathname的属性填入到结构体statbuf中注意:stat与lstat区别stat:展开符号链接,回填的是符号链接所指向的文件的属性fstat:回填的是所打开文件的文件属性lstat:不展开符号链接,回填的是符号链接本身的文件属性头文件:#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>函数原型:int stat(con

2021-08-23 19:40:22 268

原创 嵌入式软件开发 day14(标准IO 文件IO)

APUEIO:标准io(std)(5)文件io(sys)(3)高级io(adv)(14)(阻塞的,非阻塞的)并发:信号(10,8)进程,多线程(11,12)IPC:PIPE管道(15)XSI:msg,sem,shm(15)SOCKET(套接字跨网络的,不在一台主机上的):dgram,stream(16)杂:4,6,7,9,13标准IOIO:inpute & output 是一切实现的基础stdio=>标准io 贯穿始终的类型:FILE* &l

2021-08-20 17:46:47 273

原创 嵌入式软件开发 day13(静态库,动态库)

一、静态库libxx.axx 指代库名1.1 创建静态库先生成一个.o文件gcc -c llist.c =>llist.o语法:ar -cr libxx.a yyy.o-cr 创建静态库ar -cr libllist.a llist.o发布到:头文件:/usr/local/includecp llist.h /usr/local/include库文件:/usr/local/libmv libllist.a /usr/loca/lib 1.2 调用静态库语法

2021-08-16 17:16:27 159

原创 嵌入式软件开发 day12(线性表,单链表,双链表,栈,队列,二叉树)

一、线性表线性表的特征:数据元素之间具有一种“一对一”的逻辑关系。第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。1.1 顺序存储的线性表1.1.1 创建定义结构体#define DATAMAX 128typedef struct{ int data[DATAMAX]; int last;}SQLIST;创建SQLIST *sqlist_c

2021-08-16 17:14:28 165

原创 嵌入式软件开发 day11(数据结构)

数据结构(date structure)数据与数据之间的关系一、关系1.1 线性关系1:1(一对一)线性表特点:有一个前驱,一个后继头节点只有一个后继尾节点只有一个前驱1.1.1 线性表顺序存储的线性表链式存储的线性表单链表双链表1.2 树状关系公司的组织结构图学校组织结构图家谱1:N(一对多)特点:有方向,没有环路1.3 图状关系生产环境中使用较多m:n(多对多)特点:没方向,有环路二、存储2.1 顺序存储特点:用一段地址连续

2021-08-16 16:55:21 131

原创 嵌入式软件开发 day10(make,makefile)

管理项目一、条件编译作用:包含头文件时,防止重复定义#ifndef _MOD_1_H__#define #endif二、Make和Makefile2.1 make和Makefile关系make工具:找出修改过的文件,根据依赖关系,找出受影响的相关文件,最后按照规则单独编译这些文件。Makefile文件:记录依赖关系和编译规则。2.2 Makefile三要素目标、依赖、命令2.2.1 三要素的关系目标:依赖的文件或者是其他目标<tab>命令1<ta

2021-07-28 15:20:14 189

原创 嵌入式软件开发 day9(结构体,共用体,动态内存,编译过程)

嵌入式软件开发 day9构造类型一、结构体1.1 结构体定义和使用1.2 结构体成员引用1.3 结构体初始化及赋值1.4 结构体嵌套定义1.5 结构体类型指针1.6 结构体类型数组1.6.1 一维数组1.6.2 二维数组1.7 地址对齐的概念1.8 结构体做函数参数1.9 类型定义;(typedef)二、共用体1.1 共用体定义和使用1.2 所占内存空间1.3 成员引用三、动态内存管理3.1 malloc()3.2 free()编译过程gccgcc预处理c文件gcc编译c文件gcc编译汇编gcc链接可重定位

2021-07-27 16:53:32 379

原创 Part5(结构体)

Part5 结构体练习1.结构体:构造一个学生结构体,包含成员学号,姓名,成绩,写函数实现功能:a)设置学生信息,b)更改学生姓名,c)显示学生信息。2.利用结构体和共用体来实现:一个32位无符号数的高16位和低16位相加。练习1.结构体:构造一个学生结构体,包含成员学号,姓名,成绩,写函数实现功能:a)设置学生信息,b)更改学生姓名,c)显示学生信息。#include <stdio.h>#include <string.h>struct student{ char

2021-07-26 21:12:47 272 1

原创 C练习 Part3(指针)

Part3 指针练习1.对字符串排序(简单选择法)练习1.对字符串排序(简单选择法)#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char* name[] = {"Follow Me","BASIC","Great Wall","Computer","Python"}; int i,j; char* t; int min = 0; for(i = 0;i&

2021-07-24 10:12:43 75

原创 C练习 Part4(函数)

Part4 函数练习1.两个数进行交换(不一定是地址传递就可以实现交换)2.求三个数中最大数和最小数的差值3.函数的嵌套调用:求三个数中最大数和最小数的差值4.嵌套的特例,递归:函数直接或间接地调用自身。利用递归求N!5.3个学生各学4门课,1)计算总平均分,2)只查看某学生的个各门功课成绩练习1.两个数进行交换(不一定是地址传递就可以实现交换)#include <stdio.h>#include <stdlib.h>/* swap *//*void swap(int

2021-07-24 10:11:24 107

原创 嵌入式软件开发 day8(函数)

函数函数是c语言开发的重要组成形式程序以main()作为入口出口一、函数的定义1.1 函数定义函数定义:<数据类型> <函数名称>( <形式参数说明> )函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式语法:返回值类型 函数名 (参数列表){ 函数体语句 return表达式}返回值类型 :一个函数可以返回一个值。在函数定义中函数名:给函数

2021-07-23 16:26:01 138

原创 嵌入式软件开发 day7(指针)

指针指针的作用: 可以通过指针间接访问内存定义:[数据类型]* 指针变量 = 值(地址)int i;int* p=&i;空指针:指向地址为0的指针空类型:void* m = NULL;不能做取*运算,用来传参和返回值。野指针:指针的指向不明确/指针的指向不归我们操作/空指针能有效地防止野指针产生示例:#include <stdio.h>#include <stdlib.h>int main(){ int i = 1; int *p =

2021-07-21 21:51:56 154

原创 C练习 Part2(数组)

1.使用数组写出fibonacci数列的前10项,并将该数组实现逆序输出和逆序存放。2.冒泡排序法3.选择排序法4.数组解决进制转换问题:从终端输入要进行转换的数字(num),及要转换成的某种进制(base),按输入要求进行输出。5.删除法求1000以内的所有质数6.自行构建一个一维数组,求数组中最大的数及所在下标7.构建一个可以存储10个整数的数组,将前9个位置初始化,将目标值100放在数组的第0个位置 (扩展:将目标值100放在任意指定的下标上)练习1.使用数.

2021-07-20 09:43:35 179

原创 C练习 Part1(循环)

1、投资问题:D1以10%的单利息投资了100美元(也就是说,每年投资赢的利息等于原始投资的10%),D2则以每年5%的复合利息投资了100美元(也就是说,利息是当前结余的5%,其中包括以前的利息),编写一个程序,计算需要多少年D2的投资额才会超过D1,并且显示出到那时两个人的投资额。2、读入数据,直到终端输入为0为止,计算输入的偶数(even)个数及平均值,以及奇数(odd)的个数及奇数的平均值3、写出Fibonacci数列的前40项(不用数组解决该问题)4、嵌套循环的引入:九九乘法表.

2021-07-20 09:42:41 265

原创 嵌入式软件开发 day6(数组)

数组特点:相同数据类型**的变量,连续存放特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的数据类型:一切可以用的基本类型和构造类型一、一维数组数组名的命名规范与变量名命名规范一致,不要和变量重名数组中下标是从0开始索引1.1 定义及初始化用法:[存储类型] 数据类型 标识符[下标]1.2 数组的存储特点相同数据类型的变量,连续存放1.3 数组元素引用用法:数组名[下标]数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] =

2021-07-20 09:04:59 325

原创 嵌入式软件开发 day5(输入输出,流程控制)

一、输入输出1.printf用法:printf("format",var...); format:%[修饰符]格式符返回值:成功打印字符个数示例:int main(){ int i = 1234; float f = 3.333; char ch = 'x'; double d = 6.666; int ret; ret = printf("Hello World!\n"); printf("RET:%d\n",ret); printf("%d %.1f %c %.2lf

2021-07-16 16:41:02 501

原创 嵌入式软件开发 day4(数据类型,常量,变量,运算符)

要求练习随堂代码——老师讲解(复习!!!)当堂练习——老师讲解课下作业——例:20道题,有5道上课会讲解,先写优先讲解的课下自学C语言一百题——自己做(找题目读完之后有思路,能看懂的题做)答案:主要看思路C语言试题汇编——自己练习答案:与答案不同时,可能是运行环境不一样面试题——数组面试题基本概念清楚数组指针,指针数组函数指针,指针函数指向指针函数的函数指针数组指针常量,常量指针课堂上随口说的,可以试试,去扩展内容当天知识点会解答,三四天后知识点不会讲,自己琢磨去吧一.

2021-07-15 18:00:17 432

原创 嵌入式软件开发 day3(进程管理,重定向,文件查找压缩)

嵌入式软件开发 day3一、守关将军1.umask1)改umask值2.拓展:二、软件包管理1.安装方式2.拓展:三、进程管理1.进程的基本概念2.查看进程1)ps2)top3.进程状态1.僵尸进程2.托孤进程3.杀死进程四、重定向/管道1.重定向1)重定向符号:2)输出重定向 (覆盖,追加)3)输入重定向2.管道1)排序命令2)裁剪内容命令3)去重命令五、文件的查找1.which命令2.find命令1)按文件名:2)按文件大小:3)指定查找的目录深度:4)按时间找(atime,mtime,ctime):5

2021-07-14 15:59:20 187

原创 嵌入式软件开发 day2(操作权限)

嵌入式软件开发 day2一、操作权限类1.基本权限(r、w、x)2.查看权限3.更改权限4.更改文件的属主、属组5.特殊权限1.作用2.设置特殊权限一、操作权限类1.基本权限(r、w、x)权限对文件的影响对目录的影响r(读取)可以读取文件的内容可以列出目录的内容(文件名)w(写入)可以更改文件的内容可以创建或删除目录中的任一文件x(可执行)可以作为命令执行文件可以访问目录的内容(取决于目录中文件的权限)2.查看权限命令: ls -l-rw-r–

2021-07-13 14:54:10 284

原创 嵌入式软件开发 day1(查看文件,目录,vim操作)

学习路线简介LINUX基础C语言——GNU C库数据结构——DS(递归思想,链表带头的,不带头的)UNIX环境高级编程——APUE+QT => 研究多进程并发,多线程并发shell:用户和操作系统内核之间沟通的桥梁命令集合——你给命令,我给输出!!擅用TAB键!!一、快捷键用法含义^c终止前台运行的程序^l清屏(clear)^a光标移到命令行的最前端^e光标移到命令行的后端^u删除光标前所有字符^k删除光标后所有字.

2021-07-12 16:54:02 460

原创 Linux学习笔记 day4

小建议:重构代码,随着知识面的完善,逐渐完善自己从前的代码,提升自己。编译过程预处理 编译 汇编 链接正常程序员编程时:在编程时要考虑异常情况,会加上异常处理函数gcc选项含义后缀转换过程-Egcc预处理c文件helloworld.c -> helloworld.i-Sgcc编译c文件helloworld.i -> helloworld.s-cgcc编译汇编helloworld.s -> helloworld.o.

2021-07-09 22:41:20 356

原创 Linux学习笔记 day3

C语言基础小知识:vim快捷键ctrl+p //自动补齐esc+ v 选中要对齐的 + = // 自动对齐选中当在vim中编辑文本时,终端不小心关闭了,找回文件方法:ldy@ldy:~$ ls -a. .config LinuxStudy .viminfo 文档.. C-Study .local .vim

2021-07-08 17:30:41 294 3

原创 Linux学习笔记 day2

文件管理基本命令小知识:一切皆文集:eg: $ touch a.exe.ppt.doc //会创建一个以a.exe.ppt.doc为文件名的文件例外:在执行gcc编译的时候,需要用到.c的后缀名,所以在进行编译时文件后缀应为.cgrep:从文本中找到需要的字符串用法:grep [要查找的内容] [文件路径]$ grep 'username' /etc/passwd /etc/shadow /etc/group //在三个文本中查找筛选出含有 username 的内容一、

2021-07-07 19:31:26 323

原创 Linux学习笔记 day1

快捷键ctrl+l //清屏(clear)ctrl+c //终止前台运行的程序ctrl+r //寻找历史命令上按键 //切换上一条命令下按键 //切换下一条命令一、初识shell我们使用的shell:bashbash:是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne shell。Bourne shell是一个早期的重要shell,由史蒂夫·伯恩.

2021-07-06 21:21:01 231 4

原创 C++学习的总结(类和对象)

本文主要记录了我在 “黑马程序员” 上自学C++的学习笔记为了总结我自己的笔记,开始写我自己的博客,目的仅仅是为了能够在任何地方能够随时随地登录我的账号来查看我的学习笔记,温故知新,也同时希望我的笔记能够帮助一些想要学习C++的小伙伴们。

2020-10-29 11:05:00 496

原创 C++学习的总结(基础篇五)

C++学习(基础篇五)函数作用: 将一段经常使用的代码封装起来,减少重复代码。函数的定义1.返回值类型2.函数名3.参数列表4.函数体语句5.return 表达式语法: 返回值类型 函数名 (参数列表) { 函数体语句; return表达式; }拓展:如果函数不需要返回值,声明的时候可以写void函数的调用语法: 函数名(参数);值传递作用:函数调用时实参将数值传入给形参注意:值传递时,函数的形参发生变化,并不会影响到实参函数的常见样式1.无参

2020-10-18 10:31:53 179

原创 C++学习的总结(基础篇四)

C++学习(基础篇四)数组数组,就是就是一个集合,里边存放了相同数据类型的元素特点:1.数组中的每一个数据元素都是相同的数据类型2.数组是由连续的内存位置组成的一维数组一维数组的定义方式:数据类型 数组名[ 数组长度 ] ;数据类型 数组名[ 数组长度 ] = {值1,值2,值3…} ;数据类型 数组名[ ] = {值1,值2,值3…} ;注意:1.数组的命名规范与变量名命名规范一致,不要和变量重名2.数组中下标是从0开始索引的一维数组数组名一维数组名称(sizeof)

2020-10-18 09:57:50 113

原创 C++学习的总结(基础篇三)

C++学习(基础篇三)循环结构while 循环语句作用:满足循环条件,执行循环语句。语法:while(循环条件){循环语句;}只要循环条件的结果为真,就执行循环语句。//while案例练习 猜数字//系统随机生成一个1-100之间的数字,玩家进行猜测,如果猜错提示玩家数字过大或过小,如果猜对恭喜玩家,并退出。#include <iostream>using namespace std;//系统时间头文件#include<ctime>int main()

2020-10-17 22:49:05 121 3

空空如也

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

TA关注的人

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