- 博客(8)
- 资源 (7)
- 收藏
- 关注
原创 C++ vector与数组区别 reserve与resize区别
vector是“动态”数组:观察一个固定元素的地址变化:#include #include using namespace std;int main(int argc,char * argv[]){ vector myVec; cout << "size:" << myVec.size() << endl; cout << "capa
2016-03-25 09:59:52 2612
原创 C语言中两种不用空间开销的变量交换方式及易犯错误(局限性)
比较常见比较脑残的变量交换大家都知道,弄个临时变量temp做中转,存储一个变量的值,最后补给另一个变量。temp = i;i = j;j = temp; 这里还有两种变量交换方式,不用temp的!注意:这里说的是函数封装型的func(int *a,int*b);int i = 5;int j = 6;func(&i,&j); 第一种是...
2016-03-23 16:31:27 931
原创 多线程编程(三)——线程同步——信号量
线程同步主要为了协调线程间工作,尤其是数据的使用,第一个例子——生产者消费者:设置:#库存最多1,有库存消费者才消费,没则等待;没库存生产者才生产,没则等待。#并没有用semA本身做计数,只用来传达消息给消费者线程。#为了体现阻塞效果,生产者三秒一次。#include #include #include static pthread_t threa
2016-03-17 16:34:51 3157
原创 C/C++语言执行效率的优化方法(待续)
个人总结,也可能和编译器与环境有关,没有绝对!下边以linux系统、AT&T指令集、GCC编译器为编译运行环境。1.循环条件和下标的设立,尽量迁就下标操作,下标有加法的话,会增加计算偏移量的汇编语句。比如这个十六进制转换十进制的例子,这个下标加2是为了跳过十六进制的开头"0x",(此例假设输入正确,直接跳,也可以加"0x"是否合法的判定,不赘述): x11
2016-03-13 13:40:17 1627
原创 内存管理学习笔记——自定义malloc()与内存池的实现(未完)
最近在巩固算法,这个先做笔记了,有空再精细研究。知道可以动态申请堆空间,堆空间是系统维护的内存块链表,用户申请时,系统找到合适大小的堆给用户,系统还会把剩下的空间再切割备用,所以会出碎片。blabla。。。。。。一直以来困惑一个问题。系统怎么知道那一块大小,送一个指针过去它就释放和malloc对应的空间?大小什么的都记录在哪?看了一个自实现,想明白一些了:
2016-03-12 00:04:41 3886
原创 算法题练手
1.数组中有一个数只出现一次,其他数都出现3次,只用O(n)的复杂度,找出这个出现一次的数。git@code.csdn.net:snippets/1602871.git
2016-03-09 12:51:33 688
原创 C/C++内存分布与变量初始化顺序
关于入栈、出栈,栈顶栈底之类的分析见函数调用的压栈出栈过程分析下面继续分析C/C++的内存分布。虽然0x10比一个变量需要的4个地址大了一些,但是0x10应该是规定的最小单位了。假如你要用的空间刚好是它的整数倍,其实是不浪费一分钱栈空间的,下边做一个数组,证明栈空间大小刚好是所有非静态变量占用空间的大小。这里可以先无视hello的声明,它不在栈空间,后面会分析。
2016-03-07 00:48:36 1719
原创 函数调用、函数传参与函数返回的实现机制
最近才开始用汇编分析具体过程,之前的一些问题,只到达把参数存储到栈顶,准备调用函数之类的模糊认知,今天打算再细分析一下。首先是变量初始化:这里有一个问题,就是i,j,k在栈中顺序倒置了i最先,按理说是高地址(linux栈向下生长)然后是两个参数入栈,这个顺序没得说,由右向左入,保证最左边的参数地址最低,在esp指向的内存。参数入栈之后就是
2016-03-03 22:13:47 5599
Kaggle ICML2013 fer2013人脸表情识别/面部表情识别 tensorflow实现与优化
2019-09-30
关于TreeFTL的一篇论文翻译
2014-04-07
A survey of Flash Translation Layer论文笔记翻译
2014-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人