包含vertx连接mysql数据库的词条

本文目录一览:

通过代理在java连接mysql问题,怎么解决

首先,准备开发工具套件,我们并不会引入过多工具包,仅仅需要: Java8 Vert.x 3 如果你是用Maven做为项目管理工具,请将Vert.x 3引入: io.vertx vertx-core3.3.2 代码实现: package com.maxleap.mysqlproxy; import io.vertx.core.AbstractVe…

如何用java 5分钟实现一个最简单的mysql代理服务器

public class MysqlProxyServer {

private static final Logger logger = LoggerFactory.getLogger(MysqlProxyServer.class);

public static void main(String[] args) {

Vertx.vertx().deployVerticle(new MysqlProxyServerVerticle());

}

public static class MysqlProxyServerVerticle extends AbstractVerticle {

private final int port = 3306;

private final String mysqlHost = “10.10.0.6”;

@Override

public void start() throws Exception {

NetServer netServer = vertx.createNetServer();//创建代理服务器

NetClient netClient = vertx.createNetClient();//创建连接mysql客户端

netServer.connectHandler(socket – netClient.connect(port, mysqlHost, result – {

//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接

if (result.succeeded()) {

//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法

new MysqlProxyConnection(socket, result.result()).proxy();

} else {

logger.error(result.cause().getMessage(), result.cause());

socket.close();

}

})).listen(port, listenResult – {//代理服务器的监听端口

if (listenResult.succeeded()) {

//成功启动代理服务器

logger.info(“Mysql proxy server start up.”);

} else {

//启动代理服务器失败

logger.error(“Mysql proxy exit. because: ” + listenResult.cause().getMessage(), listenResult.cause());

System.exit(1);

}

});

}

}

public static class MysqlProxyConnection {

private final NetSocket clientSocket;

private final NetSocket serverSocket;

public MysqlProxyConnection(NetSocket clientSocket, NetSocket serverSocket) {

this.clientSocket = clientSocket;

this.serverSocket = serverSocket;

}

private void proxy() {

//当代理与mysql服务器连接关闭时,关闭client与代理的连接

serverSocket.closeHandler(v – clientSocket.close());

//反之亦然

clientSocket.closeHandler(v – serverSocket.close());

//不管那端的连接出现异常时,关闭两端的连接

serverSocket.exceptionHandler(e – {

logger.error(e.getMessage(), e);

close();

});

clientSocket.exceptionHandler(e – {

logger.error(e.getMessage(), e);

close();

});

//当收到来自客户端的数据包时,转发给mysql目标服务器

clientSocket.handler(buffer – serverSocket.write(buffer));

//当收到来自mysql目标服务器的数据包时,转发给客户端

serverSocket.handler(buffer – clientSocket.write(buffer));

}

private void close() {

clientSocket.close();

serverSocket.close();

}

}

}

测试一下

try {

Class.forName(name);//指定连接类型

Connection conn = DriverManager.getConnection(url, user, password);//url为代理服务器的地址

PreparedStatement pst = conn.prepareStatement(“select * from test;”);//准备执行语句

ResultSet resultSet = pst.executeQuery();

while (resultSet.next()) {

System.out.println(resultSet.getLong(1) + “: ” + resultSet.getString(2));

}

} catch (Exception e) {

e.printStackTrace();

}

vertx怎么上传图片到MySQL

两种办法:1、以char或varchar类型保存图片的上传路径;2、以blob格式把图片以二进制保存在数据库里。建议用第一种至于用不用PDO,全凭喜好,以MySQL完全可以办到。

如何用Java快速实现一个最简单的MySQL代理呢?

首先,准备开发工具套件,我们并不会引入过多工具包,仅仅需要:

Java8

Vert.x 3

如果你是用Maven做为项目管理工具,请将Vert.x 3引入:

dependency

groupIdio.vertx/groupId

artifactIdvertx-core/artifactIdversion3.3.2/version

/dependency

代码实现:

package com.maxleap.mysqlproxy;

import io.vertx.core.AbstractVerticle;

import io.vertx.core.Vertx;

import io.vertx.core.logging.Logger;

import io.vertx.core.logging.LoggerFactory;

import io.vertx.core.net.NetClient;

import io.vertx.core.net.NetServer;

import io.vertx.core.net.NetSocket;

/**

* @author sneaky

* @since 1.0.0

*/

public class MysqlProxyServer {

private static final Logger logger = LoggerFactory.getLogger(MysqlProxyServer.class);

public static void main(String[] args) {

Vertx.vertx().deployVerticle(new MysqlProxyServerVerticle());

}

public static class MysqlProxyServerVerticle extends AbstractVerticle {

private final int port = 3306;

private final String mysqlHost = “10.10.0.6”;

@Override

public void start() throws Exception {

NetServer netServer = vertx.createNetServer();//创建代理服务器

NetClient netClient = vertx.createNetClient();//创建连接mysql客户端

netServer.connectHandler(socket – netClient.connect(port, mysqlHost, result – {

//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接

if (result.succeeded()) {

//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法

new MysqlProxyConnection(socket, result.result()).proxy();

} else {

logger.error(result.cause().getMessage(), result.cause());

socket.close();

}

})).listen(port, listenResult – {//代理服务器的监听端口

if (listenResult.succeeded()) {

//成功启动代理服务器

logger.info(“Mysql proxy server start up.”);

} else {

//启动代理服务器失败

logger.error(“Mysql proxy exit. because: ” + listenResult.cause().getMessage(), listenResult.cause());

System.exit(1);

}

});

}

}

public static class MysqlProxyConnection {

private final NetSocket clientSocket;

private final NetSocket serverSocket;

public MysqlProxyConnection(NetSocket clientSocket, NetSocket serverSocket) {

this.clientSocket = clientSocket;

this.serverSocket = serverSocket;

}

private void proxy() {

//当代理与mysql服务器连接关闭时,关闭client与代理的连接

serverSocket.closeHandler(v – clientSocket.close());

//反之亦然

clientSocket.closeHandler(v – serverSocket.close());

//不管那端的连接出现异常时,关闭两端的连接

serverSocket.exceptionHandler(e – {

logger.error(e.getMessage(), e);

close();

});

clientSocket.exceptionHandler(e – {

logger.error(e.getMessage(), e);

close();

});

//当收到来自客户端的数据包时,转发给mysql目标服务器

clientSocket.handler(buffer – serverSocket.write(buffer));

//当收到来自mysql目标服务器的数据包时,转发给客户端

serverSocket.handler(buffer – clientSocket.write(buffer));

}

private void close() {

clientSocket.close();

serverSocket.close();

}

}

}

测试一下

try {

Class.forName(name);//指定连接类型

Connection conn = DriverManager.getConnection(url, user, password);//url为代理服务器的地址

PreparedStatement pst = conn.prepareStatement(“select * from test;”);//准备执行语句

ResultSet resultSet = pst.executeQuery();

while (resultSet.next()) {

System.out.println(resultSet.getLong(1) + “: ” + resultSet.getString(2));

}

} catch (Exception e) {

e.printStackTrace();

}

vertx为什么不火

国内没有普及。Vertx发布于2011年,除了多语言支持,也已经支持了Postgres、MySQL、MongoDB、Redis等常用组件,只在华为的开源框架servicecomb上有用到过,基本上只能看官网和英文网站才有比较深入的介绍,国内还没有普及,要将vertx用到生产,必定绕不开它的集群部署模式,而它依赖的组件(如hazelcast)的中文介绍更是少得可怜。

原创文章,作者:YJYSE,如若转载,请注明出处:https://www.506064.com/n/317241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YJYSEYJYSE
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相关推荐

  • 如何修改mysql的端口号

    本文将介绍如何修改mysql的端口号,方便开发者根据实际需求配置对应端口号。 一、为什么需要修改mysql端口号 默认情况下,mysql使用的端口号是3306。在某些情况下,我们需…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • MySQL递归函数的用法

    本文将从多个方面对MySQL递归函数的用法做详细的阐述,包括函数的定义、使用方法、示例及注意事项。 一、递归函数的定义 递归函数是指在函数内部调用自身的函数。MySQL提供了CRE…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • MySQL bigint与long的区别

    本文将从数据类型定义、存储空间、数据范围、计算效率、应用场景五个方面详细阐述MySQL bigint与long的区别。 一、数据类型定义 bigint在MySQL中是一种有符号的整…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • MySQL左连接索引不生效问题解决

    在MySQL数据库中,经常会使用左连接查询操作,但是左连接查询中索引不生效的情况也比较常见。本文将从多个方面探讨MySQL左连接索引不生效问题,并给出相应的解决方法。 一、索引的作…

    编程 2025-04-28

发表回复

登录后才能评论