<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[极简Qt]]></title><description><![CDATA[Qt让数字化更简单]]></description><link>https://blog.youkuaiyun.com/BeyondHaven</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BeyondHaven]]></copyright><item><title><![CDATA[工程师最重要的能力是什么]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/78494936</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/78494936</guid><author>BeyondHaven</author><pubDate>Thu, 09 Nov 2017 22:37:21 +0800</pubDate><description><![CDATA[手机响了，是一个实施工程师打过来的，说现场的数据采集不上来，问怎么解决。我问软件的版本，仪器的型号，操作系统的信息，具体的问题描述。我告诉他可能是什么原因，给了一个解决办法，让他尝试一下。他试了一下后，说还是不行，又问怎么办，于是我又给他一个办法，他又去尝试了，反馈回来说还是不行，又问我怎么办。我然后我又给他提供方案，继续解决……终于解决了。
        这种场景不是一次两次了，也不是一个人]]></description><category></category></item><item><title><![CDATA[Mongodb中C++客户端与Java客户端的交互]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/13020997</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/13020997</guid><author>BeyondHaven</author><pubDate>Fri, 25 Oct 2013 15:43:22 +0800</pubDate><description><![CDATA[Mongodb中C++客户端与Java客户端的交互，解决中文乱码的问题；C++客户端插入文件的简单例子。]]></description><category></category></item><item><title><![CDATA[VS2010错误error C2678]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/12995199</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/12995199</guid><author>BeyondHaven</author><pubDate>Thu, 24 Oct 2013 11:28:09 +0800</pubDate><description><![CDATA[之前用的好好的，今天整理了一下工程，删除了一些没用到的.h和.cpp文件，重新编译，发生错误：
error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)
代码定位在if语句里：]]></description><category></category></item><item><title><![CDATA[VS2010编译Mongodb C++驱动]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/12913171</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/12913171</guid><author>BeyondHaven</author><pubDate>Tue, 22 Oct 2013 15:23:42 +0800</pubDate><description><![CDATA[完成了VS2010编译Mongo C++ Driver，中间遇到了不少问题，记录一下。]]></description><category></category></item><item><title><![CDATA[Linux下编译mongodb以及C++客户端驱动]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/12710197</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/12710197</guid><author>BeyondHaven</author><pubDate>Mon, 14 Oct 2013 17:06:31 +0800</pubDate><description><![CDATA[想在Linux下编译一下mongo和它的C++驱动，网上一堆教程，官方一堆文档，实现起来依旧困难重重。我就很纳闷了，本来mongodb就是C++写的，为什么不直接提供出驱动，而java，C#之类的，倒是直接提供了jar包和dll文件。今天终于编译成功，赶紧记录下来。
Linux版本：CentOS 5.4
C++驱动版本：mongo-cxx-driver-v2.2
Mongodb版本：mong]]></description><category></category></item><item><title><![CDATA[Linux守候进程]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10981081</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10981081</guid><author>BeyondHaven</author><pubDate>Fri, 13 Sep 2013 08:34:07 +0800</pubDate><description><![CDATA[在一个远程监控系统中，我们使用了守候进程。结合《Linux高级程序设计》的相关内容，对守候进程做个整理。
守候进程，又称守护进程（Daemon），是在后台运行的一种特殊的进程，脱离于终端。类似于Windows服务程序。守候进程适用于像我们项目中的数据采集类的程序，因为客户的误操作等原因，造成服务器的重启，这时要保证数据的接收是正常的，那么，很有必要将采集程序运行在后台，不被显示的终端界面所影响。]]></description><category></category></item><item><title><![CDATA[井场数据采集系统的架构演化]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10577139</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10577139</guid><author>BeyondHaven</author><pubDate>Wed, 11 Sep 2013 08:24:37 +0800</pubDate><description><![CDATA[XXX井场数据采集系统，是实现XXX物联网的基础，它从井场设备上采集钻井工程过程中的各种数据，远程传输到地区公司的数据中心，提供实时和准实时数据给远程作业支持中心和专家中心的各种专业软件进行处理，指导井场钻井作业。采集系统最早开始于2012年初着手架构和开发，期间经历了从无到有，从有到优的一个改进过程，共发生过四次架构演化。vcsky.net
探索出来的架构
这个时期的架构，可以说是一种猜想的]]></description><category></category></item><item><title><![CDATA[Socket简介]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10981693</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10981693</guid><author>BeyondHaven</author><pubDate>Mon, 09 Sep 2013 08:34:36 +0800</pubDate><description><![CDATA[Socket，这是一个老生常谈的话题，我只是梳理一下其相关知识点。
Socket is a port。在Linux中，网络编程是通过Socket接口来完成的。Socket接口是一种特殊的I/O，也是一种文件描述符。
一个Socket 用一个半相关描述： {协议，本地地址，本地端口}。
通过IP可以建立网络中两个设备之间的连接。通过Sockets使用TCP/UDP服务来建立网络中两个应用程序或]]></description><category></category></item><item><title><![CDATA[windows下使用net-snmp实现agent扩展（四）]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10576411</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10576411</guid><author>BeyondHaven</author><pubDate>Thu, 05 Sep 2013 09:13:06 +0800</pubDate><description><![CDATA[在前三篇的内容里，介绍了使用net-snmp实现agent的Get/Set命令，下面介绍一下发送trap消息。发送trap消息时，系统默认的端口是162。使用下面的代码，可以实现trap消息的发送。
//该函数发送实时报警信息。与发送一般信息端口不同
void init_alarm_info(void)
{
DEBUGMSGTL((“dcsserver”,
“initializing (sett]]></description><category></category></item><item><title><![CDATA[windows下使用net-snmp实现agent扩展（三）]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10576277</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10576277</guid><author>BeyondHaven</author><pubDate>Wed, 04 Sep 2013 08:41:02 +0800</pubDate><description><![CDATA[时间隔得太长了，我都快忘了什么是snmp了，知识啊知识，很容易在不用的时候忘却，也可能是自己脑袋不好使了吧？翻了翻代码，赶紧总结下，不然真不会了……
在上篇博客中，实现了get/set一个字符串型变量，现在来实现对多个字符串变量的get/set。假设要实现获取CPU利用率、内存占用率和磁盘占用率的的功能，建立两个文件：alarmInfo.h和alarmInfo.c。
在alarmInfo.h中]]></description><category></category></item><item><title><![CDATA[windows下使用net-snmp实现agent扩展（二）]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575931</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575931</guid><author>BeyondHaven</author><pubDate>Fri, 30 Aug 2013 09:31:05 +0800</pubDate><description><![CDATA[刚刚实现了int型的get命令，可能更多的情况下，我们更需要的是字符串类型的。在实现int型的时候，用到了netsnmp_register_int_instance这个函数，很自然想到如果是string型的，用类似的netsnmp_register_string_instance，或者netsnmp_register_char_instance不就行了？很可惜的是：net-snmp并没有提供这两个]]></description><category></category></item><item><title><![CDATA[windows下使用net-snmp实现agent扩展（一）]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575601</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575601</guid><author>BeyondHaven</author><pubDate>Fri, 30 Aug 2013 09:26:29 +0800</pubDate><description><![CDATA[项目上需要用snmp来做告警监控管理，达到对系统的运行状态的监测。这几天研究了一下，发现网上资料比较少，大多数抄来抄去，能够正确运行的更少。所以，总结了一下，把相关的代码放上来，希望能够帮助同样遇到困惑的朋友。 havenzhao http://vcsky.net

项目名称为DCS系统，采用VS2010开发，DCS作为被监测的对象，因此需要实现snmp的Agent扩展。最开始的方法，采用了W]]></description><category></category></item><item><title><![CDATA[读写锁（Read-Write Lock）的一种实现]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575349</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575349</guid><author>BeyondHaven</author><pubDate>Fri, 30 Aug 2013 09:20:45 +0800</pubDate><description><![CDATA[项目中用到了此类，实现了多个线程读、单个线程写的功能，基于Windows平台。

思想：两个相关的锁，一个用于读，一个用于写。可以多个同时读，但只能一个写。比传统的互斥锁，提高了一定的并发性。

#ifndef READER_WRITER_LOCK_H_ 
#define READER_WRITER_LOCK_H_ 
/***********************************]]></description><category></category></item><item><title><![CDATA[levelDB按时间范围检索]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575205</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/10575205</guid><author>BeyondHaven</author><pubDate>Fri, 30 Aug 2013 09:19:15 +0800</pubDate><description><![CDATA[levelDB是谷歌的开源key-value存储系统，性能很高、设计思想很妙、使用起来也很简单。但像绝大多数的No Sql数据库一样，只适合做单一的查询，不能胜任复杂的关系组合查询。在实际项目中，我们应用levelDB，需要针对其进行一段时间的数据检索。于是，通过时间加减，来完成的这项功能，在此贴出简要代码，仅供参考。

http://vcsky.net 
 by havenzhao

]]></description><category></category></item><item><title><![CDATA[与Java的MD5算法一致的C/C++的MD5算法]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/8275110</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/8275110</guid><author>BeyondHaven</author><pubDate>Sun, 09 Dec 2012 15:57:13 +0800</pubDate><description><![CDATA[网上C/C++的MD5算法很多，但找了好久，也没找到合适的能与JAVA的MD5结果一样的算法。最后还是把以前项目里的一个算法改了一下，实现了和Java传输文件时，校验文件的功能。Java的MD5算法比较统一，而C++的算法则很多版本，只能C++往Java上靠拢。

md5.h

#ifndef _DMSUTIL_H
#define _DMSUTIL_H

#ifdef __cplus]]></description><category></category></item><item><title><![CDATA[实时数据缓存管理的初步设计]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/7553441</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/7553441</guid><author>BeyondHaven</author><pubDate>Thu, 10 May 2012 12:30:01 +0800</pubDate><description><![CDATA[http://vcsky.net  by havenzhao


对于实时较大数据量的缓存管理上，设计的方式有很多。在此提出一种初步的、较粗略的思路，仅供参考。背景：系统分为三层，数据采集层（采集底层的数据），消息管理层（对采集上来的数据进行处理）、消息接口层（对消息解析封装、处理客户端的Socket请求等）。

在数据的缓存管理上，采用双缓冲区模式的管理机制。http://vcsky.]]></description><category></category></item><item><title><![CDATA[VS2010设置VC6的字体样式及背景色、选中字高亮]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/7520284</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/7520284</guid><author>BeyondHaven</author><pubDate>Sat, 28 Apr 2012 15:12:29 +0800</pubDate><description><![CDATA[习惯了VC6.0的fixedsys字体，用VS2010还真不习惯。把VS2010打造成经典的、熟悉的模样，也并非难事。网上有相应的文章，我再记录下来，主要是为了自己查找方便（刚刚重装了系统，一切从头再来，从网上找半天，浪费时间）。
http//vcsky.net  by  havenzhao

使用字体：Fixedsys Excelsior 3.01

1、首先下载字体：http://w]]></description><category></category></item><item><title><![CDATA[VC++ GDI画立体管道]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/7492666</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/7492666</guid><author>BeyondHaven</author><pubDate>Tue, 24 Apr 2012 10:42:11 +0800</pubDate><description><![CDATA[都是以前的一些代码，今天回头整理的时候，看到一些有些用的东西。在做SCADA的时候，所涉及的绘制对象，有立体管道。下面的代码，就是使用GDI来绘制3D立体管道的。下面是核心代码（略显冗余），如果使用，稍作修改即可。
http://vcsky.net  by havenzhao
void Draw(CDC *PDC) 
{ 
    int pointNum = m_PointArray.Get]]></description><category></category></item><item><title><![CDATA[程序员怎样读书]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/7242446</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/7242446</guid><author>BeyondHaven</author><pubDate>Wed, 08 Feb 2012 17:09:35 +0800</pubDate><description><![CDATA[HavenZhao  http://vcsky.net
    做为一名程序员，我一直在读书，一直在学习。可现在仔细回想一下，却似乎没有记住的书，大脑一片空白，读的书去了哪里？
    越想越觉得可怕，大把大把的时间，N多的书，却跟没读一个样。我不禁要反思这个问题，这也许不是一个人身上的，也可能是好多程序员的通病。造成这种结果的原因，可能在以下几个方面：
    1、读的书太泛泛，没有重点。]]></description><category></category></item><item><title><![CDATA[现代浏览器的工作原理【二】]]></title><link>https://blog.youkuaiyun.com/BeyondHaven/article/details/6782033</link><guid>https://blog.youkuaiyun.com/BeyondHaven/article/details/6782033</guid><author>BeyondHaven</author><pubDate>Mon, 30 Jan 2012 16:47:35 +0800</pubDate><description><![CDATA[3.解析和DOM树建设
3.1 一般解析

由于解析在渲染引擎中是一个很重要的过程，我们将更加深刻的讲解。让我们开始一个有关解析的简要介绍。
解析文档意味着将其转换成一些有意义的结构----代码可以理解和使用。解析的结果通常是一个树的节点表示文档的结构，它被称为解析树或语法树。

范例 - 解析表达式2 + 3 - 1，可以返回此树：



图5：数学表达式树节点

3.1]]></description><category></category></item></channel></rss>