代码改变世界

阅读排行榜

等差数列基本性质

2012-09-06 23:00 by kennyMc, 580 阅读, 收藏,
摘要: d是公差 An=A1+(n-1)d {A,B,C} B=(A+C)/2 求公差 d=An-Ak/n-k,(n>k) 证明下: An=A1+(n-1)d Ak=A1+(k-1)d An-Ak=(n-k)d d=An-Ak/n-k 等差数列的总和公式 Sn=n(A1+An)/2 证明 将一个等差级数写作以下两种形式: Sn=A1+(A1+d)+……+(An-... 阅读全文

c++析构函数

2012-09-26 17:35 by kennyMc, 537 阅读, 收藏,
摘要: #include <iostream>using namespace std;class Man{public: char* name; int age; Man(char * Name,int Age) { this->age=Age; this->name=Name; }; void Show() { cout<<"name:"<<this->name<<endl <<"age:"<<this->age<<endl; }; ~Man(){cou 阅读全文

MAKEWORD制造双字

2012-10-05 17:53 by kennyMc, 470 阅读, 收藏,
摘要: 方法的宏定义#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8)) unsigned long w=12345678911111; cout<<(w&0xff)<<endl;oxff=255=11111111,12345678911111=10110011101001110011110011100101011010000111所以输出结果是135(二进制:100 阅读全文

windows线程用户模式-关键段

2012-11-07 23:17 by kennyMc, 411 阅读, 收藏,
摘要: 旋转锁和通过不断检测变量值来进行同步的方式都是占用CPU资源的方式,不推荐使用。假如同步变量不被修改,那么其中一个等待线程会一直执行。volatile关键字,在多线程方法里面经常看见带这个关键字的参数,大概理解了下,编译器可能对代码进行优化,把变量的值载入寄存器中,访问寄存器的值比字节访问内存地址中的值快,但是变量可能被其他不明的操作修改了值,导致寄存器中的值和内存地址中的值不同,volatile可以保证每次都从内存地址取值。之前的旋转锁的BOOL变量就没有加volatile关键字,给InterlockedExchange方法传入的是变量的地址,那么函数就会内存中读取值,编译器不会对此进行优化 阅读全文

Semaphore同步

2012-12-15 19:27 by kennyMc, 408 阅读, 收藏,
摘要: 信号量和事件内核对象一样,不会记录当前拥有资源的线程ID,没有线程占有权一说,信号量靠资源数量来进行同步,可用资源量等于0,代表信号量未激活,大于0,信号量被激活,并且允许资源数量个线程进入。#include <iostream>#include <process.h>#include <windows.h>#include <string>using std::cout;using std::endl;using std::string;const int num=2;int count;HANDLE _Semaphore;unsigned _ 阅读全文