- 博客(48)
- 资源 (4)
- 收藏
- 关注
原创 VS2008 编译tightvnc-2.7.10~tightvnc-2.8.8成功
tightvnc源码官方下载地址http://www.tightvnc.com/源码中的WinDxgiSurface.h头文件有如下两行代码:#include #include 默认设置情况下编译此解决方案会因为编译器找不到上述两个头文件而报错:fatal error C1083: Cannot open include file: 'd3d11.h': No such
2017-05-15 14:54:17
1937
1
原创 [C++]IDictionary的用法
IDictionary是.NET Framework的产物,因此它并没有C++标准中的头文件声明。我不知道如何直接在C++中使用,如果你知道,请不吝赐教。IDictionary的官方说明:https://msdn.microsoft.com/zh-cn/library/system.collections.idictionary(v=vs.80).aspx?cs-save-lang=1&cs-
2016-03-11 15:54:06
1454
原创 SQLite之rowid与sqlite3_last_insert_rowid()
SQLite数据库中的表均有一个特殊的rowid字段,它是一个不重复的64位有符号整数,默认起始值为1。rowid别名为oid或_rowid_,但在创建表的SQL声明语句中只能使用rowid作为关键字。如果在创建表的时候设置了类型为integer的具有自动增长性的主键,那么这时的主键相当于是rowid的别名。rowid只能是单调递增的,它由SQLite内部维护,不能自己指定。对于失败的插入操作
2016-01-04 17:28:10
12982
原创 SQLite之SQLITE_BUSY与sqlite3_busy_handler()
什么时候会返回SQLITE_BUSY错误码?官方文档给出的解释是:The SQLITE_BUSY result code indicates that the database file could not be written (or in some cases read) because of concurrent activity by some other database con
2016-01-04 16:38:30
5203
1
原创 VB与C++之间数据类型的对应关系
https://msdn.microsoft.com/en-us/library/windows/desktop/ms695200(v=vs.85).aspx
2015-11-26 18:01:30
1229
原创 SAFEARRAY安全数组的使用方法
#include using std::cout;using std::endl;using std::cerr;#include int _tmain(int argc, _TCHAR* argv[]){ long l2Arr[4][3]={{3,15,9},{27,14,98},{35,11,6},{19,4,61}}; /* 以下代码执行: 1#:将l2Arr二维数组写入
2015-11-10 16:34:59
2554
转载 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题
由VS开发的COM组件,在个别计算机上注册失败也可用此解决:http://zhidao.baidu.com/link?url=TYFMz4Hlm1reZNAcB4vkl5DgmMU8nnuo3LmCOsomWO81FxeSokvRfPcDxLE7JwVQlIq9c95sB7R8Ha-BMFrXnx6gWSKF-0B_GUIFAT-98vG&qq-pf-to=pcqq.c2c
2015-10-29 12:07:57
989
原创 ILMerge(Dll合并工具)遇到Could not load assembly from the location...错误
C:\Program Files (x86)\Microsoft\ILMerge>ILMerge -ndebug -log -target:dll -out:D:\xls2xml.dll d:\dll\o5.dll d:\dll\o4.dllSet platform to 'v2', using directory 'C:\Windows\Microsoft.NET\Framework
2015-08-14 12:31:07
4197
4
原创 mongodb
字段的筛选查询操作中对于那些需要返回的字段,我们可以直接设置相应字段的属性值为1就可以了。但当同时出现多个选项时,这样就不能很好地工作了。请看下面这个示例:var mongodb=require('mongodb');var debug=require('./debug');var MongoClient = mongodb.MongoClient;MongoClient.conn
2015-06-11 10:55:03
426
原创 parse
url.parse()返回一个固定结构的对象:{ protocol: null, slashes: null, auth: null, host: null, port: null, hostname: null, hash: null, search: null, query: null, //这个字段表示URL中的参数部分(URL中参数位于?
2015-06-05 16:58:14
692
原创 网络库
http:udt.sf.net (开源)http://blog.csdn.net/danscort2000/article/details/8818438(免费)
2015-05-20 17:31:31
436
原创 数据报片重组
数据报片的重组发生在分片到达目的主机之后。当目的主机接收到第一个分片时就启动一个重组定时器,所有的分片必须在重组定时器超时之前到达目的主机,否则分片的整个数据报将被目的主机丢弃。这个过程发生在系统内核,对用户不可见。发送IP数据报的计算机必须为每一个数据报生成一个唯一的值,作为数据报的标识,以便目标主机对接收到的数据报进行重组。IP软件使用的一种方法是在主存中保持一个全局计数器,每产生
2015-05-20 17:23:06
1069
原创 HTTP头
var http=require("http");var srvPort=4449;function OnRequest(request,response){response.writeHead(200,{"Conten-Type":"text/lpain"});var body = ''+''+''charset=UTF-8" />'+''+'' +
2015-05-20 17:21:10
429
原创 捕获异步回调的异常
因为Node是异步的,很多函数(特别是第三方的包)均是基于异步回调的方式被调用。尽管我们已经对可能抛出异常的代码使用try/catch块,但还是常常不能正确地捕获可能发生的异常(Node已测),因为try/catch块执行完之后,异步函数很有可能还没有完成,异常还没有被实际抛出。当异常被抛出时,由于catch块已经超前执行完了,如果此时又没有更多的catch块能捕获抛出的异常,进程将异常终止。
2015-05-20 17:20:28
1747
原创 on("data",...)和on("message",...)
sock.on("message",function(msg,rinfo){})sock.on("data",function(chunk){}) 都有可能多次触发,例如当客户端(使用TCP协议)发送长文本的聊天消息时,on("data",...)就会分多次触发。但要注意它们不同协议之间造成的差异。
2015-05-20 17:19:34
743
原创 获取连接关闭时socket的有关信息
当net.Socket被关闭的时候,按照通常的做法无法在"error"或者"close"事件中取得被关闭的那个socket的有关信息,例如:sock.on("close",function(){ //console.log(sock.remoteAddress + ": " + sock.remotePort + " exit!"););对于上述代码,sock.remoteAddr
2015-05-20 17:18:34
922
原创 基于UDP的socket的注意事项
socket.address()Returns an object containing the address information for a socket. For UDP sockets, this object will contain address , family and port.但这个socket 返回的节点信息是基于服务器绑定到本机的那个socket的信息。例如:
2015-05-20 17:17:48
438
原创 net.socket.write注意事项
socket.write(data, [encoding], [callback])回调函数在数据被发送出去时被调用。但这个回调函数并不接收任何参数,这意味着我们不能从这个回调函数中取得已经被发送出去的字节数。当data被成功刷新到系统内核缓冲区时,write方法返回true,否则返回false.返回false意味着有部分或全部数据正在用户的缓存中排队以等待发送。当这些缓存变为空时,wri
2015-05-20 17:16:19
1122
原创 net.server.listen的问题
监听地址的问题。server.listen(port, [host], [backlog], [callback])不用在第二个参数中指定监听IP地址。如果指定了,则客户端只能连接这个指定的IP地址,包括127.0.0.1,即如果监听时指定IP地址为127.0.0.1,而服务器的本机地址为192.168.1.6。这时客户端连接服务器时的IP地址必须也为127.0.0.1,否则连接不上(No
2015-05-20 17:15:18
1146
原创 用fs移动文件
同一分区内移动文件:var fs=require("fs");var file="G:\\VS2010.rar";var newFile="G:\\WessengerServer(NodeJS)\\VS2010copy.rar";fs.rename(file,newFile,function(err){if(!err)console.log("rename complete
2015-05-20 17:13:46
2474
原创 用fs创建文件
var fs=require("fs");var file="G:\\WessengerServer(NodeJS)\\gogo.js";fs.exists(file,function(exists) {if (!exists){console.log(file + " doesn't exist!");fs.open(file, "w", function (err, f
2015-05-20 17:12:42
3935
原创 用fs获取文件属性
//fs.Stat类可以返回文件的属性,包括文件字节数、最后修改时候等。例如:var fs=require("fs");fs.stat("G:\\WessengerServer(NodeJS)\\token.js",function(err,stat){ console.log(JSON.stringify(stat)); if(err) console.log
2015-05-20 17:09:47
1483
原创 NodeJS 对象和字符串之间的转换
对象转字符串var foo={ a: 20, g: [-100007], i: 100006, n: 'Node.JS', o: true, v: 4 };console.log(JSON.stringify(foo));//Node原生支持JSON//{"a":20,"g":[-100007],"i":100006,"n":"Node.JS","o":true,"v":4}字符串
2015-05-20 17:04:30
16246
原创 JavaScript
Object.length只有String、Array才有length属性。对普通的Object使用length属性将返回undefined.例如:console.log({'_id':123}.length);//undefinedString.length返回字符串中字符的个数,一个中文字符占一个字符长度。
2015-05-20 16:57:57
360
原创 [EventProxy(四)]EventProxy之异常处理
假设你已经阅读并基本理解了EventProxy的官方说明https://www.npmjs.com/package/eventproxy,否则你有两个选择:1、先阅读官方说明,再浏览本文2、如果不愿意做第1条,关闭本页面去别处逛逛。言归正传。EventProxy提供了统一的异常处理机制,一旦有异常发生,则移除所有事件的监听器:ep.bind('error',function
2015-04-24 12:39:49
6869
原创 [EventProxy(三)]EventProxy之tail说明
假设你已经阅读并基本理解了EventProxy的官方说明https://www.npmjs.com/package/eventproxy,否则你有两个选择:1、先阅读官方说明,再浏览本文2、如果不愿意做第1条,关闭本页面去别处逛逛。言归正传。var fs=require("fs");varEventProxy=require("eventproxy");var ep =
2015-04-24 12:37:05
816
原创 [EventProxy(二)]EventProxy之group自动排序
假设你已经阅读并基本理解了EventProxy的官方说明https://www.npmjs.com/package/eventproxy,否则你有两个选择:1、先阅读官方说明,再浏览本文2、如果不愿意做第1条,关闭本页面去别处逛逛。言归正传。fail除了用于协助all方法完成外,也能协助after中的异常处理。另外,在after的回调函数中,结果顺序是与用户emit的顺序有关。为了
2015-04-24 12:30:08
875
原创 [EventProxy(一)]NodeJs之使用EventProxy解决多层异步调用的嵌套
NodeJs的异步调用机制虽然神奇并好用,但也并非不会引起任何副作用。传统的异步调用方式看起来像是下面这样:asynFunA(function(errA,resA){ if(!errA) { asynFunB(function(errB,resB){ if(!errB) { as
2015-04-24 11:35:53
1543
原创 NodeJS之调试JavaScript代码
http://jingyan.baidu.com/article/dca1fa6fbd580ff1a44052de.html?qq-pf-to=pcqq.grouphttps://github.com/node-inspector/node-inspector
2015-04-23 11:40:57
508
原创 基于NodeJS的MongoDB数据库的动态创建
通常我们都是对某一个已经存在的数据库进行增、删、改、查操作,那当该数据库尚未被创建的时候,我们怎样动态地新增相应的数据库呢(例如每当创建一个新用户时,就创建一个与之相对应的数据库)?请看下面的代码:var mongodb = require('mongodb');var MongoClient=mongodb.MongoClient;//连接到admin数据库MongoClient.
2015-04-08 09:39:08
4801
1
转载 VS2008快捷键
1.强大的渐进式搜索 操作步骤: 1.按Ctrl+I键; 2.输入你要搜索的文本。注意:这时你会看到光标跳至第一个匹配的位置,并高亮显示搜索的文本。 3.再次按下Ctrl+I键,光标将跳至下一个匹配的文本; 4.按Ctrl+Shift+I可向后搜索; 5.按ESC键停止搜索;2.使用快捷键来注释和取消注释 操作步骤: 1、注释代码:Ctrl+K,
2015-04-01 16:17:30
320
转载 SQL Server 2005 Management Studio 安装程序在安装此软件包时遇到一个错误,这可能表示此软件包有错。错误码是29506
安装程序在安装此软件包时遇到一个错误,这可能表示此软件包有错。错误码是29506 在刚安装好的Win7上安装了Visual Studio 2005,然后下载Microsoft SQL Server Management Studio Express进行安装,但是安装不成功,老是提示:"安装程序在安装此软件包时遇到一个错误,这可能表示此软件包有错。错误码是29506"。 百思不得其解,最后
2015-04-01 16:05:27
4079
1
转载 [vc]在鼠标移动过程中绘制矩形,有效解决重影问题
原文地址:http://www.cppblog.com/yehao/archive/2012/10/26/156251.html#193922要实现的功能实际上很简单,一般人都用到见惯不惯了,但是实现起来还是有点意思的。问题详细描述:(三步)单击鼠标左键时记录下单击点;鼠标拖动时,显示的矩形框能够动态的跟随显示;释放鼠标左键时擦出矩形框。这样分析其实
2015-04-01 16:02:49
1346
原创 MFC OnChar、OnKeyDown、OnKeyUp和PreTranslateMessage的关系
假设按下键盘上的任意一个键,则OnChar、OnKeyDown、OnKeyUp均会被调用。它们被调用的先后顺序为:1、OnKeyDown2、OnChar3、OnKeyUp在对话框应用程序中,无论用户是否操作鼠标或键盘,PreTranslateMessage函数始终不断地被调用。MSDN中关于PreTranslateMessage函数的说明如下:U
2015-04-01 16:01:10
8414
原创 MFC 列表控件的使用
与CTreeCtrl类似,MFC中以两种形式封装列表控件,一种是CListCtrl;另一种是CListView。 对于CListView,调用成员函数GetListCtrl返回一个CListCtrl的引用,就可以像CListCtrl一样进行各种操作。CListCtrl有很多种显示方式,其中最常用的四种是(大图标)LVS_ICON 、(小图标)LVS_SMALLICON、(列表)LVS_LI
2015-04-01 16:00:15
2515
原创 MFC 树形控件的使用
1、树形控件的属性TVS_EDITLABELS:允许用户进行节点文本的编辑TVS_HASBUTTONS:节点左侧添加一个按钮TVS_HASLINES:父节点与子结点出现连线TVS_LINESATROOT:子节点与根节点之间出现连线TVS_NOTOOLTIPS:结点无动态提示TVS_SINGLEEXPAND:节点的选中(未选中)t7展开(合拢)同步
2015-04-01 15:57:36
3656
转载 TCP穿透主流商用NAT产品的主要技术研究
[摘要]近些年,标准化社区已经开发出一些UDP穿透NAT/防火墙的技术(也就是,在NAT之后的主机之间建立UDP流)。然而,由于TCP连接建立的不对称特点,TCP的NAT穿透要困难的多。最近,研究者们提出了多种TCP穿透NAT的途径,然而,这些方法中,成功的都依赖于NAT对各种TCP(和TCMP)包的序列如何响应的。本文对TCP穿透主流商用NAT产品的主要技术进行了首次深入、广泛的研究。我们开发了
2015-04-01 15:53:54
1341
原创 常用WinInet API函数简介
InetrnetOpen:初始化 WinInet.dll并返回一个HINTERNET句柄以传递给应用程序后续调用的WinInet函数。该函数应该在应用程序调用其他WinInet函数前首先被调用。可以在应用程序中多次调用这个函数,尽管实际只需要调用一次就够了。但应该注意的是,使用完HINTERNET句柄后需要调用InternetCloseHandle函数关闭这个句柄,同时释放由Interne
2015-04-01 15:51:57
1376
原创 Windows Sockets错误码查询
以下是WSAGetLastError()函数返回的部分常用错误代码。按字母顺序排列,同时给出了简要的扩展描述,以供实际编程时查询。通过查询,可以知道函数调用失败的原因,进而采取相应的处理。WSAEACCES (10013) Permission denied.试图使用被禁止的访问权限去访问套接字。
2015-04-01 15:47:50
691
原创 一个简单的基于node.js的TCP服务器和基于C++的TCP客户端通信示例程序
var net=require("net");var serverIP="127.0.0.1";var serverPort=10553;var server=net.createServer(function(sock){ console.log("Accepting connection: " + sock.remoteAddress + ":" + sock.remotePo
2015-04-01 15:42:22
922
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人