- 博客(643)
- 资源 (2)
- 收藏
- 关注
转载 有了WCF,Socket是否已人老珠黄?
1. Socket相关背景 Socket,中文译为“套接字”,最早在UNIX中引入并得到广泛应用,后来微软在设计Windows时引入了UNIX中的这个概念和相应的设计理念,并针对Windows的特性略作调整,形成了Windows平台上的Socket,简称为“WinSock”,并为开发者提供了一整套的API,称为“Windows WinSock Win32 API ”。 WinS
2014-02-08 21:54:22 2475
有了WCF,Socket是否已人老珠黄?
1. Socket相关背景 Socket,中文译为“套接字”,最早在UNIX中引入并得到广泛应用,后来微软在设计Windows时引入了UNIX中的这个概念和相应的设计理念,并针对Windows的特性略作调整,形成了Windows平台上的Socket,简称为“WinSock”,并为开发者提供了一整套的API,称为“Windows WinSock Win32 API ”。 WinSo...
2014-02-08 21:54:00 515
转载 分享8年开发经验,浅谈程序员职业规划
序:在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。明确入行的目的很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易
2014-02-08 21:51:29 2059 2
分享8年开发经验,浅谈程序员职业规划
序:在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。明确入行的目的很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开...
2014-02-08 21:51:00 376
转载 理解 Windows API 调用过程
我们在应用层调用一个Win32 API, 系统内部究竟是如何执行的, 它是如何从用户态进入到内核态的呢 ?对于每层一些概念的解释,这里不详述了,具体可以参考理解Windows内核模式与用户模式.以Kernel32里的 CreateProcess 为例, 内部会调用ntdll.dll里导出的NtCreateProcess, ntdll.dll通过一个中断请求int 2Eh
2014-02-08 21:48:31 1334
理解 Windows API 调用过程
我们在应用层调用一个Win32 API, 系统内部究竟是如何执行的, 它是如何从用户态进入到内核态的呢 ?对于每层一些概念的解释,这里不详述了,具体可以参考理解Windows内核模式与用户模式.以Kernel32里的CreateProcess 为例, 内部会调用ntdll.dll里导出的NtCreateProcess,ntdll.dll通过一个中断请求int 2Eh(Sysenter)进入内核...
2014-02-08 21:48:00 305
转载 落伍的感觉
作为一个传统的Win32开发程序员,感觉这些年技术变化可真快,总结一下主要体现在以下几方面: (1)互联网应用的重新崛起 从Google到阿里巴巴,再到Facebook, 从以前的博客到现在的微博,Web正在影响越来越多人的生活。越来越多的开发人员参与到Web开发中,从前端的Web2.0/Web3.0,HTML5, 到后台的云计算,云存储,云框架,各种新技术层出不穷
2014-02-08 21:40:22 1343
落伍的感觉
作为一个传统的Win32开发程序员,感觉这些年技术变化可真快,总结一下主要体现在以下几方面: (1)互联网应用的重新崛起 从Google到阿里巴巴,再到Facebook, 从以前的博客到现在的微博,Web正在影响越来越多人的生活。越来越多的开发人员参与到Web开发中,从前端的Web2.0/Web3.0,HTML5, 到后台的云计算,云存储,云框架,各种新技术层出不穷。 (2)...
2014-02-08 21:40:00 251
转载 如何学习WindDbg
作为一名Windows平台上的C/C++开发人员,我们有N个学习WinDbg的理由: 有些Bug只有在客户和QA的机器上才能重现,我们不可能在他们的机器上装一个VC吧WinDbg可以让我们方便的保存和分析Dump文件WinDbg的调试功能比VC强大的多,比如它有强大的API断点和条件断点调试内核和驱动,我们只能用WinDbg用WinDbg可以让你更深入的理解系统,理解计算机,用
2014-02-08 21:38:11 1444
如何学习WindDbg
作为一名Windows平台上的C/C++开发人员,我们有N个学习WinDbg的理由:有些Bug只有在客户和QA的机器上才能重现,我们不可能在他们的机器上装一个VC吧WinDbg可以让我们方便的保存和分析Dump文件WinDbg的调试功能比VC强大的多,比如它有强大的API断点和条件断点调试内核和驱动,我们只能用WinDbg用WinDbg可以让你更深入的理解系统,理解计算机,用V...
2014-02-08 21:38:00 268
转载 理解ATL中的一些汇编代码
我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的。但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水。下面我们主要分析一下ATL中的一些汇编代码
2014-02-08 21:37:10 1406
理解ATL中的一些汇编代码
我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的。但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水。下面我们主要分析一下ATL中的一些汇编代码。...
2014-02-08 21:37:00 204
转载 C++中实现回调机制的几种方式
(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:typedef void (__stdcall *DownloadCallback)(const char* pURL, bool bOK)
2014-02-08 21:36:03 1101
C++中实现回调机制的几种方式
(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:typedefvoid(__stdcall*DownloadCallback)(constchar*pURL,boolbOK);voidDown...
2014-02-08 21:36:00 215
转载 C/C++中可变参数的原理
以前只是知道可变参数怎么用,但是一直对它的原理是似懂非懂,现在对计算机有了比较深刻的认识之后,回头再看,豁然开朗。要理解可变参数,首先要理解函数调用约定, 为什么只有__cdecl的调用约定支持可变参数,而__stdcall就不支持?实际上__cdecl和__stdcall函数参数都是从右到左入栈,它们的区别在于由谁来清栈,__cdecl由外部调用函数清栈,而__stdcall由被
2014-02-08 21:35:35 837
C/C++中可变参数的原理
以前只是知道可变参数怎么用,但是一直对它的原理是似懂非懂,现在对计算机有了比较深刻的认识之后,回头再看,豁然开朗。要理解可变参数,首先要理解函数调用约定, 为什么只有__cdecl的调用约定支持可变参数,而__stdcall就不支持?实际上__cdecl和__stdcall函数参数都是从右到左入栈,它们的区别在于由谁来清栈,__cdecl由外部调用函数清栈,而__stdcall由被调用...
2014-02-08 21:35:00 206
转载 理解程序内存
内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,高2
2014-02-08 21:34:38 932
转载 怎样才算会一门编程语言
今天, 同事问我会不会Python, 我犹豫了一下:不会。 实际上我曾经学习过这个语言,当时还用它写了些小工具, 可现在我对这个语言的印象只剩下它那特殊的缩进格式了。 由此思考怎样才算会一门语言?我想每个程序员都接触过多门语言 , 那么究竟怎样才算会这门语言了呢? 会一门语言, 当需要它时, 应该能很快用该语言解决某个问题, 这个是最基
2014-02-08 21:34:01 1868
理解程序内存
内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,高2...
2014-02-08 21:34:00 180
怎样才算会一门编程语言
今天, 同事问我会不会Python, 我犹豫了一下:不会。实际上我曾经学习过这个语言,当时还用它写了些小工具, 可现在我对这个语言的印象只剩下它那特殊的缩进格式了。由此思考怎样才算会一门语言?我想每个程序员都接触过多门语言 , 那么究竟怎样才算会这门语言了呢?会一门语言, 当需要它时, 应该能很快用该语言解决某个...
2014-02-08 21:34:00 422
转载 COM思想的背后
最近看公司的一些新产品和框架 , 发现清一色的“COM思想架构 ”, 这里说的“COM思想架构”是指不完全是标准COM组件的方式,而是指在设计上用到了COM思想。COM组件技术大概在1993年产生, 20年了, 为什么还有这么多人使用? 我们先来看看标准COM组件:标准COM组件(DLL方式)需要实现如下4个导出函数:DllRegisterServer 将组件信息写
2014-02-08 21:33:07 1173
COM思想的背后
最近看公司的一些新产品和框架 , 发现清一色的“COM思想架构 ”, 这里说的“COM思想架构”是指不完全是标准COM组件的方式,而是指在设计上用到了COM思想。COM组件技术大概在1993年产生, 20年了, 为什么还有这么多人使用?我们先来看看标准COM组件:标准COM组件(DLL方式)需要实现如下4个导出函数:DllRegisterServer 将组件信息写入注册...
2014-02-08 21:33:00 180
转载 XP之后Windows的一些变化
看到很多Windows开发人员,尤其是C++程序员思维还是停留在XP操作系统,当然根据工作是否需要新知识 ,这本身没有错。但是实际上Vista之后的Win7, 再之后的Win8 ,Windows已经发生了很大的变化,我们程序员也该了解和适应这些变化。先看看Windows的发展历史:从上面的图,我们可以看到大概时间点:Win 95: 1995Win 98: 1998W
2014-02-08 21:31:48 1101
XP之后Windows的一些变化
看到很多Windows开发人员,尤其是C++程序员思维还是停留在XP操作系统,当然根据工作是否需要新知识 ,这本身没有错。但是实际上Vista之后的Win7, 再之后的Win8 ,Windows已经发生了很大的变化,我们程序员也该了解和适应这些变化。先看看Windows的发展历史:从上面的图,我们可以看到大概时间点:Win 95: 1995Win 98: 1998Win...
2014-02-08 21:31:00 167
转载 理解Windows内核模式与用户模式
内核层次架构windows程序运行分为内核模式和用户模式,内核模式可以访问所有的内存地址空间, 并且可以访问所有的CPU指令。一般程序运行在用户模式, 通过系统调用切换到内核模式执行系统功能,Windows系统通过这种方式来确保系统的安全和稳定。下面是内核的层次划分:硬件抽象层(Hardware Abstraction Layer) (HAL) (hal.dll)
2014-02-08 21:29:31 1091
理解Windows内核模式与用户模式
内核层次架构windows程序运行分为内核模式和用户模式,内核模式可以访问所有的内存地址空间, 并且可以访问所有的CPU指令。一般程序运行在用户模式, 通过系统调用切换到内核模式执行系统功能,Windows系统通过这种方式来确保系统的安全和稳定。下面是内核的层次划分:硬件抽象层(Hardware Abstraction Layer) (HAL) (hal.dll)最底层隔离硬件的, 底层的第三...
2014-02-08 21:29:00 173
转载 手工搭建32位汇编语言程序开发环境
目标: 以创建一个简单的对话框程序为例搭建环境,目标是用到最少的资源,这样我们能够知道一个程序的来龙去脉。实现: 从Visual Studio 安装环境中拷贝 ML宏汇编器和LINK链接器;拷贝部分.h头文件和.lib链接库文件。分析: [工具]C和C++的编译器为CL.EXE,汇编语言的编译器为ML.EXE,这两个程序都能生成COFF格式的目标文件OBJ;然后用通用的
2014-02-08 21:27:03 1459
手工搭建32位汇编语言程序开发环境
目标: 以创建一个简单的对话框程序为例搭建环境,目标是用到最少的资源,这样我们能够知道一个程序的来龙去脉。实现: 从Visual Studio 安装环境中拷贝 ML宏汇编器和LINK链接器;拷贝部分.h头文件和.lib链接库文件。分析: [工具]C和C++的编译器为CL.EXE,汇编语言的编译器为ML.EXE,这两个程序都能生成COFF格式的目标文件OBJ;然后用通...
2014-02-08 21:27:00 155
转载 Windows内存与进程管理器底层分析
来源:https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=58182内存与进程管理器========================== But I fear tomorrow I'll be crying,
2014-02-08 21:26:18 3853
Windows内存与进程管理器底层分析
来源:https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=58182内存与进程管理器========================== But I fear tomorrow I'll be crying, Yes I fear tomorrow I'll be crying.King Crimson'69 -E...
2014-02-08 21:26:00 226
转载 黑客常用WinAPI函数整理
黑客常用WinAPI函数整理 之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底层API编程。为了使读者对黑客常用的Windows API有个更全面的了解以及方便日后使用API方法的查询,特将这些常用的API按照7大分类进行整理如下,希望对大家的学习有所帮助。一、进程创建进程:CreateProcess("C:\\windows\\n
2014-02-08 21:25:23 1406
黑客常用WinAPI函数整理
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底层API编程。为了使读者对黑客常用的Windows API有个更全面的了解以及方便日后使用API方法的查询,特将这些常用的API按照7大分类进行整理如下,希望对大家的学习有所帮助。一、进程创建进程:CreateProcess("C:\\windows\\no...
2014-02-08 21:25:00 176
转载 缓冲区溢出攻击
缓冲区溢出攻击 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成
2014-02-08 21:24:33 1906
缓冲区溢出攻击
缓冲区溢出攻击缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一...
2014-02-08 21:24:00 153
转载 如果一个程序跑10000次只失败一次,你会怎么调试?
CLR小组中存在着大量的回归测试,这些回归测试会定期执行来发现CLR中的Bug,Developer在Checkin之前,也需要执行这些测试的一部分(大概是10小时左右,如果全部跑的话估计要好几天)。这些测试对于保证CLR的质量是至关重要的。有时候,这些测试会偶尔失败,比如跑100次失败大概一到两次,有些极端的例子甚至是10000次才失败一次。像这种问题通常是很难调试的。在前面调试Bug的神兵利器:
2013-12-08 23:58:10 1054
如果一个程序跑10000次只失败一次,你会怎么调试?
CLR小组中存在着大量的回归测试,这些回归测试会定期执行来发现CLR中的Bug,Developer在Checkin之前,也需要执行这些测试的一部分(大概是10小时左右,如果全部跑的话估计要好几天)。这些测试对于保证CLR的质量是至关重要的。有时候,这些测试会偶尔失败,比如跑100次失败大概一到两次,有些极端的例子甚至是10000次才失败一次。像这种问题通常是很难调试的。在前面调试Bug的神兵利...
2013-12-08 23:58:00 226
转载 调试Bug的神兵利器:通过WinDbg条件断点收集Log
前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT。比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的)。初步想到的有下面几种方案来调试:1. 设置数据断点2.
2013-12-08 23:57:12 936
调试Bug的神兵利器:通过WinDbg条件断点收集Log
前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT。比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的)。初步想到的有下面几种方案来调试:1. 设置数据断点2...
2013-12-08 23:57:00 142
转载 VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
BackgroundMSDN中对于在不同的配置下Link的LIB作了说明:C Runtime Library:开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的Debug版本
2013-12-08 23:56:02 967
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结...
BackgroundMSDN中对于在不同的配置下Link的LIB作了说明:C Runtime Library:开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的Debug版本/MT...
2013-12-08 23:56:00 170
SimplePointsReader
2013-11-21
vtk基础编程-DistancePointToLine
2013-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人