自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

转载 [算法] 【一段破代码,对SSL异步编程感兴趣的同学有福了, 欢迎高手指正使用错误】

SSL技术是很常用的, 无处不在, 在你SSH的时候, 在你HTTPS的时候, 在任何一款想兼具身份认证与加密通信的应用中, 你可以随处看到它的身影.本人之前只是用用脚本, SSL接口都被透明化了, 而且还是阻塞接口, 或者会使用Libevent支持的SSL体验一番异步的感觉, 也曾经读过Https的源码, 当时并没有在SSL方面引起重视, 直到我希望把Https引入到我的开源Ht

2017-03-04 17:34:58 769

转载 在libuv中使用openssl建立ssl连接

使用openssl进行加密通信时,通常是先建立socket连接,然后使用SSL_XXX系列函数在普通socket之上建立安全连接,然后发送和接收数据。openssl的这些函数可以支持底层的socket是非阻塞模式的。但当将openssl和libuv进行结合时,会遇到一些问题:openssl在进行数据读写之前,需要进行若干次“握手”。“握手”中会有若干次的数据读写。这个在普通的soc

2017-03-04 17:29:39 2662

转载 libuv 中文编程指南

最近看了一些有关 libuv 的东西,另外复习了一些与同步、异步、阻塞、非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用到。不多说了,本文是今后几篇《libuv 中文编程指南》的前言,先介绍下 libuv 究竟是干什么的吧,看看 开源中国社区收录的有关 libuv 的介绍, libuv 是 Node 的新跨平台抽象层,用于抽象

2017-01-22 18:23:07 883

转载 nginx和tomcat的区别

web上的server都叫web server,但是大家分工也有不同的。nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西。但是事无绝对,nginx也可以通过模块开发来提供应

2016-12-14 15:02:05 483

转载 在网络通讯中应用Protobuf

Protobuf的设计非常适用于在网络通讯中的数据载体,它序列化出来的数据量少再加上以K-V的方式来存储数据,对消息的版本兼容性非常强;还有一个比较大的优点就是有着很多的语言平台支持。下面讲解一下如何在TCP通讯应用中集成Protobuf.     Protobuf提供一种简单的对象消息方式来描述数据的存储,通过相关实现可以简单地实现数据流和对象之间的转换。但由于Protobuf序列化后的信息

2016-11-25 16:15:17 459

转载 进程/线程同步——Critical Section,Mutex,Semaphore,Event区别

临界区(Critical Section)    保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进 入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共 享资源的目的。       临界区

2016-11-14 19:26:59 450

转载 IOCP进阶文4篇

注:以下IOCP系列博文版权归 网易博客 GameBaby 所有,转载请按如下方式显示标明原创作者及原文出处,以示尊重!!原创作者:GameBaby原文出处:http://gamebabyrocksun.blog.163.com/ IOCP加Windows线程池打造高伸缩性高性能的服务器应用        对于IOCP,搞Windows服务器编程的都不会陌生,它所表现出来的

2016-11-09 15:10:15 933

转载 使用Windbg解析dump文件 .

第一章 常用的Windbg指令①!analyze -v ②kP                                               可以看函数的入参③!for_each_frame dv /t                            可以看函数中的局部变量④dc , db                            

2016-06-07 20:42:39 1569

转载 wireshark过滤语法总结 .

做应用识别这一块经常要对应用产生的数据流量进行分析。抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤。对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tc

2016-04-12 14:22:38 381

转载 GBK和UTF8之间的转换 C语言

GBK和UTF8之间的转换可以使用MultiByteToWideChar和WideCharToMultiByte两个API,方法是先把它们转换为中间编码Unicode,再转换为对应的编码即可。#include stdio.h>#include windows.h>//GBK编码转换到UTF8编码int GBKToUTF8(unsigned char * lpGBKStr,u

2016-01-13 11:19:10 2262

转载 wireshark的使用

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码。(在局域网广泛使用交换机的情况下,这个实际上现在已经不太可能了,而且QQ密码应该是无法通过简单的抓包能直接破解的,只要稍微

2014-12-08 16:12:33 650

转载 gtest中TEST和TEST_F使用的区别

首先#include gtest/gtest.h>,当然工程的头文件路径要设置正确1.简单测试TESTCpp代码#include gtest/gtest.h>  int Factorial( int n )  {    if(n==2) return 100; //故意出个错,嘻嘻    return n}  //用TEST做简单测试  TEST(Tes

2014-03-20 16:33:57 7330

原创 C++项目开发中加载第三方动态库的方法

LoadLibrary 一、语法编辑Syntax(C++)HMODULE WINAPI LoadLibrary( _In_ LPCTSTR lpFileName);  二、VB/VC声明 Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As Str

2014-03-20 16:23:40 1227

转载 C++中的set

1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。 创建 multiset base; 删除:如果删除元素a,那么在定义的比较关系下和a相等的所有元素都会被删除 base.c

2014-02-27 20:20:38 647

原创 protobuf中的数据类型定义

Protobuf定义了一套基本数据类型。几乎都可以映射到C++\Java等语言的基础数据类型.      protobuf 数据类型描述打包C++语言映射bool布尔类型1字节booldouble64位浮点数

2014-02-22 16:46:55 4911

转载 sscanf函数用法

此文所有的实验都是基于下面的程序: char str[10]; for (int i = 0; i 执行完后str的值为 str = "!!!!!!!!!!" 我们把str的每个字符都初始化为惊叹号,当str的值发生变化时,使用printf打印str的值,对比先前的惊叹号,这样就可以方便的观察str发生了怎样的变化。下面我们做几个小实验,看看使用sscanf

2014-02-22 16:45:41 648

转载 warning C4018: “<”: 有符号/无符号不匹配 .

出错代码: for(int j=0;j出错原因分析: detector 是一个Vector容器 ,detecot.size() 在容器说明中 被定义为: unsigned int 类型, 而j是int 类型 所以会出现: 有符号/无符号不匹配警告错误改正: 定义j为unsigned类型后就可以了即: for(unsigned int j=0;j或者: for(size_

2014-01-21 17:44:42 708

原创 浅谈如何使用tinyxml解析xml文件

前段时间在做一个工程,里面涉及到了解析出一些外部传入的xml的字段属性值,因为刚毕业工作半年,所以之前还不知道有xml的解析工具,照样像在学校一样很傻很天真地将其当做字符串来处理解析出字段值,工程代码提交时却遭到了鄙视,囧...然后看着长长一大段很占篇幅的xml逐字符解析,在听取导师的建议后,学习了一下xml的解析工tinyxml,感觉确实不错,先将使用方法总结如下下:        首先,要

2014-01-08 11:38:30 922

原创 c++中虚函数和纯虚函数的区别

C++中虚函数与纯虚函数是一类特殊的函数,虚函数与纯虚函数具体区别:          使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。 如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual 函数名=0 我们把这样的函数(方法)称为纯虚函数。也就是说,虚函数 ,子类可以不重写,直接继承父类 的方法来使用,也可

2013-12-24 20:04:54 536

转载 使用stringstream对象简化类型转换

C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换到字符串类型。为了正确地完成这个任务,你必须确保

2013-12-23 19:57:44 496

原创 浅谈char *str与char str[]的区别

前段时间,在做一个工程,里面写到一个传值函数,把char str[]传给参数char *str,然后利用strncmp比较某两个字符串大小进行相关操作,结果strncmp我是用sizeof来指定比较的字符串的字节数的,结果strncmp竟然一直没法正确判断,顿时我很吃惊,不知道哪里有问题,后来将sizeof(str)的值打出来看了一下,竟然不是字符串的字符个数,而是比起小很多地一个值。    

2013-12-15 15:57:18 866

转载 Windows调试工具入门 — windebug

一、  引子Debugging Tools for Windows是微软发布的一套用于软件调试的工具包(后面如果没有指明,那么我会使用WinDbg来作为这一套调试工具的简称)。我第一次接触是在三年前的一个内核驱动项目,由于进行了IDT中键盘鼠标中断的Hook,使用Softice调试时造成会造成影响,只得使用WinDbg通过串口进行双机调试。自此之后这个Windows平台下最为强大的调试工具一直

2013-12-15 15:45:40 35322 1

转载 c\c++出bug调试技巧 —— 如何利用windbg + dump + map分析程序异常 .

之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0,下面是自己整理的一份自动生成DUMP文件的源代码,只需要添加到工程即可,源代码如下:MiniDump.hMiniDump.cpp1、在CXXDlg::OnIni

2013-12-13 10:41:54 10600

转载 Win32系统中关于COM串口操作的API

在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。在Win32下,可以

2013-11-18 18:27:16 1289

原创 protobuf的c++生成简明过程示例

1、 定义.proto文件:消息体中:   required 必须的       optional 可选择的     repeated  不定项的(0个或多个)   枚举:略 2、编译:生成cpp文件:执行(protobuf所在文件夹)\protobuf\_tools\buildcpp.bat生成lib文件:        复制生成的.h

2013-10-18 11:26:12 1129

转载 google ProtoBuf开发者指南 .

目录1   概览 1.1   什么是protocol buffer 1.2   他们如何工作 1.3   为什么不用XML? 1.4   听起来像是为我的解决方案,如何开始? 1.5   一点历史 2   语言指导 2.1   定义一个消息类型 2.2   值类型 2.3   可选字段与缺省值 2.4   枚举 2.5   使用其他消息类型 2.6   嵌套类型 2.7

2013-10-16 11:28:25 512

原创 C/C++中复杂宏定义中,使用两个#号和一个\的使用

在C/C++中,在一个较长较复杂的宏定义中,两个#号连续使用表明字符连接符,即将##前的和##后的连接起来,如:       #define x abc##def  此时的X就表示:abcdef,这在很长的宏定义中常常被用到。

2013-10-13 14:46:17 1695

转载 std::nothrow .

std::nothrow在内存不足时,new (std::nothrow)并不抛出异常,而是将指针置NULL。关于std::nothrownothrow new与普通new标准的new头文件可以定义普通的new,同时,它也可以定义一个变体new操作符,这个操作符叫做nothrownew。普通的new:过去和现在   普通new一个异常的类

2013-10-13 14:41:08 9966

转载 SourceMonitor: 代码重构的小工具,大用场

我们在做代码重构时,最麻烦的问题是什么?各人有各人的答案。对我来说,找到哪一段代码需要重构是最大的麻烦。产品写好了,程序怎么样?怎么判断?我的标准是,最复杂的代码就是最需要重构的代码。对于由整个团队写的代码,全面阅读是不太现实的。开会?程序员最最不喜欢开会了!那可是个技术活。:)最近,我用了一个小工具,SourceMonitor,取得了意想不到的好效果。推荐大家使用。 Source

2013-10-09 11:31:46 574

转载 代码覆盖率工具BullseyeCoverage研究

1.      术语定义1.1.      代码覆盖率代码覆盖率 =代码的覆盖程度,一种度量方式。1.2.      语句覆盖(StatementCoverage)又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被

2013-10-09 11:25:38 1357

原创 VS2008中注释整段代码的小技巧

在VS2008中,有时候调试代码,想一下子注释掉一个工程下面的一部分代码,而代码行数又比较多时,一行一行去注释肯定很麻烦,这里有一个较方便的快捷键: 注释掉一段代码:选中要注释的代码后,按下ctrl+k+c,要取消相应的注释,按下ctrl+k+u就可以了,较方便。

2013-09-21 16:49:28 4453 1

转载 gtest中,TEST_F与TEST的区别

(本文出自:http://tech.ddvip.com/2009-02/1234225491107952.html) TEST_F与TEST的区别是,TEST_F提供了一个初始化函数(SetUp)和一个清理函数(TearDown),在TEST_F中使用的变量可以在初始化函数SetUp中初始化,在TearDown中销毁,并且所有的TEST_F是互相独立的,都是在初始化以后的状态开始运行,

2013-09-21 16:23:21 2337

转载 Google 的开源技术protobuf 简介与例子 .

本文来自CSDN博客:http://blog.csdn.net/program_think/archive/2009/05/31/4229773.aspx  今天来介绍一下“ProtocolBuffers”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干

2013-09-09 19:45:02 643

原创 静态库的创建学习

作为刚毕业公司的菜鸟,作为刚应导师需求学习静态库。再查看学习了大牛们的资料后,将两种创建静态库的方法放于如下,便于和自己一样的“新人”的学习,也便于自己以后的回顾总结:         方法一:在项目设置中引用,再项目属性中设置:http://blog.csdn.net/qingkong8832/article/details/6782439        方法二:在代码中使用#pro

2013-08-05 11:10:23 616

空空如也

空空如也

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

TA关注的人

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