- 博客(36)
- 资源 (6)
- 收藏
- 关注
原创 git-workflow
git workflow 1、master:(每一次变动都是一个版本;来源release和hotfix;服务hotfix;为第一个develop提供服务) 2、hotfix:(master某个版本发现问题后,可能需要多次提交验证,为减少master的版本号多次变化;来源master;服务master) 3、release:(测试对即将发布的版本做回归验证,开发做bug修复,无新功能提交;...
2018-05-03 11:52:48
367
原创 GetCurrentProcess 伪句柄
0、思考1、相关apiGetCurrentProcessGetCurrentThreadGetCurrentProcessIdOpenProcessDuplicateHandleCloseHandle 3、api说明HANDLE WINAPI GetCurrentProcess(void);1、返回当前进程的伪句柄(始终返回-1)2、-1表示当前进...
2018-04-10 10:42:01
5138
原创 CreateToolhelp32Snapshot TH32CS_SNAPTHREAD
TlHelp32.hCreateToolhelp32Snapshot TH32CS_SNAPTHREADTHREADENTRY32Thread32FirstThread32NextCloseHandle
2017-03-24 10:46:31
1640
原创 CreateToolhelp32Snapshot TH32CS_SNAPMODULE TH32CS_SNAPMODULE32
TlHelp32.hCreateToolhelp32Snapshot TH32CS_SNAPMODULETH32CS_SNAPMODULE32MODULEENTRY32Module32FirstModule32NextCloseHandle
2017-03-24 10:12:32
1137
原创 CreateToolhelp32Snapshot TH32CS_SNAPPROCESS
apiTlHelp32.hCreateToolhelp32Snapshot TH32CS_SNAPPROCESSPROCESSENTRY32 Process32FirstProcess32NextCloseHandle
2017-03-24 10:07:23
3401
原创 CreateToolhelp32Snapshot TH32CS_SNAPHEAPLIST
TlHelp32.hCreateToolhelp32SnapshotTH32CS_SNAPHEAPLISTHEAPLIST32 Heap32ListFirst Heap32ListNext CloseHandle
2017-03-24 10:03:08
810
原创 wtsapi32.dll
WTSCloseServer WTSConnectSessionW WTSCreateListenerW WTSDisconnectSessionWTSEnableChildSessionsWTSEnumerateListenersWWTSEnumerateProcessesExWWTSEnumerateSessionsExWWTSFreeMemoryExWWTSGetChildSessionId
2017-03-23 13:31:57
2348
1
原创 内核对象 复制对象句柄 DuplicateHandle 跨进程边界共享内核对象
Windows API List System Services Windows System Information Handles and Objects Handles and Object Reference Handle and Object Functions DuplicateHandle// 跨进程边界共享内核对象;
2016-09-19 10:35:10
2234
原创 libevent windows build
http://libevent.org/libevent windows budild32b 64b debug releasemakefile.nmakeOx Od MDd Zi
2016-06-08 16:49:46
730
原创 扩展样式
扩展样式WS_EX_ACCEPTFILES WS_EX_CLIENTEDGE WS_EX_CONTEXTHELP WS_EX_CONTROLPARENT WS_EX_LAYERED WS_EX_LEFT WS_EX_LEFTSCROLLBAR WS_EX_LTRREADING WS_EX_MDICHILD WS_EX_OVERLAPPEDWINDOW WS_EX_PALETTEWINDOW WS_EX_RIGHT
2016-05-18 17:19:53
599
原创 窗口样式
窗口样式WS_BORDER WS_CAPTION WS_CHILD WS_CHILDWINDOW WS_CLIPSIBLINGS WS_DISABLED WS_DLGFRAME WS_GROUP WS_HSCROLL WS_ICONIC WS_MAXIMIZE WS_MAXIMIZEBOX WS_MINIMIZE WS_MINIMIZEBOX WS_OVERLAPPED WS_OVERLAPPEDWINDOW
2016-05-18 17:13:58
625
原创 32位类型(int、long等)右移(>>)32位
If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.也就是说,对于右移大于或等于位宽的操作,或者右移负数的操作,其结果将依赖于编译器的处理和硬件指令的处理,并不唯一。
2016-01-07 14:16:01
7573
原创 线程同步 总结 用户模式同步对象
旋转锁(Interlocked)关键代码段(CRITICAL_SECTION)Slim读写锁(SRWLOCK)条件变量(CONDITION_VARIABLE)最佳性能当然是不使用共享数据,然后依次使用Volatile读取,Volatile写入,Interlocked递增,关键段,SRWLock共享模式,SRWLock独占模式,互斥量。
2015-11-10 17:36:39
516
原创 线程同步 条件变量 CONDITION_VARIABLE 用户模式同步对象 InitializeConditionVariable
CONDITION_VARIABLEInitializeConditionVariableSleepConditionVariableCSSleepConditionVariableSRWWakeConditionVariableWakeAllConditionVariable条件变量:利用线程间共享的全局变量(关键段、读写锁)进行同步的一种机制
2015-11-10 16:59:28
3222
原创 线程同步 Slim读写锁 SRWLOCK 用户模式同步对象 InitializeSRWLock
SRWLOCKInitializeSRWLockAcquireSRWLockExclusiveAcquireSRWLockSharedReleaseSRWLockExclusiveReleaseSRWLockShared独占式访问:写线程访问共享资源的方式;共享式访问:读线程访问共享资源的方式;当有读线程访问资源时,写线程等待访问时,新的读线程因为有写线程等待所以不允许访问。
2015-11-10 15:01:50
2579
原创 线程同步 关键代码段 CRITICAL_SECTION 用户模式同步对象 InitializeCriticalSection
CRITICAL_SECTION InitializeCriticalSectionDeleteCriticalSectionEnterCriticalSectionLeaveCriticalSection TryEnterCriticalSectionInitializeCriticalSectionAndSp临界区:在某个时间内只允许(同一个进程内的)一个线程执行某个给定代码段。
2015-11-10 09:41:46
3187
原创 线程同步 旋转锁 Interlocked 用户模式同步对象 InterlockedExchange
InterlockedIncrement(相当于++)InterlockedDecrement(相当于--)InterlockedExchangeAdd(相当于+)InterlockedExchange(相当于=)InterlockedCompareExchange(相当于?:)原子访问:一个线程在访问某个资源的同时能够确保没有其他线程会在同一时刻访问同一资源。
2015-11-10 09:35:21
2736
原创 线程同步 等待函数 WaitForSingleObject WaitForMultipleObjects
WaitForSingleObjectWaitForMultipleObjectsWaitForInputIdleMsgWaitForMultipleObjectWaitForDebugEventSignalObjectAndWait等待函数:是一个线程自愿进入等待状态,直到指定的内核对象被触发为止。等待成功所引起的副作用:对象的状态发生了变化。
2015-11-09 16:23:11
1752
原创 线程同步 互斥量 Mutex 内核对象 CreateMutex
CreateMutexReleaseMutex互斥量:确保一个线程独占对一个资源的访问。(与关键代码段行为完全相同,只是互斥量属于内核对象,关键代码段属于用户模式下的同步对象)互斥量包含一个使用计数、线程id以及一个递归计数。(后面有用)异常:假设线程试图等待一个未触发的互斥量对象。在这种情况下...线程所有权:除了互斥量,没有任何一个会记住自己是哪个线程等待成功的内核对象。遗弃:...
2015-11-09 13:51:02
3066
原创 线程同步 信号量 Semaphore 内核对象 CreateSemaphore
生产者消费者问题,同步互斥问题,有界缓冲器问题:1、两个进程对同一个内存资源操作,一个生产者,一个消费者;2、生产者往共享内存资源填充数据,如果区域满,则等待消费者消费数据;3、消费者从共享内存资源取数据,如果区域空,则等待生产者填充数据;CreateSemaphoreOpenSemaphoreReleaseSemaphore读者写者问题,同步互斥问题哲学家进餐问题,同步互斥问题
2015-11-09 10:40:21
4815
原创 线程同步 等待定时器 WaitableTimer 内核对象 CreateWaitableTimer
CreateWaitableTimerSetWaitableTimerCancelWaitableTimerOpenWaitableTimerWaitForSingleObjectWaitForMultipleObjectCloseHandle等待定时器:在某个指定的时间触发或每隔一段时间触发一次。APC:asynchronous procedure call异步任务调用
2015-11-06 17:00:13
2025
原创 线程同步 事件 Event 内核对象 CreateEvent
0、思考关键代码段可以解决线程间同步,进程间怎么办?1、相关apiCreateEventSetEventResetEventWaitForSingleObjectCloseHandleOpenEventWaitForMultipleObjectsPulseEvent2、写在前面特点:用于进程或线程间同步3、api说明// 创建一个事件对象// lpEventAttributes
2015-11-06 09:29:09
1802
原创 查看文件被占用的进程 NtQueryObject NtQueryInformationFile NtQuerySystemInformation
当你重命名或删除某个文件或文件夹时, 有时候系统提示说:操作无法完成...balabala...; 你怎么知道它被什么占用了,上代码
2015-06-24 13:23:08
3180
原创 使用IWebBrowser2创建简单浏览器
使用ie内核的浏览器怎么搞IWebBrowser2 ie内核的浏览器控件CAxWindow 容器CreateWindow 创建windows窗口
2015-04-26 17:17:38
7402
原创 高低权限进程通信(ChangeWindowMessageFilter, WM_COPYDATA)
低权限进程向高权限进程发送消息时会返回拒绝访问, windows为我们提供了ChangeWindowMessageFilter, 直接上代码(client.cpp用非管理员启动, server.cpp用管理员启动, 通过SendMessage WM_COPYDATA进行通信)
2015-04-21 10:10:55
7242
原创 dll入门简单实例(动态链接库)
#ifndef __NC_DLL_SAMPLE_H__#define __NC_DLL_SAMPLE_H__#ifdef WIN32 #ifdef DLL_SAMPLE_EXPORT #define DLL_SAMPLE_API __declspec(dllexport) #else #define DLL_SAMPLE_API __declspec(dllimport) #endif#endifextern "C" DLL_SAMPLE_
2015-04-08 17:21:34
5474
原创 屏蔽控制台应用程序窗口
#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup")#pragma comment(linker, "/subsystem:windows /entry:wmainCRTStartup")
2015-03-23 11:30:57
656
原创 string
1、stringtypedef basic_string, allocator > string;2、basic_stringtemplateclass basic_string{}; 3、wstringtypedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;4、tstringtypedef basic_string<TCHAR, char_traits<TCHAR>, allo
2015-03-10 13:44:14
527
原创 c++ 虚函数 多态性 (一)
#include using namespace std;class A{public: void foo () { printf ("1\n"); } virtual void fun () { printf ("2\n"); }};class B : public
2014-02-19 09:15:23
487
原创 MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
#pragma once#include int WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ return 0;}疑惑:也许就这样没有功能的代码都会出错,什么原因呢? 关键字:wWinMain
2013-09-29 09:45:25
2394
原创 为什么内置数组不支持数组之间的赋值,支持这种操作需要什么信息?
数组名其实代表着一个指针常量,所以将一个数组名赋值给另一个数组,就像是把常量2赋值给常量3一样,虽然语法正确,但在语意层面上会产生错误。C++语言并未支持数组的赋值操作,编译器在编译时必须知道数组的长度,才能产生执行代码来支持数组对数组的操作。
2013-03-11 08:35:51
779
MyEclipse+MYSQL图解
2012-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人