![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows
文章平均质量分 70
计算机科学家的世界
荣耀的背后刻着一道孤独
展开
-
VS C++ compiler的一个bug
我在VS2010里面写入了如下代码:#include #include using namespace std;templatevoid function(const T& value){ cout<<typeid(value).name()<<endl;}class CT{public: friend void function(int iValue);};原创 2012-06-29 14:07:32 · 1759 阅读 · 3 评论 -
用户空间锁的设计与实现
昨天完成了无锁队列的实现,然后思考了一下锁的原理,锁的核心无非是保证有一个变量需要被原子性地更新,比如,我们用一个bool x,表示锁,当我们获取锁的时候,我们需要保证的是锁能够只在同一时间被多个线程中的一个线程去读取和更新,在逻辑上有如下的代码:bool GetLock(bool& x){ if(x){ x= false;原创 2014-10-10 17:29:45 · 2156 阅读 · 0 评论 -
无锁队列的原理与实现
最近几天在思考无锁队列,看了相关文章,也读了一些博客,最后写了一份代码,代码实现对在多线程环境下对队列的读和写是不需要加锁的。代码如下所示:#include #pragma comment(lib, "Kernel32.lib")templateclass LcFQue{//lock free queuepublic: struct QueNode{ QueNode *原创 2014-10-10 17:10:36 · 4842 阅读 · 0 评论 -
2014-04网易、微软、百度、腾讯、阿里实习生招聘经验与经过
网易、多益、百度、腾讯、阿里、微软实习招聘笔试及面试全过程原创 2014-04-28 21:31:19 · 3741 阅读 · 4 评论 -
《Windows编程零基础学》__0
首先很开心申请到了这一个专栏《Windows编程零基础学》这是第一篇文章,在这里,我将讲述一些基础的知识。什么是Windows编程所谓Windows编程就是在Windows平台上开发,并且运行于Windows平台上的程序,当然,开发的时候运用的东西是Windows API或者封装之后的Windows API。为什么要学Windows编程有人说,我学的是Java,我不需原创 2013-07-31 15:06:50 · 3565 阅读 · 5 评论 -
《windows编程零基础》__1 Hello,World
第一个工程1)打开Visual Studio,如下地建一个工程2)选择一个空的工程原创 2013-07-31 23:28:50 · 2415 阅读 · 1 评论 -
《Windows编程零基础》__2 一个完整的程序
Windows开发的常识1)窗口Windows中最基本的概念也许就是窗口了,每一个前台程序都至少有一个窗口,一个窗口也是你可以看到的部分,比如,QQ有如下的登录窗口基本上你在Windows中可见的都是一个窗口,窗口也是Windows中用于用户直接交互的基本元素(GUI程序)。2)句柄窗口、文件、socket、信号量、管道、邮槽(mailslot)……都是Windows平原创 2013-08-04 11:09:45 · 2617 阅读 · 1 评论 -
static inline与内部、外部链接对象
一个由inline引起的讨论以下函数定义有问题么://function.hVoid hello(){ Printf(“hello,world”);} 一般人看起来肯定觉得不对,因为我们基本上只把函数定义放在cpp里面,然后定义一个.h声明一下,在使用的地方include 一下这个.h就Ok了。可是为什么要这样做呢?换句话说,如果我们按上面的方法定义hel原创 2013-04-16 18:56:41 · 2999 阅读 · 1 评论 -
教你用Windows API 写一个Thread类(不使用static哦)------(3)
在这文章里面,我主要解释class里面的函数调用原理,首先给出测试代码如下:class CBase{public: void Hello(){ }};int main(){ CBase base; base.Hello();} 同样地,按照前面文章讲解的方法,汇编得到以下main.asm,如下:; Listing generated by Micro原创 2012-07-18 18:18:07 · 2024 阅读 · 0 评论 -
教你用Windows API 写一个Thread类(不使用static哦)------(2)
这一文章中我们主要分析VS平台对于函数调用的编译处理,首先我们看一个简单的例子,代码如下: void Hello(){ } int main(){ Hello(); } 然后在VS Command Prompt下面用cl -FA main.cpp 编译一下,你会得到一个汇编的文件main.a原创 2012-07-18 17:41:25 · 1699 阅读 · 0 评论 -
教你用Windows API 写一个Thread类(不使用static哦)------(1)
关于Windows API 的线程函数CreateThread的使用MSDN有如下说法:The CreateThread function creates a thread to execute within the address space of the calling process.HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThr原创 2012-07-18 13:04:33 · 2182 阅读 · 1 评论 -
C和C++关于变量声明的区别以及一个矛盾的现象
什么都不说了,先贴代码吧,在VS2010里面输入以下代码(MAC Book没电了(电源不想找,不能在MAC OS XCode里面测试了))//A.c fileint iValue;//B.c fileint iValue;//main.c file#include extern int iValue;int main(){ printf("%d\n", iValu原创 2012-06-30 23:48:58 · 1989 阅读 · 1 评论 -
简单的DLL注入及代码详解
dll注入是一种常用的攻击方法,其大概步骤如下:1,编译出一个DLL,这个DLL的DllMain里面负责搞破坏2,打开一个目标进程(就是你要搞破坏的进程)3,在打开的目标进程里面分配一块内存(它的用处是用于放我们要注入的dll名称)4,得到Kernel32.dll里面的LoadLibraryA的地址(注意,Kernel.dll是内核空间里面的,所以,在所有的进程里面,它的地址都一样原创 2012-07-17 16:58:14 · 2381 阅读 · 3 评论 -
教你用Windows API 写一个Thread类(不使用static哦)------(4)
这一篇文章中主要是讲解怎么写代码把以上3篇文章的理论用起来,写出一个能用的Thread类(只是模型)我在第3篇中提到了,要想把类的成员函数做Thread函数,一定要在一个时候把this指针赋值给ecx,问题是在类的成员函数里面是不太可能做这种事情的,因为如果你要让fun成为线程函数,你就需要在别的函数里面初始化ecx,这样感觉有点多余。我用的最简单的一个方法是写一段机器代码,在这个机器代码里面原创 2012-07-18 18:37:53 · 2499 阅读 · 0 评论