最近由于项目需要,大致研究了一下protobuf的java使用。说实话,习惯了C++的protobuf,java用起来真别扭。

java在mongodb中的存储其实非常方便,假设有定义一个proto,如下所示:

message User

{

required int64 id = 1;

required string name = 2;

}

那么可以利用一下代码,对protobuf进行存储

// 设置user

User.Builder builder = User.newBuilder();

builder.setId(123);

builder.setName("abc");

// 实例化user

User user = builder.build();

// 序列化成byte数组

byte[] ub = user.toByteArray();

// 与mongodb建立连接

MongoClient cli = new MongoClient("localhost", 2000);

// 切换至user_info数据库

DB db = cli.getDB("user_info");

// 选择集合user

DBCollection coll = db.getCollection("user");

// 插入更新数据

DBObject condition = new BasicDBObject();

condition.put("user_id", user.getId());

DBObject data = new BasicDBObject();

data.put("user_id", user.getId());

data.put("model", ub);

// 第三个参数设置为true,表示upsert

coll.update(condition, data, true, false);

如果需要获得存储的数据,可利用一下代码:

DBCursor cur = coll.find(condition);

while(cur.hasNext())

{

DBObject obj = cur.next();

Binary m = (Binary)result.get("model");

byte[] xx = m.getData();

break;

}

如果需要跨语言平台获取数据,这里以C++为例:

std::string content;

std::auto_ptr<:dbclientcursor> cursor =

conn->query("user_info.user", query.obj());

while (cursor->more())

{

mongo::BSONObj obj = cursor->next();

if (!obj.isEmpty() && obj.isValid())

{

mongo::BSONElement elm = obj.getField("model");

int len = 0;

const char *b = elm.binData(len);

content.assign(b, len);

ret = true;

}

break;

}

java存储protobuf_java中利用mongodb存储protobuf相关推荐

  1. java poi 导出中利用sum函数实现合计功能

    java poi 导出中利用sum函数实现合计功能 之前也写过导出功能但是没有写过合计.所以记录下来当做笔记. for(int i = 0; i < arrSize; i++) {JSONObj ...

  2. react本地储存_如何在React项目中利用本地存储

    react本地储存 以及为什么要这么做. 本地存储是现代Web浏览器固有的Web API. 它允许网站/应用程序在浏览器中存储数据(简单和有限),从而使数据在以后的浏览器会话中可用. 在开始学习本教程 ...

  3. 微信小程序本地存储存储_如何利用本地存储构建快速的应用程序

    微信小程序本地存储存储 by Nikita Kozlov 由Nikita Kozlov 如何利用本地存储构建快速的应用程序 (How to leverage Local Storage to buil ...

  4. SpringBoot 利用MongoDB存储图片文件

    文件存储 -- 替代文件服务器 MongoDB 分片, 当你一台文件服务器硬盘不够的时候, 分片轻而易举解决这个问题 大批量文件, 图片, 视频, 音频 考虑采用 MongoDB gridfs pac ...

  5. java访问mongodb_Java中获取MongoDB连接的方法详解

    首先是所需jar包,Maven中的配置如下: org.mongodb mongodb-driver 3.4.1 org.mongodb bson 3.4.1 org.springframework.d ...

  6. java泊松分布_Java中利用Math.random()产生服从泊松分布的随机数

    众所周知.Java的Math.random()产生的是服从均匀分布的随机数,可是其它分布的应用也相当广泛,比如泊松分布和高斯分布(正态分布).而这些分布Java没有非常好的提供(高斯分布能够利用Ran ...

  7. java 修改pdf_java中利用itext编辑pdf

    最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现. itext的官网是:http://www.itextpdf.com/ 代码如下: Java代码 /** * ...

  8. json日期格式化 java_java_Java Web程序中利用Spring框架返回JSON格式的日期,返回Json时格式化日期Date 第一 - phpStudy...

    Java Web程序中利用Spring框架返回JSON格式的日期 返回Json时格式化日期Date第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@Respo ...

  9. mongodb存储数据_在MongoDB中存储分层数据

    mongodb存储数据 继续使用MongoDB进行 NoSQL之旅,我想谈一谈一个经常出现的特定用例:存储分层文档关系. MongoDB是很棒的文档数据存储,但是如果文档具有父子关系,该怎么办? 我们 ...

最新文章

  1. 皮一皮:有一种着急叫做妈妈想你快点脱单...
  2. python中range 10 0_如何在python中使用range方法
  3. .NET如何以 回车换行符 拆分字符串?
  4. 市值十亿美金公司的五个特点
  5. linux sort
  6. leetcode-12-整数转罗马数字
  7. 浙大29岁“粉色系”女博导获百万大奖!最爱少女粉的她,既是实验高手还是个“大厨”......
  8. LeetCode 459. Repeated Substring Pattern
  9. java jar 启动项目,SpringBoot项目运行jar包启动的步骤流程解析
  10. [Python] L1-015. 跟奥巴马一起画方块-PAT团体程序设计天梯赛GPLT
  11. SQL 之group by查询语句
  12. 扣丁软件测试基础知识,总结钢筋工程266问,包你从入门到放弃,建议收藏
  13. 谷歌浏览器被7654恶意篡改主页解决办法
  14. 书摘—跟鬼谷子学处世 跟菜根谭学修身
  15. 2021年危险化学品生产单位安全生产管理人员最新解析及危险化学品生产单位安全生产管理人员证考试
  16. 山东大学计算机学院第二校园,山东大学本科生第二校园学习经历管理办法
  17. 解“冰刃”的使用方法
  18. 云计算和计算机应用的区别,普适计算与云计算的区别
  19. 前端学习之路, 记录前端小白成长历程, 学习总结, 工具汇总, 打造开箱即用的学习体验
  20. 每天坚持收小钱,能改命!

热门文章

  1. ambari_HDP之mapreduce参数调优
  2. IAR更改更改字体的办法,完美解决!
  3. Spring框架(容器)--简介(实现原理、核心模块、组成部分)
  4. c++中vector的 = 与 assign的区别
  5. 易语言上传文件 自动化编辑对话框并点击按钮
  6. antdv table 的表格列配置描述 columns
  7. ThreeJS后期处理
  8. SMPL模型及源码解读
  9. Android简单计时器
  10. Install SVN Error:The Feature You Are Tring to Use is on a Network Resource That is Unvaliable