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.pswp.cn/news/396443.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396443.shtml
英文地址,請注明出處:http://en.pswp.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[]是…