单例模式实现DBCP数据库连接池,并从ini文件中读取数据库连接池配置参数

闭源中间件安全审计实战:TongWeb代码审计方法与工具详解 代码审计是保障软件安全的核心技术手段,其原理是通过分析应用程序的源代码或二进制文件,识别潜在的安全漏洞与逻辑缺陷。在软件供应链安全日益重要的今天,代码审计不仅能发现SQL注入、命令执行等传统漏洞,更能从源头管控因第三方组件、配置不当引入的风险,具有极高的技术价值。它广泛应用于金融、政务等对安全性要求极高的行业,是等保测评、合规建设的关键环节。本文聚焦于闭源Java中间件TongWeb的专项安全审计,针对其部署机制(如处理WAR包、BC包)和默认配置进行深度测试,通过逆向分析、动态插桩、模糊测试等工程实践方法 阅读详情
public class DBUtilOfDBCP {

    private static DBUtilOfDBCP instance = null;
    private BasicDataSource dataSource =null;// 数据源
    private DBUtilOfDBCP(String filePath) throws IOException{
        String dataType = null;  //数据库类型1 Oracle 2 SqlServer 3 MySql
        String dataname = null;  //数据库名
        String URL = null;       //数据库URL
        String port = null;      //端口号
        String username = null;
        String password = null;
        String DBUrl = null;
        String driverClassName = null;
        
        INI.load(filePath);//读取数据库配置文件(ini文件)
        
        dataType = (String) INI.getValue("dataSource", "DataType");
        URL = (String) INI.getValue("dataSource", "URL");
        port = (String) INI.getValue("dataSource", "PORT");
        username = (String) INI.getValue("dataSource", "UserName");
        password = (String) INI.getValue("dataSource", "PassWord");
        dataname = (String) INI.getValue("dataSource", "DataName");
        
        if("1".equalsIgnoreCase(dataType)){
            driverClassName = "oracle.jdbc.driver.OracleDriver";
            DBUrl="jdbc:oracle:thin:@"+URL+":"+port+":"+dataname;
        }else if("2".equalsIgnoreCase(dataType)){
            driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            DBUrl="jdbc:sqlserver://"+URL+":"+"; DatabaseName="+dataname;
        }else if("3".equalsIgnoreCase(dataType)){
            driverClassName = "com.mysql.jdbc.Driver";
            DBUrl="jdbc:mysql://"+URL+":"+port+"/"+dataname;
        }
        dataSource = new BasicDataSource();
        dataSource.setUrl(DBUrl);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driverClassName); // 连接池设置
        dataSource.setInitialSize(20);// 初始连接数
        dataSource.setMaxActive(100);// 最大获取连接数
        dataSource.setMaxIdle(30);// 最大可用空闲连接数
        dataSource.setMinIdle(10);// 最小可用空闲连接数
    }
    public synchronized static DBUtilOfDBCP getInstance(String filePath) throws IOException{
        if(instance == null){
            instance = new DBUtilOfDBCP(filePath);
        }
        return instance;
    }
    public Connection getConnection() throws SQLException{
        Connection conn = null;
        if(dataSource != null){
            conn = dataSource.getConnection();
        }
        return conn;
    }
    public static void main(String[] args) throws IOException, SQLException {
        // TODO Auto-generated method stub
        Long begin = System.currentTimeMillis();
        String filePath = "D:/workspace/myreport/WebRoot/WEB-INF/dataSource.ini";
        Connection conn = null;
        DBUtilOfDBCP dBUtilOfDBCP = DBUtilOfDBCP.getInstance(filePath);
        for(int i = 0 ;i<10000;i++){
            conn = dBUtilOfDBCP.getConnection();
            if(conn != null){
                conn.close();
            }
        }
        Long end = System.currentTimeMillis();
        System.out.println("连接数据库所需要的时 间:"+(end-begin));
        //连接数据库所需要的时 间:750
    }

}
MySQL ERROR 1045 深度解析:从紧急救援到根治权限访问问题 数据库权限管理是数据安全的核心机制,它通过用户身份验证和访问控制来保护数据资源。MySQL的权限系统基于mysql.user等系统表,通过密码哈希、验证插件和主机匹配等多维度进行认证。当出现ERROR 1045访问被拒绝时,通常意味着认证环节的某个维度不匹配。这一机制的技术价值在于平衡安全性与可用性,确保只有授权用户能够访问数据库。在实际应用场景中,开发者在部署Web应用或进行数据库维护时,常会遇到root@localhost账户登录失败的问题。这往往涉及密码策略变更、验证插件不兼容或权限记录异常等情况。通 阅读详情

相关推荐

有关Datasource 和 Connection Pool(数据源和连接池)

1.首先我先简单介绍一下数据源与连接池:(1)数据源(Data Source)是提供某种所需要数据的器件或原始媒体。JDBC中提供了javax.sql.DataSource接口,负责建立与数据库的连接。 DataSource对象可以由Web服务器提供,前提是需要在服务器配置DataSource(包括连接池)(2)而连接池的概念就像是一个水池,装载的东西就是一个一个的连接通道。以前我们每次使用数据库...

wuthering_wind的博客 7442

DBCP使用BasicdataSource连接(两种单例模式-----饿汉和懒汉模式)

DBCP使用BasicDataSource连接 BasicDataSource实现DataSource的接口,可以进行简单的数据库连接 第一种:懒汉模式:顾名思义,“懒”,只有在调用方法时才构造对象 package com.example.dao; import org.apache.commons.dbcp2.BasicDataSource; import javax.sql.DataSource; public class t1 { private static DataSource da

weixin_43891499的博客 729

基于SSM框架与MySQL的农场信息管理系统设计与实现

在Java Web开发中,SSM(Spring、SpringMVC、MyBatis)是经典的轻量级企业级应用组合,它通过清晰的配置让开发者深入理解依赖注入、请求分发与SQL映射的底层原理。MySQL作为最流行的关系型数据库,与SSM无缝结合,支撑起数据持久化、事务管理和高效查询。这套技术栈不仅适合快速搭建中小型管理软件,还能帮助初学者系统掌握Web后端核心链路。本文从数据库表设计、Mapper层动态SQL、事务控制到Vue3前后端联调,完整剖析农场信息管理系统的实现过程,并针对索引优化、字符集、跨域等高频问

weixin_30606461的博客 309

单例模式的连接池模板

因为在项目中,要使用到多数据源,且对该项目框架不熟悉,故写出用连接池操作其它的数据库 该模板是查阅API文档,自己手写完成。大大简化了操作的复杂性。具体可看代码 代码: package com.ces.component.issuetable.action; import org.apache.commons.dbcp.BasicDataSource; import org.apache.com...

mufeng 719

单例模式的四种实现方法

懒汉 饿汉 静态内部类方式 双重校验锁,txt文档形式

【电驱动】永磁同步电机工作原理及分类

永磁同步电机工作原理及分类

星Yeah 的博客 7325

使用dbcp和pool进行数据库的数据源单例模式设计实现

使用dbcp和pool进行数据库的数据源单例模式设计实现DBCPDataSource.javaTestDrive.java DBCPDataSource.java package nuc.edu.dao; import org.apache.commons.dbcp2.BasicDataSource; import javax.sql.DataSource; /** * 数据源一般是单例模式 */ public class DBCPDataSource { // 1 单例模式类的静态实例变

weixin_47919524的博客 320

工程经验分享:PCIE(1)

本文介绍AXI Bridge For Pcie Express Gen3 Subsystem 的使用方法。这个IP兼具简单与实用性,将PCIE协议层实现于内部,仅留出AXI接口供开发者使用。开发者不需要处理复杂的PCIE协议数据,只需要对AXI总线有所了解即可,十分符合Xilinx一贯的开发风格。本文无关PCIE协议本身,仅分享实用性的工程经验,以PCIE IP为核心,一步一步搭建一个简单的子系统,以此说明用法。文中所有内容均已通过项目检验。

weixin_42415266的博客 3842

使用单例模式设计JDBC连接数据库

设计模式之单例模式一般应用在在数据库操作里,数据库操作就要经常创建实例,然后进行数据库操作,所有就可以 将数据库操作的方法,进行封装,然后采用单例模式进行设计,然后采用单例模式之后,就可以节约系统资源,对于 一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。 先编写数据库配置文件sql.properties DRIVER=com.m

u013161431的博客 5933

手把手教你用TBtools+MCScanX完成玉米基因家族共线性分析(附完整代码)

本文提供了一套完整的玉米基因家族共线性分析实战流程,详细讲解了如何从数据准备、格式处理开始,利用DIAMOND进行快速比对,再结合MCScanX进行核心共线性区块鉴定,最后通过TBtools实现从全基因组圈图到特定基因家族微共线性图的可视化。教程包含可直接运行的代码与常见问题解决方案,帮助研究者高效完成从命令行计算到图形化展示的全过程。

tech5的博客 591

0基础手把手搭建 Trae\+Seedance2\.0 真人短剧生成智能体(可直接运行)

前言:本文专为0基础新手编写,全程无复杂代码、无专业术语,一步一截图提示(操作路径清晰),只需跟着点鼠标、复制粘贴,就能搭建出可自动生成真人短剧的智能体,生成的短剧可直接导出发布。核心工具:Trae(字节跳动AI IDE,免费)+ Seedance2.0(真人视频生成API,公测免费),无需提前学习编程、设计,全程10-15分钟搞定。 适用人群:0基础小白、想快速生成真人短剧(自媒体、短视频创作者)、无需懂技术即可实现自动化短剧生成的人群。

skygulangfendouz的专栏 1058

使用jdbc连接数据库(单例模式)

配置连接数据库文件 在根目录下新建resources文件,并点亮如图 在文件夹内新建db.properties配置数据库属性文件,文件内容 driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.56.29:3306/qMall //连接的数据库地址 user=kb07 //数据库登陆用户名 pwd=ok //数据库登陆用户密码 新建class文件使用单例模式读取数据库属性文件 public class Prop { //使用单例模式保证

buerba的博客 2318

LVGL 拨盘菜单(Dial Menu)

h。

摸鱼专家 191

找不到mysql的ini文件格式_为什么找不到mysql.ini文件,我是放在scr目录下的

展开全部想问你想干嘛?在src下创建一个db.properties配置文件,里面配置driver,url,user,passwd哦了importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.St...

weixin_30420175的博客 121

Android系统修改驱动固定USB摄像头节点绑定前后置摄像头

Android系统中usb摄像头节点会因为摄像头所接的usb口不同或者usb设备识别顺序不一样而出现每次开机生成的video节点不一样的问题。由于客户app调用摄像头时,需要固定摄像头的节点。因此需要针对前面的情况做处理。

Android系统开发笔记 2250

MOSFET雪崩特性参数解析

但是,一些电源在输出短路时,初级中会产生较大的电流,加上初级电感,器件就会有雪崩损坏的可能,因此在这样的应用条件下,就要考虑器件的雪崩能量。对于那些在MOSFET的D和S极产生较大电压的尖峰应用,就要考虑器件的雪崩能量,电压的尖峰所集中的能量主要由电感和电流所决定,因此对于反激的应用,MOSFET关断时会产生较大的电压尖峰。雪崩击穿能量标定了器件可以容忍的瞬时过冲电压的安全值,其依赖于雪崩击穿需要消散的能量。EAS单脉冲雪崩击穿能量, EAS标定了器件可以安全吸收反向雪崩击穿能量的高低。

Airer_00的博客 806

Apache .htaccess文件安全攻防:从文件上传到配置注入的实战解析

在Web安全领域,服务器配置文件是攻击者常利用的权限提升跳板。Apache的.htaccess文件作为分布式配置文件,允许目录级配置覆盖,其核心原理在于AllowOverride指令的权限控制。当该指令被不当开启时,攻击者可通过文件上传漏洞植入恶意.htaccess文件,利用AddType、php_value等指令劫持文件解析或注入PHP配置,实现代码执行。这种配置注入攻击在CTF竞赛和真实渗透测试中频繁出现,尤其在与文件上传漏洞结合时危害巨大。本文聚焦.htaccess的攻防两面,深入剖析文件解析劫持、P

jlins_you的专栏 537

关闭搜狗输入法右下角广告的解决方案

本文主要介绍了关闭搜狗输入法右下角广告的解决方案,希望能对使用搜狗输入法的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

Java基础面试题总结《七》

本文深入解析了MySQL索引与MVCC的核心原理。主要内容包括: 聚集索引与非聚集索引的区别:聚集索引决定数据物理存储顺序(叶子节点存完整数据),而非聚集索引叶子节点只存主键值,查询时需回表。 索引失效的6种场景:包括对索引列运算/使用函数、违反最左前缀原则、隐式类型转换、使用!=/NOT IN、%开头的LIKE查询、OR连接非索引列等。 不建议建索引的4种情况:数据量小、字段区分度低、写多读少的表、查询使用函数/模糊匹配等。 MVCC机制:通过多版本控制和Read View实现无锁读取,解决读写冲突,但写

qq_55862497的博客 218

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MySQL问答200

本文涵盖MySQL全栈面试核心内容,包括:基础概念(关系型数据库特性、体系结构);存储引擎对比(InnoDB/MyISAM);索引原B+树、聚簇索引)与优化策略;事务ACID与隔离级别实现;锁机制(行锁、间隙锁)与MVCC原理;日志系统(redo/undo/binlog);SQL优化与执行计划分析;高可用方案(主从复制、分库分表);InnoDB底层机制(Buffer Pool、Checkpoint);以及MySQL 8.0新特性。

weixin_72753562的博客 827

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

连接池Connection Pool 单例设计

连接池单例模式 1.私有化ComboPooledDataSource将其作为属性,使其实现单例

Java仗剑走天涯 3123

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

12. DBC 及 Capture.ini 配置 | OrCAD X Capture CIS 设计小诀窍

关键属性和数据库中器件属性进行关联,依次选择每一个元器件表中与Part_Number(物料编码)、Value(值)、Part_Type(物料分类)、Schematic_Part(原理图符号名称)、PCB_Footprint(PCB封装名称)、PSpice_Model(PSpice模型)对应的字段,其中,PCB_Footprint和PSpice_Model为选填项,如图6、7、8所示。界面,可以设置当器件摆放到原理图时,哪些参数值显示在原理图中,设置完成后,点击“下一页”即可。

Xinqiaoe_的博客 4709

Java jdbc数据库连接池总结!

1. 引言   近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机  应用程序已从传统的桌面应用转到Web应用。基于B/S(Browser/Server)架构的3层开发模式逐渐取代C/S(Client/Server)架构的开发模式,成为开发企业级应用和电子商务普遍采用的技术。在Web应用开发的早期,主要使用的技术是CGI﹑ASP﹑PHP等。之后,Su...

Pump Liu 1376

设计模式--单例模式的三种实现方式(java版)

设计模式可以说是前辈们总结的代码编写精髓;值得我们细细品味,多多学习,当然仅仅学习,是不够的。要想掌握到精髓,需要多多使用,能灵活的正确使用到我们的项目中,才算真正的学会了。下面我们来介绍设计模式中最最基础的设计模式之一单例模式的三种单例模式的实现方式; 一、饿汉式 /** * 饿汉-单例模式 */ public class Singleton1 { //1.定义私有静态变量,类...

一粒小石子 1545
上一篇: linux下安装JBoos5和7的方法步骤
下一篇: 单例模式实现C3P0数据库连接池
墨桐
博客等级 码龄16年 7粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值