自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rk3399芯片上使用MediaCodec解码遇到的坑(1)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-05-24 11:51:16 3019

转载 转c# 编程经验总结

https://www.cnblogs.com/yank/p/3529395.html

2019-06-30 00:17:49 254

原创 苏嵌单片机(二)

1、数码管:共阴----高电平点亮共阳----低电平点亮2、驱动:静态----不需要扫描,io口比较浪费,但是比较稳定动态----扫描点亮,同一时间只有一个数码管亮,io口比较节省3、锁存器 573P0=0x00;//准备数据LATCH_DUAN = 1;//送出数据LATCH_DUAN = 0;//锁存数据4、不用定时中断产生粗略秒的方法     ti

2017-05-08 17:38:42 388 1

原创 苏嵌单片机(一)

单片机四大硬件:单片机、电源电路、晶振、复位   (最多加看门狗)发光二极管正常工作内阻≈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 613

原创 苏嵌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 277

原创 苏嵌 17.03.28

boost库 线程安全 运行效率高简单工厂+工厂+反射机制(对象的动态创建)作用:简单工厂模式:解决具体类的功能耦合度工厂模式:解决简单工厂类的功能耦合度抽象工厂模式:解决工厂模式的功能耦合度区别:简单工厂:用来生产同一等级结构中的任意产品(对于增加新的产品,无能为力)工厂方法:用来生产同一等级结构中的固定产品(支持增加任意产品)抽象工厂

2017-04-06 14:19:07 268

原创 苏嵌 17.03.27

设计模式:多态:函数重载、运算符重载、模板、虚函数(动态多态)①创建型模式 解决对象的创建②结构型模式 解决类的功能的增加③行为型模式 解决类和类之间的关系★单例模式:保证一个类仅有一个实例代理模式、装饰者模式、适配器模式观察者模式、策略模式(购物软件、金融软件)、模板模式开闭原则:对扩展开放,对修改关闭接口隔离原则:不能

2017-04-05 13:28:38 239

转载 如何实现内存分配器?

内存分配器(Memory Allocator)负责内存管理,实现动态内存的分配和释放。内存分配器分为两级。第一级分配器直接调用C函数分配内存,第二级分配器则采用内存池来管理内存。如果申请的内存块足够大,那么启动第一级分配器,否则启动第二级分配器。这种设计的优点是可以快速分配和释放小块内存,同时避免内存碎片;缺点是内存池的生命周期比较长,并且很难显式释放。一些平台对某些特定类型的数据只能从某

2017-04-05 12:58:33 1114

原创 苏嵌 17.03.26

函数对象: 作用:给函数传参一元函数对象:函数参数1个二元函数对象:函数参数2个一元谓词:函数参数1个,函数返回值为bool二元谓词:函数参数2个,函数返回值为boolaccumulate()  组合所有元素作加、减、乘、除等迭代器->指针的泛化(将指针写成模板类)流迭代器:①输入迭代器 读,不能写②输出迭代器 写,不能读③前

2017-04-05 12:56:18 193

原创 苏嵌 17.03.20

vector:优:不确定内存大小的数组的连续存储,可以像数组进行动态操作随机访问方便,即支持[ ]操作符和vector.at()节省空间缺:在内部进行插入删除操作效率低只能在vector的最后进行push和pop不能在vector的头进行push和pop当动态添加的数据超过vector默认分配的大小时要进行整体的重新分配、拷贝和释放list:优:不使用连续内

2017-03-24 19:23:38 228

原创 苏嵌 17.03.19

序列式容器: vector 单端    deque 双端      list 双向循环链表    ---------与插入时机相关关联式容器:set 红黑树      map 平衡二叉树      ------与插入时机无关①容器里保存的是值 不是引用②容器里的元素是有次序的③容器的所有操作并非绝对安全,需对传递参数做检查序列式容器元素的默认构造函数必须可用

2017-03-24 15:10:26 240

原创 苏嵌 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 239

原创 苏嵌 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 242

原创 苏嵌 17.03.05

异常机制://terminate-->abort();   终止进程              ↓set_terminate(Myterminate);//terminate-->Myterminate-->abort();  终止进程catch(...){cout }throw:①throw可以抛内置类型异常也可以抛自定义类型异常②th

2017-03-06 14:52:09 219

原创 苏嵌 补17.02.27

继承:基类(父类)派生类(子类)派生类是基类的具体化用法:class 派生类名 :基类名继承的三种方法:公有 私有 保护默认继承:struct D1:Base{};    //公有继承(结构体也可以继承)class D2:Base{};    //私有继承派生类无法访问基类的构造函数派生类中的所有的构造方法都需

2017-03-01 19:58:54 239

原创 苏嵌 17.2.28

多态:多态的体现:①函数重载                        ②运算符重载③模板④虚函数静态绑定(静态联编):函数重载 运算符重载 模板动态绑定(动态联编):虚函数什么是多态?同一个实现接口传递不同实例实现不同的操作虚函数:基类中加virtual基类指针指向派生类对象时触发多态①需要在基类中定义共同的

2017-03-01 15:47:21 305

原创 C++第一章

1.1  C++简介          C++融合了三种不同的编程方式:①C语言代表的过程性语言 ②类代表的面向过程的语音  ③C++模版支持的泛型编程1.2   C语言编程原理:①数据+算法   ②自顶向下       面向对象编程:强调数据,试图让语言来满足问题的需求                    特点:①封装:隐藏数据,使其免遭不适当的房屋

2017-02-27 17:05:27 219

原创 服务器与客户端的基本操作

/******************* 服务器 *******************/    #include   #include   #include   #include     #include   #include   #include     #define SERV_PORT 8000    int main(int a

2017-01-20 21:46:48 434

转载 Mysql单文件存储删除数据Bug文件容量不会减少

MySQL的Bug之一:InnoDB ibdata1 never shrinks after data is removed问题描述当innodb引擎使用单个文件进行存储的时候,当对数据库中数据进行删除的时候,文件的大小并不会发生变化,意味着文件将会越来越大并且即使删除也没办法 让其释放磁盘的空间。转载请注明出处:http://blog.csdn.NET

2017-01-19 22:56:22 250

原创 苏嵌33 17.01.18

文件----------存储数据(缺点)无格式的存取数据库文件:特殊的文件数据库:有结构的,集成的,可共享的统一管理的数据结构★关系型数据库模型RDBMS(二维表格)元组:一行属性:一列(字段)主键列:某一列唯一标识一行嵌入式数据库基本要求:体积适当 可移植性好 编程接口简单 代码开源每个SQL语句以;结束 不区分大小写

2017-01-18 22:07:38 234

原创 苏嵌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 195

原创 苏嵌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 286

原创 苏嵌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 283

原创 苏嵌29 16.12.09

传出参数:一个变量从函数中带出来值传入参数:一个变量有值,放到函数中去用main函数中加return 0 结束当前函数方便操作系统运行,提高运行效率,正常运行退出exit(1) 遇到直接退出程序

2016-12-10 10:39:51 201

原创 苏嵌28 16.12.07

数组和指针的区别:①从空间分配上 数组静态分配,指针动态分配,可提高空间利用率②从访问效率上 指针可以间接访问硬件,数组直接访问,访问效率高③从安全性上指针导致野指针,内存越界,但可通过指针随机跳转④从函数形参上 数组会退化为指针函数执行过程:1、通过函数名找到函数入口2、给形参分配空间3、传值4、执行函数体语句5、返回、释放空间当只使用

2016-12-09 12:22:05 286

转载 指针与数组的区别

C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。    数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较

2016-12-06 16:23:39 218

转载 回调函数

生动的描述你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。专业的解释In computer p

2016-12-06 16:20:35 228

原创 苏嵌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 191

转载 主函数形参agrc argv作用

每一C 程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。1. main() 参数在Turbo C2.0启动过程中,传递main()函数三个参数:argc,argv和env。* argc: 整数,为传给main()的命令行参数个数。* argv: 字符串数组。

2016-12-04 15:03:37 1089

原创 苏嵌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 224

转载 relloc calloc 如何使用 注意事项

2.realloc作用:重新分配内存块语法:void * realloc(void* p, size_t size);参数     p      以前分配的内存块的指针     size新的大小     (以字节为单位) 返回值            1.原内存块后内存充足则返回原指针            2

2016-12-03 13:48:59 766

转载 malloc实现原理和内存碎片

malloc()是C语言中动态存储管理 的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值 是一个指向所分配的连续存储域的起始地址的指针。   动态内存分配 就 是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据 程序的需要即时分配,且

2016-12-03 13:46:44 385

原创 苏嵌25 16.12.02

分配空间 char *ptr = (char *)malloc(sizeof(char) * 100);返回malloc返回值  默认返回void *默认类型转换强制类型转换①指针之间赋值一定要是相同类型(步长)指针之间赋值(除实型float)16进制每两位一个字节警告:从不兼容的指针类型赋值--->不同类型指针之间赋值★步长 长指针--

2016-12-03 00:29:10 208

原创 苏嵌24 16.11.30

远指针:多维指针野指针:随机指向一块内存的指针容易造成的错误:内存泄漏可能不出现段错误:有时候随机分配的内存地址可能是已经分配过的内存地址避免野指针:我认为有以下几点要做,首先,我们要养成良好的编码习惯1:、当指针没有指向时,置为空(并不能解决,只能起引起注意的作用)能引起我的注意,不能对这个指针进行操作。   在操作系统中0地址的空间不可以进行赋值

2016-12-01 12:26:15 202

转载 什么是野指针 如何避免野指针

谈谈你对野指针的理解? 野指针不是NULL指针,是指向“垃圾”内存的指针。即它是随机指向的,系统自动对其初始化。 野指针会造成什么样的后果呢?最大的问题:它会导致内存泄漏。 什么叫作内存泄漏?指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是程序分配某段内存后,由于设计错误,失去了对该段内

2016-11-29 19:42:26 1227

原创 苏嵌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 236

原创 scanf获取一个句子 解决遇到空格结束

首先明确 scanf的结束标志是空格喝回车键,而gets的结束标志为回车键,输入字符串时,一般采用gets因此有下面两种方法可以在使用scanf时完整输入字符串1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。 Strcat()一般格式:char*strcat(char*dest,const char*src);

2016-11-27 14:43:17 7860 1

原创 scanf时清除缓冲区的方法

前面输入其他类型 后面输入字符时剔除\n的方法:①ch字符输入前加getchar();②用格式符%*c%c     %*c:读入一个字符但忽略它(不给任何变量赋值)③前面加空格  空格%c④在输入前加fflush(stdin);

2016-11-27 14:38:02 630

原创 苏嵌22 16.11.26

局部变量--->栈    全局变量--->数据区int num = 5;①占用空间大小 ②作用域(生命周期)③变量的存储区域① ②③计算机    CPU内存     动态            掉电后丢失        存放 当前运行的数据硬盘     静态            掉电后不丢失    存放固有的数据内存↑   运行效率↑    换cpu贵

2016-11-27 14:23:05 806

原创 十进制小数转化为二进制数

因为直接干说原理有点难懂,决定举个例子来说明比较形象例如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 3488 1

空空如也

空空如也

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

TA关注的人

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