如何利用MongoDB实现高性能,高可用的双活应用架构? 【51CTO.com原创稿件】投资界有一句至理名言——“不要把鸡蛋放在同一个篮子里”。说的是投资需要分解风险,以免孤注一掷失败之后造成巨大的损失。随着企业服务窗口的不断增加,业务中断对很多企业意味着毁灭性的灾难,因此,跨多个数据中心的应用部署成为了当下最热门的话题之一。如今,在跨多个数据中心的应用部署最佳实践中,数据库通常负责处理多个地理区域的读取和写入,对数据变更的复制,并提供尽可能高的可用性、...
IT工程师的“五个等级”,你处在哪一级? 我想,不管过去的一年过的怎样,大部分工程师们对开年的的工作和生活都应该是有所憧憬和计划的,我也不例外。只不过我选择了把吴军(https://zh.wikipedia.org/zh-hans/吴军_(计算机科学家))老师《硅谷来信》上看到的《五级工程师和职业发展》重温了一下(版权原因,我这里无法提供原文的链接,但这一定阻挡不了聪明、求知若渴的你)。如果你看过原文,我依然觉得你不妨看看这里的思考,因为...
纯技术之间的争夺 大数据会被区块链摧毁吗 笔者在写这个标题的时候,已经做好被喷的准备。你随便搜索一下“大数据 区块链”会发现,大数据与区块链的结合几乎是所有人都看好的。笔者并不反对这个观点,但如果从当下来看,大数据与区块链之间仍然存在着一些分歧,而这些分歧从某种意义上让大数据与区块链处在了对立的位置。我们先看近期两个非常热门的例子。第一个例子是大数据杀熟。一些平台的老用户发现,在花钱买服务的过程中,服务商报出的价格比新用户的要高,甚至苹果...
互联网和物联网的区别,你有必要了解一下 区别:物联网的本质是感知与服务,物联网的数据可交易,对于大数据和云计算的价值巨大。移动互联网和互联网的本质是基于手机和PC的线上信息和内容推送和共享,信息会消失也会重造,对大数据和云计算价值有限。1. 物联网物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。基本优点:物联网...
iOS程序员这样面试,当场拿到offer的几率是80%? 一、概述面试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判,在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他希望听到什么答案?”然后针对性的准备和回答就行了,无他。“你的优势是什么?”多年前我觉得这个问题很无聊,现在我经常这么问面试者,因为我真的想知道他的优势是什么,能给公司带来什么。最终能和面试官...
为什么要做多活?饿了么多活技术架构及运维挑战 51CTO.com原创稿件】饿了么业务快速发展,给技术带来了海量请求和高并发、微服务的挑战,同时开发团队快节奏的版本迭代和服务快速上线的要求也驱动运维团队提供稳定、高效的运维服务。2017 年 12 月 01 日-02 日,由 51CTO 主办的 WOTD 全球软件开发技术峰会在深圳中州万豪酒店隆重举行。饿了么技术运营负责人程炎岭在创新运维探索专场与来宾分享了"跨越篱笆-饿了么多活运维上下求索"的...
阿里资深技术专家:如何快速成为技术大牛? 你是否有类似这样的问题——“天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码?”阿里资深无线开发专家李运华,系统梳理了自己的思考和理解,希望帮助更多同学少走一些弯路。不管是开发、测试、运维,每个技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发...
为什么拿着手机拍电脑屏幕会出现波纹? 这种波纹叫莫尔条纹。一言以蔽之,就是空间频率相近的两条线条相互干涉,由2组或多组不同的条纹重叠后所产生的干涉的影像。莫尔条纹是两条线之间以一定的频率发生干涉的视觉的结果,当人眼无法分辨了这两条线或两个物体时,实际上就是放大了条纹之间的差异。我们做个试验,比如在两张透明塑料纸上分别画上一排竖线,其中上面那张每隔 1 mm 画一条,而下面那张每隔 1.2 mm 画一条,我们就很容易发现,竖线每隔 12...
关于C#编译方式的一些说明(x86\x64\anycpu) 最近在做的项目涉及到32位以及64位的问题,查看了很多资料,大部分都是如下这样的解释。一、在VisualStudio中,编译设置有如下选项: x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行。 x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行。 anycpu:(默认值)将程序集编译为在任意平台上运行。...
VC中如何打开Com10及以上的串口 今天用以前的一个串口程序,发现串口怎么也打不开。因为用的串口不是常规的COM1、COM2而是大于Com10的端口,想着是很简单的增加几个选项就可以轻松搞定的,结果加上后测试,发现总是初始化失败,调试发现在CreateFile里总是失败,找到MSDN一看果然这里有区别。 Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可用于打开串口,获得串口句柄。
do...while(0)的妙用 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在一个
串口发短信程序的优化 最近在搞利用短信猫发送短消息的东西,在网上找了个现成的代码,但是对于每次都输入短信中心号码很繁琐,查询了AT相关指令,发现可以做一些改进,可以直接查询到短信中心号码。查询 AT+CSCA?\r返回的格式为+CSCA: "+8613800280500",145OK然后解析出来就行了。
ORACLE学习笔记 最近一段时间,项目不是很急,空闲时间学习了下ORACLE,基于文档《Oracle完全学习手册》,其中主要包括了基本的SQL语句,PQ/SQL语句,事务,存储过程,函数,触发器,处理库管理,SQL语句优化原则等内容,有兴趣的朋友可以到我的空间去下载相关的文档。下载
VC中如何使用 CRT 调试功能来检测内存泄漏 首先,检测内存泄漏的基本工具是调试器和 CRT 调试堆函数。为了使用调试堆函数,必须在要检测内存泄漏和调试的程序中添加下面的语句:#include#include#includeint main(){ //_crtBreakAlloc = 61; int *a = new int[3]; _CrtDumpMemoryLeaks(); _CrtMemState s
OTL之Oracle开发总结《转》 关于OTL,网上介绍的也不少,但看来看去也只是官方的那些文档。OTL很好用,结合官方提供的一些例子,多多尝试才能领悟。经过一个月左右的项目开发,对 OTL也有些了解,在这里总结一下,希望对刚接触OTL的新手有所帮助。其中有些地方,比如对网络异常的处理,可是费了我两天的时间才解决的,我那个汗哪。废话少说,开始正题:一、开始前的准备工作在使用OTL进行编程之前,要首先确定使用的Oralce版本
MFC中的消息路由 1.MFC中的消息分为三种(1)标准消息,也叫窗口消息(例:WM_PAINT,WM_CREATE,WM_LBUTTONDOWN,WM_CHAR)(2)命令消息,来自菜单,工具栏和加速键,都以WM_COMMAND表示(3)控件消息,控件消息又分为三小类,第一类和标准消息格式一样,第二类和命令消息格式一样(不过多了一个控件窗口的句柄),第三类是WM_NOTIFY.其具体细节不是
如何得到唯一的硬盘序号 不正确的序列号利用GetVolumelnformation获取的计算机硬盘卷序列号,不是正确的唯一序列号: 01.voidCWJGISApp::Register() 02.{03. DWORDVolumeSerialNumber; 04. GetVolumeInformation("c:\\",NULL,NULL,&VolumeSeriaIN
VC API常用函数简单例子大全 第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCSTR lpWindowName);第一个参数填窗口的类名,第二个填窗口的标题名,其实是不需要同时填两个参数的,也就是说,你只要知道窗口的类名或窗口的标题就可以了,没有的那个就用NULL代替。比
架构设计:生产者/消费者模式 [0]:概述今天打算来介绍一下“生产者/消费者模式”,这玩意儿在很多开发领域都能派上用场。由于该模式很重要,打算分几个帖子来介绍。今天这个帖子先来扫盲一把。如果你对这个模式已经比较了解,请跳过本扫盲帖,直接看下一个帖子(关于该模式的具体应用)。看到这里,可能有同学心中犯嘀咕了:在四人帮(GOF)的23种模式里面似乎没听说过这种嘛!其实GOF那经典的23种模式主要是基于OO的(从书名《Des
VC项目调试基础 一.Debug版本和Release版本的区别Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。只有Debug版本的程序才能设置断点、单步执行、使用TRACE/ASSERT等调试输出语句。Release版本不包含任何调试信息,所以体积小、运行速度快
WinSock编程基础 在上一篇中,我们具体介绍了socket的相关概念,本节将概述套接字规范及操作的一些基础性知识。 一.套接字的一些基础知识1.Windows通信相关驱动netio.sys(Network I/O Subsystem)ndis.sys(NDIS Driver)ipnat.sys(IP Network Address Translator)tcpip.sys(TCP/IP D
IPMSG(飞鸽传书)协议翻译 最近看到一些朋友在编写网络程序是遇到一些问题,故把以前做IPMSG时翻译的文档贴过来,希望对网络编程新手有所帮助,在寻找编程项目的同学们也可参照此文档写出自己的IPMSG。本文只包含其中几个比较重要的命令以及运行机制的中文翻译,更详细的内容请参照文后的IPMSG 协议英文文档声明:下述协议内容略去了一些在编写程序过程中没有用到协议内容,最初的Ipmsg协议是用日文写的,下面协议内容
堆和栈的区别 最近太过执着于一些底层概念,《堆和栈的区别》这篇经典的博文已经被转载过N次,但还是转到这里,以方便日后查阅。谨对原创表示感谢! 一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执
细说shell编程 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对
VC HID 1、头文件包含,库文件链接 在VC中开发HID应用程序时,需要包含setupapi.h和hidsdi.h,包含方式必须为extern "C",如下所示:extern "C" {// Declare the C libraries used#include "setupapi.h" // Must link in setupapi.lib#include "hidsdi.h"
USB有关的编程 现在USB设备却很多,因此对USB设备的查找与读写就必不可少了。但是能找到关于USB读写的资料很少。这里使用VC++示范了一些获得USB的信息的方法。一、枚举USB设备 通过枚举USB控制器->枚举此控制器上的USB HUB->枚举HUB的各个端口->获得设备信息。枚举控制器: view sourceprint?1.wsprintf(HCName,
五种I/O 模式 1.阻塞I/O 模式是最普遍使用的I/O 模式。大部分程序使用的都是阻塞模式的I/O 。缺省的,一个套接字建立后所处于的模式就是阻塞I/O 模式。对于一个UDP 套接字来说,数据就绪的标志比较简单:l 已经收到了一整个数据报l 没有收到。而TCP 这个概念就比较复杂,需要附加一些其他的变量。在图6-4 中,一个进程调用recvfrom ,然后系统调用并不返回知道有数据报到达
开发网络程序的调试方法 这几天在看Linux网络编程,发现一个比较有用的东西,现在和大家分享一下:技巧:如果你自己写了一个Server 和Client ,但是Client 却无法连上Server 而你又不知道究竟是哪个有问题的时候,你可以使用系统的工具telnet 来帮助你。如果你的Server 监听的端口是4000 ,那么可以直接使用telnet 去连接4000 端口。如果使用telnet 连接正常,那么你
什么是交叉编译? 什么是交叉编译? 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译 。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统 (Operating System)。同一个体系结构可以运行不同的操作系
CListCtrl 使用技巧 以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标
如何实现屏幕截图 BMP文件格式分析 简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitma
mpx程序from 阿明 1、MapX折线图元的画法 CMapXPoints pts; CMapXPoint pt; CMapXStyle sty; CMapXFeature f,newobj,newobj1,newobj2; if(!pts.CreateDispatch(pts.GetClsid())) { TRACE0("Failed t
MapX的一些注意事项 1.要在MAPX中自己创建一个对象,必须调用CreateDispatch(Pnts.GetClsid());创建一个dispath并将其与一个Coledispathdriver对象关联。这样才能调用该对象的方法。2.异常的的捕获,在开发中,我们在每个调用的地方都添加如下代码 catch (COleDispatchException *e) { e->ReportError();
Maxp中图元的创建 在mapx应用开发中,我们需要创建各种类型的图元,下面做个简单的总结:画线COleVariant vtPoints;vtPoints.vt=VT_DISPATCH;vtPoints.pdispVal=Pnts.m_lpDispatch;vtPoints.pdispVal->AddRef();Feature=FeaFac.CreateLine(vtPoints); //按照点
Mapx中如何显示一个符号 在MAXP应用程序开发中,最基本的一个功能是在地图上显示一个目标,这个目标一般用一个符号表示,在地图上表示为一个图标。CMapXFeatureFactory FeaFac; CMapXLayer Layer;CMapXFeature Feature;CMapXStyle Style;double centerX,centerY; //得到地图的中心center
MapX开发 我用MapInfo公司的MapX开发过几个项目。在项目的开发过程中,也接触了一些使用相同技术的公司和开发人员,感觉到他们的开发过程常常被一些问题所困扰,却得不到很好的解决。在这里,我把我在开发过程中积累的一些经验写出来,希望能起到抛砖引玉的作用。二、开发经验1、如何在MapX下读取属性值,这里介绍三种方法:1)由Layer对象的KeyField属性来设立要读取属性值的字段名。接着,由F
MAXP开发(二) 1:对LABEL的操作CMapXLayer.SetAutoLabel(true); 设置图层是否自动标记CMapXLayer.GetLabelProperties().SetVisible(true); 设置标记是否可见CMapXLayer.GetLabe
MAPX开发(一) 1:创建地图。CMapX.Create(NULL,WS_VISIBLE,CRect(0,0,300,300),this,IDC_MAP),其中CRect指明地图所占区域大小,IDC_MAP是控件ID,在单文档中新建一个没有任何绑定的ID,在对话框中可以直接用对话框的ID。2:加载图层。CMapX.GetLayer().Add(“path”);其中PATH是TAB格式的MAPINFO文件3:
COleDispatchDriver 这段时间研究mapx地图控件,里面的类都是基于COleDispatchDriver,因此,需要了解COleDispatchDriver这个类,COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispat
如何在在MapX中画线 响应组建的按下事件,下面是具体的实现代码。void CMapView::OnMouseDownMap(short Button, short Shift, float X, float Y) { CMapXPoints Pnts; //点集对象 CMapXFeatureFactory FeaFac; CMapXLayer Layer; CMapXF
MapX画点 由于MAPX是以组建的形式提供给我们,要在上面画点,就必须相应鼠标事件:添加宏ON_EVENT(CMapView, IDC_MAP, DISPID_MOUSEDOWN /* MouseDown */, OnMouseDownMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)以及实现事件的处理函数void CMapView::OnMouseDownMap(short
Boost.Bind用法详解(二) 函数组合,Part II在SGI STL中的另一个常用的函数组合是 compose1 ,在 Boost.Compose 中是compose_f_gx 。这些函数提供了用一个参数调用两个函数的方法,把最里面的函数返回的结果传递给第一个函数。有时一个例子胜过千言万语,设想你需要对容器中的浮点数元素执行两个算术操作。我们首先把值增加10%,然后再减少10%;这个例子对于少数工作在财政部门的人来说
Boost.Bind用法详解(一) Boost.Bind 为函数和函数对象提供了一致的语法,对于值语义和指针语义也一样。我们将从一些简单的例子开始,处理一些简单绑定的用法,然后再转移到通过嵌套绑定进行函数组合。弄明白如何使用bind 的关键是,占位符的概念。占位符用于表示提供给结果函数对象的参数,Boost.Bind 支持最多九个参数。占位符被命名为_1, _2,_3, _4, 直至_9, 你要把它们放在你原先放参数
Library 9. Bind Bind 库如何改进你的程序?使函数和函数对象适用于标准库算法使用一致语法创建绑定器强大的函数组合在使用来自于标准库的算法时,你常常需要提供给它们一个函数或一个函数对象。这是对算法的行为进行定制的一个好方法,但你通常需要写一个新的函数对象,因为你没有组合函数或改变参数的顺序等所需的工具。虽然标准库已经提供了一些可用的工具,如bind1st 和 bind2nd
Library 10. Lambda Lambda 库如何改进你的程序?对函数和函数对象进行适配,使之可用于标准库算法绑定参数到函数调用将任意的表达式转换为可以兼容标准库算法的函数对象就地定义匿名函数,提高代码的可读性和可维护性在需要的时间和地点实现谓词在使用标准库或其它采用相似设计的库时,需要依靠函数或函数对象来对算法进行配置,你通常要编写很多小的函数对象来执行一些非常简单的操作。
Boost.Lambda 用法详解(一) 与其它许多 Boost 库一样,这个库完全定义在头文件中,这意味着你不必构建任何东西就可以开始使用。但是,知道一点关于lambda 表达式的东西肯定是有帮助的。接下来的章节会带你浏览一下这个库,还包括如何在 lambda 表达式中进行异常处理!这个库非常广泛,前面还有很多强大的东西。一个lambda 表达式通常也称为匿名函数(unnamed function)。它在需要的时 候进行声明和定
Boost.Lambda 用法详解(二) Boost.Lambda 支持C++中的所有算术操作符,因此几乎不再需要仅为了算术函数对象而包含 。以下例子示范了这些算术操作符中某些的用法。vector vec中的每个元素被加法和乘法操作符修改。#include #include #include #include "boost/lambda/lambda.hpp"int main() { using name
Boost.Lambda 用法详解(三) Lambda 表达式中的类型转换在 lambda 表达式中有四种特殊的"转型操作符"[7] 来进行类型的转换:ll_dynamic_cast,ll_static_cast, ll_reinterpret_cast, 和ll_const_cast. 这些名字与对应的C++关键字不一样,因为它们不能被重载。要使用这些类型转换,就要包含头文件"boost/lambda/casts.hpp
Library 11. Function Function 库如何改进你的程序?保存函数指针和函数对象,用于后续的调用在进行回调的设计中,常常需要保存函数和函数对象,而且某些函数或类也是通过函数指针或函数对象来配制其客户化功能。通常,函数指针用于实现回调及延时函数。但是,仅仅使用函数指针会有很多限制,更好的方法是采用泛型机制来定义要被保存的函数的署名特征,而让调用者来决定提供哪一种的类函数实体(函数指针或函数对象)。这
boost::function用法详解 要开始使用 Boost.Function, 就要包含头文件 "boost/function.hpp", 或者某个带数字的版本,从"boost/function/function0.hpp" 到"boost/function/function10.hpp". 如果你知道你想保存在function 中的函数的参数数量,这样做可以让编译器仅包含需要的头文件。如果包含"boost/func
Signals 库如何改进你的程序? Signals 库如何改进你的程序?函数和函数对象的灵活多点回调健壮的触发器及事件处理的机制兼容于函数对象工厂,如 Boost.Bind 和 Boost.LambdaBoost.Signals 库具体化了信号(signals)和插槽(slots),信号指的是某种可被"抛出"的东西,而插槽是接收该信号的连接者。这是一种著名的设计模式,它还有另外一些名字Obse
Boost.Signals用法详解 当你面对需要用多段代码来处理一个事件的情况时,典型的解决方案有:用函数指针进行回调,或者直接对产生事件的子系统与处理事件的子系统之间的依赖性进行编码。这种设计常常会导致循环的依赖性。通过使用 Boost.Signals, 你将获得灵活性和解耦。要开始使用这个库,首先要包含头文件"boost/signals.hpp".[2] [2] Boost.Signals库和
Boost源码剖析之:容器赋值-assign 相信大多数使用STL的人都是为了使用里面的容器,使用vector、list、map的程序员对以下代码可以说是非常熟悉了:vector i_v;i_v.push_back(1);i_v.push_back(2);i_v.push_back(3);i_v.push_back(4);i_v.push_back(5);挺枯燥,是吧?用boost的assignme
Boost源码剖析之:增强的std::pair--Tuple Types (二) 4 初始化的全过程然而在跟踪之前我们须了解tuple的构造函数,因为所有初始化参数由此进入:template class T0, class T1, class T2, class T3, class T4,class T5, class T6, class T7, class T8, class T9>class tuple :public detail::map_t
Boost源码剖析之:增强的std::pair--Tuple Types (一) 0 动机[1]假设你有这样一个函数:它接受两个整型数据并返回它们整除的结果,像这样:int DevideInts(int n,int d){ return n/d;}但是我们可能需要更多信息,比如,余数。函数的返回值已被占用,我们可以为函数加一个参数:int DevideInts(int n,int d,int& Remainder
Boost源码剖析之:型别分类器——type_traits 动机1. 分派下面有一个模板函数,假设一个动物收容组织提供了它,他们接受所有无家可归的可怜的小动物,于是他们向外界提供了一个函数接受注册。函数看起来像这样:template //T表示接受的是何种动物void AcceptAnimals(T animal){ ... //do something};但是,如果他们想将猫和狗分开处理(毕
Boost源码剖析之:泛型指针类any之海纳百川 C++是强类型语言,所有强类型语言对型别的要求都是苛刻的,型别一有不合编译器就会抱怨说不能将某某型别转换为某某型别,当然如果在型别之间提供了转换操作符或是标准所允许的一定程度的隐式转换(如经过非explicit构造函数创建临时变量的隐式转换或是在int,long这些基本型别间的)又另当别论。总的说来,为了保持型别安全,C++有严厉的要求。然而有时候程序员可能有这样的需要:int i;
C++ Boost Assign 文档(翻译) (二) o list_inserter 类 这个类负责向容器中插入元素。而且,它还是扩展库以支持自定义容器的关键所在。纲要namespace boost{ namespace assign { templatevoid > class list_inserter
C++ Boost Assign 文档(翻译) (一) 1、简介 这个库的设计目的是为了使容器可以更方便地填充数据,这主要借助重载通过重载operator,()和operator()()实现。对两个操作符重载使得构造值列表然后把它们拷贝到相应容器里成为可能:逗号分隔的列表: vectorint> v; v += 1,2,3,4,5,6,7,8,9;括号分隔的列表: mapint>
VC下完全或部分编译boost 一、下载boost在boost的官网boost.org有下载地址http://sourceforge.net/projects/boost/.以Boost 1.33.1 Released 为例,直接下载。程序安装后解压缩到目录\boost_1_33_1.二、完整编译boost1、编译bjam在控制台下面运行...\boost_1_33_1\tools\build\jam_src目录
编译 boost 的正则表达式部分 VC利用boost库解析正则表达式最近做数据库涉及到解析sql语句,觉得最好的办法是写正则表达式解析,由于vc6没有解析函数,自己写又不甘心,后来从网上找到了boost库,解决了这个问题.boost下载地址:http://www.boost.orgboost库安装比较麻烦,需要自己编译源文件,我整理了一下,如果仅仅需要做正则表达式,按下面的代码敲就行了.cmdvcvars32.
注册表脚本文件 REG文件实际上是一种注册表脚本文件,双击REG文件即可将其中的数据导入到注册表中。利用REG文件我们可以直接对注册表进行任何修改操作,它对注册表的操作可以不受注册表编辑器被禁用的限制,因此功能更为强大、灵活,另外,由于REG文件可以用任何文本文件编辑工具(例如记事本)进行修改,因此通过它对注册表数据进行修改后,如果发生错误,还可以通过改回REG文件中的数据后再导入,从而实现恢复操作,因此它又较之
VS2005与IE8的冲突 前几天升级浏览器,装了个8.0的版本,结果发现VS2005向导不能使用了,每次要添加类都提示网页错误,查找了很多资料,最好终于问题解决了,修改一下注册表即可。在注册表项“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones”下面新建一个名称为“1000”的子项,在其中新建一个D
虚拟列表控件 一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1
常用的文件读取方式 有很多种方法可以进行文件的读写,在此总结了一下,主要参考的孙鑫的文章:1.用标准的C函数,包括fopen(),fread(),fwrite(),fclose()等;2.c++的流对象,包括ifstream和ofstream;3,windows api,createfile,readfile,writefile,closehandle等。4.MFC的CFile类。
一步一步教你实现CTreeCtrl 自绘 源代码下载blog:http://blog.csdn.net/wojiushi3344/article/details/7463942 最近因工作需求,需要自绘CTreeCtrl。由于原来从来没有自绘过,开始在网上搜索资料,查询(因此本文有些知识不可能不全面,或许还有更好的办法来实现,还请大家多多指教。)经过一段时间的编写,终于写好了。在此,感谢网友everbeing提供的实例参考。
软件开发相关文档的写法 在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。 ◇ 可行性分析报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。 ◇ 项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、
基于事件的异步套接字 主要用到的是WSAEventSelect模型下面是一个简单的示例代码: //控制箱开机 char *pCmd = "ONCP\r"; SOCKET sck=socket(PF_INET,SOCK_STREAM,0); if(INVALID_SOCKET ==sck) ATLASSERT(0); WSAEVENT
COM组件如何调试 在开发大型程序的时候,一般我们会将程序的功能模块化,常见的做法是采用COM组件,区别于一般的动态链接库,他的优点是毋庸置疑的,最大的特点在于它可以自己注册以及反注册,这样我们在创建相应的组件对象时就比较方面,不用考虑路径什么的,只要在电脑上已经注册过,则可以成功使用。由于COM组件不是EXE,因此,它不能独立执行,必须附加在一定的应用程序上,通过设置相应的参数,就可以进行调试。依次打开“调试”
浅谈PDFlib中文输出(四)PDFlib接收的几种文本输入形式 PDFlib的textformat参数用以设定文本输入形式,其有效值如下:bytes: 在字符串中每个字节对应于一个字符。主要应用于8位编码。utf8:字符串是 UTF-8编码。ebcdicutf8:字符串是EBCDIC的UTF-8编码,只应用于IBM iSeries和zSeries。utf16:字符串是 UTF-16编码。如果字符串是以Unicode的标记字节顺序号(BOM)
浅谈PDFlib中文输出(二)如何在PDFlib中使用其他简体中文字体 除了PDFlib自带字体外,用户还可以使用安装在系统上的字体及其他用户字体。PDFlib称安装在Windows和Mac操作系统中的(存在于或被拷入相应系统字体目录的)TrueType, OpenType 和PostScript字体为宿主字体(Host Font)。PDFlib可直接引用字体名进行调用,但必须与文件名完全相同(严格区分大小写)。例如,调用安装在Windows系统中的字体:C:
淺談PDFlib中文輸出(一) -- 如何使用Acrobat標准的簡體中文字體 作者: Michelle Yi 下載源代碼 PDF文件格式以其安全可靠,易于交換,及保真度高而成爲電子文檔的標准。PDFlib是一套在國際上非常流行的在服務器端批量生成PDF文檔的功能強大的軟件包。國外許多政府,稅務,銀行,水電,郵電部門用其在線生成PDF格式的單據及報表。 對于國內用戶來
浅谈PDFlib中文输出(三) -- PDFlib 的几种文本输出函数 作者:Michelle Yi 下载源代码 1.PDF_show void PDF_show(PDF *p, const char *text) void PDF_show2(PDF *p, const char *text, int len) 在当前坐标用当前字体及字体大小输出文本。
在VC++程序中接收COM事件 接收事件是COM客户端中非常重要的功能。但是除了在MFC中能够接收控件所发出的事件以外,VC++不能自动生成接收事件的代码。为了接收普通COM的事件,必须自行编写接收事件的代码。本文通过一个具体的实例说明如何在VC++程序中通过ATL编写接收COM事件的代码,当然,程序本身不必是ATL项目。1 COM事件原理COM对象通过连接点实现发送事件的功能。每个连接点都规定了接收事件用的接口,而
网络录音程序的录音部分实现 先是初始化部分:void CreateSock(void){ closesocket(sock); sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); addr.sin_family=AF_INET; addr.sin_port=htons(2288); addr.sin_addr.S_un.S_addr = inet_addr("127
网络录音播放器 最近有个需求,需要实现网络录音播放功能,在一端录音,然后将数据通过网络传送到另外一端,并且播放,有点类似于QQ的语音聊天功能。先大概讲下服务端的实现。//初始化部分void CMyDlg::Init(){ pWaveHdr1=reinterpret_cast(malloc(sizeof(WAVEHDR))); pSaveBuffer = reinterpret_cast(malloc
wave文件(*.wav)格式、PCM数据格式 1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;
WSAEventSelect编程 /************************************************************************//* 事件对象I/O管理程序实例 *//***************************************************