- 博客(80)
- 收藏
- 关注
原创 Day 79 linux 下七种异常机制
七种异常非特权user 用户模式 应用程序运行的工作模式特权system 系统 和user使用同一组寄存器的特权模式异常svc 管理模式 cpu上电、复位后的模式、软件中断的工作模式abort 中止模式 预取失败、数据加载失败cpu的工作模式undef 未定义 出现不识别指令时,cpu的工作...
2019-10-07 22:52:27 240
原创 Day 78 初始驱动
#pragma pack(1)/dev 目录下存放 设备节点/sys 目录下存放 所有的设备文件/proc 目录下存放 所有的内核//动态加载模块insmod hello.ko//动态卸载模块rmmod hello2.linux下设备的分类字符设备:块设备:网络设备:3.编写驱动时如何区分设备的:4.注册字符设备驱动的流程:(1)确定设备号: 动态注册:all...
2019-10-06 22:06:12 137
原创 Day 77
1.物理地址:实际真实存在的地址,半导体厂商对器件的线性排布2.虚拟地址:cpu 的地址请求都是虚拟地址。arch :体系结构代码。平台相关代码在此放。kernel编译:1.确定平台2.剪裁3.编译...
2019-10-06 00:33:43 298
原创 Day 76 初始liunx 嵌入式。搭建linux操作系统
1.嵌入式是什么,专用的计算机系统。2.计算机的五大组成部分, 运算器,储存器,控制器,输入,输出。3.soc (System on chip)片上系统,cpu加功能电路。4.驱动,硬件操作的方法。5.内存与cpu的地址,数据总线相连。6.嵌入式系统不可缺少的软件部分:(1)bootloader 加载引导内核,储存在flash运行在内存。-》u-boot工程。(2)操作系统内核,必须挂...
2019-10-04 21:42:25 96
原创 Day 75 指针常量,常量指针 c++四个强制转换
1.指针常量: intconst p;//在指针常量中,指针指向的地址是一定的,但其内容可以修改。2.常量指针: const int p int const* p//在常量指针中,指针指向的内容是不可改变的,指针看起来好像一个常量。3.设置共享目录 在 sudo vim /etc/exportsc++ 中四个强制类转换,也叫显示转换1,const_cast//去掉常量类型,c...
2019-10-04 21:41:35 322
原创 Day 74 ipc
1.进程与线程概念:进程线程都是为了实现并发,线程可以说是轻量级的进程。新开一个进程系统会分配4G的虚拟内存空间,进程的资源是不共享的。新开一个线程系统会给新的线程划分一个8M的私有空间,线程的资源是共享的。区别:进程比线程要稳定,一个进程崩了不会影响其他进程;线程稳定性比进程要差;线程执行效率比进程要高。开一个进程要4g虚拟内存,而提起一个线程只需要新开一个8M的私有栈。2.进程间通讯的方式...
2019-10-02 23:06:26 108
原创 Day 71 虚函数,运行时多态
liunx下如何将结构体中的成员储存的更紧凑一些:可以有两种方式:(1)将数据类型小的类型放在结构体的前面。(2)使用#pragma pack(1)预处理命令将,储存方式改为一个字节的储存方式,这样做虽然节省了空间,但效率却有所降低。重载运算符 << 时不能定义在类中,要在类外定义;赋值运算符只能写为类的成员函数重载。delete 删除空指针NULL(nullptr...
2019-09-29 22:38:38 93
原创 Day 70 继承, 虚基类构造,顺序
派生基类实际经历了三个步骤,吸收基类成员,改造基类成员,添加新的基类成员。面向对象的继承和派生机制,其主要目的是实现代码的重用和扩充。派生的构造和虚构,虚基类,//class的默认继承是private的,struct的默认继承是public的class 的默认继承是private 的,struct的的默认继承是public的。派生类的三种继承方式: public继承,protected继...
2019-09-28 22:50:22 197
原创 Day 69 直接到函数入口地址
// int k = 15, j, l, m;// auto fn = [&](int &n){cout << n + j + k << endl;};//闭包// int i = 10;// fn(i);// cout << k << endl;//lamda 表达式 短小函数就地编写//[...
2019-09-27 23:54:42 1216
原创 Day 68 //编写string 类,友元函数
1.懒汉模式多线程时是不安全的。2.友元函数:3.volatile 是禁止系统优化的意思。如果不禁止优化,系统可能取变量时不从内存中取,而是去寄存器中直接读出。4.简单的说数组就是一种数据类型,它的本质是具有:单一性,有序性,连续性;5.STL是类模板库,标准类模板库。 Vector < > v;迭代器 【)左闭右开;6.两个指针不能相加, 但两个指针可以相减,相减时必须...
2019-09-26 23:00:51 144
原创 Day 67 组合,标识符作用域与可见性, 单例模式中的,懒汉,饿汉模式
1.组合,在c++中一切皆对象,而每个class不可能就一下包含了对象的所有属性和行为,这就出现了类的组合。比如要描述计算机,计算机类有不可缺少的两个属性,一个是硬件一个是软件。而硬件又可以是一个类,包括cpu和内存;软件也可以是一个类包括操作系统和各种应用;然而cpu,内存可以是一个类,操作系统应用又可以是一个类,,,,依次类推,,所以就有了类的组合问题2.函数的重载要在同一作用域下3....
2019-09-25 22:00:35 102
原创 Day 66 构造函数, 复制构造函数,析构函数 ,匿名对象(临时对象)
1.什么是抽象:面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质,并加以描述的过程。2.封装就是将抽象得到的数据(属性)和行为相结合,形成一个有机的整体;也就是将数据与处理数据的函数相结合。3.继承在原来类的基础上,添加新的属性和行为,时对于对象具有更多的属性和行为。4.多态,多态性是指一段数据可以处理多种数据类型对象的能力;重载函数就是实现多态的一种手段。多态...
2019-09-24 23:26:46 151
原创 Day 65 初始 c++ 引用, 枚举, 内联, 重载,
1.linux 下编译c 用的编译器是 gcc ;编译c++ 用的编译器是 g++2.类库 微软的是MFC . ;;; Qt类库是跨平台的,windows 下的类库不能跨平台。c++ 是面向对象的编程思想。 有23种设计模式。在c++中 “cout <<” 表示流插入; << endl(操控子) 相当于’\n’; c++ 11标准 (2017年发布) 。 ...
2019-09-23 22:24:23 106
原创 Day 64 //找斐波拉契数, 使用递归
int fib(int i){if(1==i || 2 ==i){return 1;}else{return fib(i-1)+fib(i-2);}}
2019-09-23 22:22:15 89
原创 Day 63 linux 下绘制屏幕
//linux 下绘制屏幕,打开屏幕,再用mmap函数映射内存#include<stdio.h>#include <sys/mman.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<stdlib.h>int main(...
2019-09-21 22:44:47 308 1
原创 Day 62 linux下 获取屏幕输入
Linux下所有获取屏幕输入底层都是此方法。//获取屏幕坐标,0x03表示//type EV_ABS 03 绝对坐标// code ABS_MT_POSITION_X 0x35 绝对坐标值的x值// code ABS_MT_POSITION_X 0x36 绝对坐标值的y值#include <stdio.h>#include <linux/input.h>...
2019-09-21 22:43:20 318
原创 Day 61 关于strstr ,strtok, 以及 atoi 函数
char buf [200];假设buf 里面存入了一串数字。要从buf 里面获取数据,就会使用到strstr 以及strtok, 但需要注意的是,strstr函数找数据时会把原来的指针改变,返回的指针是指向所要找的字符一直到后面的数据。但不会破坏后面的字符串, 但如果使用strtok 函数,返回的指针是截取前到截取的字符串,后面的字符串会被截断。使用strtok时,这里要特别注意指针...
2019-09-19 22:22:53 430
原创 Day 60 teacher 简单配置
1.使用securectr 或minicom 使用串口 和板子连接波特率115200 N81 linux USBtty0 流控全部关闭2.交叉编译环境的配置 arm-gcc1)把arm-linux-gcc-4.5.1-v6-vfp-20120301.tar.gz复制到虚拟机当中2)解压 tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tar.gz ...
2019-09-18 23:56:59 155
原创 Day 59 哈希表储存
哈希表,首先要确定表的大小。如果12个数据存到表大小为12的表中。则存的时候会比较浪费时间一些。取值的时候一把就可以取出来。取得时候时间复杂度为O(1)#ifndef HASH_H#define HASH_H#include <stdio.h>#include <string.h>#include <stdlib.h>typedef int DAT...
2019-09-17 23:38:51 196
原创 Day 58 树的遍历
1.在gdb调试的时候如果进入了系统的函数,则可以 return跳出函数。//使用递归的方式构造二叉树,及二叉树的遍历,前序,中序,后序。#include <stdio.h>#include <stdlib.h>#include <string.h>typedef char DATATYPE;typedef struct Node /* 结点结构...
2019-09-16 22:48:12 81
原创 Day 57 树,哈夫曼编码
1.树是一对多的。树的储存方式顺序结构,链式结构。2.树的子结点如果相交后就变为了图。4.树:n(n >= 0)个结点的有限集合。n =0时称为空树。在任意一个非空树中:(1)有且仅有一个特定的根结点(2)当n>1 时,其余结点可分为m个互不相交的有限集合T1,T2,T3.。。。。Tm,其中每一个集合又是一个树,并且称谓子树。5.结点拥有子树的个数称谓结点的度。度为0的结点...
2019-09-16 22:44:25 598
原创 Day 56 队列的链式结构
使用队链,模拟排队执行命令,将将要执行的命令存入队列中,按照先进先出的原则进行执行#ifndef QUEUE_H#define QUEUE_H#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <error.h>#include <string.h&...
2019-09-14 20:38:53 76
原创 Day 55 远程登录时遇到的两个小问题 --- 百里香
1.远程登录主机当断开连接时,主机运行的进程也会被消亡,因为是通过ssh连接的。通讯断开子进程就会被系统回收将进程设置不挂断属性可以解决此问题。nohup <> //不挂断sudo ./a.out&此命令可以将程序挂起,不至于远程登录中断后,进程就被消亡。2.断开连接后进程不会再随着通讯中断而被销毁,但又出现了一个新的问题,下次重新远程登录后则看不到上次操作的终端...
2019-09-14 20:22:00 96
原创 Day 52 香芹
#ifndef HEAD#define HEAD#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct person {char name[32];char sex;int age;int score;}DATATYPE;typedef struct Du...
2019-09-10 23:35:19 159
原创 Day 51 线性表顺序存储
如果申请的空间已经释放了,还再次释放会出现程序段错就如下面的情况:*** glibc detected *** ./a.out: double free or corruption (fasttop): 0x09b2d1d8 ***内存泄露检测工具sudo apt-get install valgrindvalgrind ./a.outchar buf[1024];线性表顺序存储的优点...
2019-09-10 00:07:34 113
原创 Day 50 关于tcp 连接的一些问题,,,,,,
...关于tcp 连接的一些问题,当客户端连接上服务器后,服务器会停止在recv()函数等待,此时会有一下几种情况:(1)当客户端突然终止连接时,recv()函数会返回一个小于0的整数,int ret = recv(); ret 小于0,此时可以判断后让子进程结束,避免浪费资源。(2)当多个进程的套接字进程创建后,如果,连接端没有意外断开,一直连接着,但一直不给服务器发送请求。这时候...
2019-09-08 22:10:11 183
原创 Day 46 转义字符大法好。
转义字符,在字符串拼接的时候可以妙用,尤其是对一些格式命令。转义字符//char *sql_cmd = “insert into user3 values(null,‘hhhh’,datetime(‘now’,’+8 hours’));”; sql 插入命令sprintf(sql_cmd,“insert into user3 values(null,”%s", “%s”, datetime(...
2019-09-04 23:19:24 133
原创 Day 45 全局变量赋值
1.C语言初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值!2.for() 循环后面不能加分号,牢记(惨案)。
2019-09-03 23:31:38 489
原创 Day 44 初识IO复用
io的多路复用,当客户端的并发需求并不是很高时,服务端就没有必要来使用多进程或者多线程来实现高并发。可以使用io复用的技术来进行一般的并发处理,这种技术的优点是节约资源,但当客户端都是高并发时则不能去使用该模型。步骤:1.定义集合 fd_set rd_set,rw_set;2.把集合内清0 void FD_ZERO(fd_set *set);3.将指定的fd描述符添加到set集合中 ...
2019-09-02 23:52:32 109
原创 Day 43 fopen open,
fopen() // FILE *fopen(const char *path, const char *mode);打开标准io流的mode参数:r 或rb 打开只读文件,该文件必须存在。r+ 或r+b 打开可读写的文件,该文件必须存在。w 或 wb 打开只写文件,若文件存在则文件长度清0,即会擦写文件以前的内容,若文件不存在,则会建立该文件。w+ 或w+b 或wb+ 打开可读写...
2019-09-02 23:49:51 115
原创 Day 42 知识点,teacher
数组:一维数组:1.定义:存储类型 数据类型 数组名[元素个数]; 存储类型: (默认) auto:局部变量、自动型变量 register:寄存器变量 extern:声明一个外部变量 static:静态变量 数据类型: 基本数据类型 1.整数类型 2.浮点数类型 3.缺省类型 4.泊尔类型(逻辑类型) 构造数据类...
2019-08-31 16:38:52 261
原创 Day 41
strcpy();char *strcpy(char *dest, const char *src);//不能规定要拷贝的字符串长度,这种类型可能导致越界操作,如果目标空间小于源空间时,源空间的字符串都//拷贝过去了,就会造成越界操作strncpy();char *strncpy(char *dest, const char *src, size_t n);//此函数可以有效的阻止越...
2019-08-31 15:18:28 79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人