背景
2022年着实有点忙,但是我依然坚持不放下编写代码,又苦于不写什么?再上半年的一场直播课准备中,一个短暂而宏伟的目标闪现到我的脑海,就是编写几个纯Java的软件。于是从3月份就开始着实计划实施。终于折腾出来了,现在分享给大家。
我先分享软件的界面,再给大家说说软件实现的原理!
下载地址
- 软件支持Windwos 版本、Mac版本
- 下载地址:bg-boom-ui
软件特点
- 纯Java开发
- 免费使用
直入美图,期望大家多多支持
支持背景美图,支持本地图片、网络图片等
支持视频背景,支持TV、广播、小视频、直播流等
支持皮肤+背景图切换,海量图片可在软件中获取
默认的界面,简洁清晰
功能支持
- 基本实现了Navicat的常用功能
- 更多功能还在陆续开发,敬请期待~
软件的实现原理
软件通过Mysql的Jdbc驱动类进行实现,区别于其它软件基于Mysql通讯协议实现。
核心实现的连接管理实现如下(由于时间关系这里暂没有实现长连接):
package com.madou.dbtool.mysql.manager;
import com.madou.inters.util.TipUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
/**
* 管理多个数据库的数据源
* @author miukoo
*/
public class ConnectionManagerFactory {
private static final Map<String, Connection> CONNECTION_MAP = new HashMap<>();
/**
* 最大连接次数
*/
private static final int maxRetry = 2;
public static Connection getConnection(ConnectionInfo connectionInfo,String database) {
return getConnection(connectionInfo, database, 0);
}
/**
* 获取连接,并最多获取三次
* @param connectionInfo
* @param database
* @param count
* @return
*/
private static Connection getConnection(ConnectionInfo connectionInfo,String database,int count) {
if(count>maxRetry) {
return null;
}
String id = String.format("%s-%s-%s",connectionInfo.getHost(),connectionInfo.getPort(),database);
Connection connection = CONNECTION_MAP.get(id);
if(connection==null) {
try {
String url = String.format("jdbc:mysql://%s:%d/%s?useUnicode=true&characterEncoding=UTF-8&connectTimeout=500", connectionInfo.getHost(), connectionInfo.getPort(), database);
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(url, connectionInfo.getUsername(), connectionInfo.getPassword());
} catch (Exception e) {
if(count==maxRetry){
TipUtils.showErrorDialog("获取数据库连接失败:"+e.getMessage(),"Tips");
}else if(count<maxRetry) {
return getConnection(connectionInfo, database,count+1);
}
}
}else{
try {
if(connection.isClosed()){
connection=null;
if(count<maxRetry) {
return getConnection(connectionInfo, database,count+1);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
CONNECTION_MAP.put(id,connection);
return connection;
}
}
版权归原作者 miukoo 所有, 如有侵权,请联系我们删除。