自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (1)
  • 收藏
  • 关注

原创 非常量引用的初始值必须为左值

自己看下面的例子,好好感受一下#include #include #include #include #include #include using namespace std;int foo1();int *foo2();void foo3(int &);void foo4(const int &);int main(){ int a = 5; int &b

2015-03-23 19:32:57 2289

原创 利用FormatMessage函数获取错误描述

#include#include#include using namespace std;BOOL getErrorDescription(DWORD dwMessageId, HLOCAL &hlocal);int main(){ DWORD dwMessageId; while (printf("Please Input MessageId:"), cin >> dwMe

2015-03-18 00:54:16 880

转载 装饰模式与代理模式的区别

转自:http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是 找了很多资料,想弄清楚这两者之间到底有什么区别。结果发现这一篇英文文章讲的很清晰,就翻译一下,供参考。    

2015-03-07 08:58:07 541

转载 (翻译)什么是Java的永久代(PermGen)内存泄漏

转自:http://www.codelast.com/本文是我对这篇文章的翻译:What is a PermGen leak? 为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你

2015-03-06 22:48:14 67376

转载 Android 性能优化之使用MAT分析内存泄露问题

转自:http://www.tuicool.com/articles/yaUZ3m我们平常在开发Android应用程序的时候,稍有不慎就有可能产生OOM,虽然JAVA有垃圾回收机,但也不能杜绝内存泄露,内存溢出等问题,随着科技的进步,移动设备的内存也越来越大了,但由于Android设备的参差不齐,可能运行在这台设备好好的,运行在那台设备就报OOM,这些适配问题也是比较蛋疼的,比如我们平

2015-03-06 22:15:33 366

转载 深入理解JVM—JVM内存模型

转自:http://www.cnblogs.com/dingyingsi/p/3760447.html我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,

2015-03-06 22:15:14 385

转载 GC Root

转自:http://blog.csdn.net/time_hunter/article/details/12405127本文参考了周志明的《深入理解Java虚拟机:JVM高级特性与最佳实践》,这本书写的非常好!极力推荐!》JVM中对内存进行回收时,需要判断对象是否仍在使用中,可以通过GC Roots Tracing辨别。定义:通过一系列名为”

2015-03-06 22:12:40 2066

转载 windows-内存映射文件

转自:http://www.cnblogs.com/fangyukuan/archive/2010/09/09/1822216.htmlWindows提供了3种进行内存管理的方法: • 虚拟内存,最适合用来管理大型对象或结构数组。 • 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据。 • 内存堆栈,最适合用来管理大量的小对象。

2015-03-06 21:53:59 558

转载 Linux内存映射文件原理探索

转自:http://blog.csdn.net/mg0832058/article/details/5890688一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和

2015-03-06 21:50:49 472

转载 C++虚函数和虚继承浅析

转自:http://www.cnblogs.com/xien7/archive/2013/03/12/2954364.html本文针对C++里的虚函数,虚继承表现和原理进行一些简单分析,有不对的地方请指出。下面都是以VC2008编译器对这两种机制内部实现为例。虚函数  一下是百度百科对于虚函数的解释:定义:在某基类中声明为 virtual 并在一个或多个派生类中

2015-03-06 12:35:25 343

转载 结构体字节对齐

转自:http://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html                                                                   结构体字节对齐      在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各

2015-03-06 12:33:04 315

转载 C++中const、volatile、mutable的用法

转自:http://blog.csdn.net/wuliming_sc/article/details/3717017const、volatile、mutable的用法const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的

2015-03-06 12:32:07 311

转载 关于C++ const 的全面总结

转自:http://blog.csdn.net/Eric_Jo/article/details/4138548C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 

2015-03-06 12:30:27 309

原创 关于printf参数字节数的研究

#include void main(void){ unsigned int a = 0xFFFFFFF7; unsigned char i = (unsigned char)a; char *b = (char *)&a; printf("%08x,%08x", i, *b);}有一道面试题是这样的,正确的答案是:000000f7,fffffff7我们是这个样子呢,我们来

2015-03-04 20:05:32 691

转载 浮点数的二进制表示

转自:http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html作者: 阮一峰日期: 2010年6月 6日1.前几天,我在读一本C语言教材,有一道例题:  #include   void main(void){    int

2015-03-04 18:14:03 347

转载 C++主要数据类型在计算机中所占字节大小

到了数据存储的大端和小端问题,这你妹的看的一头雾水,发现我基本知识严重匮乏啊,先了解C++各数据类型在自己机子上占多少字节吧,以及这些数据类型所占字节大小与神马有关。各种查资料然后写代码检验,小结于本文中,给自己补补基础知识。先来列一下C++的数据类型:整型:int,long。这两个还分signed(有符号)和unsigned(无符号)的,当然有符号和无符号所占字节大小是一样的,就

2015-03-04 18:04:51 550

原创 printf("%d,%d\n", *ptr, *(++ptr))

#include int main(){ int arr[] = { 6, 7, 8, 9, 10 }; int *ptr = arr; *(ptr++) += 123; printf("%d,%d\n", *ptr, *(++ptr)); return 0;}程序运行结果 : 8,8解释:①*(ptr++) += 123这句代码中,使用了后++所以效果相当于:

2015-03-04 17:59:20 2368

原创 汇编分析“int i = i”

[占位]

2015-03-04 10:08:16 470

转载 索引的基本概念、分类、优点、使用

转自:http://blog.sina.com.cn/s/blog_6a6eb42d0100kmyz.html一、索引的概念       索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。二、索引的特点   1.索引可

2015-03-04 09:57:30 310

转载 如何在C++中调用C程序?

转自:http://blog.csdn.net/juanjuan888/article/details/6889843C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误。要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写的,要用C的方式来处理。1.引用头文件前需要加上 extern “C”,如果引用多个,那么就如

2015-03-04 09:54:06 314

转载 求数组的子数组之和的最大值

int MaxSum2(int *A, int n){ int nStart = A[n-1]; int nAll = A[n-1]; for(int i = n-2;i>=0;--i) { if(nStart<0) nStart = 0; nStart += A[i]; if(nSt

2015-03-04 09:49:52 332

转载 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。

法一:时间空间复杂度都为O(n)s1[i]:从前往后遍历到i位置的乘积(0s2[j]:从后往前遍历到j位置的乘积(0最后遍历一遍找出s1[k+1]*s2[k-1]的最小值(0法二:设这n个数的乘积为P当P=0时,除去n个数中的一个0,计算剩下的数的乘积,记为Q:                   当Q=0时,说明n个数中至少有两个0,不管怎么组合,

2015-03-04 09:28:12 2988

转载 T(n) = 25T(n/5)+n^2的时间复杂度

对于T(n) = a*T(n/b)+c*n^k;T(1) = c 这样的递归关系,有这样的结论:if (a > b^k)   T(n) = O(n^(logb(a)));logb(a)b为底a的对数if (a = b^k)   T(n) = O(n^k*logn);if (a a=25; b = 5 ; k=2a==b^k 故T(n)=O(n^k*logn)=O(n

2015-03-04 08:34:48 686

转载 Android类装载器DexClassLoader的简单使用

转自:http://www.cnblogs.com/dividxiaoshuo-fighting/p/3682398.html?utm_source=tuicool一、装载器简介“类装载器”(ClassLoader),顾名思义,就是用来动态装载class文件的。标准的Java SDK中有个ClassLoader类,借助此类可以装载需要的class文件,前提是

2015-03-04 00:12:34 484

转载 Android中获取应用程序(包)的信息-----PackageManager的使用(一)

转自:http://blog.csdn.net/qinjuning/article/details/6867806          本节内容是如何获取Android系统中应用程序的信息,主要包括packagename、label、icon、占用大小等。具体分为两个 部分,计划如下:            第一部分: 获取应用程序的packagename、lab

2015-03-04 00:07:29 303

原创 OD+CE查找“植物大战僵尸”太阳数目地址

1.用OD+CE附加游戏,开局,太阳的数目为1502.用CE搜索值为150的地址,搜索到多个3.在游戏里花太阳种一株植物,让太阳数目变化为504.用CE再次搜索值为50的地址,结果只有一个:0x1D9DD7585.用OD给0x1D9DD758下一个内存访问断点,结果断在此处(记得断后删除断点)于是我们可以得到:太阳地址 = [0x1D9D81E0

2015-03-02 23:50:42 5770 2

原创 用OD手动查找窗口过程函数(classProc)

有时候我们用OD查找窗口的classProc地址是不正确的,这时候可以用如下方法手动查找1. 用OD打开被调试程序    打开 插件->API断点设置工具->常用断点设置,把CreateWindow的三个函数勾上,确定    2. 按F9让程序运行并在断点停下,直到在堆栈窗口观察到你要的窗口名字(本文以“计算器”为例)3. 一路F8执行直到回到调用Cre

2015-03-01 12:57:19 7520

原创 书籍

《Windows防火墙与网络封包截获技术》http://www.verycd.com/topics/107608/

2015-02-20 20:37:51 354

转载 利用SPI编写类似sockscap的代理工具

转自:http://blog.csdn.net/ze_tsin/article/details/6376831SPI的出现其实就是微软为了方便程序员对网络API的各种HOOK,从而省去一些麻烦,然而相对的也会增加不少问题。对于SPI中的LSP这种分层的结构,可以很好的使用强盗手法将自己当作老大放在最上层,但是,如果有其他程序也使用同样的手法,那么就会产生冲突了。好吧进入正题。。

2015-02-20 20:18:26 1039

原创 关于VM_COPYDATA的疑惑

当使用VM_COPYDATA在进程之间传递数据时我们会用到一个结构体COPYDATASTRUCT来封装我们要发送的数据然后我们在SendMessage函数的LPARAM参数中传入COPYDATASTRUCT的指针然后我们在接收进程的OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)便能通过pCopyDataStruct

2015-02-20 13:49:11 560

原创 远程注入与卸载DLL

//提升本进程权限BOOL GetPrivilege(){ HANDLE tokenHandle; BOOL bRet = OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &tokenHandle); if (bRet){ TOKEN_PRIVILEGES tokenPri; tokenPri.PrivilegeCo

2015-02-18 19:39:17 526

转载 32位程序与64位程序区别

转自:http://www.cnblogs.com/aHuner/p/3336028.html32位系统由于采用了物理地址扩展技术,使得操作系统可用物理内存能够超过4G,但对于单个程序来说,能够使用的内存(即地址空间)还是只有4G。GCC编译时加上-m32参数。64位的内存容量大大增加,从4G扩展到18PB,可以在内存中存放更多的数据,避免频繁的磁盘读写IO,从而大大提

2015-02-18 00:09:53 2190

转载 MFC教程——鸡啄米

VS2010/MFC编程入门之前言VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)VS2010/MFC编程入门之四(MFC应用程序框架分析)VS2010/MFC编程入门之五(MFC消息映射机制概述)VS2010/MFC编程入门之六(对话框:创建对话框模板和修改

2015-02-17 23:44:19 11149 3

转载 int a; int* a; int** a; int (*a)[10]; int (*a)(int)区别?

转自:http://www.zhihu.com/question/20481976/answer/15249192a) int a;表示一个内存空间,这个空间用来存放一个整数(int);b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个

2015-02-17 21:42:51 436

原创 进程提权

HANDLE tokenHandle;//获得令牌句柄BOOL bRet = OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &tokenHandle);if (bRet){TOKEN_PRIVILEGES tokenPri;tokenPri.PrivilegeCount = 1;//tokenPri.Privileges数组的大小

2015-02-17 19:41:35 1731

转载 pushad和pushfd

转自:http://blog.sina.com.cn/s/blog_af95b18b0101hmx0.htmlpushad: 将所有的32位通用寄存器压入堆栈pusha:将所有的16位通用寄存器压入堆栈pushfd:然后将32位标志寄存器EFLAGS压入堆栈pushf::将的16位标志寄存器EFLAGS压入堆栈popad:将所有的32位通用寄存器取出堆栈

2015-02-17 14:24:51 4256

转载 调用约定

转自:http://blog.csdn.net/zjwoody/article/details/7887988在windows平台上的C++编程中经常会看到一些__stdcall, __cdecl, WINAPI, CALLBACK等等关键字在函数前面,在.NET中还有__clrcall, __thiscall等关键字,有时加不加它们都可以,但是有时必须加上,不然编译不过。本文要讨论的就是这些

2015-02-17 14:23:01 337

转载 代理模式(Proxy)——跟着cc学设计系列

研磨设计模式 之 代理模式(Proxy)1——跟着cc学设计系列 研磨设计模式 之 代理模式(Proxy)2——跟着cc学设计系列 研磨设计模式 之 代理模式(Proxy)3——跟着cc学设计系列

2015-02-14 21:15:30 525

转载 中介者模式(Mediator)——跟着cc学设计系列

研磨设计模式 之 中介者模式(Mediator)1 ——跟着cc学设计系列 研磨设计模式 之 中介者模式(Mediator)2 ——跟着cc学设计系列 研磨设计模式 之 中介者模式(Mediator)3 ——跟着cc学设计系列

2015-02-14 20:57:14 303

转载 原型模式(Prototype)——跟着cc学设计系列

研磨设计模式 之 原型模式(Prototype)1 ——跟着cc学设计系列 研磨设计模式 之 原型模式(Prototype)2 ——跟着cc学设计系列 研磨设计模式 之 原型模式(Prototype)3 ——跟着cc学设计系列

2015-02-14 20:33:55 414

Servlet3.0 异步处理 页面推送 Comet 实例

Servlet3.0 异步处理 页面推送 Comet 实例

2015-02-02

空空如也

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

TA关注的人

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