GitHub地址:https://github.com/leebingbin/ java
Java程序很大一部分要操做數據庫,爲了提升性能操做數據庫的時候,有不得不使用數據庫鏈接池。數據庫鏈接池有不少選擇,c3p、dhcp、proxool等,druid做爲一名後起之秀,憑藉其出色的性能,也逐漸引入了你們的眼簾。Druid是一個開源項目,源碼託管在github上,源代碼倉庫地址是https://github.com/alibaba/druid 。同時每次Druid發佈正式版本和快照的時候,都會把源碼打包,你們能夠從上面的下載地址中找到相關版本的源碼。git
爲何說Druid是「最好的數據庫鏈接池」?體如今哪些方面?這是如何實現的?github
阿里巴巴是一個重度使用關係數據庫的公司,在生產環境中大量的使用Druid,經過長期在極高負載的生產環境中實際使用、修改和完善,讓Druid逐步發展成最好的數據庫鏈接池。Druid在監控、可擴展性、穩定性和性能方面都有明顯的優點。首先,強大的監控特性,經過Druid提供的監控功能,能夠清楚知道鏈接池和SQL的工做狀況。其次,方便擴展。Druid提供了Filter-Chain模式的擴展API,能夠本身編寫Filter攔截JDBC中的任何方法,能夠在上面作任何事情,好比說性能監控、SQL審計、用戶名密碼加密、日誌等等。Druid內置提供了用於監控的StatFilter、日誌輸出的Log系列Filter、防護SQL注入攻擊的WallFilter。阿里巴巴內部實現了用於數據庫密碼加密的CirceFilter,以及和Web、Spring關聯監控的DragoonStatFilter。第三,Druid集合了開源和商業數據庫鏈接池的優秀特性,並結合阿里巴巴大規模苛刻生產環境的使用經驗進行優化。數據庫
怎麼配置maven( Maven倉庫查找公共的倉庫地址:http://www.mvnrepository.com/artifact/com.alibaba/druid)windows
只須要在項目的pom.xml中加上dependency就能夠了。例如:maven
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid-version}</version> </dependency>
配置_DruidDataSource參考配置:性能
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本屬性 url、user、password --> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_user}" /> <property name="password" value="${jdbc_password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置獲取鏈接等待超時的時間 --> <property name="maxWait" value="60000" /> <!-- 配置間隔多久才進行一次檢測,檢測須要關閉的空閒鏈接,單位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一個鏈接在池中最小生存的時間,單位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 'x'" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打開PSCache,而且指定每一個鏈接上PSCache的大小 --> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <!-- 配置監控統計攔截的filters --> <property name="filters" value="stat" /> </bean>
使用(druid-1.0.25.jar)數據庫鏈接加密操做流程優化
1.進入到附件:druid-1.0.25.jar對應的路徑。例如(windows):ui
2.執行命令:java -cp druid-1.0.25.jar com.alibaba.druid.filter.config.ConfigTools 密碼
以下圖所示加密
3.使用標記便可複製出內容,須要注意:不管是公鑰仍是密碼都只取publicKey:,password:後面的數據,且若是有換行去掉換行,公鑰和密碼每一個都是獨立的一行。
4.把加密後的密碼公鑰配置到配置文件中便可。
GitHub地址:https://github.com/leebingbin/