Linux 从虚拟地址到物理地址 我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存。C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将是极大的内存浪费。 可是一直没搞明白,怎么样才能证明共享库里面函数的地址在物理内存层面是同一份。其实,这个问题的本质是程序里面的逻辑地址和物理内存地址之间是怎样映射的,说的再赤裸裸一点,就是我给你个逻
Android性能优化:谈谈Bitmap的内存管理与优化 最近除了忙着项目开发上的事情,还有就是准备我的毕业论文,有一小段时间没写博客了,今晚难得想总结一下,刚好又有一点时间,于是凑合着来一篇,好了,唠叨话不多说,直接入正题。从事Android移动端的开发以来,想必是经常要与内存问题打交道的,说到Android开发中遇到的内存问题,像Bitmap这种吃内存的大户稍微处理不当就很容易造成OOM,当然,目前已经有很多知名的开源图片加载框架,例如:ImageL
Java 中的Synchronizer 1. 闭锁(Latch) 闭锁是一种Synchronizer,它可以延迟线程的进度直到线程达到终止状态。一个闭锁工作起来就像一道大门:直到闭锁达到终点状态之前,门一直是关闭的,没有线程能通过,在终点状态到来的时候,门开了,允许所有线程都通过。一旦闭锁到达了终点状态,它就不能够再改变状态了,所以它永远保持敞开状态。闭锁可以用来确保特定活动,直到其他的活动完成之后才发生。 Coun
Java泛型-类型擦除 一、概述 Java泛型在使用过程有诸多的问题,如不存在List.class, List不能赋值给List(不可协变),奇怪的ClassCastException等。 正确的使用Java泛型需要深入的了解Java的一些概念,如协变,桥接方法,以及这篇笔记记录的类型擦除。Java泛型的处理几乎都在编译器中进行,编译器生成的bytecode是不包涵泛型信息的,泛型类型信息将在编译处理是被擦
Java 自限定的类型 在Java泛型中,有个好像是经常性出现的习惯用法,它相当令人费解: class SelfBounded> { // ....} 这就像两面镜子一样彼此照向对方所引起的炫目效果一样,是一种无限反射。SelfBounded类接受泛型参数T,而T由一个边界类限定,这个边界就是拥有T作为其参数的SelfBounded。 当你首次看到它时,很难去解析它,它强调的是当e
SCI 投稿Cover letter模板大全 一、第一次投稿Cover letter:主要任务是介绍文章主要创新以及声明没有一稿多投Dear Editors,We would like to submit the enclosed manuscript entitled “Paper Title”, which we wish to be considered for publication in “Journal Nam
Wallflower paper测试数据集(原Test Images for Wallflower Paper) 原文:This page contains the test images that we used for our Wallflower paper.* We tested several different background maintenance algorithms on seven different image sequences. For each test image
玩github的一些相关资料的整理 最近,回到家实在无聊,不想coding是因为早早开启了回家模式,coding的激情早已飞到了九霄云外。在家里也是无聊的很:看看电影,玩玩手机整天坐着也是醉了。作为一名资深懒货程序员,玩软件而不求甚解是最愉快的事情了。很早就听说了github这个东西很好,是个开源代码库,里面有很多很好的源代码而且是开放的。本以为像个一般的手机app一样一两天就可以玩熟,出乎意料的花了我近一个星期(也不是每天都在玩,
计算机视觉会议和期刊分类 会议:三大顶级 ICCV:International Conference on Computer Vision,国际计算机视觉大会 CVPR:International Conference on Computer Vision and Pattern Recognition,国际计算机视觉与模式识别大会 ECCV:European Conference on Comp
对寄存器ESP和EBP的一些理解 PS:EBP是当前函数的存取指针,即存储或者读取数时的指针基地址;ESP就是当前函数的栈顶指针。每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈,以便从子函数返回到主函数时可以获取EBP。下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码假设执行函数前堆栈指针ESP为0xAAAAAAA ;
简单Shellcode的详细分析 作 者: moonflow百年一遇的高级光棍节,我得写篇详细完整的文章才行。初学者,菜文,老鸟请飘过分析段简单的shellcode代码1.shellcode.c代码:#include static char shellcode[]= "\xeb\x17\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x4
如何写paper 误区一:We write papers and give talks mainly to impress others, gain recognition, and get promoted.写paper的目标是: to infect the mind of your readers with your idea, like a virus.Paper由
VC在debug版和release版中分配堆的区别 问题现象及测试代码 前几天有同事无意中用debug版的主程序调用了release版的dll中的某个输出函数,该函数new了一块内存并将指针返回给主程序并由后者释放,主程序在调用delete释放内存时断言失败。在排查问题时,同事念叨了一句“难道debug版和release版分配的内存不一样?”,这个问题我之前的确没有注意过,于是便进行了简单探索。本文内容主要针对VC6进行探索,其他版
关于_beginthreadex和CreateThread的区别 关于_beginthreadex和CreateThread的区别 在 Win32 API 中,创建线程的基本函数是 CreateThread,而 _beginthread(ex) 是C++ 运行库的函数。为什么要有两个呢?因为C++ 运行库里面有一些函数使用了全局量,如果使用 CreateThread 的情况下使用这些C++ 运行库的函数,就会出现不安全的问
MFC多线程内存泄漏问题&解决方法 在用visual studio进行界面编程时(如MFC),前台UI我们可以通过MFC的消息循环机制实现。而对于后台的数据处理,我们可能会用到多线程来处理。那么对于大多数人(尤其是我这种菜鸟),一个比较快捷的方法便是选择MFC多线程:AfxBeginThread或者CreateThread来进建立多线程。当一两个线程还是可以得,当有3个或者3个以上的线程出现时,极可能出现内存泄漏。原因分析如下:
vector中erase用法注意事项 以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性。erase的函数原型有两种形式:iterator erase(iterator position);iterator erase(i
findContours函数参数说明及相关函数 findContours函数,这个函数的原型为:void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierar-chy, int mode, int method, Point offset=Point())参数说明输入图像image必须为一个2值单通道
vs2010配置OpenSSL(永久) 在VS2010中编译好OpenSSL后就开始写程序了。这时候你要在vs2010中配置openssl.我这里给出主要的几个步骤(和永久配置其他库差不多):1. 选择属性管理器->右击Microsoft.Cpp.Win32.User->属性->VC++目录->包含目录2. 在包含目录中选择添加一条新的目录项:../openssl-1.0.1i/inc/openssl/.并确定。