自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IamRainLiang的专栏

Make the world easy !

  • 博客(25)
  • 收藏
  • 关注

原创 写优先读写锁,读效率比 WINDOWS 的 SRWLOCK 慢一倍左右,百万级读锁要156ms

#pragma once/**************************************************写优先读写锁 读效率比 WINDOWS 的 SRWLOCK 慢一倍左右,百万级读锁要156ms(78ms) 写效率比 WINDOWS 的 SRWLOCK 慢 N 倍,百万级写锁要1516ms(62ms) CKSRWLock 读写锁实现 CAut

2011-07-16 22:16:27 4075 3

原创 如何管理时间?

如何管理时间?(重要的事,指的是重要并且影响深远的事。) 第一流程:1,搜集:把你一段时间的使用情况,统计出来。如果你有秘书,那秘书是做这件事情的最佳人选。2,分析:哪些时间用在了不必做的事情上,哪些事情是应该委派他人代替你做的。3,管理:养成良好的习惯,不做或少做不必做的事情,适当委派他人完成一些工作。4,腾挪:合理安排,把大段的时间空出来,把黄金状态的时间空出来,做重要的事。 第二流程:1,搜

2011-07-02 17:35:29 590

原创 生产者消费者模型与双缓冲队列

 传统队列是生产者线程和消费者线程从同一个队列中存取数据,必然需要互斥访问,在互相同步等待中浪费了宝贵的时间,使队列吞吐量受影响。双缓冲队使用两个队列,将读写分离,一个队列专门用来读,另一个专门用来写,当读队列空或写队列满时将两个队列互换。这里为了保证队列的读写顺序,当读队列为空且写队列不为空时候才允许两个队列互换。 

2011-07-02 10:08:32 2052

转载 两个变量交换值,不使用缓存的方法

<br /><br />第一种方法,大家会借助第三个变量来实现:<br />如:C=A;A=B;B=C;<br />这种方法需要借助第三变量来实现;<br />第二种方法是利用加减法实现两个变量的交换,<br />如:A=A+B;B=A-B;A=A-B;<br

2011-03-03 20:43:00 1065

转载 锁无关的(Lock-Free)数据结构,在避免死锁的同时确保线程继续

C/C++ Users Journal October, 2004  锁无关的(Lock-Free)数据结构  在避免死锁的同时确保线程继续  Andrei Alexandrescu  刘未鹏 译  Andrei Alexandrescu是华盛顿大学计算机科学

2011-03-03 19:48:00 1277 1

转载 The Standard Librarian: Bitsets and Bit Vectors

CUJ:标准库:bitset和bit vector (转)The Standard Librarian: Bitsets and Bit VectorsMatt Austernhttp://www.cuj.com/experts/1905/austern.htm?topic=experts在 C++里,你能如愿地玩弄位元,而且甚至不用到宏。-------------------

2009-09-08 10:57:00 745

原创 高精度时间计数

 开发对战平台的时候,需要获取并计算ping值。这时候GetTickCount就显得精度不够了,很多时候得到的ping值是0。所以有了下面这个函数:static DWORD GetTimeCount() {  static bool init = false;  static bool hires = false;  static __int64 freq = 1;  if(!init)  {

2008-10-11 09:05:00 884

转载 C++:字节对齐(内存地址对齐)

一.什么是字节对齐,为什么要对齐?    现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。    对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只

2008-09-28 11:24:00 1871 1

转载 C++:运算符优先级列表

PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-increme

2008-09-28 11:13:00 743

转载 Windows 内核驱动:A more stable way to locate real KiServiceTable

By: 90210 Tan Chew Keong in his Win2K/XP SDT Restore 0.1 uses a simple way to find changed SDT entries - he just compares SDT from memory with SDT from ntoskrnl.exe file, assuming that KeServiceDesc

2008-09-28 11:10:00 1053

转载 Windows 系统背景:IPC$ 资料

一 唠叨一下:网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄.不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于第一次接触ipc$的菜鸟来说,简单的罗列步骤并不能解答他们的许多迷惑(你随便找一个hack论坛搜一下ipc,看存在的疑惑有多少).因此我写了这篇相当于解惑的教程.想把一些容易混淆,容

2008-09-28 10:46:00 971

原创 我的开发履历:FAST-REPORT 报表工具接口封装.2006.8

项目描述:将 FAST-REPORT 报表工具的 COM 接口封装为 VC/MFC 可用的静态库类接口。难点在于该报表工具不能支持 UNICODE 字符显示,而封装后的接口必需提供表格数据 UNICODE 字符显示支持。这个也是我刚刚进入公司的练手项目。当时公司决定采用俄罗斯人开发的支持产品 FAST-REPORT 来作为我们打印表格的工具模块,以代替手工绘画打印的不美观。然而不知道俄罗斯人怎

2008-08-21 22:55:00 1286

原创 Windows 界面:透明窗体的实现

本人一般不做 UI 的,当然除了一些小工具的简单界面。不过由于工具做多了,对分割窗口之类的东东也都有所涉猎,尽管是看看文档,依葫芦画瓢。今天有找到个 API 函数实现窗体的透明,原来微软提供的接口还蛮丰富的吗,:-)半透明对话框在OnInitDialog()中添加以下代码即可: // 透明窗口 //加入WS_EX_LAYERED扩展属性 SetWindowLong(this->GetS

2008-03-17 18:02:00 1231

转载 Windows 系统背景:Windows 启动过程图详解

Windows启动过程详解     作者:刘晖   更新时间:2006-08-17   出处:个人电脑  

2008-02-01 21:03:00 2202

原创 Windows 界面:右键菜单的实现

1,首先在资源栏的 menu 项建立好要使用的菜单;2,对于一般的窗口和控件,可以使用 ClassWizard 创建其消息处理函数 OnContextMenu() ; 3,特定区域的右键菜单也可以创建鼠标右键消息响应;4,在消息响应函数中弹出菜单:void CScanFileList::OnContextMenu(CWnd* /*pWnd*/, CPoint point){ //

2008-01-30 18:10:00 1144

原创 Windows 界面:OnCustomDraw 设置 CListCtrol 任意行的文本字体颜色以及背景色

1,首先使用 ClassWizard 建立一个 CListCtrl 的派生类,在它的头文件消息响应函数中添加: // Generated message map functionsprotected: //{{AFX_MSG(CScanFileList) //}}AFX_MSG afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)

2008-01-30 17:57:00 2405 1

原创 Windows 界面:具有“删除元素”和“按列进行字符比较排序”的 CListCtrol 继承类 CListCtrolEx 的实现

1,头文件实现:#if !defined(AFX_LISTCTRLEX_H__FD8138BA_775E_4491_ACCA_B5265EC70DBC__INCLUDED_)#define AFX_LISTCTRLEX_H__FD8138BA_775E_4491_ACCA_B5265EC70DBC__INCLUDED_#if _MSC_VER > 1000#pragma once#endi

2008-01-30 17:43:00 1213 1

原创 Windows 界面:设置不可见的窗口属性

1,创建单文档工程2,用 ClassWizard 添加消息响应函数 PreCreateWindow(),添加以下内容:BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CFrameWnd::PreCreateWindow(cs) )  return FALSE; // TODO: Modify the Window class

2008-01-30 17:25:00 3228

原创 Windows 界面:状态栏的简单应用

1,建立单文档工程后,在资源栏的 String Table 的成员中添加显示名:IDS_Status IDS_TimeCost IDS_ItemsScanned2,修改 MainFrm.cpp 中的 indicators  定义:static UINT indicators[] ={ ID_SEPARATOR,           // status line indicator  I

2008-01-30 17:20:00 1199

原创 Windows API : 系统错误信息字符串获取

还在不断的切换到 ERROR LOOKUP 程序查看 API 返回的系统错误代码吗? 那简直太低效啦!不如让系统以当前默认编码为你生成错误信息字符串吧:///////////////////////////////////////////////////////////////////////////////// IN // DWORD dwError  错误号,默认值(0xFFFFFFF

2008-01-29 16:29:00 1967

原创 C++ : 应用 RAII 技术在 Windows 下实现自动释放锁

或许大家很早就对函数多个出口时的释放语句或解锁语句感到万分无奈而头痛不已,但是这种情况从此将不再让你烦恼!因为你有了 —— RAII 技术!!RAII(Resource Acquisition Is Initialization 资源获得即初始化)是管理资源的一种方式,它在构造对象时初始化资源,析构对象时释放资源,有时也把这2个过程分为RAII和RRID(Resource Release Is D

2008-01-29 16:15:00 1319

原创 Windows 驱动: 消除核心内存的只读保护

在很多机器上 SSDT 表是不可写的,写即导致机器无提示崩溃重启。这是需要去除核心内存的写保护: //----------------------------------------------------------------------//// 设置核心内存访问保护////--------------------------------------------------------

2008-01-29 16:00:00 2355

原创 Windows 驱动:获取当前进程名

 这是一个比较简单的问题,在 REGON 的源码中可以找到实现的相关代码,我只是把它们整理封装了一下。//// Process name max length: by bytes// (This value is 16 bytes in RegMon) //#define MAX_PROC_NAME_LEN 256//// This is the offset into a KPEB of t

2008-01-25 16:22:00 6839 3

原创 Windows 驱动:像 DbgPrintf 一样将调试信息输出到文件

运用的技术跟应用层大体一致,倒是互斥的问题干扰我很久。已开始使用的是 FastMutex,但是它会提升 IRQL 到 APC_LEVEL,显然写文件的服务函数都只能跑在PASSIVE_LEVEL 下,最后只好使用了 Event 。示例代码说明:GetCurrentTimeString() 详见前文:Windows 驱动中获取系统当前时间,生成格式字符串GetCurrentProces

2008-01-25 15:58:00 5229

原创 Windows 驱动:获取系统当前时间,生成格式字符串

可以按照以下步骤: 1. 用 KeQuerySystemTime() 获得当前的 GMT System Time. 这是一个从 1601-01-01 以来的计数(单位是 100ns)。 2. 调用 ExSystemTimeToLocalTime() 将 GMT System Time 值转换成当前时区的 Local System Time. 3. 用 RtlTimeToTimeFiel

2008-01-25 15:18:00 4755

空空如也

空空如也

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

TA关注的人

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