自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1229 day1 复习笔记

rm -r kk //删除目录kk美丽废物命令 cmatrixsudo 申请更高级权限执行命令cat 查看文件内容rm 删除文件rm -f 强制删除gedit hello.c 编辑gcc hello.c 编译目录类型bin 系统命令sbin 超级用户命令dev 系统的设备文件etc 配置文件...

2021-12-29 19:27:00 528

原创 2021-04-30

C++对C语言的升级C++独有的特质C++与Java的区别函数重载的原理C++对象移动解决的问题结构体与类的区别有几种构造函数每种构造函数解决的问题初始化列表作用什么是引用引用解决的问题C++的强制类型转换C语言与C++static关键字的区别重载与重写的区别类之间的关系继承规则继承构造函数的调用顺序继承的二义性多态的实现多态的实现机制多态的形成条件正则表达式C语言的异常处理GC机制C++为什么没有GC机制(内存管理)模板的偏特化与全特化new与mallo

2021-04-30 11:44:08 101

原创 0429嵌入式学习笔记 (33)拷贝构造函数/继承/多态

拷贝构造函数:形参是该类型的对象引用,若类里无自定义拷贝构造函数系统会默认生成拷贝构造函数;函数返回值移动拷贝构造函数:解决临时对象拷贝的开销问题可以把一个函数指定为友元,也可以把整个类指定成友元某类的友元函数的作用域并非该类作用域,如果该友元函数是另一类的成员函数,则其作用域为另一类的作用域否则与一般的函数相同函数不是类的一部分,但又需要频繁的访问类的数据成员成员函数和友元函数重载的选择一般情况下,单目运算符最好重载为类的成员函数;双目运算符最好重载为友元函数-> = () []类

2021-04-29 11:44:11 200

原创 0429 嵌入式学习笔记 (32)STL标准模板库/类的方法

文章目录STL(标准模板库)STL(标准模板库)从逻辑层面看,在STL中体现了泛型化程序设计思想从实现层次看,整个STL是以一种类型参数化的方式实现的STL六大组件1、容器2、迭代器3、算法4、适配器5、分配器容器:vector,list,deque,stack,queuevector:向量容器:连续存储元素list:双向链表deque:双队列stack:栈:先进先出的值的排列queue:队列先进先出的值的排列stringstring s1=“hello world”st

2021-04-28 17:44:08 215 1

原创 0427 嵌入式学习笔记 (31)模板

#include<iostream>using namespace std;template <class T>class Queue{ public: Queue(int size) { len = 0; size = 30; dp = new T[size]; start = 0; end = -1; } void push(T dat);//入队操作 T pop();//出队操作

2021-04-27 11:44:34 58

原创 0426 嵌入式学习笔记 (30)模板/类模板

文章目录模板类模板模板参数多态化的工具(根据指定参数类型动态处理)GC:所谓参数多态化,是指将程序所处理的对象的类型参数化,使一段程序代码可以用于处理不同类型的对象作用:采用模板编程,可以为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制函数模板:通用函数,用虚拟数据类型代替,等到运行时才进行类型替换template< typename T> //T就是虚拟的数字类型隐式调用:由编译器自行推导数据类型称为隐式调用,不由程序员指定显式调用:不由编译器推导,由程序员指

2021-04-26 17:45:35 94

原创 0425 嵌入式学习笔记 (29)运算符的重载

补充:c++里::的作用声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f()函数是类A的成员函数。::域名解析符返回值类型名 类名::函数成员名(参数表){函数体}这个是在类内声明函数后在类外定义的一种方法!如果不加"类名::"的话,编译系统就不会知道你的函数属于哪个类;另外,这样定义函数一定要在类中声明之后,说明它是类的成员函数才可以!在类内声明的时候就不需要::了,直接 返回值.

2021-04-25 09:42:04 94

原创 0423 嵌入式学习笔记 (28)继承

单继承#include<iostream>using namespace std;//写一个 人类 类class People{ public: void setname(const char * name); void setage(int age); const char * getname(); int getage(); void display() { cout << getname() <&l

2021-04-23 11:45:12 157

原创 0422 嵌入式学习笔记(27)complex/this指针/初始化列表/析构函数

构造函数特点:1、函数名和类名相同2、无返回值complex(){}1、构造函数允许重载2、每一个类都有自带的默认构造函数3、一旦你自己定义了构造函数,会将原本系统默认的构造函数覆盖4、构造函数没有返回值5、类complex的复制构造函数不能带有complex类型的参数6、类的对象作为参数传入,会调用复制构造函数,产生新的对象this指针当类没有复制构造函数的时候,=的作用就只是引用(s4)匿名对象:生命周期只存在于创建的那一行代码,超过那一行会立刻被释放析构函数:将构造函数进行解

2021-04-22 11:44:01 281

原创 0421嵌入式学习笔记 (26)结构体的升级·string·vector·c++类型转换

升级3:可以设置访问权限:public/private/protectedpublic:可以结构体内结构体外访问class VS struct区别:默认访问权限:class默认private struct默认public命名:class类 struct结构体 class定义称之为对象 struct定义称之为变量为什么引入类?体现C++的封装性(保证代码功能的独立(设置访问权限))———提高代码的维护性(准确定位代码问题类的编写规范:class Person{int cout; /

2021-04-21 17:43:12 199

原创 0420 嵌入式学习笔记 (25)输入与输出/C++对C语言的升级

文章目录输入与输出C++对C语言的升级关键字的升级类型的升级malloc\free函数的升级嵌入式面向对象编程学习目标:掌握嵌入式GUI(图形化界面)开发-QT库1. 解决命名冲突1、c语言中解决命名冲突的方法:使用static关键字作用:修饰局部变量:延长局部变量的生命周期,程序结束后再释放修饰全局变量:该全局变量只能在本文件访问,不能在其他文件访问修饰函数:该函数只能在本文件调用,不能在其他文件调用2、c++语言解决命名冲突:命名空间命名空间的定义:namespace 名字{

2021-04-20 11:40:50 98

原创 0416 嵌入式学习笔记 (24)

TCP客户端的实现(client)1、用socket创建套接字文件,指定使用TCP协议2、调用connect主动向服务器发起三次握手,进行连接int connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen);功能:向服务器主动发起连接返回值:成功返回0,失败返回-13、调用read(recv)和write(send)收发数据4、调用close或者shutdown关闭连接无法绑定解决:int opt = 1;set

2021-04-16 11:44:27 70

原创 0415 嵌入式学习笔记 (23)协议· C/S · B/S · socket函数

@TOCUDP:1、无连接不可靠2、局域网:UDP传送数据的最长长度—1518-18-20-8-1472bit广域网:UDP传送数据的最大长度=65535-IP(头20)-UDP(8)=65507字节使用sendto函数发送超过65507会返回错误协议的特点无连接,减少了开销和发送数据前的延迟尽最大努力进行交付(不保证可靠交付),主机不需要维持复杂的连接状态表面向报文:发送方的UDP对应程序交下来的报文,在添加首部之后就向下交付给IP层,既不拆分也不合并没有阻塞控制支持一对一,多对一和

2021-04-15 11:46:24 218 1

原创 0414 嵌入式学习笔记(22)

1、实现网络通信需要哪些支持通信设备:网卡:pc机自带交换机、路由器光纤、电缆、基站通信协议:操作系统自带协议栈(Linux的特点:丰富的协议)裸机开发需要独立的协议栈传输层的文件描述符作用逻辑套接字简单的网络通信只需要学会使用API(man sockt2、什么是通信协议,作用?通信双方确定一种数据格式,以及通过什么形式来发送TCP/IP协议栈OSI七层网络模型,linux四层网络模型协议栈作用物理层:通信介质的信号到数字信号(二进制01001)转换数据链路层:局域网之间

2021-04-14 17:45:05 202 4

原创 0412 嵌入式学习笔记 (21)

文章目录前言前言多线程存在的问题:进程所支持的线程数量问题(受限)int thread_num //已开启的线程的数量struct job *head; //任务队列的头struct job *tail; //任务队列的尾int queue_max_num //任务队列的最大数int queue_cur_num //任务队列已有多少个任务pthread_t *pthread_ids //保存线程池中线程的idpthread_cond_t queue_empty;//任务队列为空的条件.

2021-04-12 17:46:21 59

原创 0409 嵌入式学习笔记 (20)

线程等待的目的:**保证线程的退出顺序:**保证一个线程退出并且回收资源后允许下一个进程退出**回收线程退出时的资源情况:**保证当前线程退出后,创建的新线程不会复用刚才退出线程的地址空间获得新线程退出时的结果是否是正确退出返回值线程的状态可结合态:这种状态下的线程是能被其他进程回收资源或杀死的可分离态:不能被其他进程回收资源或被杀死的,它存储的资源在它终止时由系统自动回收默认情况下,线程是可结合态pthread_detach()#include <pthread.h>int

2021-04-09 11:44:48 71

原创 0408 嵌入式学习笔记 (19)结构体

pthread_exit()#include <stdlib.h>void exit(int status);1、功能线程调用这个函数时,可以主动退出(终止)它和exit()很像,exit()是终止整个程序,而pthread_exit是终止次线程。如果你在次线程里面调用错误,调用的是exit,整个线程就终止了2、返回值成功返回0,失败返回非零值3、参数retval:线程结束的返回值如果返回值很多时,就会封装成一个结构体,返回结构体变量的地址即可retuen ()注册线程

2021-04-09 09:36:44 66

原创 0402嵌入式学习笔记 (18) 消息队列/创建线程 void *arg:线程参数

消息队列:传送有格式的消息流多进程网状交叉通信,实现大规模数据通信使用内核中的链表(实现机制)posix的消息队列和系统V消息队列区别:消息队列是随内核随机的线程什么是线程线程是进程的一个实体,它是程序运行的最小单位为什么要学习线程1、线程是进程的一个实体,它是程序运行的最小单位,它比进程要消耗更少的资源2、能共享地址空间(进程)(堆栈:程序栈)线程由哪些组成1、指令指针2、一个栈(函数栈)3、寄存器的集合(状态寄存器:一部分正在运行中的处理器的状态)4、一个私有的数据区线程

2021-04-02 11:45:30 378

原创 0401 嵌入式学习笔记(17)创建共享内存

管道 :1、传输数据量少,因此只适合小数据量的传输2、管道数据被读出便会自动删除3、管道数据是什么格式输出?共享内存无格式:当数据量大且读写效率要求较高的时候(读写效率高减少了进出内核的次数)内核的实现原理:在内存中开辟一块内存可以让多个进程共享(malloc)如果一个进程对于共享内存的内容进行了更改,其他进程都会受到影响一个共享内存的最大容量:shnmaxPosix: 系统V mmap开辟共享内存int shmget(key_t key, size_t size, i

2021-04-01 11:45:48 140

原创 0330 嵌入式学习笔记 (16)有名管道/管道通信

无名管道缺点:不同进程不能通信 解决方法:取名必须在系统调用fork()前调用pipe(),否则子进程将不会继承文件描述符(1)如果管道的写端不存在,则认为已经读到数据末尾,该函数返回的读出字节数为0(2)如管道写端不存在时,如果请求的字节数目大于PIPE_BUF,则返回现有的数据字节数;如果不大于,则返回现有数据字节数,或请求字节数有名管道int mkfifo(const char *pathname,mode_t mode)mode:O_WRONLY(可读)O_EDONLY(可写)

2021-03-30 11:46:43 129

原创 0329 嵌入式学习笔记(15)wait/僵尸进程/管道

wait函数族1、wait函数:将当前进程挂起,等待信号来临,再继续运行用来等待子进程的结束

2021-03-29 11:45:47 105

原创 0326 嵌入式学习笔记(14)查看/关闭/创建进程/fork()

进程控制1、什么是进程:进程是可并发执行的程序,是一个在数据集合上的运行过程当一个程序开始执行后,在开始执行到执行结束的这段时间里,它内存中的部分被称为进程通俗讲:程序:在硬盘上的可执行文件进程:在执行中的程序2、什么是并发 多个进程同时运行,多个任务同时执行3、虚拟内存Linux虚拟内存管理技术:物理内存:实际在处理器中的内存模块 几百M将硬盘中的一部分存储单元拿来当内存使用 4G(受操作系统的寻址范围的影响)0x0000000-0xfffffff操作系统:内核空间

2021-03-26 11:43:35 170

原创 0325 嵌入式学习笔记(13)

6、写字符的家族:fputc:将某一字符写入文件流int fputc(int c ,FILE*stream)putc 宏putchar©7、printf家族 和 scanf家族1)、printf家族2)、fprintf:int fprintf(FILE*stream,const char *format,…);stdoutsprintf():往字符串里写字符串fscanf():从文件流里写读字符串int fscanf(FILE *stream,const char *fo

2021-03-26 08:19:13 39

原创 0324 嵌入式学习笔记(12)fopen/fseek/getc(fp)/getchar()

day12lseek:用来调整光标的位置lseek(文件描述符, 光标移动的位置数, 光标移动的形式)SEEK_SET:将光标移动到文件开头在增加响应的offset位置SEEK_CUR:将光标移动到文件的当前位置再往后加offset的位置SEEK_END:将光标移动到文件的末尾在增加offset的位置lseek(fd, 0, SEEK_SET)写在read上一行lseek函数返回值:返回值是从文件开头到光标位置有多少个字符6、ftruncate:将指定的文件大小修改成length指定的大

2021-03-24 17:44:42 243

原创 0323 嵌入式学习笔记(11)文件属性/man/fd/open函数/write函数

1、文件编程 进程线程编程 TCP/UDPLinux文件:文件本身包含的数据(打开文件可以看到的数据信息)2、文件属性ls -l(元数据:文件的访问权限,文件的大小,创建日期等)目录也是文件之一(当创建一个新的目录的时候,系统自动创建两个文件项. …). :当前目录… :上一级目录proc sus都是保存内核信息的boot存放启动文件bin:二进制文件user/local:用户个人安装文件user/sbin:超级用户的一些管理程序user/src:源代码/- 根/bin中 -

2021-03-23 11:45:42 348 1

原创 0322 嵌入式学习笔记(10)

day 10expr命令格式:expr expression(命令读入expression参数,计算它的值,然后将结果写入标准输出)参数应用规则:1、用空格隔开每个项2、用反斜杠\放在shell特定的字符前对包含空格和其他特殊字符的字符串要用引号括起来3、计算字符串长度expr length “this is a lest”144、增量计数说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反引号的用法是命令替代while循环语句while<判别令&gt

2021-03-22 17:43:12 192

原创 0319 嵌入式学习笔记(9)

day 94、变量表达式test是shell程序中的一个表达式,通常用在流程控制for,while,until,if等结构中,用test命令去判断文件的存在与性质,变量的相互关系语法:test<表达式>如果<表达式>成立,test返回0,反之返回一个非0值字符串比较两个数值的比较逻辑操作,可以进行and/or,与其他条件联合使用文件操作,例如文件是否存在文件的状态等字符串比较-z<字符串>:比较字符串的长度是否为0如果等于0则为是 返回0-n&lt

2021-03-19 11:14:34 125

原创 0318 嵌入式学习笔记(8)

day 8显示本地变量echo $变量名 或echo $(变量名)eg#num=2#echo “this is $numnd”#num=2#echo “this is ${num}nd”eg2要将name的内容多出yes,两种方法#name="$ name"yes 或 #name=${name}yes#echo $name#yeseg3在子shell下变量的作用范围#aa=11#bash 进入子shell#echo $aa.#aa=22#echo $

2021-03-19 08:51:33 58

原创 0317 嵌入式学习笔记(7)

day7标准输入的文件描述符为0标准输出的文件描述符为1标准错误输出的文件描述符为2【 > 】重定向符号 a>b 把a的输出结果输入到bshell就是一个命令解释器,它为用户提供了一个向linux内核发送请求以便运行程序界面系统级程序目前流行的几种shell:ash,bash(Linux下的shell类型),ksh,csh,zsh等#echo $SHELL 此条命令用来查看SHELL类型(echo 是输出)管道pipecommand|com

2021-03-18 08:53:39 48

原创 0316 嵌入式笔记(6)

day 61、嵌入式Linux开发工具-编译器gcc (静态库 动态库的制作)可以制作库 库的使用2、嵌入式linux开发工具-调试器gdb(调试方法)目标:可以调试简单的错误以及内存错误3、嵌入式Linux开发工具-工程管理器make 目标企业级的makefile、cmake4、嵌入式Linux开发工具-git版本管理5、嵌入式Linux开发工具-shell...

2021-03-17 16:38:47 56

原创 0315 嵌入式学习笔记(5)

day 5企业级makefile 编写1、总控makefile:进入各个功能子目录执行make命令,并将所有.o文件生成可执行文件2、功能目录makefile:将功能目录下的所有.c文件编译成.o文件3、脚本目录makefile:定义其他makefile文件所用到的变量阅读makefile顺序:3·1·21、$ (wildcard 模式参数)eg:result: =$(wildcard *.c)result 列出当前目录下所有.c文件2、$(patsubst 模式参数,参数1,参数

2021-03-17 16:30:45 57

原创 0312 嵌入式学习笔记(4)

day4嵌入式linux开发工具-调试器gdb1、gdb也是GNU计划(a\启动运行程序 b\设置断点 c\查看变量值)2、使用gdb之前:需用-g编译选项3、学习gdb命令:gdb可执行文件 --tui4、运行命令:run® continue©5、设置断点:break+行号 break+函数名 break+行号+条件6、查看断点信息:info break7、删除断点:delete+断点号(查看到的,最前的编号1、2、3…)8、单步执行:next(不进入子函数) st

2021-03-17 16:23:31 45

原创 0311 嵌入式学习笔记(3)

day 3vim demo.cgcc demo.c -o demogcc -Wall demo.c 显示所有隐式警告库文件:存放函数和变量的仓库,特点:只能使用库里的函数和变量,不能看到其实现静态库.a:当使用静态库时,库里的函数和变量是在编译时加载到可执行文件动态库.so:当使用动态库时,库里的函数和变量是在运行时加载到可执行文件的可执行文件的大小:静态库>动态库------内存使用效率不高可执行文件的速度:静态库>动态库 >运行效率可执行文件的功能升级:静

2021-03-17 16:21:18 56

原创 0310 嵌入式学习笔记(2)

day2查找ip: ifconfigvim hello.c任意按a或i 进入插入模式强制退出方式:先按ESC 再输入冒号:再输入g! 强制退出 :q!退出底行模式:wq 保存退出 wq!强制保存退出插入模式按ESC进入命令模式命令模式下:(光标在某行)按yy为复制,接着按p为粘贴,dd为删除,u是撤销操作(回头)多行操作:10yy 复制十行 5dd 删除5行按: 进入底行模式然后输入s/hello/hi 即意为将hello替换为hi :

2021-03-17 16:14:15 78

原创 0309 嵌入式学习笔记(1)

day1 基础命令(-)普通文件(d)目录文件(c/b)设备文件(I)链接文件(p)管道文件(f)堆栈文件(s)共享文件drwxr-xrr读 w写 x执行Clear 清屏切换 su root/jsetc (管理员/普通用户)adduser xx 创建用户 root环境下sudo adduser xx 普通用户借用管理员权限创建用户sudo userdel xx 删除用户(借用管理员权限sudo)root@jsetc-virtual=machine:/# cd /

2021-03-17 16:03:26 51

空空如也

空空如也

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

TA关注的人

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