这里举的例子使用MySQL存储用户信息和博客文章的关系数据,同时使用MongoDB存储博客文章的评论,因为评论可以是不同结构的半结构化数据。
MySQL部分如下
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class MySQLExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/blog_db";
String username = "user";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
// 假设创建一个用户并发布一篇博客文章
createUser(connection, "john_doe", "[email protected]");
createBlogPost(connection, "john_doe", "My First Blog Post", "This is the content of my first blog post.");
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void createUser(Connection connection, String username, String email) throws SQLException {
String insertUserQuery = "INSERT INTO users (username, email) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(insertUserQuery);
preparedStatement.setString(1, username);
preparedStatement.setString(2, email);
preparedStatement.executeUpdate();
}
public static void createBlogPost(Connection connection, String author, String title, String content) throws SQLException {
String insertPostQuery = "INSERT INTO blog_posts (author, title, content) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(insertPostQuery);
preparedStatement.setString(1, author);
preparedStatement.setString(2, title);
preparedStatement.setString(3, content);
preparedStatement.executeUpdate();
}
}
MongoDB部分如下
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoDBExample {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("blog_db");
// 假设存储博客文章的评论
storeBlogPostComment(database, "My First Blog Post", "User1", "Great post!");
storeBlogPostComment(database, "My First Blog Post", "User2", "I learned a lot from this.");
mongoClient.close();
}
public static void storeBlogPostComment(MongoDatabase database, String blogPostTitle, String commenter, String comment) {
MongoCollection commentsCollection = database.getCollection("comments");
Document commentDoc = new Document();
commentDoc.append("blogPostTitle", blogPostTitle)
.append("commenter", commenter)
.append("comment", comment);
commentsCollection.insertOne(commentDoc);
}
}
数据定义:
结构化数据:结构化数据是按照明确定义的数据模型组织的数据。通常,结构化数据以表格、行和列的形式存储,遵循预定义的模式,如数据库表中的数据。它具有明确定义的字段和数据类型,通常使用关系型数据库来存储和管理。
非结构化数据:非结构化数据没有明确定义的数据模型。这种数据可能是自由文本、图像、音频、视频、日志文件、社交媒体帖子等。非结构化数据不遵循固定的结构或模式,其内容和格式可以变化。
数据存储:
结构化数据:结构化数据通常以表格或数据库表的形式存储在关系型数据库中。这种数据易于查询、分析和报告,因为字段和值都有固定的结构。
非结构化数据:非结构化数据通常以文件、文档、二进制数据等形式存储在文件系统、NoSQL数据库或其他存储介质中。处理非结构化数据通常需要特定的工具和方法。
数据分析:
结构化数据:结构化数据更容易进行直接的数据分析,因为字段和关系是明确定义的。它适用于传统的商业智能和数据仓库分析。
非结构化数据:非结构化数据的分析通常需要使用自然语言处理、机器学习、图像识别等高级技术。这些数据常用于大数据分析、社交媒体情感分析和图像识别等应用。
设备处理和保存数据的方法大体上分为两种:一种是对保存的数据定期进行采集和处理的批处 理,另一种是将收到的数据逐次进行处理的流处理。
智能家居为了能准确判断房间里有没有人,需要从多个传感器的值所包含的关联性来判断人在或不在房间里。人类凭经验去摸索和决定这种值,机器则靠数据分析。数据分析的代表性方法有两种,分别是统计分析和机器学习。
统计分析:
靠人类手工操作进行的分析,基于统计学原理和方法。它包括描述性统计(例如均值、中位数、标准差)、推断统计(例如假设检验、置信区间)、回归分析、方差分析等。统计分析通常依赖于概率论和数理统计的基本概念。
机器学习:
机器学习就如它的字面意思一样,计算机会按照程序决定的算法, 机械性地学习所给数据之间的联系性。当给出未知数据时,也会输出与其对应的值。机器学习分为两个阶段:学习阶段和识别阶段。
举个例子,假设我们想使用若干种传感器来识别房间里有没有人。这种情况下需要准备两种数据,即房间里有人时的传感器数据(正面例子)和房间里没人时的传感器数据(反面例子)。计算机通过把这两种数据分别交给学习器,可以获取制作鉴别器用的参数。对于以参数为基准制作的鉴别器而言,只要输入从各个感测设备接收到的数据,鉴别器就能输出结果,告诉我们现在房间里是否有人。
上述内容属于机器学习的示例之一,被称作分类问题。在用于执行数据分类的机器学习算法中有很多途径,如用于垃圾邮件过滤器的贝叶斯过滤器和用于分类文档及图像的支持向量机(Support Vector Machine, SVM)等。
静态方法(使用 static
关键字声明):属于类,不依赖于对象实例,可以通过类名直接调用。
实例方法(不使用 static
关键字声明):属于类的实例,必须通过对象实例调用。
public class Example {
static void staticMethod() {
System.out.println("Static method");
}
void instanceMethod() {
System.out.println("Instance method");
}
public static void main(String[] args) {
staticMethod(); // 可以直接调用静态方法
Example obj = new Example();
obj.instanceMethod(); // 需要通过对象调用实例方法
}
}