JAVA从url中分离ip和port

具体代码:

public class NetAddrUtil {
	/**
	 * 从url中分析出hostIP<br/>
	 * @param url
	 * @author wull 
	 * @return
	 */
	public static String getIpFromUrl(String url) {
		// 1.判断是否为空
		if (url == null || url.trim().equals("")) {
			return "";
		}
		
		// 2. 如果是以localhost,那么替换成127.0.0.1
		if(url.startsWith("http://" + C.Net.LOCALHOST_STR) ){
			url = url.replace("http://" + C.Net.LOCALHOST_STR, "http://" + C.Net.LOCALHOST_NUM) ;
		}
		
		String host = "";
		Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+");
		Matcher matcher = p.matcher(url);
		if (matcher.find()) {
			host = matcher.group();
		}
		return host;
	}
	
	/**
	 * 从url中分析出hostIP:PORT<br/>
	 * @param url
	 * @author wull	 */
	public static IpPortAddr getIpPortFromUrl(String url) {
		// 1.判断是否为空
		if (url == null || url.trim().equals("")) {
			return null;
		}
		
		// 2. 如果是以localhost,那么替换成127.0.0.1
		if(url.startsWith("http://" + C.Net.LOCALHOST_STR) ){
			url = url.replace("http://" + C.Net.LOCALHOST_STR, "http://" + C.Net.LOCALHOST_NUM) ;
		}
		
		String host = "";
		Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+(:\\d{0,5})?");
		Matcher matcher = p.matcher(url);
		if (matcher.find()) {
			host = matcher.group() ;
		}
		
		// 如果
		if(host.contains(":") == false){
			return new IpPortAddr(host, 80 );
		}
		
		String[] ipPortArr = host.split(":");
		return new IpPortAddr(ipPortArr[0] , ConfigUtil.parseInt( ipPortArr[1] ));
	}
	
	public static void main(String [] args){
		String url = "http://10.33.32.81:8080/login.action";
		System.out.println(NetAddrUtil.getIpFromUrl(url) );
		IpPortAddr addr= NetAddrUtil.getIpPortFromUrl(url) ;
		System.out.println(addr.getIp() +"=========>" +addr.getPort() );
	}
}

 

执行结果:

10.33.32.81
10.33.32.81=========>8080

 


10.33.32.81
10.33.32.81=========>8080


 

 

Java连接主备数据库进行读写分离可以使用JDBC的方式进行连接,具体步骤如下: 1. 引入JDBC驱动程序,例如MySQL Connector/J; 2. 创建主库备库的连接URL,格式为jdbc:mysql://host:port/database,其中hostport分别为主库备库的IP地址端口号,database为数据库名称; 3. 创建主库备库的连接用户名密码; 4. 根据需要发送读请求或写请求,使用Connection、PreparedStatement、ResultSet等JDBC对象进行操作。 下面是一个使用Java连接主备数据库进行读写分离的示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MySQLReadWriteSplittingExample { public static void main(String[] args) { String masterUrl = "jdbc:mysql://master-server:3306/mydatabase"; String slaveUrl = "jdbc:mysql://slave-server:3306/mydatabase"; String user = "myuser"; String password = "mypassword"; Connection masterConnection = null; Connection slaveConnection = null; PreparedStatement statement = null; ResultSet resultSet = null; try { // 连接主库 masterConnection = DriverManager.getConnection(masterUrl, user, password); // 发送读请求 statement = masterConnection.prepareStatement("SELECT * FROM mytable"); resultSet = statement.executeQuery(); // 处理查询结果 while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } // 连接备库 slaveConnection = DriverManager.getConnection(slaveUrl, user, password); // 发送写请求 statement = slaveConnection.prepareStatement("INSERT INTO mytable (id, name) VALUES (?, ?)"); statement.setInt(1, 1); statement.setString(2, "John Doe"); statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { // 释放资源 try { if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (masterConnection != null) { masterConnection.close(); } if (slaveConnection != null) { slaveConnection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在上面的示例代码中,我们创建了主库连接备库连接的URL、用户名密码,然后分别使用这两个连接对象进行了读操作写操作。由于使用的是两个独立的连接对象,因此需要分别释放资源。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值