通过程序自动设置网卡的“internet共享”选项
摘要:操作系统 : Windows 10_x64 [版本 10.0.19042.685] Windows下可以通过网卡共享进行上网,但是需要在网卡的属性里面进行设置,需要在视窗界面进行操作,不能实现自动化。 查了下资料,可以通过INetSharingManager来实现,原理很简单: 模拟手工的动作自动化
阅读全文
posted @
2021-01-23 20:05
Mike_Zhang
编辑
protobuf的简单使用
摘要:操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 go 版本 : go1.8.3 linux/amd64 Python 版本 : 2.7.5 libprotoc : 2.5.0 Protobuf是Google开发一种数据描述语言,能够将结构化数据序列化,可用于数据存储、通
阅读全文
posted @
2018-02-01 22:19
Mike_Zhang
编辑
IEEE754标准的浮点数存储格式
摘要:操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 基本存储格式(从高到低) : Sign + Exponent + Fraction Sign : 符号位 Exponent : 阶码 Fraction : 有效数字 32位浮点数存储格式解析 Sign : 1 bit(第3
阅读全文
posted @
2018-01-17 22:26
Mike_Zhang
编辑
使用c/c++扩展python
摘要:用python脚本写应用比较方便,但有时候由于种种原因需要扩展python(比如给程序提供python接口等)。 之前一直想整理下,今天终于坐下来把这件事情给做了,这里记录下,也方便我以后查阅。 说明: 测试环境中操作系统为CentOS6.5_x64,python版本为2.6 直接调用动态库 1、编
阅读全文
posted @
2015-08-08 20:36
Mike_Zhang
编辑
windows下用QTwebkit解析html
摘要:环境 配置开发环境 1、安装VS2010 2、安装QT 5.2 QT网站:http://qt-project.org/downloads 下载并安装QT5.2:Qt 5.2.1 for Windows 32-bit (VS 2010, OpenGL, 517 MB) 3、安装Visual Studi
阅读全文
posted @
2014-02-06 00:29
Mike_Zhang
编辑
windows环境下配置python脚本的开机启动
摘要:测试环境:windows Server 2003 R2 一、开始菜单启动项实现 用户必须登录才可执行。 测试脚本(python代码): 1、常规操作 1.1 创建快捷方式; 1.2 将创建的快捷方式放入开始菜单启动项; 1.3、开机验证; 2、隐藏命令行窗口启动 上述操作方法有命令行窗口,有些场合感
阅读全文
posted @
2013-02-04 23:14
Mike_Zhang
编辑
给MFC程序添加运行时调试窗口
摘要:一、建立MFC工程 1、选择“MFC Application”,建立工程; 2、向导中的“Application type”选择“Dialog based”; 3、点击“Finish”完成向导; 二、添加控制台调试窗口 1、添加头文件: 2、在OnInitDialog函数中添加如下代码: 如图所示:
阅读全文
posted @
2013-01-11 16:51
Mike_Zhang
编辑
dll开发及调用
摘要:这段时间用到了dll的调用,这里总结下,也方便我以后使用。 一、生成dll(基于VS2010) 1、选择“Win32 Console Application”,建立工程; 2、向导中的“Application type”选择Dll,并在“Additional options”选项中勾选“Empty
阅读全文
posted @
2013-01-07 17:38
Mike_Zhang
编辑
交换指针
摘要:通常情况下,我们只是对普通数据进行交换,交换指针的问题很少涉及,今天看书时候想到了指针交换问题,这里总结下,也方便我以后查阅。首先看下整型两个数据的交换(这个比较简单,就不多介绍了),核心代码如下:1 void m_swap(int *a,int *b)2 {3 int tmp = *a;4 *a = *b;5 *b = tmp;6 }指针是内存地址,应该也算是整型变量,交换两个指针和交换两个整型变量类似,下面以两种方式进行。传统C方式可以通过传递指向指针的指针来进行交换,核心代码如下:1 void m_swap(int **a,int **b)...
阅读全文
posted @
2012-10-26 00:47
Mike_Zhang
编辑
动态分配const对象(C++)
摘要:创建在C++中,允许动态创建const对象,格式如下:const int *p = new const int(128);与其他常量一样,动态创建的const对象必须在创建时初始化,并且初始化后,其值不能改变。删除尽管不能改变const对象的值,但可以删除动态创建的const对象,格式如下:delete p;这个和普通的对象一样,可以对其进行删除操作。应用场景举例1、加载配置文件从配置文件读入的数据可以用来初始化const对象,供后续程序使用。伪代码如下:int num;... //读取配置文件,并将配置数据填充到numconst int *pNum = new const int(num);
阅读全文
posted @
2012-10-22 23:04
Mike_Zhang
编辑
C++短路求值(逻辑与、逻辑或)
摘要:1、逻辑或的短路首先看如下代码:#include <iostream>using namespace std;int main(){ int a = 1; cout << "a = " << a <<endl; true || (a=0); cout << "a = " << a <<endl;}运行结果:a = 1a = 1逻辑或的表现形式如下:expression1 || exexpression2这里用到了逻辑或,由于逻辑或的短路,expression1为true,
阅读全文
posted @
2012-10-21 00:02
Mike_Zhang
编辑
在成员函数中使用STL的find_if函数
摘要:STL的find_if函数功能很强大,可以使用输入的函数替代等于操作符执行查找功能(这个网上有很多资料,我这里就不多说了)。比如查找一个数组中的奇数,可以用如下代码完成(具体参考这里:http://www.cplusplus.com/reference/algorithm/find_if/):#include <iostream>#include <algorithm>#include <vector>using namespace std;bool IsOdd (int i) { return ((i%2)==1);}int main () { vecto
阅读全文
posted @
2012-10-18 21:17
Mike_Zhang
编辑
Boost实现简单的udp代理服务器
摘要:这段时间在开发代理服务器,这方面的资料了解的比较多,这里我总结下udp代理服务的实现,也方便我以后查阅。一、通信模型1、非代理情况下的通信模型这是典型的C-S通信模型,客户端和服务器直接交互。2、代理情况下的通信模型这种情况下,服务器和客户端不是直接交互,而是通过代理服务器进行的,代理服务器负责把客户端发来的请求转发给服务器,并把服务的回应返回给客户端。二、UDP服务器和客户端demo上面分析了通信模型,这里给出一个echo的服务器和客户端代码以供下文使用。1、服务端demo这里有一个python实现的echo服务器,代码如下:#! /usr/bin/python# a simple udp
阅读全文
posted @
2012-10-15 00:19
Mike_Zhang
编辑
简单的TCP代理服务器
摘要:我之前的一篇文章(http://www.cnblogs.com/MikeZhang/archive/2012/03/07/socketRedirect.html )中介绍过用python写的一个简单的http端口转发程序,其实那个也算是个代理服务器,只是功能比较简单罢了。由于这段时间在开发代理服务器,接触到各个方面的资料,这里总结下,也方便我以后使用。一、netcat实现网址:http://netcat.sourceforge.net/ netcat是个很强大的工具,在网络工具中有“瑞士军刀”美誉,不懂的搜索下,我就不多说了,相关用法可参考这里:http://en.wikipedia.org.
阅读全文
posted @
2012-10-09 23:48
Mike_Zhang
编辑
用string存取二进制数据
摘要:STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,以供以后参考。首先提一下STL中string的参考资料:http://www.cplusplus.com/reference/string/string/ ,不懂的朋友可以看下。在数据传输中,二进制数据的buffer一般用系统预设的大数组进行存储,而不是STL的string等,比如:const int max_length = 1024 * 1024;unsigned char data[max_length];因为二进制数据中可能会包含0x00(即:'\0'
阅读全文
posted @
2012-09-30 23:20
Mike_Zhang
编辑
字符串替换(C++)
摘要:用过python的朋友应该知道,python的string中有个replace函数,其功能是实现字符串的替换,默认情况下是替换所有,如果加入参数的话会根据设定的个数进行替换,比如下面的例子:>>> import string>>> str1 = "ab1ab2ab3ab4">>> print string.replace(str1,"ab","cd")cd1cd2cd3cd4>>> print string.replace(str1,"ab",
阅读全文
posted @
2012-09-22 22:44
Mike_Zhang
编辑
设计模式笔记:单例模式(C++代码)
摘要:定义:一个类有且仅有一个实例,并且提供一个访问它的全局访问点。要点:1、类只能有一个实例;2、必须自行创建此实例;3、必须自行向整个系统提供此实例。实现一:单例模式结构代码singleton.h:View Code #ifndef _SINGLETON_H_#define _SINGLETON_H_class Singleton{public: static Singleton* GetInstance();protected: Singleton();private: static Singleton *_instance;};#endifsingleton.cpp:Vie...
阅读全文
posted @
2012-06-13 22:47
Mike_Zhang
编辑
C++实现raw_input
摘要:用惯了Python,现在写C++的代码感觉有点不太顺畅。这不,今天就和这小小的raw_input较上劲了……用过Python的朋友知道,Python中有个raw_input,可以如下使用:printraw_input("Inputa number : ")一个函数内既有输入提示,又有返回值,用起来着实方便。可现在的问题是在C++中,我也想这么干,怎么办?其实,写一个函数也可以轻松实现的,比如:int raw_input(const char* tips){ cout<<tips; int a; cin>>a; return a;}这个是实...
阅读全文
posted @
2012-03-31 22:17
Mike_Zhang
编辑
字符串分割(C++)
摘要:经常碰到字符串分割的问题,这里总结下,也方便我以后使用。 一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从st
阅读全文
posted @
2012-03-24 15:25
Mike_Zhang
编辑
得出“15选5”的各种组合(组合生成算法)
摘要:今天有个网友问我组合数生成算法的问题,这个写的早,只给他回复了原理。刚好这段时间玩“15选5”,知道那个是随机的,概率问题(中就是中了,没中就是没中),没啥好分析的,可还是忍不住想计算下…… 好,不废话了,下面开工。一、原理借助二进制计数的机制来进行,比如字符串“123”中选出两个字符,如下计...
阅读全文
posted @
2012-03-20 17:25
Mike_Zhang
编辑