Email:longsu2010 at yeah dot net
最近写程序node.js程序的时候需要用到数据存储,node.js可以使用的数据库中的很多,mongodb、MySQL等等,但是我还是觉得这些数据库太大了,大材小用,更主要的是麻烦。于是我找到了node-tiny,一个非关系型的数据库,有点类似于mongodb。
tiny的文档中讲述了这样一个事实,当我们在数据库中搜索数据的时候我们会根据id、名字、类别、标签、日期等这些内容简短的属性来搜索,极少的时候根据全文信息等这样的超长的字段来搜索。所以在创建一个tiny数据库的时候tiny会将小于128字节的属性加载到内存中,这样检索速度会非常快,当检索结束时tiny根据检索的结果加载对于记录超过128字节的字段。
使用方法:
1、安装 npm install tiny
2、创建数据库实例。
var Tiny = require('tiny');
Tiny('articles.tiny', function(err, db) {
// 使用数据库实例db来操作数据。
});
说明:第一参数为存储数据使用的文件名,该文件会在第一次使用时创建。第二参数为数据库创建成功后执行的回调函数。
3、使用例子。
Tiny('articles.tiny', function(err, db) {
db.set('doc001', {
title: 'the title',
content: 'the content'
}, function(err) {
console.log(err)
console.log('set!');
});
});
说明:保存文档对象。第一参数为存储数据的key,第二参数为要存储的内容,第三参数为回调函数。
4、函数大全:
set:增加记录,参数如上。
remove:删除记录,参数同set。
update:更新记录,第一参数同set(存储的key),第二参数为回调函数。
get:获取一条记录,第一参数同set,第二参数为回调函数。
all:获取所有数据,参数为回调函数,不过该函数已经被弃用了。
each:迭代数据库中的每一个对象。第一参数为迭代的函数(第一参数为记录对象,第二参数为记录的key);第二参数为迭代结束后的回调函数;第三参数为一个布尔值,若为true则会将大于128字节的也加载到内存迭代,默认false,建议保持默认。
fetch:检索数据,第一参数为约束对象,第二三参数为函数,前者用于筛选数据,后者为检索结束后的回调函数。
find:mongodb风格的检索。
close:关闭数据库,关闭打开的文件。
kill:删除所有数据。
compact:清理数据库文件中无用的数据。
5、补充,对于tiny来说增删改都是向文件中写数据,注意是直接追加到文件末尾,所以update方法和remove方法只是在文件的末尾追加内容。之所以可以这样设计是因为JavaScript对象属性是唯一的,赋值操作会覆盖掉之前的值,所以tiny只需按照文件的顺序解析文件即可得到正确的数据。这样设计的弊端是删除掉的数据还会占用存储空间,compact方法就是将多余的数据在文件中删除的方法。
6、各方法使用演示。
Tiny('articles.tiny', function(err, db) {
/*
for(var i = 0; i < 10; i++){
db.set('doc' + i, {
title: 'a document ' + i,
content: 'hello world ' + i
}, function(err) {
if(err){
console.log(err);
}else{
console.log('set!');
}
});
}
*/
/*
db.get("doc0", function(err, data){
console.log(arguments)
});
*/
/*
db.each(function(obj, key){
console.log(arguments);
}, function(){
}, false);
*/
/*
db.fetch({
limit: 3
}, function(obj, key){
return true;
}, function(err, datas){
console.log(arguments)
});*/
/*
db.compact(function(err) {
console.log('done');
});
*/
});
分享到:
相关推荐
u-boot-tiny6410.tar.gz支持sd卡启动,修改u-boot - mini6410 - 20101106.tar.gz而来,屡试不爽
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
perl-Config-Tiny-2.12-7.1.el6.noarch.rpm perl-Config-Tiny-2.12-7.1.el6.noarch.rpm
mha4mysql-node-0.56-0.el6.noarch.rpm perl-Config-Tiny-2.12-7.1.el6.noarch.rpm perl-Log-Dispatch-2.26-1.el6.rf.noarch.rpm perl-Mail-Sender-0.8.16-3.el6.noarch.rpm perl-Mail-Sendmail-0.79-1.2.el6.rf....
要使用的预训练权重:首先下载训练好的网络参数yolov3-tiny.weights,到weights目录下,但仍然需要fine-tune,so对yolov3-tiny.weights进行改造,下载darknet相关文件,下载好之后进入文件make一下,生成darknet可...
opencv-yolo-tiny车辆检测需要的车辆检测模型文件 yolov3-tiny.weights yolov3-tiny.cfg obj.names
yolov3-tiny.conv.15.rar yolov3-tiny.conv.15 for yolov3-tiny pretrain model
官方离线安装包,亲测可用
pytorch yolov3 目标检测 yolov3-tiny.conv.15 yolov3 yolov3-tiny.conv.15 权重文件
qt-opensource-linux-x64-5.9.0.run 已验证可用,请放心下载。Qt是诺基亚公司的C++可视化开发平台。与Visual C++相比,Qt简单方便、功能完善、跨平台、扩展能力强,可以用于嵌入式开发
u-boot-2010.09-for-tiny6410-v1.0.tar.gz编译生成的bin文件,烧写SD卡sdhc卡的文件
yolov7源码+yolov7-tiny.pt、yolov7.pt文件整合,适合打不开外网的人下载使用
这是dakknet官方发布的yolov7-tiny版本的weights和预训练模型
qt-everywhere-opensource-src-5.7.1.tar.gz 已验证可用,请放心下载。Qt跨平台开发环境源码,需要通过arm-linux-gcc交叉编译,才能够使用
yolov3-tiny.conv.15预训练模型下载,/darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15
darknet yolov7-tiny预训练模型
tiny yoloV4的预训练权重 yolov4-tiny.conv.29 tiny比较小,速度非常快,结合opencv可以实时检测。效果相当的棒。
在运行目标检测典型算法yolov2时,有不同的神经网络可供选择,该文件是tiny版本,文件提供了神经网络中不同类型的层的配置参数包括batch_size, width,height,channel,momentum,decay,learning_rate等。