苏嵌上课内容
louyijie
这个作者很懒,什么都没留下…
展开
-
苏嵌4 16.11.2
由于熬夜3晚看C语言实在太累 决定今天早点休息 故只写上课笔记 1、单片机开发硬件第一步? 看原理图 2、单片机的缺点 ①编写软件的人同时要懂硬件 ②不可移植(硬件变 软件也要跟着变) 3、单片机 软件控制硬件 在已有硬件上移植操作系统 软件移植性提高原创 2016-11-03 00:19:13 · 373 阅读 · 0 评论 -
苏嵌 补17.02.27
继承:基类(父类)派生类(子类)派生类是基类的具体化用法:class 派生类名 :基类名继承的三种方法:公有 私有 保护默认继承:struct D1:Base{}; //公有继承(结构体也可以继承)class D2:Base{}; //私有继承派生类无法访问基类的构造函数派生类中的所有的构造方法都需原创 2017-03-01 19:58:54 · 259 阅读 · 0 评论 -
苏嵌 17.2.28
多态:多态的体现:①函数重载 ②运算符重载③模板④虚函数静态绑定(静态联编):函数重载 运算符重载 模板动态绑定(动态联编):虚函数什么是多态?同一个实现接口传递不同实例实现不同的操作虚函数:基类中加virtual基类指针指向派生类对象时触发多态①需要在基类中定义共同的原创 2017-03-01 15:47:21 · 318 阅读 · 0 评论 -
服务器与客户端的基本操作
/******************* 服务器 *******************/ #include #include #include #include #include #include #include #define SERV_PORT 8000 int main(int a原创 2017-01-20 21:46:48 · 458 阅读 · 0 评论 -
Mysql单文件存储删除数据Bug文件容量不会减少
MySQL的Bug之一:InnoDB ibdata1 never shrinks after data is removed问题描述当innodb引擎使用单个文件进行存储的时候,当对数据库中数据进行删除的时候,文件的大小并不会发生变化,意味着文件将会越来越大并且即使删除也没办法 让其释放磁盘的空间。转载请注明出处:http://blog.csdn.NET转载 2017-01-19 22:56:22 · 267 阅读 · 0 评论 -
苏嵌33 17.01.18
文件----------存储数据(缺点)无格式的存取数据库文件:特殊的文件数据库:有结构的,集成的,可共享的统一管理的数据结构★关系型数据库模型RDBMS(二维表格)元组:一行属性:一列(字段)主键列:某一列唯一标识一行嵌入式数据库基本要求:体积适当 可移植性好 编程接口简单 代码开源每个SQL语句以;结束 不区分大小写原创 2017-01-18 22:07:38 · 254 阅读 · 0 评论 -
苏嵌32 17.01.17
fopen:★a+ 打开可读写 每次在文件末尾追加 文件不存在自动创建FILE *fp;fp = fopen(argv[1], "a+");返回值为文件指针 FILE在内部为结构体重命名if(fp == NULL){ perror("open file error!"); exit(1);}fwrite:fr原创 2017-01-17 20:25:35 · 214 阅读 · 0 评论 -
苏嵌22 16.11.26
局部变量--->栈 全局变量--->数据区int num = 5;①占用空间大小 ②作用域(生命周期)③变量的存储区域① ②③计算机 CPU内存 动态 掉电后丢失 存放 当前运行的数据硬盘 静态 掉电后不丢失 存放固有的数据内存↑ 运行效率↑ 换cpu贵原创 2016-11-27 14:23:05 · 833 阅读 · 0 评论 -
苏嵌31 16.12.18
c语言优化:①提高算法 ②使用位操作c语音的性能优化switch() 括号中的内容只能是字符或整型#define MAX(a,b) a > b ? a : b // ++a > b ? ++a : bint a = 6;int b = 5;MAX(++a,b);输出为8 define傻瓜式替换const enum宏函数和自定义原创 2016-12-19 01:33:10 · 310 阅读 · 0 评论 -
苏嵌 17.03.07
使用指针时:函数模板的特例化加上头文件#include templateconst char * const& max(const char * const& a,const char * const& b){return strcmp(a,b) > 0 ? a : b;}模板和自定义函数同时存在时,系统优先调用自定义函数模板也可重载:templ原创 2017-03-08 15:32:43 · 258 阅读 · 0 评论 -
苏嵌 17.03.05
异常机制://terminate-->abort(); 终止进程 ↓set_terminate(Myterminate);//terminate-->Myterminate-->abort(); 终止进程catch(...){cout }throw:①throw可以抛内置类型异常也可以抛自定义类型异常②th原创 2017-03-06 14:52:09 · 246 阅读 · 0 评论 -
苏嵌单片机(一)
单片机四大硬件:单片机、电源电路、晶振、复位 (最多加看门狗)发光二极管正常工作内阻≈400欧姆特殊功能寄存器声明:sfr sfr_name = int_constant;例如:sfr P0 = 0x80;sfr SCON = 0X98;特殊功能位声明:例如:sbit CY = PSW^7;sbit LED = P1^0;单片机课程内原创 2017-05-08 17:29:43 · 633 阅读 · 0 评论 -
苏嵌PCB部分
Solder层 露铜层 即铺绿油的层Paste层 钢网层 工厂加工时需要,自己做PCB不需要Siklscreen层 丝印层 用来标示元器件的标号Keep-out Layer层 分割层 规定PCB外形在PCB设计中,要熟知常用的绘图单位:1 mil = 1/1000 inch = 0.00254 cm = 0.0254mm1 inch = 1000 mil = 2.原创 2017-05-08 17:20:12 · 294 阅读 · 0 评论 -
苏嵌 17.03.28
boost库 线程安全 运行效率高简单工厂+工厂+反射机制(对象的动态创建)作用:简单工厂模式:解决具体类的功能耦合度工厂模式:解决简单工厂类的功能耦合度抽象工厂模式:解决工厂模式的功能耦合度区别:简单工厂:用来生产同一等级结构中的任意产品(对于增加新的产品,无能为力)工厂方法:用来生产同一等级结构中的固定产品(支持增加任意产品)抽象工厂原创 2017-04-06 14:19:07 · 292 阅读 · 0 评论 -
苏嵌 17.03.27
设计模式:多态:函数重载、运算符重载、模板、虚函数(动态多态)①创建型模式 解决对象的创建②结构型模式 解决类的功能的增加③行为型模式 解决类和类之间的关系★单例模式:保证一个类仅有一个实例代理模式、装饰者模式、适配器模式观察者模式、策略模式(购物软件、金融软件)、模板模式开闭原则:对扩展开放,对修改关闭接口隔离原则:不能原创 2017-04-05 13:28:38 · 255 阅读 · 0 评论 -
苏嵌 17.03.26
函数对象: 作用:给函数传参一元函数对象:函数参数1个二元函数对象:函数参数2个一元谓词:函数参数1个,函数返回值为bool二元谓词:函数参数2个,函数返回值为boolaccumulate() 组合所有元素作加、减、乘、除等迭代器->指针的泛化(将指针写成模板类)流迭代器:①输入迭代器 读,不能写②输出迭代器 写,不能读③前原创 2017-04-05 12:56:18 · 213 阅读 · 0 评论 -
苏嵌 17.03.20
vector:优:不确定内存大小的数组的连续存储,可以像数组进行动态操作随机访问方便,即支持[ ]操作符和vector.at()节省空间缺:在内部进行插入删除操作效率低只能在vector的最后进行push和pop不能在vector的头进行push和pop当动态添加的数据超过vector默认分配的大小时要进行整体的重新分配、拷贝和释放list:优:不使用连续内原创 2017-03-24 19:23:38 · 242 阅读 · 0 评论 -
苏嵌 17.03.19
序列式容器: vector 单端 deque 双端 list 双向循环链表 ---------与插入时机相关关联式容器:set 红黑树 map 平衡二叉树 ------与插入时机无关①容器里保存的是值 不是引用②容器里的元素是有次序的③容器的所有操作并非绝对安全,需对传递参数做检查序列式容器元素的默认构造函数必须可用原创 2017-03-24 15:10:26 · 263 阅读 · 0 评论 -
苏嵌 17.03.06
数据I/O:①标准I/O ②文件I/O ③串I/O输入:get()获取一个字符getline()获取一行read(array,len)读peek()只检查不抽取输出:write()dec十进制 hex十六进制 oct八进制输入:读文件 往缓冲区输入输出:写文件 往文件输出seekp:写seekg:读beg开始 cur当前原创 2017-03-07 15:41:36 · 262 阅读 · 0 评论 -
苏嵌30 16.12.16
能直接访问硬件的语言:c、汇编、c++不同款编译器:看不同的标准同一款编译器:看编译器支持的标准IDE:集成开发环境SVN/git版本管理器(git集成了内核)SVN在ubuntu下用c89/c99运用c11微软编译器下用运算符和表达式:i++使用结束之后再自加i=2情况下num = (i++) +(i++) +(原创 2016-12-19 00:54:06 · 307 阅读 · 0 评论 -
苏嵌29 16.12.09
传出参数:一个变量从函数中带出来值传入参数:一个变量有值,放到函数中去用main函数中加return 0 结束当前函数方便操作系统运行,提高运行效率,正常运行退出exit(1) 遇到直接退出程序原创 2016-12-10 10:39:51 · 227 阅读 · 0 评论 -
苏嵌23 16.11.28
printf注意事项:行缓冲①满一行才输出 ②遇到\n或\r才输出scanf和printf用的是同一个缓冲区★不作要求时printf加\nchar *result = "hello world"是常量不能赋值“%d\n”,__LINE__ 当前代码所在行号“%s:%d\n”,__func__ 打印这个代码所在函数名"a[%d] =原创 2016-11-29 19:38:45 · 265 阅读 · 0 评论 -
苏嵌14 16.11.16
Makefile里的内容:mkdir -p add/src 先建add后建srcinclude目录 :放头文件lib目录:放库文件tools目录:放工具文件doc目录:放文档scripts目录:放脚本文件 Makefile是一个脚本文件(按照内核管理源码的方法)touch add/Makefile sub mul原创 2016-11-16 23:37:06 · 204 阅读 · 0 评论 -
苏嵌13 16.11.12
gdb功能:1、启动被调试程序2、让被调试的程序在指定的位置停住3、当程序被停住时,可以检查程序状态-变量名步骤:①gcc -g test.c -o test②gdb test③run……run…… 运行④list 查看代码 list 10 使用set listsize 行数 可以更改想要显示的代码行数 将其改变为源代码总行数即可显示所有代码⑤quit原创 2016-11-13 00:36:11 · 184 阅读 · 0 评论 -
苏嵌12 16.11.11
1、什么是交叉编译gcc是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件gcc特点:①可以开发多种语言②是一款交叉编译器PC:x86体系结构 例如x86平台下边溢出的可以在arm下运行2、编译器gcc -编译选项一个.c源文件在编译器的编译过程①预处理 1、头文件展开 2、宏替换 3、条件编译 gcc -E 文件名(只进行预处理操作)原创 2016-11-12 00:31:39 · 231 阅读 · 0 评论 -
苏嵌10 16.11.9
今天课前练习了2个二维数组程序 课上也敲了4个一维数组的问题 加上课后敲的1个 感觉除了有时候对逻辑方面没有完全理清楚外 对数组的运用还是比较熟练了1、对一个二维数组进行行列互换#includeint main(){ int i; int j; int a[2][3]={{1,2,3},{2,3,4}}; int b[3原创 2016-11-10 00:22:31 · 249 阅读 · 0 评论 -
苏嵌8 16.11.7
通过本节课的学习 知道了一些编程方面的大忌和需要注意的地方 今天也能在这种格式方面有很大受益 然而在编程时候思路太多不能一下子全部挤出来 有时候有点想法又没考虑清楚题意 导致一些题目或多或少不能在一开始就编出来1、输出1-100内的素数#includeint main(){ int i; int j; int flag =原创 2016-11-08 01:27:04 · 210 阅读 · 0 评论 -
苏嵌7 16.11.5
linux指令课堂内容1、终端 编辑配置文件 编辑 进入终端字体配置2、切换用户:su - 用户名 创建新用户:adduser 用户名 passwd 密码 输入两遍想要的密码3、ubuntu中 sudo获取管理权限 sudo 命令4、[root@192.168.1.10 ~]# 通过网络远程登录5、向日葵 可以远程控制电脑等6、~ 当前用户的工作原创 2016-11-06 00:21:06 · 282 阅读 · 0 评论 -
苏嵌6 16.11.4
嵌入式操作系统与普通操作系统的区别:是否为开源(能移植)收费模式 商用型 Vxworks WinCE Nuclenx PlamOS Symbian QNX pSOS VRTX LynxOS Hopen DeltaOS 免费型 Linux ucLinux uc/OS-II eCos uITRON其中Vxworks WinC为半开源 比较安全实时原创 2016-11-04 23:58:25 · 295 阅读 · 0 评论 -
苏嵌24 16.11.30
远指针:多维指针野指针:随机指向一块内存的指针容易造成的错误:内存泄漏可能不出现段错误:有时候随机分配的内存地址可能是已经分配过的内存地址避免野指针:我认为有以下几点要做,首先,我们要养成良好的编码习惯1:、当指针没有指向时,置为空(并不能解决,只能起引起注意的作用)能引起我的注意,不能对这个指针进行操作。 在操作系统中0地址的空间不可以进行赋值原创 2016-12-01 12:26:15 · 224 阅读 · 0 评论 -
苏嵌16 16.11.18
vim:yy复制 p粘贴dd删除3yy复制3行10dd删除10行u恢复底行命令::/hello 查找 :/随便输入一个没有的词 把查找颜色去掉:?hello 查找:s/hello/hi 替换(只替换第一个):s/hello/hi/g 替换全行:s/hello/hi/gc 判断是否替换:5,9 s/hello/hi/g 5-9行全部原创 2016-11-18 23:48:36 · 450 阅读 · 0 评论 -
苏嵌28 16.12.07
数组和指针的区别:①从空间分配上 数组静态分配,指针动态分配,可提高空间利用率②从访问效率上 指针可以间接访问硬件,数组直接访问,访问效率高③从安全性上指针导致野指针,内存越界,但可通过指针随机跳转④从函数形参上 数组会退化为指针函数执行过程:1、通过函数名找到函数入口2、给形参分配空间3、传值4、执行函数体语句5、返回、释放空间当只使用原创 2016-12-09 12:22:05 · 309 阅读 · 0 评论 -
scanf获取一个句子 解决遇到空格结束
首先明确 scanf的结束标志是空格喝回车键,而gets的结束标志为回车键,输入字符串时,一般采用gets因此有下面两种方法可以在使用scanf时完整输入字符串1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。 Strcat()一般格式:char*strcat(char*dest,const char*src);原创 2016-11-27 14:43:17 · 7904 阅读 · 1 评论 -
十进制小数转化为二进制数
因为直接干说原理有点难懂,决定举个例子来说明比较形象例如22.8125整数和小数分别转换。整数部分:22除以2,商继续除以2,得到0为止,★将余数逆序排列★。22 / 2 11 余011/2 5 余 15 /2 2 余 12 /2 1 余 01 /2 0 余 1所以22的二进制是10110!小数部分:0.8原创 2016-11-26 14:35:55 · 3600 阅读 · 1 评论 -
苏嵌27 16.12.05
传入参数的个数 ↓int argc, char **argv(*argv[ ])↑命令行参数main函数传参 跟在命令后传参:命令行参数./demo hello1 hello2……输出argc = 3(命令行也算一个参数)./a.out hello1 hello2……输出argv[0] = ./a.outargv[1] = hello1原创 2016-12-06 16:17:11 · 220 阅读 · 0 评论 -
苏嵌19 16.11.21
右左法则:从变量名开始阅读声明,向右看,然后向左看。当你碰到一个括号时就调转阅读的方向。括号内的所有内容都分析完毕就跳出括号的范围。这样继续,直到整个声明都被分析完毕。int a; 整型变量int *a; 整型指针变量int **a; 整型指针的指针变量int a[10]; 整型数组int *a[10]; 整型指针数组int (*a)[10]; 数组指针变量原创 2016-11-22 00:12:59 · 216 阅读 · 0 评论 -
苏嵌26 16.12.03
整型:为了方便理解,定a一维数组 aa二维数组 aaa三维数组一维数组:一维数组名是指针常量,这个指针常量里保存的是数组中首元素的地址int a[3] = {0};[ ] = *( ) a[i]=*(a + i)printf("a = %p\n",a);//数组名:指针常量,保存数组首元素的地址printf("&a = %p\n",&a)原创 2016-12-04 14:48:18 · 254 阅读 · 0 评论 -
苏嵌25 16.12.02
分配空间 char *ptr = (char *)malloc(sizeof(char) * 100);返回malloc返回值 默认返回void *默认类型转换强制类型转换①指针之间赋值一定要是相同类型(步长)指针之间赋值(除实型float)16进制每两位一个字节警告:从不兼容的指针类型赋值--->不同类型指针之间赋值★步长 长指针--原创 2016-12-03 00:29:10 · 252 阅读 · 0 评论 -
解释性语言
什么是解释性语言?计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言,计算机才能执行程序。将其他语言翻译成机器语言的工具,被称为编译器。编译器翻译的方式有两种:一个是编译,一个是解释。两种方式之间的区别在于翻译时间点的不同。当编译器以解释方式运行的时候,也称之为解释器。解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在原创 2016-11-21 00:08:16 · 537 阅读 · 0 评论 -
苏嵌单片机(二)
1、数码管:共阴----高电平点亮共阳----低电平点亮2、驱动:静态----不需要扫描,io口比较浪费,但是比较稳定动态----扫描点亮,同一时间只有一个数码管亮,io口比较节省3、锁存器 573P0=0x00;//准备数据LATCH_DUAN = 1;//送出数据LATCH_DUAN = 0;//锁存数据4、不用定时中断产生粗略秒的方法 ti原创 2017-05-08 17:38:42 · 417 阅读 · 1 评论