常用的设计模式以及操作Redis、MySQL数据库、各种MQ、数据类型转换的方法

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 常用的设计模式以及操作Redis、MySQL数据库、各种MQ、数据类型转换的方法


🌟 如何优雅地写出高质量的Java代码

Java作为一门高级编程语言,被广泛应用于各种应用程序开发中。写出高质量的Java代码是每一个Java开发人员的追求。本文将介绍如何优雅地写出高质量的Java代码,包括设计模式、操作Redis、MySQL数据库、各种MQ、数据类型转换等方面。

🍊 设计模式

设计模式是Java开发中的重要概念,它是一种解决常见问题的经典思想。设计模式的好处在于,它可以提升代码的可读性、可维护性和可扩展性。以下是Java开发中常用的设计模式:

🎉 单例模式

单例模式是一种只允许创建一个实例的设计模式。在Java中,可以通过以下方式来实现单例模式:

public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

🎉 工厂模式

工厂模式是一种将对象的创建和使用分离的设计模式。在Java中,可以通过以下方式来实现工厂模式:

public interface Shape {
    void draw();
}
public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}
public class ShapeFactory {
    public Shape getShape(String shapeType) {
        if (shapeType == null) {
            return null;
        }
        if (shapeType.equalsIgnoreCase("rectangle")) {
            return new Rectangle();
        } else if (shapeType.equalsIgnoreCase("circle")) {
            return new Circle();
        }
        return null;
    }
}

🎉 观察者模式

观察者模式是一种用于对象间的一对多依赖关系的设计模式。在Java中,可以通过以下方式来实现观察者模式:

public interface Observer {
    void update(String message);
}
public interface Subject {
    void attach(Observer observer);
    void detach(Observer observer);
    void notifyObservers(String message);
}
public class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();
    @Override
    public void attach(Observer observer) {
        observers.add(observer);
    }
    @Override
    public void detach(Observer observer) {
        observers.remove(observer);
    }
    @Override
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}
public class ConcreteObserver implements Observer {
    private String name;
    public ConcreteObserver(String name) {
        this.name = name;
    }
    @Override
    public void update(String message) {
        System.out.println(name + " received message: " + message);
    }
}

🍊 操作Redis

Redis是一种高性能的键值存储数据库,它可以用于缓存、队列等应用场景。以下是Java中操作Redis常用的方法:

🎉 连接Redis

Jedis jedis = new Jedis("localhost", 6379);

🎉 存储数据

jedis.set("key", "value");

🎉 获取数据

String value = jedis.get("key");

🎉 删除数据

jedis.del("key");

🎉 关闭连接

jedis.close();

🍊 操作MySQL数据库

MySQL是一种常用的关系型数据库,Java操作MySQL也非常常见。以下是Java中操作MySQL常用的方法:

🎉 连接MySQL

String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);

🎉 插入数据

String sql = "INSERT INTO table (column1, column2) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "value1");
pstmt.setString(2, "value2");
pstmt.executeUpdate();

🎉 查询数据

String sql = "SELECT * FROM table WHERE column1=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "value1");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
    String column2 = rs.getString("column2");
}

🎉 更新数据

String sql = "UPDATE table SET column1=? WHERE column2=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "value1");
pstmt.setString(2, "value2");
pstmt.executeUpdate();

🎉 删除数据

String sql = "DELETE FROM table WHERE column1=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "value1");
pstmt.executeUpdate();

🎉 关闭连接

conn.close();

🍊 各种MQ

MQ(Message Queue)是一种网络通信协议,用于实现异步消息通信。以下是Java中常用的MQ:

🎉 ActiveMQ

ActiveMQ是一种流行的开源消息通信中间件,它支持多种协议,包括AMQP、STOMP、MQTT等。以下是Java中使用ActiveMQ的方法:

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("queue");
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage("Hello, world!");
producer.send(message);
session.close();
connection.close();

🎉 RabbitMQ

RabbitMQ是一种功能齐全的开源消息通信中间件,它支持多种协议,包括AMQP。以下是Java中使用RabbitMQ的方法:

ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare("queue", false, false, false, null);
String message = "Hello, world!";
channel.basicPublish("", "queue", null, message.getBytes());
channel.close();
connection.close();

🎉 Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它的设计目标就是处理大规模的消息数据。以下是Java中使用Kafka的方法:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
String topic = "topic";
String message = "Hello, world!";
producer.send(new ProducerRecord<>(topic, message));
producer.close();

🍊 数据类型转换

数据类型转换是Java开发中的常见操作,它可以将不同的数据类型之间进行转换。以下是Java中常用的数据类型转换方法:

🎉 String转int

String str = "123";
int i = Integer.parseInt(str);

🎉 int转String

int i = 123;
String str = Integer.toString(i);

🎉 String转double

String str = "3.14";
double d = Double.parseDouble(str);

🎉 double转String

double d = 3.14;
String str = Double.toString(d);

🎉 Date转String

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);

🎉 String转Date

String str = "2021-01-01 00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
相关文章
|
2月前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
184 85
|
9天前
|
缓存 NoSQL 关系型数据库
Redis与MySQL的数据一致性
在高并发环境下,保持 Redis 和 MySQL 的数据一致性是一个复杂但重要的问题。通过采用读写穿透、写穿透、分布式锁、双写一致性保障和延时双删策略,可以有效地减少数据不一致的风险,确保系统的稳定性和可靠性。通过合理的缓存策略和数据同步机制,可以显著提升系统的性能和用户体验。
66 22
|
26天前
|
传感器 安全 物联网
时序数据库TDengine + MQTT :车联网时序数据库如何高效接入
现代新能源汽车配备大量传感器,产生海量数据需上报至车联网平台。TDengine作为时序大数据平台,支持MQTT协议,可轻松实现车辆状态、位置及用户行为数据的实时采集与分析,提升驾驶体验和安全保障。通过简单的Web界面配置,无需编写代码,即可完成从MQTT到TDengine的数据接入。整个过程包括注册TDengine Cloud、创建数据库、安装代理插件、新增数据源、配置解析规则等步骤,快速实现数据同步。
40 2
|
2月前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
118 14
|
1月前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
108 7
|
2月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
169 26
|
2月前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
207 7
|
2月前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
58 5
|
3月前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
85 14
|
3月前
|
存储 NoSQL 关系型数据库
MySQL和Redis的区别
**MySQL和Redis的区别** MySQL和Redis都是流行的数据存储解决方案,但它们在设计、用途和特性上有显著区别。理解这些区别有助于选择合适的数据库来满足不同的应用需求。本文将详细介绍MySQL和Redis的区别,包括它们的架构、使用场景、性能和其他关键特性。 ### 一、基本概述 **MySQL**: MySQL是一个关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL)进行数据管理。它支持事务、复杂查询和多种存储引擎,广泛应用于各种Web应用、企业系统和数据分析项目。 **Redis**: Redis是一个基于内存的键值数据库,通常被称为NoSQL数
221 4