自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

while(1) { smile(); }

致力于构建完善的Windows应用开发生态体系

  • 博客(47)
  • 资源 (63)
  • 问答 (1)
  • 收藏
  • 关注

原创 PE文件格式

Windows PE文件格式的图片: 请下载或者放大后查看。 上图中对部分字段的解释使用“未知”等字样,需要了解每个字段的详细意义,可以参考《Windows PE权威指南》上图中定义的PE格式都可以从winnt.h文件找到对应的定义(从14862行开始):...

2017-12-31 00:23:40 98422

原创 纯ASCII字符图片生成

阅读过开源库源码的同学,一定记得源码文件开始出的纯字符logo,如curl库的logo: 推荐一个将图片转出纯ASCII字符的网站: picascii这个网站是将图片转成纯ASCII字符。如果需要将文字转出ASCII字符,可以先将文字截图保存为图片,在使用该网站来转。

2017-12-30 14:13:09 101401 53

原创 ASCII流程图

看过RFC文档的同学一定对它上面的纯字符流程图记忆犹新,今天推荐一个专门画这种ASCII流程图的网站: asciiflow

2017-12-30 14:07:14 92534 1

转载 告别忙、累、压力大、没成绩

有人问我这个问题: 我做软件开发工作,一直996的节奏,起初因为公司繁杂的流程不熟悉,工作效率没有那么高,所以感觉加班996并无所谓。 可是,在熟悉开发流程的情况下,效率提高了,却有一种做得越多,任务越多的感觉。做得越快,领导给的任务越多,最后越做不完……最近已经从以前的9点下班开始拖到10点半…… 在这种情况下,有种要把已经掌握的技术重复用10年的感觉,根本没有时间学习提升自己

2017-12-30 13:28:45 425

转载 程序员如何提升自身价值

程序员薪水有高有低,有的人一个月可能拿30K、50K,有的人可能只有2K、3K。同样有五年工作经验的程序员,可能一个人每月拿20K,一个拿5K。是什么因素导致了这种差异?我特意总结了容易导致薪水低的九大行为表现,避开这些大坑,你就离高薪不远了。习惯即刻回报他不懂得只有春天播种,秋天才会有收获。刚刚付出一点点,甚至还没有付出,就想要得到回报。技术刚刚掌握,能一边百度一边干活了就觉得该拿到

2017-12-30 13:08:55 130796 4

原创 网络协议 -- UDP协议(5)UDP的IOCP实现

关于IOCP网络模型的介绍可以参考:http://blog.csdn.net/china_jeffery/article/details/78815373 IOCP模型对协议是没限制的,无论是TCP还是UDP都是支持的。 UDP的IOCP模型实现的不同之处在于投递发送请求和接受请求所用的函数不同:int WSARecvFrom( SOCKET s, LPWSABUF lpBuffe

2017-12-29 18:02:19 100891

原创 网络协议 -- UDP协议(4)组播

组播就是将数据发送到一组主机。接收端如果要接收消息,则需要加入到该分组,分组是用IP来标识的。 从网络协议–UDP协议(1)介绍可以知道,适用于分组的IP有224.0.0.0 ~ 239.255.255.255。 同样,发送端就需要将数据发送到该分组IP。一、发送端#include #pragma comment(lib, "Ws2_32.lib")void SendLog

2017-12-29 17:12:43 100379 2

原创 网络协议 -- UDP协议(3)广播

UDP的广播和单播的不同在于发送端(接收端的实现和单播方式没有区别)的实现上: 1. 发送端将套接字配置为发送广播消息,使用setsockopt函数。 2. 发送地址更改为受限的广播地址255.255.255.255。 需要说明的是广播地址不仅仅只有255.255.255.255一个。广播地址分为受限的广播、指向网络的广播、指向子网的广播、指向所有子网的网广播。255.255.255.

2017-12-29 16:36:11 98146

原创 网络协议 -- UDP协议(2)单播

一、发送端因为UDP不是面向连接的,且不可靠的,所以发送端在调用sendto之后,就算sendto返回成功,也不代表接收端一定收到了数据,可能接收端压根都没启动,也是有可能的。不能根据sendto的返回值来确保接收端一定收到了数据。如果需要数据传输的可靠性得到保证,可以使用TCP或者通过业务逻辑来保证。#include #pragma comment(lib, "Ws2_32.lib

2017-12-29 16:01:51 97358

原创 WinDbg -- 调试关键区(CriticalSection)死锁

一. 演示示例这里一个有关键区锁死问题的程序,运行之后依次点击“CS锁死”按钮、右上角退出按钮,程序就会卡死。(图1) 对于眼下的这个问题,界面完全失去响应,这说明负责消息处理的UI线程阻塞了。对于几乎所有的windows GUI程序,编号为0的初始线程就是UI线程,windows发现该界面一段时间没有消息响应之后就会在标题后面加上“(未响应)”。二. WinDbg调试启动Windbg,附加到

2017-12-28 23:55:00 95170

原创 WinDbg -- 调试互斥体(Mutex)死锁

一. 演示用例#include <windows.h>#include <tchar.h>#include <process.h>HANDLE hMutexA = NULL;HANDLE hMutexB = NULL;unsigned __stdcall ThreadProc1(void * pArg) { WaitForSingleObject(hMutexA, INFINITE);

2017-12-28 23:45:29 97304

原创 网络协议 -- IP地址

本文介绍在网络编程中涉及到的与IP地址相关的操作。关于IP的分类等基础知识,可以参考:网络协议 – 基础概念一、相关结构体struct in_addr// sizeof(in_addr) == sizeof(ULONG) == 4//typedef struct in_addr { union { struct { UCH

2017-12-28 22:03:54 96139

原创 网络协议 -- UDP协议(1)介绍

一、什么是UDP协议?UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP的正式规范是IETF RFC768。UDP在IP报文的协议号是17。 ISO七层模型: 1.1 UDP报头UDP报头的结构如图: UDP报头由4个部...

2017-12-28 16:12:59 134566 1

原创 使用VSLinux插件开发和调试

一、写在前面从事Windows平台C++开发的时候顺其自然的一直使用visual studio进行开发和调试,对VS的强大并没有太大的感觉。从事Linux平台的开发工作后,折腾Vim配置,安装YCM等各种插件,代码提示,函数列表等各种功能都有了,可以顺利开发了,但用了一段时间后总觉得差点什么,还是和vs有些差距。俗话说没比较就没伤害,转眼看看VS+VAssistX,感觉vim瞬间被秒成渣渣,不可否认

2017-12-27 23:14:13 82656 1

原创 Google C++编程规范

个人认为google的C++编码规范实用性强,相较于微软的编码规范更加简单明了.一、文件命名文件名要全部小写,可以包含下划线(_)或短线(-)。my_useful_class.ccmy-useful-class.ccmyusefulclass.cc二、类型命令类型命名每个单词以大写字母开头,不包含下划线:MyExcitingClass、 MyExciti...

2017-12-27 23:07:24 82583 2

原创 freopen实现标准流重定向到文件

标准流指的是:标准输入流stdin、标准输出流stdout、标准错误流stderr。 freopen可以实现流的重定向,把预定义的标准流重定向到指定的文件中。FILE * freopen ( const char * filename, const char * mode, FILE * stream );使用方法如下:int _tmain(int argc, _TCHAR* argv[]){

2017-12-27 23:00:10 82450 1

原创 NSIS教程(4): 调用Windows API

NSIS调用win32 API(也可以是其他dll提供的导出接口)需要通过System::Call来调用,调用语法如下:System::Call PROC [( PARAMS ) [RETURN [? OPTIONS]]]每个参数由三个值组合而成: 类型、源、目标。注意是每个参数都是由三个值组合而成。 类型:可以是一个整数,一个字串,等等。 源: 就是参数值的源,可以是一个 NSI

2017-12-27 22:54:33 84407

原创 NSIS教程(5): 静默安装

常用的静默安装有2种: 1. 在脚本中加入SilentInstall 和 SilentUninstall 命令 2. 在程序启动参数里加 /S 参数(区分大小写) 要判断安装、卸载程序是否静默可以使用 IfSilent:# 安装操作开始前.Function .onInit IfSilent +2 +1 MessageBox MB_ICONQUESTION|MB...

2017-12-27 22:43:22 93019 6

原创 1900年代中国

Albert Kahn 1860年3月3日生于法国 Marmoutier 城,而立之年投身银行业。 到了四十多岁,他认为工业革命正在导致世界巨变,很多文化古迹都可能会消亡,就想把这些都记录下来。 于是他就开始了逐梦摄影圈的环游世界之旅,雇佣了多名摄影师,采用了当时最先进的 Autochrome 彩色摄影技术,拍摄了上万张彩色照片,组成了一套“地球档案(les Archives de la Planè

2017-12-27 20:24:54 816

原创 C++ 匿名对象

在webRTC的源码中有如下函数:template T>std::unique_ptr WrapUnique(T* ptr) { return std::unique_ptr(ptr);}该函数不复杂,但重点在于它直接返回了一个std::unique_ptr。我们知道std::unique_ptr是不能够直接拷贝构造的,如:std::unique_ptr::string

2017-12-25 16:01:42 95852

原创 WebRTC--添加IOCP网络模型支持

一、起因webRTC在windows平台默认使用的是WSAAsyncSelect模型,该模型需要有一个windows窗口的支持,而且伸缩性、性能都比较低。 关于WSAAsyncSelect模型的介绍可以参考Windows套接字I/O模型(3) – WSAAsyncSelect模型因为webRTC是点对点的数据传输,对每一个端的性能要求并不高,采用WSAAsyncSelect模型完全是足够的。但

2017-12-25 15:10:43 94620

原创 Windows内存体系(6) -- 彻底理解内存对齐

一、内存为什么要对齐虽然所有的变量都是保存在特定地址的内存中,但最好还是按照内存对齐的要求来存储。这主要出于两个方面的原因考虑: 平台原因: 不是所有的硬件平台(特别是嵌入式系统中使用的低端处理器)都能访问任意地址上的任意数据,某些硬件平台只能访问对齐的地址,否则会出现硬件异常。 性能原因: 如果数据存放在未对齐的内存空间中,则处理器访问变量时需要进行两次内存访问才能完整读取该...

2017-12-24 23:40:51 94747 3

原创 w3m浏览器

w3m是一个基于文本的网页浏览器,支持多种操作系统,在命令行终端可以很好的支持中文。即使在没有鼠标支持的情况下也可以检查网页的输出。本文列出常用的快捷键。一、安装在大多数的linux发行版本中并不默认包含w3m浏览器,需要我们手动安装,我们需要2个包,w3m和w3m-img,w3m-img包支持在w3m浏览器中显示图片,在ubuntu下使用apt-get install 安装。

2017-12-24 23:33:47 95266

原创 DebugView远程查看日志

我们一般都是在程序运行的本地电脑使用debugview查看日志输出,但其实debugview也支持C/S模式(服务端-客户端模式)的日志查看方式,通过这种方式我们就可以通过debugview远程查看某一台计算机上的日志输出了。使用方式: 1. 在远端运行debugview作为服务端。debugview.exe /a在近端(需要查看日志的计算机)运行debugview,点击connect,输入远端

2017-12-24 23:18:48 94161

原创 windows平台编译ffmpeg

1. 安装MinGW和msys.使用mingw在线安装工具安装mingw和msys其到F盘,位置可以任意指定.点击Installation –&gt; Apply开始安装。修改F:\MinGW\msys\1.0\etc目录下的fstab.sample文件名为fstab,在文件中输入如下内容:安装完成以后执行msys.bat文件启动一个类似Linux终端的对话框,现在将会在F:\Mi...

2017-12-24 22:54:14 92359

原创 MySQL存储过程模板

MySQL存储过程的范例模板,带返回值和异常处理的功能。DROP PROCEDURE IF EXISTS sp_sample;CREATE PROCEDURE sp_sample(OUT errno INT)root:BEGIN /* 功能: IN参数: OUT参数: errno 存储过程异常标志(0-成功, 1-异常)

2017-12-24 22:22:51 92278

原创 WebRTC--rtc_base库移植

rtc_base是webrtc的基础库,也是一个不可多得的跨平台的基础库,它提供了线程、网络、指针等多个方面的支持。 我们可以将它单独提取出来加以改造,然后使用。 rtc_base库位于src\rtc_base文件夹中。 我们将其移到单独的visual studio工程中,并使用cl.exe编译为静态库。 虽然使用gn gen --ide=vs out/Debug命令生成的visual

2017-12-24 21:42:26 94551

转载 大道至简,职场上做人做事做管理

大道至简,越是根源和基本的问题,道理实际上越简单。关于如何做人、做事、做管理的书很多,我看得不多,但是我觉得这些书更多是侧重技术和实现细节上的,而很少从人的思想和观念去讲。实际上,从根本上去说,如何做人做事是世界观的问题,也是一个哲学话题。很多人和我一样,已经到了快30的年纪,是需要去思考一下应该如何做人如何做事的,也需要一套简单、有效、完整的体系来指导自己,而这套体系将是让自己安身立命于这个世界

2017-12-21 19:16:53 91028

原创 Windows套接字I/O模型(5) -- 完成端口模型

一、写在前面前面介绍了套接字I/O的同步模型、WSAAsyncSelect模型、WSAEventSelect模型,套接字I/O还剩下2个模型没有介绍:重叠模型,完成端口模型。 如果程序对性能和并发要求不高,可以使用前面介绍的WSAEventSelect模型;如果对性能和并发有要求,可以使用本文介绍的完成端口模型。 因为完成端口模型是基于重叠模型的,且在易用性、可伸缩性等方面都高于重叠模型...

2017-12-15 17:38:55 91970 2

原创 CONTAINING_RECORD宏的实现原理

在使用windows完成端口时,会使用到CONTAINING_RECORD宏,该宏的作用就是:根据结构体中的某成员的地址来推算出该结构体整体的地址,相当于一个万能公式。 下面代码的注释中,讲解了该宏的实现原理。#include #include int main(){ struct T { int a; int b;

2017-12-14 12:30:53 90465

原创 标准库std::min/std::max与min/max宏冲突

如题,因为windef.h中定义了max和min宏:#ifndef NOMINMAX#ifndef max#define max(a,b) (((a) > (b)) ? (a) : (b))#endif#ifndef min#define min(a,b) (((a) < (b)) ? (a) : (b))#endif#endif /* NOMI

2017-12-14 12:04:47 99213

原创 MD5

一、MD5介绍MD5是MD5消息摘要算法的简称(英语:MD5 Message-Digest Algorithm),是一种广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(即哈希值),用于确保信息传输的完整性。MD5由罗纳德·李维斯特设计,于1992年公开,用以取代MD4算法。这套算法的程序在RFC 1321 中被加以规范。 将数据(如一段文字)运算变为另一固定长度值,是散列

2017-12-13 10:35:53 95967 1

原创 windows程序单实例

// pszUniqueName需要以Global\\开头,且需保证事件名在整个计算机上唯一,可以使用GUID // BOOL CheckSingleInstance(LPCTSTR pszUniqueName) { HANDLE hMutex = CreateEvent(NULL, TRUE, FALSE, pszUniqueName); DWOR

2017-12-13 10:26:22 89811

原创 字符串格式化函数引起的崩溃

一. 问题描述我们常用的格式化字符串函数有:HRESULT StringCchVPrintf( _Out_ LPTSTR pszDest, _In_ size_t cchDest, _In_ LPCTSTR pszFormat, _In_ va_list argList);int printf ( const char * format, ... );...

2017-12-12 23:11:25 91320

原创 Windows套接字I/O模型(4) -- WSAEventSelect模型

一、WSAEventSelect模型介绍WSAEventSelect模型和WSAAsyncSelect模型类似,它也允许应用程序在一个或多个套接字上面,接收以事件为基础的网络事件通知。该模型和WSAAsyncSelect模型的最主要的区别在于,网络事件是由事件对象句柄完成的,而不是通过窗口消息完成的。该模型要求应用程序针对打算使用的每一个套接字都创建一个事件对象。创建方法是就是调用WSAC...

2017-12-12 21:11:17 89744

原创 Windows套接字I/O模型(3) -- WSAAsyncSelect模型

一、WSAAsyncSelect模型介绍利用WSAAsyncSelect模型,结合windows窗口消息循环,应用程序可以在一个套接字上,接收以windows消息为基础的网络事件通知。要想使用WSAAsyncSelect模型,首先必须创建一个窗口,并为窗口提供一个窗口过程支持函数。int WSAAsyncSelect( _In_ SOCKET s, _In_ HWND

2017-12-12 16:14:24 89776

原创 OutputDebugString完美封装

C/C++开发中经常需要输出调试信息,我们一般使用OutputDebugString输出到DebugView或者调试器输出窗口。 OutputDebugString原型如下:void WINAPI OutputDebugString( LPCTSTR lpOutputString);它只支持一个字符串参数。 在实际使用中,一般都会将其封装,支持可变参数,方便调用。封装了2

2017-12-12 14:48:37 90191 2

原创 Windows套接字I/O模型(2) -- Select模型

一、Select模型介绍套接字I/O Select模型的“中心思想”便是利用select函数,实现对I/O的管理。利用select函数判断套接字(一个或多个)上是否存在数据,或者能否向套接字写入数据。它也是同步的,也会阻塞。但和套接字I/O阻塞模型不同的是,Select模型可以同时管理多个Socket。select函数原型:int select ( int nfds,

2017-12-11 22:19:34 89123

原创 Windows套接字I/O模型(1) -- 阻塞模型

一、服务端服务端大致流程: 1. 创建Socket 2. Bind端口 3. 开始Listen 4. accept客户端连接 5. send数据到客户端 6. recv数据从客户端 7. close socket#include <winsock2.h>#include <iostream>#include <assert.h>using namespace std;#pragma

2017-12-11 16:55:51 88870

原创 C++ 类型转换

static_cast只提供编译时的类型检查,没有运行时类型检查。完全不相干类型之间的转换是不允许的,编译器会报错。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;虽然也允许进行下行转换(把基类指针或引用转换成子类表示)时,但由于没有动态类型检查,所以是不安全的。用于基本数据类型之间的转换,支持占用不同存储空间的基本类型的转化,但这种转换的安全性也要开发人员来保证。支持vo...

2017-12-11 14:10:15 88467

wireshark抓的网络包

使用wireshark抓取的一个网络包,用来分析tcp协议等等。

2018-01-29

NSIS+Duilib仿QQ安装包

NSIS+Duilib仿QQ安装包,完整的工程,含插件、NSIS脚本。

2018-01-19

基于duilib的NSIS界面插件

使用duilib界面库开发的NSIS界面插件,完整的visual studio工程。

2018-01-19

7za命令工具

7za命令行压缩工具,配合nsis7z插件使用,该版本生成的7z文件,nsis7z插件可以解压。

2018-01-19

NSIS插件开发示例

NSIS插件开发示例,对应博客:http://blog.csdn.net/china_jeffery/article/details/79101886

2018-01-18

基于NSIS Modern界面制作的网易云音乐安装包

基于NSIS Modern界面制作的网易云音乐安装包。博客:http://blog.csdn.net/china_jeffery/article/details/79095722

2018-01-18

nsis-3.02.1

nsis-3.02.1.exe 官方地址:http://nsis.sourceforge.net/Download

2018-01-18

基于NSIS传统界面制作的网易云音乐安装包

基于NSIS传统界面制作的网易云音乐安装包。博客地址:http://blog.csdn.net/china_jeffery/article/details/79095247

2018-01-18

NSIS图文教程集锦 - 轻狂志 - 20150508

NSIS图文教程集锦 - 轻狂志 - 20150508 chm文件。。。。。。。。。。。。。。。。。。。

2018-01-17

NSIS用户手册 中文版

《NSIS用户手册 中文版》 chm格式 ..........................................................................

2018-01-17

Windows高级调试

Windows高级调试 pdf。深入揭示windows高级调试技术。

2018-01-02

Qt Quick核心编程.pdf

Qt Quick核心编程,高清,带目录,全部是自己加的目录。

2017-12-29

图解TCP/IP 第5版

图解TCP/IP 第5版 -- 高清 -- 带目录版。***********************

2017-12-21

HashMyFiles

HashMyFiles.exe 计算文件hash值,md5值。支持批量操作。

2017-12-21

使用OllyDbg从零开始Cracking(2)

使用OllyDbg从零开始Cracking,压缩分卷第2卷,需要2卷下载完之后解压。

2017-12-20

使用OllyDbg从零开始Cracking(1)

使用OllyDbg从零开始Cracking,压缩分卷第1卷,需要2卷下载完之后解压。

2017-12-20

完成端口(IOCP)模型示例

windows完成端口(IOCP)模型示例代码,含客户端和服务端代码。

2017-12-15

WebRTC权威指南

WebRTC权威指南 pdf 原书第三版 带目录 高清版 *************

2017-12-12

WSAAsyncSelect模型示例源码

socket I/O WSAAsyncSelect模型示例源码。visual studio工程。

2017-12-12

RFC5389文档

RFC5389英文文档,STUN(Session Traversal Utilities for NAT (STUN))

2017-11-29

Radmin Server-3.5.7z

Radmin server ver 3.5, include client and server. support chinese.

2019-08-05

automate-git.zip

用于编译cef,也可以直接从cef官网下载。 博客:https://blog.csdn.net/china_jeffery/article/details/95794379

2019-07-13

Driver开发工具

驱动开发调试工具,包含: KmdManager,EzDriverInstaller,Dbgview,IRPTrace,DriverMonitor

2019-03-13

NuGet包的模板文件

Nuget包制作模板,可以参考该模板来制作对应的Nuget包。

2019-01-10

UltraMon.v3.2.2.x64

UltraMon.v3.2.2.x64 多屏幕控制和管理,适用于windows.

2018-07-02

深入应用C++11 代码优化与工程级应用

《深入应用C++11 代码优化与工程级应用 》pdf版本,高清。

2018-06-22

ffmpeg-20180427-4833050-win64-static

ffmpeg-20180427-4833050-win64-static, 音视频开发必用,你懂的!如果你不懂,那我说了你也不会懂!

2018-04-28

audacity-win-2.2.2

audacity-win-2.2.2 音频编辑利器,你懂的!如果你不懂,那我说了你也不会懂!

2018-04-28

google_appengine

博客https://blog.csdn.net/china_jeffery/article/details/80092309对应资源.

2018-04-26

Visual Assist X_10.9.2258

Visual Assist X_10.9.2258完美破解版,亲测可用,安装之后将Crack目录中的文件拷贝替换到安装目录。

2018-04-22

MemoryModule

https://blog.csdn.net/china_jeffery/article/details/79867801 文章对应的代码。

2018-04-09

Windows PE权威指南

《Windows PE权威指南》,PDF版本,高清,带目录。。。

2018-04-09

Windows DLL注入示例

Windows DLL注入系统文章的配套代码。详见“说明.txt”文档。

2018-04-02

SQLyog-v.12.2.6

SQLyog-v.12.2.6破解版,64位版本,功能强大,稳定可靠。

2018-03-14

WINDOWS核心编程(第4版)

WINDOWS核心编程(第4版),相对于最新版,其中有很多最新版中删除的章节。

2018-03-12

OllyDbg+OllyICE调试工具

包含:OllyDbg v2.01;OllyICE 吾爱扣扣专版;OllyICE_1.10;吾爱破解专用版Ollydbg

2018-03-02

Spring+MVC+MYBatis企业应用实战

Spring+MVC+MYBatis企业应用实战 PDF 高清版。.......................

2018-02-27

VSPD串口虚拟工具

VSPD串口虚拟工具,支持windows平台。<<<With Cracked.>>>

2018-02-07

depends工具

windows平台上著名的depends工具,查看文件的依赖关系。

2018-02-07

算法导论(第3版)

算法导论_原书第3版 中文版,高清,带目录,完整版。真正的完整版。

2018-01-31

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

TA关注的人

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