自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闻道百

最近专心于nodejs与C++配合编程的研究

  • 博客(15)
  • 收藏
  • 关注

原创 自己实现PostgresQL的nodejs驱动,分享给大家

PostgresQL性能上不输Mysql,而且支持很多高级特性,于是我写了这个项目,根据libpg的c驱动,封装了这个nodejs驱动。项目地址:git clone https://code.csdn.net/limite_god/pgsql.git开发难点、待实现功能、特性1、nodejs的v0.12.0开始,api有了不少变化,熟悉这些变化用来不少时间;2、libp

2015-03-28 15:48:40 2437

原创 使用makefile编译nodejs模块

使用过node-gyp编译nodejs的addon插件的人,一定很好奇,node-gyp到底帮你做了什么事情,还有,如果我们自己做,难度到底如何。本文不作makefile文件语法的讲解,如果你不懂, 没关系,能看懂基本流程就好。抛开node-gyp,你会发现,有些复杂的东西其实是基于很简单的原理。环境操作系统为centos7,已经安装了nodejs,版本为0.10.36,其实差不多新的版本

2015-02-18 15:58:37 4572

原创 libuv之开启tcp服务端监听,并获得客户端的ip及端口

libuv中处理tcp连接的handle叫做uv_tcp_t,可以认为它是uv_stream_t的子类,所以它是可以当作流来使用的,这篇主要内容不在这,其实主要介绍两个函数UV_EXTERN int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name, int* namelen);UV_EXTERN int uv_tc

2015-02-12 15:17:46 8848

原创 libuv之async使用

libuv中async的使用比较难理解一些,我们来一起学习下简介vu_async_t是我们要用的handle,这个handle用来在线程间通信的。我们看一下官方的解释/* * uv_async_t is a subclass of uv_handle_t. * * uv_async_send wakes up the event loop and calls the async

2015-02-10 10:43:31 11636

原创 libuv文件操作

libuv对文件操作的函数都封装在uv_fs开头的函数中,相关的handle就是uv_fs_t/uv_fs_s,我们来看一些它的定义/* uv_fs_t is a subclass of uv_req_t */struct uv_fs_s { UV_REQ_FIELDS uv_fs_type fs_type; uv_loop_t* loop; uv_fs_cb cb; s

2015-02-09 14:41:07 3584

原创 libuv程序,捕获Ctrl+C事件

在命令行下执行程序的时候,我们经常使用Ctrl+C来停止程序的执行。下面,我们看看libuv库如何捕获这个事件思路我们开启一个空转的消息,让程序一直有消息可以消费,不至于退出,在捕获Ctrl+C事件之后,停止空转消息,程序自然就退出了。代码/* * test_signal_ctrl_c.cc * when user input ctrl+c, we can get th

2015-02-09 11:22:26 2277

原创 libuv多线程处理的简单示例

简介libuv提供了多线程处理的封装,使用起来也非常简单,一个handle,即uv_thread_t,在linux环境下,就是pthread_t,也就是unsigned long类型。相关的三个函数为UV_EXTERN int uv_thread_create(uv_thread_t *tid, void (*entry)(void *arg), void *arg);UV_EX

2015-02-09 10:41:11 13177 1

原创 libuv入门之hello world

先声明一下我的工作主目录为:/data/workspace/nodejs/learn_nodejs/node_modules/libuv, 在后面我会简称为$PATH。第一步,编写代码在$PATH下新建test.cc,内容如下/* * test.cc * empty msg loop * 这个例子新建了一个消息队列,但队列里没有任何消息,程序直接退出 * Created on

2015-02-06 15:40:58 2728

原创 linux下nodejs依赖库libuv库,开发环境准备

nodejs底层使用libuv库实现异步IO,如果对nodejs的回调函数习以为常,而不知libuv,那岂不是很遗憾。libuv在github上托管了自己的源码,但是我要学习的是希望适用于nodejs某一个版本的,这样的代码是可以经过简单处理,在nodejs之调用的。第一步 下载nodejs源代码打开nodejs官网,下载nodejs的源代码,注意,是源代码包。我使用的源码包版本是0.10

2015-02-06 14:55:53 1758

原创 nodejs,addon,使用js中传递的函数参数

v8引擎中,js和你自己开发的addon模块,定义在一个上下文中,也就是说它们是相互认识的。这篇文章中我介绍下怎么在addon中,调用js中的函数。我们先看v8的对象继承关系Function是Value的子类,而js中传给C++的所有函数的类型是Value,所以逻辑上来讲,其实很简单,看文件目录结构building.gyp很简单,如下{ "targets

2014-12-02 21:41:56 3257

原创 在nodejs中,使用node-oracle连接oracle

nodejs连接oracle并不是那么容易,我使用的是node-oracle,安装还算顺利。这个项目的地址是https://github.com/joeferner/node-oracle有兴趣的同学可以去看英文的安装步骤,在这个我结合自己的经验,给大家一点建议下载oracle instant client这个可以去oracle的官方网站上下载,地址随版本更新,经常变化,这

2014-11-27 17:32:03 6039 2

原创 nodejs连接mysql及使用

首先,我们先安装mysql模块npm install --save mysql然后,我们在本地创建一个mysql数据库,名字叫clearncreate database clearn创建一张表,就叫用户表(customer)create table customer (id varchar(40) not null primary key,password varchar(

2014-11-27 15:12:36 686

原创 nodejs,addons入门之hello world

我们都知道,nodejs时基于google的v8引擎的,v8引擎呢,是用C或者说C++写的,各种第三方模块(大多数)也是用C++写的,原因很简单,效率高,而且,很多第三方模块原本就有C++版本,只要用addons包装一下,就可以在nodejs中直接使用。我门何不开发一个自己的模块试试呢。首先,需要安装node-gyp,它可以帮我们把C/C++的源码编译成nodejs认识的格式。npm in

2014-11-26 21:40:29 840

原创 nodejs使用mongodb,api分析

在nodejs中使用mongodb是一件很愉快的事情。安装依赖模块npm install --save mongodb下面,我们来体验一些常用的api创建连接var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://127.0.0.1:27017/learn';MongoClient

2014-11-26 16:00:17 2903

原创 nodejs常用模块async(waterfall,each,eachSeries,whilst)

a

2014-11-25 18:31:33 32712 3

空空如也

空空如也

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

TA关注的人

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