jmp指令对应的机器码

od随便打开一个记事本,汇编几条jmp指令,可以看到如下 地址           HEX              反汇编 010073B4     - E9 7B9E8787      JMP 88881234 010073B9     - E9 769E8787      JMP 88...

2015-07-31 16:31:04

阅读数:3316

评论数:0

vector的初始化和遍历

这里只说明常用的vector初始化的方式。一般vector的初始化我还是比较习惯于像数组一样的初始化方式。一个一个赋值,或者用花括号的初始化。下面用一个程序来说明: [cpp] view plaincopy #include "stdafx.h...

2015-07-28 18:18:25

阅读数:455

评论数:0

用 Windows API “GetAdaptersInfo” 获取 MAC 时遇到的问题

前段时间有个项目需要获取客户端的 MAC 地址,用作统计去重的参考数据。从网上查到的获取 MAC 地址的代码,大多是用同一段代码修改的。于是我也用了那段代码。代码如下: [cpp] view plaincopy void GetMAC(B...

2015-07-28 10:26:01

阅读数:1267

评论数:0

把C++类成员方法直接作为线程回调函数

我以前写线程时要么老老实实照着声明写,要么使用C++类的静态成员函数来作为回调函数,经常会因为线程代码而破坏封装.之前虽然知道类成员函数的展开形式,但从没想过利用过它,昨天看深入ATL时无意中学会了这一招:)  类成员方法是一个比较特殊的函数,它在编译时会被转化成普通函数,比如有TMyClass...

2015-07-24 15:20:28

阅读数:2763

评论数:1

C++ STL,ATL,WTL之间的联系和区别

STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前...

2015-07-24 14:09:22

阅读数:370

评论数:0

关于STL中的map和hash_map

在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下:     1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n);     2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1); ...

2015-07-22 15:52:32

阅读数:417

评论数:0

STL容器效率比较

1、vector 变长一维数组,连续存放的内存块,有保留内存,堆中分配内存; 支持[]操作,高效率的随机访问; 在最后增加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时要进行内存拷贝效率低; vector高效的原因在于配置了比其所容纳的元素更多的内存,内存重新配置会花很...

2015-07-21 22:16:04

阅读数:418

评论数:0

调试异常 Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed

Free Heap block XXXXXX modified at XXXXXX after it was freed 相信不少朋友碰到过以上问题,而往往苦于无法定位到错误的代码位置,其实出现该问题一般就是使用了野指针导致的. 那么何为野指针呢? 野指针与NULL指针不同.所谓野指针是指指...

2015-07-17 17:48:53

阅读数:2061

评论数:0

EnterCriticalSection 和 TryEnterCriticalSection

如果EnterCriticalSection将一个线程置于等待状态,那么该线程在很长时间内就不能再次被调度。实际上,在编写得不好的应用程序中,该线程永远不会再次被赋予CPU时间。TryEnterCriticalSection函数决不允许调用线程进入等待状态。它的返回值能够指明调用线程是否能够获得对...

2015-07-17 16:45:36

阅读数:3141

评论数:1

得到当前函数堆栈调用

步骤: 1. 调用RtlCaptureContext函数(MSDN)获取上下文(context)。 2. 把寄存器地址填充到STACKFRAME结构中。 3. 循环调用StackWalk64函数(MSDN)回溯调用栈(call stack)。 4. 调用SymFromAddr函数(MSDN...

2015-07-17 14:36:18

阅读数:3008

评论数:0

显示函数调用栈

本文讲解如何在调试器中显示函数调用栈,如下图所示:   原理 首先我们来看一下显示调用栈所依据的原理。每个线程都有一个栈结构,用来记录函数的调用过程,这个栈是由高地址向低地址增长的,即栈底的地址比栈顶的地址大。ESP寄存器的值是栈顶的地址,通过增加或减小ESP的值可以缩减或扩大栈的大小。上一篇...

2015-07-17 10:52:20

阅读数:2068

评论数:0

通过GeoIP2分析访问者IP获取地理位置信息

MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用广泛,包括个性化定制内容、诈欺检测、广告定向、网站流量分析、执行规定、地理目标定位、地理围栏定位 (geo-fencing)以及数字版权管理。目前使用 GeoIP 更多是配合Nginx或Apache服务器进行日志分析获取网...

2015-07-16 14:32:04

阅读数:1310

评论数:0

查看临界区等待线程数量

某日,在浙大国家实验室,与老方和小崔调试监控死锁问题。机柜里一溜架装服务器上出现死锁问题。用WinDbg看,发现其中导致死锁的临界区LockCount值是小于-1的数!!   多次重现该问题,发现LockCount经常是负的两三百。 我等本着不十分科学严谨,但又有一点科学严谨的态度,装模作样查了下...

2015-07-15 17:44:03

阅读数:1078

评论数:0

duilib进阶教程 -- 实现List排序

需求: 点击List的某个ListHeaderItem,List按照此列排序。 实现思路:在C#中好多控件都支持排序,如gridview,只要配置相应属性并实现一些方法就可以了,但duilib就不行了,一切都得自己来。 1 找到事件触发位置,在Notify方法中捕获DUI_MSGTYPE_HE...

2015-07-13 16:30:18

阅读数:482

评论数:0

从缓冲上看阻塞与非阻塞socket在发送接收上的区别

最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞区别的描述,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解。所以我想写一篇文章来纠正错误,并作为记录方便查阅,如有转载,注明作者(jwybobo2007)以及出处即可。   首先socket在默...

2015-07-08 13:29:35

阅读数:1264

评论数:0

WSAGetLastError:10004 一个封锁操作被对 WSACancelBlockingCall的调用中断 的解决

今天在进行网络通信调试的时候遇到一个错误:10004 一个封锁操作被对 WSACancelBlockingCall的调用中断。 错误的发生情况如下: Server: 1. 一个线程启动一个socket1 在监听,接收到到来的client连接. 2. 同时,启动一个socket2作为clie...

2015-07-03 15:32:16

阅读数:4882

评论数:0

socket的半包,粘包与分包的问题

首先看两个概念:  短连接:  连接->传输数据->关闭连接     HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。     也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。  长连接:  连接...

2015-07-01 17:20:54

阅读数:602

评论数:0

国际化困境(第二篇)

难得我写系列文章,我的作风更偏向于一鼓作气。(那接下去怎么说?再而衰,三而竭……希望不是这样,呵呵……) 七、OEM与ANSI的转换 好,接上次,上次讲到OEM和ANSI,在文章后面我还给出一张所谓“全图”,当然,只针对两个code page的0x80到0xFF的字符,一个是437,可以认为是英文...

2015-07-01 10:13:00

阅读数:664

评论数:0

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