java操作mongodb(连接池)(转)

原文链接: java操作mongodb(连接池)

 

Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接。我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置。因为Mongo的实例就是一个连接池,所以,项目中最好只存在一个Mongo的实例。

常见的配置参数:

connectionsPerHost:每个主机的连接数

threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值。如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。

maxWaitTime:最大等待连接的线程阻塞时间

connectTimeout:连接超时的毫秒。0是默认和无限

socketTimeout:socket超时。0是默认和无限

autoConnectRetry:这个控制是否在一个连接时,系统会自动重试

 

还有许多配置,可以参见mongodb的API。

 

下面看代码:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.mongo.common;  
  2.   
  3. import java.net.UnknownHostException;  
  4.   
  5. import com.mongodb.DB;  
  6. import com.mongodb.Mongo;  
  7. import com.mongodb.MongoException;  
  8. import com.mongodb.MongoOptions;  
  9.   
  10. public class MongoManager {  
  11.     private final static String HOST = "localhost";// 端口  
  12.     private final static int PORT = 27017;// 端口  
  13.     private final static int POOLSIZE = 100;// 连接数量  
  14.     private final static int BLOCKSIZE = 100; // 等待队列长度  
  15.     private static Mongo mongo = null;  
  16.   
  17.     private MongoManager() { }  
  18.   
  19.     static {  
  20.         initDBPrompties();  
  21.     }  
  22.   
  23.     public static DB getDB(String dbName) {  
  24.         return mongo.getDB(dbName);  
  25.     }  
  26.   
  27.     /** 
  28.      * 初始化连接池 
  29.      */  
  30.     private static void initDBPrompties() {  
  31.         // 其他参数根据实际情况进行添加  
  32.         try { 
  33.             mongo = new MongoClient( HOST, PORT);
  34.             MongoOptions opt = mongo.getMongoOptions();  
  35.             opt.connectionsPerHost = POOLSIZE;  
  36.             opt.threadsAllowedToBlockForConnectionMultiplier = BLOCKSIZE;  
  37.         } catch (UnknownHostException e) {  
  38.         } catch (MongoException e) {  
  39.   
  40.         }  
  41.   
  42.     }  
  43. }  


使用的时候,如下所示:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.      * 保存 
  3.      *  
  4.      * @param user 
  5.      * @throws UnknownHostException 
  6.      */  
  7.     public void save(User user) throws UnknownHostException {  
  8.         DB myMongo = MongoManager.getDB("myMongo");  
  9.         DBCollection userCollection = myMongo.getCollection("user");  
  10.   
  11.         DBObject dbo = (DBObject) JSON.parse(user.toJson());  
  12.         userCollection.insert(dbo);  
  13.     }  


 

转载于:https://www.cnblogs.com/gaopeng527/p/5349445.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习 一年入门_我作为自我入门程序员的一年回顾

机器学习 一年入门by Alin Rauta通过Alin Rauta 我作为自我入门程序员的一年回顾 (My Year as a Self-starter Programmer in Review) This was the most crucial year for my personal development ever. It was hard. Really hard. That’s why for me, the key word of 201…

声卡突然听不到监听_音乐人/键盘手伴侣物问题之:专业监听音箱的音质必须用独立声卡...

近日,不少朋友在后台留言,询问专业监听音箱连电脑听音乐要不要接个声卡!本期我们针对此问题,跟大家分享一些心得与经验。先回答问题,当然要!通常我们电脑上的音频输出口是这样的:而专业监听音箱…

helm3安装mysql_Helm3(kubernetes包管理工具)安装使用踩坑指南

image.png从结构中我们看到有不同级别的文件夹,以及一些yaml文件。charts: 用于存放其他依赖和关联的chart。例如应用依赖数据库的chart。Chart.yaml:存储一些元数据,例如chart的信息,描述等等templates文件夹&#xf…

矩阵快速幂及斐波那契数列模板

本篇博客先给出矩阵快速幂以及利用矩阵快速幂求斐波那契数列的模板&#xff0c;讲解待更新…… const int N10; int tmp[N][N]; void multi(int a[][N],int b[][N],int n) {memset(tmp,0,sizeof tmp);for(int i0;i<n;i)for(int j0;j<n;j)for(int k0;k<n;k)tmp[i][j]a…

Redis-3.2主从复制与集群搭建 推荐

Redis-3.2主从复制与集群搭建 一、Redis 主从搭建 1.下载并解压 yum install -y gcc gcc-c pcre zlib pcre-devel tcl wget http://download.redis.io/releases/redis-3.2.4.tar.gz tar -zxvf redis-3.2.4.tar.gz cd redis-3.2.4 make cd src && make test &&am…

AutoMapperHelper

/// <summary>/// AutoMapper帮助类/// </summary>public static class AutoMapperHelper{/// <summary>/// 单个对象映射/// </summary>public static T MapTo<T>(this object obj){if (obj null) return default(T);Mapper.CreateMap(obj.Ge…

web项目开发人员配比_我如何找到Web开发人员的第一份工作

web项目开发人员配比I have always had an interest in coding for the web. I built my first site almost 15 years ago using Yahoo’s Geocities, which allowed HTML styling and a few layout choices.我一直对网络编码感兴趣。 大约15年前&#xff0c;我使用Yahoo的Geoc…

苹果手机输入屏保后锁屏_修一块手机屏幕要7080元?

这几天华为Mate X的两次开售成为大家议论的话题&#xff0c;一些抢到的人自然沉浸在快乐之中&#xff0c;想着是自己留着用&#xff0c;还是转手赚一把。而一些想抢而没抢到的人或许正在研究如何在明天的第三次开售中抓好机会吧&#xff01;当然&#xff0c;也有像小编这样的&a…

中间介(MiddleWare)

引子-Django的生命周期 在学习中间介之前&#xff0c;我们先来回顾一下Django的生命周期&#xff1a;用户发起请求&#xff0c;请求会被发送到urlconf中的url&#xff0c;然后会指向对应的views函数进行处理&#xff0c;views函数处理完成后&#xff0c;用模板渲染好html&#…

对MariaDB10.0的Sphinx进行扩展

已修改过的文件&#xff1a;http://pan.baidu.com/s/1o8DHvkA 将这两个文件放到MariaDB的解压目录后&#xff0c;再进行安装 /usr/local/mariadb-10.0.28/storage/sphinx/ 如下是修改的代码 get_rec ( byte * buf, const byte * key, uint keylen,uint a,uint b,uint c );index…

C++常用特性原理解析

在我的早期印象中&#xff0c;C这门语言是软件工程发展过程中&#xff0c;出于对面向对象语言级支持不可或缺的情况下&#xff0c;一群曾经信誓旦旦想要用C统治宇宙的极客们妥协出来的一个高性能怪咖。 它驳杂万分&#xff0c;但引人入胜&#xff0c;出于多(mian)种(shi)原因&a…

容器created状态_docker容器状态的转换实现

一 docker容器状态转换图二 实战[rootlocalhost ~]# docker infoContainers: 0Running: 0Paused: 0Stopped: 0Images: 3Server Version: 17.09.0-ceStorage Driver: overlayBacking Filesystem: xfsSupports d_type: falseLogging Driver: json-fileCgroup Driver: cgroupfsPlu…

nodejs命令行执行程序_在NodeJS中编写命令行应用程序

nodejs命令行执行程序by Peter Benjamin彼得本杰明(Peter Benjamin) 在NodeJS中编写命令行应用程序 (Writing Command-Line Applications in NodeJS) With the right packages, writing command-line apps in NodeJS is a breeze.有了合适的软件包&#xff0c;用NodeJS编写命令…

python re findall 效率_python re模块findall()详解

今天写代码&#xff0c;在写到郑泽的时候遇到了一个坑&#xff0c;这个坑是re模块下的findall()函数。下面我将结合代码&#xff0c;记录一下importrestring"abcdefg acbdgef abcdgfe cadbgfe"#带括号与不带括号的区别#不带括号regexre.compile("((\w)\s\w)&quo…

ubuntu16.04配置sonarqube+MySQL

环境&#xff1a;rootubuntu:~# uname -a Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux rootubuntu:~# rootubuntu:~# cat /etc/issue Ubuntu 16.04 LTS \n \lrootubuntu:~#安装配置mysql&#xff1a;1、更新源…

mysql 多表混全_mysql--浅谈多表查询1

这是对自己学习燕十八老师mysql教程的总结&#xff0c;非常感谢燕十八老师。依赖软件&#xff1a;mysql5.6系统环境&#xff1a;win连接查询在谈连接查询之前我们需要对数学上的笛卡尔积有一定的了解现在有两个集合m和nm (m1,m2,.....mx)n (n1,n2,.....ny)m*n得到的笛卡尔积有…

鼠标固定在屏幕中间_无线电竞黑科技,雷柏VT950Q游戏鼠标评测

雷柏作为目前小有声誉的PC外设品牌&#xff0c;其定位高性能游戏领域的VT系列产品&#xff0c;想必大家也比较熟悉了。VT系列的产品除了有超强的性能以及出色的设计感&#xff0c;同时还都是性价比非常高的产品&#xff0c;即便是采用了旗舰级传感器&#xff0c;定位最为高端的…

谈论源码_5,000名开发人员谈论他们的薪水

谈论源码Let’s dive into the most interesting results from the O’Reilly 2016 Salary Survey of 5,000 developers (which excluded managers and students).让我们来看看OReilly 2016年薪金调查对5,000名开发人员(其中不包括经理和学生)最有趣的结果。 性别工资差距是真…

WebSnapshotsHelper(HTML转换为图片)

1 /// <summary>2 /// WebBrowser Url生成图片3 /// HTML转图片4 /// </summary>5 public class WebSnapshotsHelper6 {7 Bitmap m_Bitmap;8 string m_Url;9 int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth,…

两个多项式相乘求解系数数组算法

题目描述&#xff1a; 给出两个多项式&#xff0c;最高次幂分别为n和m&#xff0c;求解这两个系数相乘得到的系数数组。 分析&#xff1a; 最高次幂如果是m和n&#xff0c;那么他们相乘得到的系数数组的最高次幂一定是nm&#xff0c;对于其他的系数&#xff0c;不妨设a[],b[]是…