自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (4)
  • 收藏
  • 关注

转载 An Improved Reflective DLL Injection Technique

原文链接:https://disman.tl/2015/01/30/an-improved-reflective-dll-injection-technique.htmlIntroductionI really enjoy reading technical analyses of sophisticated malware attacks. It’s kind of a

2016-12-09 11:23:38 871

转载 What is the HINSTANCE passed to CreateWindow and RegisterClass used for?

原文链接:https://blogs.msdn.microsoft.com/oldnewthing/20050418-59/?p=35873One of the less-understood parameters to the CreateWindow function and the RegisterClass function is the HINSTANCE

2016-04-17 09:42:39 721

转载 高性能服务器本质论

作者:CppExplore  http://www.cppblog.com/CppExplore/和http://blog.csdn.net/cppexplore同步发布一 服务器分类从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器(1)CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。典型的如转发服务器/代理服务器/协议转换

2015-05-22 09:06:47 668

原创 本来我觉得半天可以解决的编译错误,现在看来一天都搞不定了

1>------ Build started: Project: Protocol, Configuration: Debugmt Win32 ------1>  client.cpp1>d:\xuser\sources\boost_lib\boost\asio\detail\handler_invoke_helpers.hpp(37): error C2666: 'asio_handle

2015-05-20 12:27:53 1086 3

翻译 调试64bit程序所面临的挑战-part1

调试64bit程序所面临的挑战如果到目前为止,你还没有调试过优化后的64bit代码,为了不落后于时代,那就赶紧去尝试吧。由于64bit下fastcall调用方式和大量通用寄存器的存在,找出任意栈帧中局部变量的值将会变得非常棘手。本文,我将详述一些我非常喜欢的调试64bit代码的技巧。但在此之前,我们先对64bit下函数的调用方式做一个了解。X64调用约定如果你熟悉32位平台下的fa

2015-01-31 19:57:28 937 1

原创 单实例模式的实现

template class ISingleton{public: static T& Instance() { static void* volatile pInstance = NULL; static void* volatile creating = NULL; if(pInstance) return pInstance; if(InterlockedCo

2014-04-20 19:36:26 812

转载 加班与效率

微博上看到了这么一个贴子,就像以前在《腾讯,竞争力 和 用户体验》中批评过腾讯说自己的核心竞争力是员工加班一样,我顺着Winter的回复也批评了一下这个微博——“靠加班超越对手?!劳动密集型么?我要是对手的话,我就来趁机挖人了,直接摁死你……//@寒冬winter: 当一个管理者的智慧无法衡量一支团队的产出的时候,他就会把“工时”当做最后的救命稻草,死死抱住——这是他唯一听得懂的东

2014-03-03 09:42:31 781

原创 控制台彩色输出

有时候我们希望向控制台输出彩色的或是带有背景的字来突出内容,在windows可以通过下面的代码来实现:#pragma once#include #define STYLE_WHITE FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED#define STYLE_GREEN FOREGROUND_GREEN|FOREGROUND_INTENSI

2014-02-11 19:01:22 1772

原创 异步之生产者消费者模型--同步缓冲区的实现

适用于多个生产线程和多个消费线程之间的协作,生产者将信息放入同步缓冲区,消费者从该缓冲区中读取进行操作,可以指定特殊的“产品”来指示工作线程退出。#ifndef __PRODUCER_CONSUMER_HPP_#define __PRODUCER_CONSUMER_HPP_#include class NonCopyable{protected: NonCopyable()

2013-11-10 12:12:16 1477

原创 统计常用字的一种方法

最近工作中需要一个常用字集合,网上找了些,都不太满意,所以打算自己做一个。统计常用字最难的地方就是数据收集这块,想到后台一直在网上爬东西,觉得可以利用一下,这样最难的问题就解决了。废话少说,整体流程如下:1.使用爬虫从网上抓取海量网页数据,采用utf-16格式保存成文件。2.统计文件中每个字的次数,排序,生成一个log文件,该文件输出了每个字及其出现的次数,另一个文件就是常用字库啦。

2013-11-03 18:46:01 1689

原创 想知道vector<bool>有多坑人吗

跑一下下面的程序,看看vector的表现吧void TestVectorBool(){ vector vecbool; vector vecchar; const size_t vecsize = 0x1000000; for(size_t i = 0; i < vecsize; i++){ vecbool.push_back(true); vecchar.push_bac

2013-10-31 22:29:54 3384

转载 数据上报分析

最近做的一个项目需要进行数据上报,收集信息主要有如下几个用途:1.反馈目标点出现的次数,用于评估严重程度。2.搜集位置目标信息,用于迭代更新已有的机制,增强效果。由于刚开始做,比较盲目,导致数据报上来一团糟,处理起来非常麻烦,这两天想了下,做了个总结:1.要有明确的目标:信息用途,后续如何统计要非常清楚,否则后台无法分析。2.要有精确的文档描述,并要按文档的来做。3.如果新

2013-10-31 19:37:44 803

原创 64bit下关闭启用文件重定向功能,支持多线程,简单易用

BOOL DisableWow64FsRedirection(BOOL disable){ typedef BOOL (__stdcall *FuncIsWow64Process)(HANDLE, PBOOL); typedef BOOL (__stdcall *FuncWow64DisableWow64FsRedirection)(PVOID*); typedef BOOL (__stdc

2013-10-24 09:55:33 1445

原创 一段简单的内存检测代码

需求检测代码中的内存泄露情况,辅助开发人员解决bug。目标1.        使用尽量简单。尽量不要修改已有代码。2.        对于malloc和new分配出现的内存泄露能够检测出来。3.        友好的提示,报告出错的未知,定位到文件对应的行。4.        对于泄露的内存,能够dump出部分内容。代码使用方法:将如下两个文件放入你的工程,如果

2013-10-19 19:37:46 1645 3

原创 字符雨

/******************************字符雨,说实话,没数字雨好看,改自旓旓发的黑客帝国--数字雨!!编译方法:cl.exe NumberRain.cpp******************************/#define UNICODE#include #include #include #include #pragma comment(lib,

2013-09-13 21:09:42 2490

转载 code fragment-Windows截图

来源:http://bbs.pediy.com/showthread.php?p=1212276#post1212276using namespace std;int _tmain(int argc, _TCHAR* argv[]){RECT rc; HWND hwnd = FindWindow(TEXT("Notepad"), NULL); //注意窗口不能最小化

2013-08-20 08:44:06 844

翻译 线程局部存储,Part 6:Windows Server 2003中隐式TLS支持方法设计中的问题

原文网址:http://www.nynaeve.net/?p=187上周,我描述了在WindowsServer 2003中加载器如何处理隐式TLS支持。尽管TLS支持对于最初的要求支持的挺好,但是仍然存在一些让人不悦的地方。如果你一直看到这里,你可能已经注意到隐式TLS支持中设计方面的问题。这些缺陷最终鞭策微软在vista版本中对隐私TLS进行了重要的修正。WindowsServer

2013-01-05 18:27:49 1073

翻译 线程局部存储,Part 5:加载器对__declspec(thread)变量的支持(进程初始化阶段)

原文网址:http://www.nynaeve.net/?p=186上次,我描述了编译器和链接器为访问__declspec(thread)扩展类变量所使用的生成代码的机制。尽管此时它们已经为隐式TLS布置了舞台,但为了使整体能够工作,仍然需要加载器这个组件来提供必需的运行时支持。具体的,加载器将负责为每个模块分配TLS索引值,为每个线程的TEB中的ThreadLocalStorageP

2013-01-05 11:50:21 1607

翻译 线程局部存储,Part 4:访问__declspec(thread)变量

原文网址:http://www.nynaeve.net/?p=185昨天,我大致说了下编译器和链接器如何合作来支持TLS,但是并没有讲当访问__declspec(thread)变量时具体底层是个什么样子,或者说是怎么来做到的。在解释如何访问__declspec(thread)变量的内部工作原理之前,有必要了解下tlssup.c中的几个特殊变量。这些变量被_tls_used引用来

2013-01-04 09:52:22 3195

翻译 线程局部存储,Part 3:编译器和链接器对隐式TLS的支持

原文网址:http://www.nynaeve.net/?p=183线程局部存储,Part 3:编译器和链接器对隐式TLS的支持上次,我们探讨了显式TLS操作所采用的机制(包括TlsGetValue、TlsSetValue和其它相关例程)。尽管显式TLS被大量使用,但是TLS机制的更有意思的部分却是加载器对隐式TLS的支持或是编译器中的__declspec(thread)变量。虽然两种

2013-01-03 16:21:31 1646

翻译 线程局部存储,Part 2:显式TLS

原文网址:http://www.nynaeve.net/?p=181线程局部存储,Part 2:显式TLS前一篇,我概述了windows中TLS的一些总体设计原则。大家可以从MSDN中得到关于TLS的高层接口和设计方法,但是有意思的却是其底层的实现。从实现来看,显式TLS API是目前两类实现TLS方法中较简单的一种,因此这种方法很少涉及内部实现的可变部分。正如我上次提到的,显式TLS

2013-01-03 15:49:40 1211

翻译 线程局部存储,Part 1:概述

原文网址:http://www.nynaeve.net/?p=180线程局部存储,Part 1:概述和其它主流多线程操作系统一样,Windows为大家提供一个机制,该机制允许程序员实现基于线程的局部状态存储。这种能力通常称为线程局部存储(Thread Local Storage,TLS),这对于那些需要保存线程相关信息但需要全局可见的应用场景非常有用。尽管TLS的介绍有很好的文档可参考

2013-01-03 15:47:51 1107

原创 如何求字符串的全排列

一家搜索公司的面试题,当时有这个概念,但是没写出代码,思路不清晰,回来想了下,很简单。void loop(char* str, int real_size){ int size = strlen(str); if(size == 0) printf("%s\n", str - real_size); for(int i = 0; i < size; i++){ swap(s

2012-10-30 09:39:52 1295

转载 大学毕业后拉开差距的真正原因

大学毕业后拉开差距的真正原因大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!看完之后有种“相见恨晚”的感觉,特别激动,希望大家好好的珍藏这篇文章,相信多年以后,再来看这篇文章,一定有不同的感觉。马云曾经在给新员工的信中写到“阿里不会承诺你发财、升官,刚来公司不到一年的人,也千

2012-10-20 19:57:25 1284

原创 google面试题--天平称球

问题如下:There are 8 balls. Seven of them weigh the same, but one is heavier. Using a balance scale, how do you find the heavier ball with just two weighings?意思是说,有8个看起来外貌一样的球,其中7个球重量相同,一个球略重,如何使用一个天平

2012-08-25 15:16:34 1723 1

原创 向VS的Output窗口输出调试信息

要求:Debug版输出,Release版不输出。兼容Unicode版本。/*1. 需要头文件windows.h和tchar.h*/#ifdef _DEBUGvoid XdPrint(_TCHAR* format, ...){ va_list args; va_start(args, format); _TCHAR buf[256]; _vstprintf(buf,

2012-08-21 16:26:58 9702

原创 windows的同步设施

2012-08-21 10:51:42 632

原创 linux-iptables设置NAT

实验环境如下:Fedora 17,双网卡,其中eth0用于外网,eth1用于内网。1.配置网卡信息。网卡信息包括:IP地址(IPADDR0),网络地址掩码(NETMASK),网关(GATEWAY0)等。这些信息均记录在文件/etc/sysconfig/netwrok-scripts/ifcfg-eth*,*表示从0起的数字,依次对应每一块网卡。例如2块网卡,则存在ifcfg-eth0/

2012-08-08 11:17:22 4555

原创 插入、选择排序

void chose_sort(int *a, int length){ for(int i = 0; i < length - 1; i++){ int min = i; for(int j = i + 1; j < length; j++){ if(a[j] < a[min]) min = j; } int tmp = a[i]; a[i] = a[min

2012-08-06 10:42:47 504

原创 winpcap--枚举网络接口

#include /*枚举网络接口1.枚举2.读取3.释放内存*/int main(){ pcap_if_t *alldevs; int count = 0; char errbuf[PCAP_ERRBUF_SIZE]; if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1){

2012-08-04 10:08:54 956

原创 快速排序

void qs(int *a, int s, int e){ int i, j, pivot; if(s >= e) return; i = s; j = e; pivot = a[i]; while(i != j){ while(i != j && a[j] >= pivot) j--; if(i == j) break; a[i] = a[j]; i++

2012-08-03 09:02:50 508

原创 SendARP结合线程池扫描局域网计算机

由于SendARP本身是不能异步调用的,因此这里采用结合线程池的方法来加快扫描速度。// Scaner.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #pragma comment(lib, "iph

2012-07-16 03:48:47 1346

原创 使用SendARP扫描局域网的计算机

先获得本机IP地址和掩码,得到地址上下限,然后使用SendARP获得MAC地址。缺点是SendARP有超时,导至扫描速度很慢。// Scaner.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #pragma comm

2012-07-15 19:12:28 5489 1

原创 堆排序

对于堆排序,有以下几点需要注意:堆化操作。将数组堆化有两种方法:一种是依次插入数组中的元素,使其堆化,另一种是自底向上。由于我们知道全部的元素,此时选择自底向上的方法,其时间复杂度为O(n),插入法的时间复杂度为O(nlog(n))。在堆化操作当中,核心部分是3个结点比大小,不断下塑,从而找到合适的位置存放违规的元素。将堆有序化,方法是不断执行出堆操作。附件:void he

2012-07-11 11:36:53 835

原创 POJ1009

#include #include struct RLE{ int count; int value;};struct Pos{ RLE *pixel; int num;};void PrevPoint(Pos& pos){ if(pos.num == 0){ pos.pixel--; pos.num = pos.pixel->count - 1; }els

2012-07-09 22:06:05 1848

原创 POJ1003

#include using namespace std;int main(int argc, char** argv){ double len; unsigned int card_num; do{ cin>>len; if(len - 0.001 < 0) break; double cur_len = 1.0/2; unsigned int count =

2012-06-25 22:35:26 934

原创 POJ1002

#include #include #include #include #include #include using namespace std;bool Comp(map::iterator op1, map::iterator op2){ return op1->first first;}int main(int argc, char** argv){ map c

2012-06-25 22:10:55 534

原创 MFC消息映射及路由

介绍的顺序按照从浅入深来认识1在mfc中消息路由机制就是指将发送给窗口的消息发给该窗口对应的窗口类所提供的相应的成员函数。这句话的关键字是 窗口对应的窗口类  窗口类对应的成员函数。首先说 窗口对应的窗口类,mfc使用全局函数AfxWndProc取代所有窗口的窗口过程函数,在这个函数里面通过类似字典的形式采用窗口句柄作为索引查找到对应的窗口类对象。 // all oth

2012-06-22 22:46:09 862

原创 Loader----2

Loader----1中将内存分配放在了函数里面,这样大大降低了函数的可复用性,想想如果我们想在驱动层使用了,所以做如下修改,内存布局函数仅作功能性操作,和系统相关的内存分配放到函数外面吧。/** 将文件内容按虚拟地址信息映射到地址空间*/BOOL LdrLayoutPe(char*pImage, DWORD FileSize, char* pRealImageBase, DWO

2012-05-16 14:02:34 519

原创 Loader----1

做完文件校验后将映像映射到内存当中。/** 将文件内容按虚拟地址信息映射到地址空间,返回模块的基地址*/char* LdrLayoutPe(char*pImage, DWORD FileSize){ PIMAGE_FILE_HEADER pFileHeader; PIMAGE_SECTION_HEADER pSectionHeader; char* pOptionalHe

2012-05-16 11:21:30 519

文件夹比较软件--可用于比较文件夹在不同时间下作的改变

使用VS2010编写, 功能:可以用来比较指定文件夹里文件的改变,包括文件增加、访问时间变化、大小变化等。 内容:文件遍历,odbc数据库操作,使用access作为数据库。

2011-10-06

类似qq关闭提示的辅助类

这个类用来实现仿qq最小化的提示及配置文件的保存。 仅用于个人学习

2010-01-16

xpIIS安装文件集合

现在大家安装xp很多都用Ghost,由于没有安装盘,导致安装iis服务的时候怎么也找不到合适的文件, 这个文件集里包含所有需要的文件,安装的时候定位到指定的文件夹就行了。

2009-08-03

空空如也

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

TA关注的人

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