自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liujiayu2的专栏

玩点技术

  • 博客(42)
  • 资源 (33)
  • 收藏
  • 关注

转载 gdb调试fork多进程

在大多数系统,gdb对使用fork创建的进程没有进行特别的支持。当父进程使用fork创建子进程,gdb仍然只会调试父进程,而子进程没有得到控制和调试。这个时候,如果你在子进程执行到的代码中设置了断点,那么当子进程执行到这个断点的时候,会产生一个SIGTRAP的信号,如果没有对此信号进行捕捉处理,就会按默认的处理方式处理——终止进程。    当然,你可以使用时间延迟的方法,在子进程fork出

2016-03-31 18:58:32 1270

转载 apr_pool -- 内存池

这个指南主要介绍如何使用libapr(apache portable runtime)。版权所有,Copyright (C) 2005 INOUE Seiichiro ,翻译:成彦原文地址:http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial.html转载时请保留版权信息。大多数libapr的API

2016-03-29 20:36:25 2763

转载 简单使用Boost线程池threadpool

场景:1.在一些多线程的程序中,比如服务端响应请求时,可以同时响应多个客户端的请求,但是响应请求的个数(即线程)的个数过多的话就会造成系统资源损耗过多而宕机,还比在做一些下载的程序时,可同时开5个下载任务,对应的其实就是线程。但是最多线程是有上限的,而且每次创建线程和销毁线程都会大量损耗资源和时间。所以解决办法之一就是使用线程池控制线程个数,复用创建过的线程。threadpool直

2016-03-29 16:43:43 18274 5

转载 查看UNIX/Linux资源占用的top命令

查看多核CPU命令mpstat -P ALL  和  sar -P ALL  说明:sar -P ALL > aaa.txt   重定向输出内容到文件 aaa.txttop命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。本文通过一个运行中的WEB服务器的t

2016-03-22 10:18:44 2475

转载 C++虚继承(十) --- 谈谈陈皓遗留的问题

网上关于c++对象布局的文章挺多,而且《深度探索c++对象模型》(Inside The C++ Object Model 侯捷 译)一书中也很详细地介绍。如果你一点都不了解C++对象的布局,我推荐你看看《深度探索c++对象模型》的第三章,如果你意犹未尽下面的两个系列都很不错:一是陈皓的《C++ 对象的内存布局》图文并貌,写得很是详细。地址是http://blog.csdn.net/haoel/

2016-03-18 17:55:30 509

转载 C++虚继承(九) --- 构造函数调用顺序的实用之处

虚拟继承是C++语言中一个非常重要但是又比较生僻的存在,它的定义非常简单,但是对于理解C++的继承机制却是非常有用的。笔者最近学习过程中发现对C++的虚拟继承不是很明朗,故在这里对虚继承做个小结。首先说下遇到的问题吧。代码如下(代码来自于何海涛《程序员面试精选100题第32题)。意图是要设计一个不能被继承的类,类似java中的final。但是又可以生成栈对象,可以像一般的C++类一样使用。

2016-03-18 17:46:04 2606

转载 C++虚继承(八) --- 虚继承与继承的差异

前面一篇文章,说明了在C++ 虚继承对基类构造函数调用顺序的影响。经过仔细推敲,发现没有彻底说清楚虚继承与普通继承之间的关系。所以用下面的文字再说明一下。首先,重复一下虚拟继承与普通继承的区别有:假设derived 继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,而反之错误;假设derived 虚继承自base类,那么

2016-03-18 17:43:36 863

转载 C++虚继承(七) --- 虚继承对基类构造函数调用顺序的影响

继承作为面向对象编程的一种基本特征,其使用频率非常高。而继承包含了虚拟继承和普通继承,在可见性上分为public、protected、private。可见性继承比较简单,而虚拟继承对学习c++的难度较大。首先,虚拟继承与普通继承的区别有:假设derived 继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,而反之错误;假

2016-03-18 17:41:59 629

转载 C++虚继承(六) --- 虚继承浅析

C++支持多重继承,这和现实生活很类似,任何一个物体都不可能单一的属于某一个类型。就像马,第一想到的就是它派生自动物这个基类,但是它在某系地方可不可以说也派生自交通工具这一个基类呢?所以C++的多重继承很有用,但是又引入了一个问题(专业术语叫做菱形继承?)。动物和交通工具都是从最根本的基类——“事物”继承而来,事物包含了两个最基本的属性,体积和质量。那么动物和交通工具都保存了基类成员变量——体积和

2016-03-18 17:38:53 411

转载 C++虚继承(五) --- 虚拟继承的概念

C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。class 派生类名:virtual 继承方式  基类名virtual是关键字,声明该基类为派生类的虚

2016-03-18 17:36:25 416

转载 C++虚继承(四) --- /d1 reportSingleClassLayout插入看类内存布局

1 #include 2 using namespace std; 3 class base1 4 { 5 int a; 6 double b; 7 char c; 8 }; 9 int main()10 {11 base1 b;12 return 1;13 }vs输出class布局方法:先选择左侧的C/C++->命令行,然后在其

2016-03-18 17:24:24 5868 1

转载 C++虚继承(三) --- C++ 对象的内存布局(下)(陈皓)

C++ 对象的内存布局(下) 陈皓http://blog.csdn.net/haoel  <<<点击这里查看上篇 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。  其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节

2016-03-18 16:44:22 1321

转载 C++虚继承(二) --- C++ 对象的内存布局(上)(陈皓)

C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel  点击这里查看下篇>>>前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非

2016-03-18 16:42:59 493

转载 C++虚继承(一) --- vtordisp字段

关于vtordisp知多少? 我相信不少人看到这篇文章,多半是来自于对标题中“vtordisp”的好奇。其实这个关键词也是来源于我最近查看对象模型的时候偶然发现的。我是一个喜欢深究问题根源的人(有点牛角尖吧),所以当我第一次发现vtordisp的时候,我也是很自然的把它输进google查找相关资料,但是结果令我不太满意。不过,即使如此,我还是把与它相关的资料整理如下,并结合自己的理

2016-03-18 15:21:02 1275

转载 BOOST内存管理(二) --- boost::pool

Boost库的pool提供了一个内存池分配器,用于管理在一个独立的、大的分配空间里的动态内存分配。Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况。使用pool内存池主要有以下两个优点:  1. 能够有效地管理许多小型对象的分配和释放工作,避免了自己去管理内存而产生的内存碎片和效率低下问题。  2.  告别程序内存泄漏的烦恼,pool库会

2016-03-17 12:00:05 768

原创 BOOST内存管理(一) --- boost::object_pool

boost pool是个不错的库,可以省点内存管理功夫,内存池分配内存,还可以速度上比malloc更快一些。boost::object_pool主要针对,对象的内存分配,他可以像使用new 一样来创建对象,对象的内存放在object_pool里面。实际上object_pool使用pool类,代码上是object_pool继承pool类,object_pool比pool多些什么呢,多

2016-03-17 11:06:59 1179

转载 (十二)boost库之多线程高级特性

很多时候,线程不仅仅是执行一些耗时操作,可能我们还需要得到线程的返回值,一般的处理方法就是定义一个全局状态变量,不断轮训状态,就如我目前维护的一个项目,全局变量定义了N中状态,看的让人抓狂。该项目的大体逻辑是这样的,启动K个线程,当线程执行到某一个点时,进行轮训,判断是否所有线程都执行到该点,单独开启了一个线程用于轮训所有线程是否结束,待所有线程结束后会获取数据,生成一个文件,另外还有一个线程就在

2016-03-16 08:40:49 1253

转载 (十一)boost库之多线程间通信

1、互斥锁在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。#include #include using namespace std;int g_num = 0;boost::mutex mu; //定义互斥锁对象int Func(int nCount){

2016-03-15 14:40:13 1214

转载 (十)boost库之多线程

1、创建线程使用boost库可以方便的创建一个线程,并提供最多支持9个参数的线程函数,相对于void*来说,方便了很多,创建线程主要提供了一下3种方式:线程库头文件:#include a、使用全局函数作为线程执行体void Func(int nCount){ for (int i = 0; i < nCount; i++) {

2016-03-15 14:39:30 784

转载 (九)boost库之文件处理filesystem

filesystem库是一个可移植的文件系统操作库,它在底层做了大量的工作,使用POSIX标准表示文件系统的路径,使C++具有了类似脚本语言的功能,可以跨平台操作目录、文件,写出通用的脚本程序。1.path的构造函数可以接受C字符串和string,也可以是一个指定首末迭代器字符串序列区间。2.filesystem提供了一系列的文件名(或目录)检查函数。3.有丰富的函数用于获

2016-03-15 14:38:32 1863

转载 (八)boost库之异常处理

当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名、行号等信息输出,该多好啊,曾经为此绞尽脑汁。      今天使用boost库,将轻松的解决这个问题。1、boost异常的基本用法先看看使用STL中的异常类的一般做法:// 使用STL定义自己的异常class MyException : public std::exception{p

2016-03-15 14:38:02 5511

转载 (七)boost库之单例类

一、boost.serialzation的单件实现    单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。    单例,通常在一个大型项目中单例是非常常见的,boost库没有

2016-03-15 14:37:25 3250

转载 (六)boost库之内存管理shared_ptr

1、shared_ptr的基本用法 boost::shared_ptrint> sp(new int(10)); //一个指向整数的shared_ptr assert(sp.unique()); //现在shared_ptr是指针的唯一持有者 boost::shared_ptrint> sp2 = sp;

2016-03-15 14:36:50 1464

转载 (五)boost库之随机数random

boost库为我们提供了许多的日常随机数生成器:1.uniform_smallint:在小整数域内的均匀分布 2.uniform_int:在整数域上的均匀分布 3.uniform_01:在区间[0,1]上的实数连续均匀分布 4.uniform_real:在区间[min,max]上的实数连续均匀分布 5.bernoulli_distribution:伯努利分布 6.bin

2016-03-15 14:35:58 2810

转载 (四)boost库之正则表达式regex

正则表达式可以为我们带来极大的方便,有了它,再也不用为此烦恼头文件:#include 1、完全匹配 std::string str("abcd"); boost::regex reg( "a\\w*d" ); if (regex_match(str, reg)) { std::cout is match" << std::en

2016-03-15 14:35:08 1537

转载 (三)Boost库之字符串处理

字符串处理一直是c/c++的弱项,string_algo库很好的弥补了这一点。string_algo 库算法命名规则: 前缀i    : 有这个前缀表名算法的大小写不敏感,否则大小写敏感 后缀_copy:  有这个后缀表明算法不变动输入,返回处理结果的拷贝,否则算法原地处理 后缀_if  :  有这个后缀表明算法需要一个作为判断式的谓词函数对象,否则使用默认的判断准则s

2016-03-15 14:34:22 796

转载 (二)boost库之字符串格式化

程序中经常需要用到字符串格式化,就个人而言还是比较倾向于C格式的输出,如果只是打印日志,printf就够了,如果到生成字符串,获取你可以选择sprintf,但这些都是需要你预先分配空间的,对于一些不可预知长度的字符串格式化,就比较鸡肋了,不过还是可以实现的,如:void XString::format(const char *strFmt, ...){ va_list vl;

2016-03-15 14:33:26 815

转载 (一)boost库之日期、时间

一、计时器 计时器,通常在一个项目中统计一个函数的执行时间是非常实用的。#include void PrintUserTime(){ boost::timer t; //定义一个计时类,开始计时 std::cout 可度量的最大时间:" h" << std::endl; std::cout 可度量的最大时间:" s" << std::endl;

2016-03-15 14:32:24 713

转载 【Boost】boost库asio详解10——服务器端口复用

1

2016-03-15 13:56:24 1585 1

转载 【Boost】boost库asio详解9——UDP的简单例子1

服务器:#define PACK_MAX_SIZE 16*1024class TCPConnection: public boost::enable_shared_from_this {public: static boost::shared_ptr create(IoService& ioService); tcp::socket& getSocke

2016-03-15 12:36:37 3352

转载 【Boost】boost库asio详解9——TCP的简单例子2

客户端:// Client.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include using boost::asio::ip::tcp;using boost::asio::ip::address;class session: public boost

2016-03-15 12:08:17 2222

转载 【Boost】boost库asio详解8——TCP的简单例子1

摘于boost官网的几个例子, 做了点小修改, 笔记之.同步客户端[cpp] view plain copy print?void test_asio_synclient()  {      typedef boost::asio::io_service IoService;      // 该命名空间下有几个常用类: accet

2016-03-15 09:28:52 544

转载 【Boost】boost库asio详解7——boost::asio::buffer用法

1. asio::buffer常用的构造方法asio::buffer有多种的构造方法,而且buffer大小是自动管理的1.1 字符数组[cpp] view plain copy print?char d1[128];  size_t bytes_transferred = socket.receive(boost::asio::buf

2016-03-15 09:28:19 1914

转载 【Boost】boost库asio详解6——boost::asio::error的用法浅析

1. 概述一般而言我们创建用于接收error的类型大多声明如下:[cpp] view plain copy print?boost::system::error_code error  我们用这个类型去接受在函数中产生的错误, 如: [cpp] view plain copy print?s

2016-03-15 09:27:30 488

转载 【Boost】boost库asio详解5——resolver与endpoint使用说明

tcp::resolver一般和tcp::resolver::query结合用,通过query这个词顾名思义就知道它是用来查询socket的相应信息,一般而言我们关心socket的东东有address,port而已,通过tcp::resolver很容易实现设置和查询,它通过query把字符串格式的ip如192.168.0.200或主机名http://localhost,端口“8080”等转化成so

2016-03-15 09:26:52 1676

转载 【Boost】boost库asio详解4——deadline_timer使用说明

deadline_timer和socket一样,都用io_service作为构造函数的参数。也即,在其上进行异步操作,都将导致和io_service所包含的iocp相关联。这同样意味着在析构 io_service之前,必须析构关联在这个io_service上的deadline_timer。1. 构造函数在构造deadline_timer时指定时间。[cpp] view

2016-03-15 09:26:05 820

转载 【Boost】boost库asio详解3——io_service作为work pool

无论如何使用,都能感觉到使用boost.asio实现服务器,不仅是一件非常轻松的事,而且代码很漂亮,逻辑也相当清晰,这点上很不同于ACE。使用io_service作为处理工作的work pool,可以看到,就是通过io_service.post投递一个Handler到io_service的队列,Handler在这个io_service.run内部得到执行,有可能你会发现,io_services

2016-03-15 09:25:22 490

转载 用C++面向对象的方式动态加载so

这几天在写一个server,由于框架相同,仅仅是获取数据源的地方有区别,所以,研究了一下如何使用面向对象的方法来动态加载so。主要思想就是:1.通过一个函数能够获得一个基类的指针,这样在调用基类的函数的时候,就能自动调用子类的实现了。2.存储so对象的指针应该是外层类的一个static变量。详细还是看代码吧:1)首先定义一个公共的头文件,里面存储的基类的定义:(需要注意

2016-03-11 15:46:57 565 1

转载 linux下动态链接库(.so)的显式调用和隐式调用

进入主题前,先看看两点预备知识。一、显式调用和隐式调用的区别        我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态库的程序的体积要比使用静态库程序的体积小,并且使用动态库的程序在运行时必须依赖所使用的动态库文件(.so文件),而使用静态库的程序一旦编译好,就不再需要依赖的静态库文件了(.a文件)。

2016-03-11 15:46:10 2374

转载 C语言struct中冒号用法

typedef struct{unsigned char unused_bits:4;unsigned char wchair_state:2;} xyz; typedef struct{unsigned char unused_bits;unsigned char wchair_state;} abc; 

2016-03-09 09:17:18 857

Teleport+Ultra+中文简体破解版

很不错 对网页开发的学习有帮助

2017-08-16

SSDTHook实现进程保护

SSDT 的全称是 System Services Descriptor Table,系统服务描述符表。 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来。 SSDT 并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。 通过修改此表的函数地址可以对常用 Windows 函数及 API 进行 Hook,从而实现对一些关心的系统动作进行过滤、监控的目的。 一些 HIPS、防毒软件、系统监控、注册表监控软件往往会采用此接口来实现自己的监控模块。

2017-06-09

SkinSharp开发库+百款皮肤+皮肤编辑器

SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件。通用换肤库(SkinSharp)能在软件添加换肤功能,支持所有主流的编程语言,比如C++、Delphi、VB6、.net、易语言等等。

2017-05-24

USB 摄像头

USB 摄像头, 亲测可编译可运行。

2017-05-16

minhook-1.3.2

对windows API钩子感兴趣的人都知道有一个优秀的库被微软命名为'Detours'。它真的很有用,但是它的免费版本(Express)是不支持X64。它的收费版本(Professional)支持x64,但是对我来说太昂贵了。微软说它值一万美元。 因此我决定从零开始写我自己的库。但是我没有将Detours的功能完美的复制到我的库中,它仅有API钩子功能,因为这就是我想要的。

2017-05-09

python2.7.8 32

python2.7.8 32位安装包及相关模块安装包,还有32位的PyScripter。 资源包含的文件如下: python-2.7.8.msi matplotlib-1.4.0.win32-py2.7.exe MySQL-python-1.2.4b4.win32-py2.7.exe numpy-1.8.1-win32-superpack-python2.7.exe pyparsing-2.0.2.win32-py2.7.exe python-dateutil-2.2.win32-py2.7.exe six-1.7.3.win32-py2.7.exe PyScripter-v2.5.3-Setup.exe

2016-05-25

detours HOOK API

detours HOOK API 官网网速太慢,谁用谁知道

2015-12-23

C++解析JSON

C++解析JSON

2015-12-02

AStar 算法实例

A星算法 对于空地左键单击后会产生障碍,对障碍左键单击会消除障碍,对于起点,两次左键盘单击会消除起点,如果不存在起点,单击右键会产生起点,如果存在起点不存在终点,单击右键会产生终点,如果既存在起点又存在终点,单击右键会消除终点,点击开始寻路回画出路径

2015-07-18

Visual Assist X补丁

码农们,当你使用VAX助手提示更新的时候,当你安装好新版打开VS提示注册的时候,你是否到处在找patch补丁,每次更新你都蛋碎一样到处寻找,这次我们给大家带来超级通用和谐补丁,每次更新VA_X后均可一如既往的正常使用,免去码农到处寻找补丁、反复打补丁、补丁版本不支持现有IDE的痛苦,翠花上菜!

2015-06-18

CrashFinder2.55

CrashFinder,找到崩溃代码行

2015-05-26

appverifier

AppVerifier,专门用来检测那些用普通方法检测不出的意想不到的bug(比如内存溢出、错误句柄使用等)。而且AppVerifier使用非常简单,

2015-05-22

强制复制软件

强制复制软件

2015-04-22

破解存储过程的加密

破解存储过程的加密

2015-04-22

Python平台

Python平台

2015-04-05

VC西红柿插件破解版

VC西红柿插件破解版

2015-04-05

各种各样的按钮(VC源码)

各种各样的按钮(VC源码)

2014-11-17

瞬间找文件

瞬间找文件

2014-09-05

密码查看器.zip

密码查看器.zip

2014-09-05

VC助手破解版

VC助手

2014-09-05

class-loader测试工程

class-loader测试工程

2023-06-01

mainboard测试工程

mainboard测试工程

2023-05-31

编码测试工程.rar

编码测试工程

2019-11-20

cmake-3.14.3-win64-x64.zip

cmake-3.14.3 最新安装版 CMake是一个开源的跨平台工具系列,旨在构建,测试和打包软件。CMake用于使用简单的平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作空间。

2019-09-05

luac逆向工具

luac编译之后的逆向,亲测可用 详细亲看:https://blog.csdn.net/liujiayu2/article/details/81940701

2018-08-22

ffmpeg推送摄像头rtmp流

详细信息请看: https://blog.csdn.net/liujiayu2/article/details/80880815

2018-07-02

IOCP网络模型

详细信息请看: https://blog.csdn.net/liujiayu2/article/details/80772904

2018-06-28

跨平台高性能TCP服务器框架 &boost;

基于boost的asio封装的高性能TCP服务器。asio已经有很好的事件封装机制,只有底层事件,没有针对TCP建立会话机制;也没有多包进行合包,以包为单位的事件提交机制。由于以上多种原因,决定对boost库进行更高的抽象和封装,对开发者提供一种更为便利的使用接口。

2018-06-25

网狐IOCP压缩版

网狐IOCP压缩版,自己整理了两天,3分不算多吧, 遗留问题: 1.由于不太会使用去掉了网络事件(收发数据、网络接受、网络断开)进队列,发的时候直接发送,接收的时候直接回调。不知道原作者都放进队列里 面有哪些确切的好处。 暂时先这样,后续更新。。。

2018-06-22

用C++实现的壳

基础版壳所实现的功能: 1.在原程序中添加一块区段,将壳部分的代码移植进去。 2.在程序启动前优先获得控制权,执行完自己的代码以后再将控制权交还给原程序。 3.对代码段进行简单的亦或加密。 4.对原程序的导入表(IAT)进行修复。 5.如果原程序开启了随机基址,则对源程序进行重定位修复。

2017-09-14

像加载DLL一样加载EXE

像加载DLL一样加载EXE 介绍 你可能已经被警告过,不要用LoadLibrary()加载可执行文件,你可能尝试这么做过,然后程序就崩溃了,所以你可能会认为这是不可能的。 但实际上这是可行的,本文就将介绍具体的方法。

2017-09-10

protobuf-2.61最新版

protocolbuffer 以下简称PB 是google 的一种数据交换的格式 它独立于语言 独立于平台 google 提供了三种语言的实现:java c++ 和 python 每一种实现都包含了相应语言的编译器以及库文件 由于它是一种二进制的格式 比使用 xml 进行数据交换快许多 可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换 作为一种效率和兼容性都很优秀的二进制数据传输格式 可以用于诸如网络传输 配置文件 数据存储等诸多领域 ">protocolbuffer 以下简称PB 是google 的一种数据交换的格式 它独立于语言 独立于平台 google 提供了三种语言的实现:java c++ 和 python 每一种实现都包含了相应语言的编译器以及库文件 由于它是一种二进制的格式 比使用 xml

2017-08-28

Gh0stVC6到VS2010迁移所有问题的解决方法

gh0st 由VC6.0开发的工程项目,移植到VS2010环境下,会出现各种错误和警告,此类错误多数是由编译器和环境不兼容导致,除修改工程下的某些属性参数外,还需手动修改编译过程中出现的一些错误。

2017-08-15

空空如也

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

TA关注的人

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