用Java实现人工智能
用Java实现人工智能
#Java #人工智能 #AI #机器学习 #深度学习 #数据科学 #技术博客 #编程技巧
文章目录
- 前言
- 环境准备
- 1. 安装Java
- 2. IDE选择
- 3. 依赖管理
- 数据准备
- 模型训练
- 模型评估
- 分类模型评估
- 回归模型评估
- 模型的交叉验证
- 模型部署
- 部署模型的基本步骤
- 模型保存与加载
- Docker容器化
- 监控和维护
- 总结
前言
用Java实现人工智能
在人工智能(AI)和机器学习(ML)领域,Python凭借其丰富的库和简洁的语法一跃成为主流语言。然而,Java作为一门老牌编程语言,以其卓越的性能和稳定性在AI开发中同样展现出了强劲的竞争力。从数据预处理到模型训练,再到最终的部署,Java在每个环节中都具有独特的优势。今天,我们将深入探讨如何在Java环境中实现人工智能。
环境准备
1. 安装Java
在开始你的AI开发旅程之前,首先要确保你的开发环境中已经安装了Java开发工具包(JDK)。
我强烈推荐你使用最新的长期支持(LTS)版本,例如Java 21。这不仅能让你享受到最新的功能和改进,
还能确保你的开发工作得到最优质的支持和稳定性。更新到LTS版本,将为你在AI开发中的每一步打下坚实的基础。
2. IDE选择
选择一个功能强大的IDE可以显著提升你的开发效率。推荐以下两个IDE,它们各具特色,能够满足你的Java开发需求:
- IntelliJ IDEA:这款IDE以其丰富的插件生态和强大的工具支持而闻名,特别适合Java开发者。其智能代码补全、强大的调试功能和无缝的版本控制集成,能够极大地提升你的开发体验。
- Eclipse:作为另一款广受欢迎的Java IDE,Eclipse提供了一个强大的插件系统,支持各种开发需求。其灵活的配置和广泛的社区支持,使得它成为一个稳健的开发环境选择。
3. 依赖管理
在Java项目中,使用构建工具来管理依赖和构建流程是提升开发效率的关键步骤。推荐以下两款出色的构建工具,
它们各具特色,可以满足不同的开发需求:
-
Maven:Maven是一个经典且广泛使用的构建工具,以其清晰的生命周期管理和标准化的项目结构著称。它的依赖管理系统十分强大,可以轻松地处理项目中的各种依赖和插件,使得构建和部署变得更加高效和一致。
-
Gradle:Gradle代表了现代构建工具的前沿,它不仅支持灵活的构建配置,还具备极高的性能。Gradle的构建脚本基于Groovy或Kotlin DSL,使得配置更加简洁和直观。它的增量构建和缓存机制显著提升了构建速度,尤其适合大型和复杂的项目。
无论你是偏好Maven的规范性,还是倾向于Gradle的灵活性,这两款工具都能为你的Java项目提供强大的支持。
数据准备
在人工智能(AI)开发中,数据准备是成功实现模型的关键步骤。对于使用Java进行数据处理,以下工具和库可以极大地简化数据准备和处理过程,
帮助你高效地管理和操作数据:
- Apache Commons CSV
Apache Commons CSV 是一个强大的库,用于处理CSV文件的读写操作。它简化了CSV文件的解析,使得数据导入和导出变得更加高效。
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.IOException;public class CSVReaderExample {public static void main(String[] args) throws IOException {FileReader reader = new FileReader("data.csv");CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT.withHeader());for (CSVRecord record : parser) {System.out.println(record.get("ColumnName")); // 替换为实际的列名}parser.close();}
}
- Apache POI
Apache POI 允许你处理Excel文件(XLS和XLSX格式),这是处理表格数据时的常用工具。它支持读取和写入Excel文件,使得从Excel中提取数据变得简便。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;public class ExcelReaderExample {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("data.xlsx");Workbook workbook = new XSSFWorkbook(fis);Sheet sheet = workbook.getSheetAt(0);for (Row row : sheet) {for (Cell cell : row) {System.out.print(cell.toString() + "\t");}System.out.println();}workbook.close();}
}
-
Java Data Science Library (JDSL)
Java Data Science Library (JDSL) 提供了处理和分析大数据集的功能,包括数据清洗和转换。它可以与其他机器学习工具集成,处理复杂的数据预处理任务。 -
Apache Spark
Apache Spark 是一个分布式数据处理框架,适合处理大规模的数据集。Spark的Java API使得你可以进行高效的数据处理和分析,并与机器学习库集成。
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;public class SparkExample {public static void main(String[] args) {SparkSession spark = SparkSession.builder().appName("Spark Example").getOrCreate();Dataset<Row> data = spark.read().csv("data.csv");data.show();spark.stop();}
}
-
DataVec
DataVec 是一个数据预处理和向量化库,通常与Deeplearning4j配合使用。它提供了丰富的数据转换功能,如标准化、归一化和分割等,帮助你将数据转换为适合模型训练的格式。 -
OpenCSV
OpenCSV 是另一个处理CSV文件的库,简单易用。它支持读写CSV文件,并且提供了对复杂数据结构的处理能力。
import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvException;
import java.io.FileReader;
import java.io.IOException;public class OpenCSVExample {public static void main(String[] args) throws IOException, CsvException {CSVReader reader = new CSVReader(new FileReader("data.csv"));List<String[]> records = reader.readAll();for (String[] record : records) {System.out.println(Arrays.toString(record));}}
}
利用这些工具和库,你可以有效地进行数据准备、清洗和转换,为后续的模型训练和开发打下坚实的基础。掌握这些工具,
将帮助你在AI开发中更高效地处理数据,提升整体开发体验。
模型训练
在Java中进行模型训练时,有几个强大的机器学习库可以帮助你高效地构建和训练机器学习模型。以下是一些推荐的库,它们各具特色,能够满足不同的需求:
- Deeplearning4j (DL4J)
Deeplearning4j 是一个全面的深度学习库,专为Java和Scala设计。它支持各种神经网络架构,包括卷积神经网络(CNN)和递归神经网络(RNN),并且与Hadoop和Spark集成良好,非常适合大规模数据处理。
主要特点:
- 支持多种神经网络结构。
- 与大数据处理工具(如Hadoop和Spark)无缝集成。
- 提供了丰富的API和灵活的配置选项。
- 支持GPU加速,提升训练速度。
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.lossfunctions.LossFunctions;
import org.nd4j.linalg.learning.config.Adam;public class DL4JExample {public static void main(String[] args) {MultiLayerNetwork model = new MultiLayerNetwork(new NeuralNetConfiguration.Builder().weightInit(WeightInit.XAVIER).updater(new Adam(0.001)).list().layer(0, new DenseLayer.Builder().nIn(784).nOut(128).activation(Activation.RELU).build()).layer(1, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD).activation(Activation.SOFTMAX).nOut(10).build()).build());model.init();// 模型训练代码}
}
官方网站:Deeplearning4j
- Weka
Weka 是一个流行的机器学习和数据挖掘工具包,提供了大量的分类、回归、聚类和数据预处理算法。它具有图形用户界面和Java API,适用于快速构建和测试模型。
主要特点:
- 提供丰富的算法库和数据预处理功能。
- 简单易用的图形界面和API。
- 支持多种数据格式,如CSV、ARFF。
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.classifiers.Classifier;
import weka.classifiers.functions.SMO;
import weka.core.SerializationHelper;public class WekaExample {public static void main(String[] args) throws Exception {ArffLoader loader = new ArffLoader();loader.setSource(new File("data.arff"));Instances data = loader.getDataSet();data.setClassIndex(data.numAttributes() - 1);Classifier model = new SMO();model.buildClassifier(data);// 模型评估和预测代码}
}
官方网站:Weka
- Smile
Smile (Statistical Machine Intelligence and Learning Engine)是一个全面的机器学习库,涵盖了统计分析和机器学习任务。它提供了高效的算法实现和数据处理功能。
主要特点:
- 支持分类、回归、聚类、降维等多种任务。
- 高效的算法实现,支持并行计算。
- 直观的API和丰富的文档
import smile.classification.SVM;
import smile.data.DataFrame;
import smile.data.vector.DoubleVector;
import smile.data.vector.IntVector;
import smile.validation.CrossValidation;
import smile.validation.Validation;public class SmileExample {public static void main(String[] args) {DataFrame data = DataFrame.of(DoubleVector.of("feature1", 1.0, 2.0, 3.0),DoubleVector.of("feature2", 4.0, 5.0, 6.0),IntVector.of("label", 0, 1, 0));SVM svm = SVM.fit(data);// 模型训练和评估代码}
}
官方网站:Smile
- Apache Mahout
Apache Mahout 是一个专注于大规模机器学习的库,主要用于推荐系统、分类和聚类。它可以与Hadoop和Spark集成,适合处理大规模的数据集。
主要特点
- 支持大规模机器学习任务。
- 与Hadoop和Spark集成良好。
- 提供了多种推荐算法和分类器
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.impl.recommender.UserBasedRecommender;
import org.apache.mahout.cf.taste.impl.recommender.UserBasedRecommenderBuilder;
import org.apache.mahout.cf.taste.impl.recommender.UserBasedRecommenderFactory;public class MahoutExample {public static void main(String[] args) throws Exception {DataModel model = new FileDataModel(new File("data.csv"));UserSimilarity similarity = new PearsonCorrelationSimilarity(model);UserBasedRecommender recommender = new UserBasedRecommenderBuilder().buildRecommender(model, similarity);// 模型训练和推荐代码}
}
官方网站:Apache Mahout
这些机器学习库为Java开发者提供了丰富的功能和灵活的选项,从而能够高效地构建和训练各种机器学习模型。
根据你的项目需求选择合适的库,将帮助你更好地实现AI应用。
模型评估
在机器学习和人工智能项目中,模型评估是确保你的模型能在实际应用中有效表现的关键步骤。模型评估的目的是衡量模型的性能,识别其优势和不足,
并根据评估结果进行相应的调整和优化。以下是一些常见的模型评估方法及其在Java中实现的示例:
分类模型评估
对于分类模型,我们常用的评估指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数(F1 Score)和ROC曲线(Receiver Operating Characteristic Curve)。
- 使用DL4J评估模型
Deeplearning4j提供了丰富的评估工具,可以轻松计算各种分类指标。
import org.deeplearning4j.eval.Evaluation;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;// 假设`testData`是测试数据集
Evaluation eval = new Evaluation();
eval.eval(testData.getLabels(), model.output(testData.getFeatures()));
System.out.println(eval.stats());
解释:
Evaluation 类用于评估分类模型的性能。
eval() 方法计算模型的预测结果和实际标签之间的指标。
stats()方法输出综合评估结果,包括准确率、精确率、召回率等。
- 使用Weka评估模型
Weka提供了直观的评估功能,可以通过其API计算常见的分类指标。
import weka.classifiers.Evaluation;
import weka.core.Instances;
import weka.core.converters.ArffLoader;public class WekaEvaluationExample {public static void main(String[] args) throws Exception {ArffLoader loader = new ArffLoader();loader.setSource(new File("data.arff"));Instances data = loader.getDataSet();data.setClassIndex(data.numAttributes() - 1);Classifier model = new SMO();model.buildClassifier(data);Evaluation eval = new Evaluation(data);eval.evaluateModel(model, data);System.out.println(eval.toSummaryString());}
}
解释:
Evaluation 类用于评估分类模型的性能。
evaluateModel() 方法计算模型的预测结果和实际标签之间的指标。
toSummaryString() 方法输出全面的评估报告。
回归模型评估
对于回归模型,我们常用的评估指标包括均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R² Score)。
- 使用Deeplearning4j评估回归模型
Deeplearning4j的回归模型也可以通过Evaluation类进行评估,但主要关注MSE和R²等指标。
import org.deeplearning4j.eval.RegressionEvaluation;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;// 假设`testData`是测试数据集
RegressionEvaluation eval = new RegressionEvaluation();
eval.eval(testData.getLabels(), model.output(testData.getFeatures()));
System.out.println(eval.stats());
解释:
RegressionEvaluation 类用于评估回归模型的性能。
eval() 方法计算模型的预测结果和实际标签之间的回归指标。
stats() 方法输出综合评估结果,包括MSE、RMSE等。
- 使用Smile评估回归模型
Smile库也支持回归模型的评估,提供了MSE、MAE等指标。
import smile.data.DataFrame;
import smile.data.vector.DoubleVector;
import smile.validation.MeanAbsoluteError;
import smile.validation.MeanSquaredError;public class SmileRegressionEvaluation {public static void main(String[] args) {// 假设`predictions`和`actuals`是预测值和实际值double[] predictions = {3.1, 4.2, 5.0};double[] actuals = {3.0, 4.0, 5.0};double mse = MeanSquaredError.of(predictions, actuals);double mae = MeanAbsoluteError.of(predictions, actuals);System.out.println("MSE: " + mse);System.out.println("MAE: " + mae);}
}
解释:
MeanSquaredError.of() 和 MeanAbsoluteError.of() 方法用于计算回归模型的MSE和MAE。
模型的交叉验证
交叉验证是一种评估模型泛化能力的技术,通过将数据集划分为多个子集并对模型进行多次训练和验证,获得更可靠的性能评估。
使用Weka进行交叉验证
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.classifiers.Evaluation;
import weka.classifiers.Classifier;public class WekaCrossValidationExample {public static void main(String[] args) throws Exception {ArffLoader loader = new ArffLoader();loader.setSource(new File("data.arff"));Instances data = loader.getDataSet();data.setClassIndex(data.numAttributes() - 1);Classifier model = new SMO();model.buildClassifier(data);Evaluation eval = new Evaluation(data);eval.crossValidateModel(model, data, 10, new Random(1));System.out.println(eval.toSummaryString());}
}
解释:
crossValidateModel() 方法用于执行交叉验证,参数包括模型、数据集、折数和随机种子。
toSummaryString() 方法输出交叉验证的综合结果。
模型部署
模型部署是将机器学习模型从开发环境迁移到生产环境的过程,以便实际应用中使用。有效的模型部署可以确保模型在真实世界的数据上稳定运行,
并提供准确的预测结果。以下是一些常见的Java模型部署方法及其相关工具和技术。
部署模型的基本步骤
- 模型保存:将训练好的模型保存到磁盘,通常以文件形式存储。
- 模型加载:在生产环境中加载保存的模型。
- 数据预处理:在模型推理之前,对输入数据进行预处理。
- 模型推理:使用模型进行预测。
- 结果处理:处理模型的输出结果,并将其返回给用户或系统。
- 监控和维护:监控模型的性能,进行必要的更新和维护。
模型保存与加载
在Java中,模型的保存和加载通常依赖于机器学习库的功能。例如,Deeplearning4j和TensorFlow都有相关的API用于模型的序列化和反序列化。
- 使用Deeplearning4j保存和加载模型
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.util.ModelSerializer;public class DL4JModelDeployment {public static void main(String[] args) throws Exception {// 保存模型MultiLayerNetwork model = ... // 你的训练模型ModelSerializer.writeModel(model, "model.zip", true);// 加载模型MultiLayerNetwork loadedModel = ModelSerializer.restoreMultiLayerNetwork("model.zip");}
}
- 使用TensorFlow for Java保存和加载模型
import org.tensorflow.SavedModelBundle;
import org.tensorflow.Tensor;public class TensorFlowJavaModelDeployment {public static void main(String[] args) {// 加载模型try (SavedModelBundle model = SavedModelBundle.load("model/path", "serve")) {// 创建输入TensorTensor<Float> input = Tensor.create(new float[]{...});// 进行预测Tensor<?> output = model.session().runner().feed("input_tensor_name", input).fetch("output_tensor_name").run().get(0);// 处理预测结果float[] result = output.copyTo(new float[...]);}}
}
- REST API部署
为了将模型部署为服务,提供REST API接口是一种常见的方法。你可以使用Java的Web框架(如Spring Boot)构建RESTful服务,来处理模型的预测请求。
创建Spring Boot应用
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ModelDeploymentApplication {public static void main(String[] args) {SpringApplication.run(ModelDeploymentApplication.class, args);}
}
定义控制器
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PredictionController {private final MultiLayerNetwork model;public PredictionController() throws Exception {this.model = ModelSerializer.restoreMultiLayerNetwork("model.zip");}@GetMapping("/predict")public String predict(@RequestParam(value = "input") String input) {// 数据预处理INDArray features = ... // 处理输入数据// 模型推理INDArray output = model.output(features);// 处理并返回结果return output.toString();}
}
Docker容器化
将模型和服务容器化是另一种流行的部署方式。Docker可以帮助你将模型和其依赖打包到一个容器中,确保在任何环境中都能一致地运行。
创建Dockerfile
# 使用OpenJDK作为基础镜像
FROM openjdk:11-jre-slim# 复制Spring Boot应用的JAR文件到容器中
COPY target/model-deployment.jar /app/model-deployment.jar# 设置工作目录
WORKDIR /app# 运行Spring Boot应用
CMD ["java", "-jar", "model-deployment.jar"]
构建和运行Docker镜像
docker build -t model-deployment .
docker run -p 8080:8080 model-deployment
监控和维护
一旦模型部署到生产环境中,持续监控其性能是至关重要的。你可以使用以下工具和技术来进行监控和维护:
- 日志记录:使用日志记录工具(如Log4j或SLF4J)来跟踪模型的预测和错误。
- 监控工具:集成监控工具(如Prometheus和Grafana)来实时监控模型的性能和健康状态。
- 自动化更新:实现自动化的模型更新机制,以便及时部署新的模型版本。
总结
**Java在人工智能领域的应用正变得越来越丰富,从数据处理到模型训练,再到模型部署,都有许多强大的工具和库可以利用。Deeplearning4j、Weka、
Smile等库为Java开发者提供了强大的功能,使得在Java环境中开发和部署AI应用成为可能。通过掌握这些工具和技巧,你可以充分发挥Java在AI开发中的优
势,构建高性能、可靠的人工智能系统。希望这篇博客能帮助你更好地理解和实现Java中的人工智能应用。如果你有任何问题或需要进一步讨论,请在评论区留言。我们下期再见**!
相关文章:

用Java实现人工智能
用Java实现人工智能 #Java #人工智能 #AI #机器学习 #深度学习 #数据科学 #技术博客 #编程技巧 文章目录 前言环境准备1. 安装Java2. IDE选择3. 依赖管理 数据准备模型训练模型评估分类模型评估回归模型评估模型的交叉验证 模型部署部署模型的基本步骤模型保存与加载Docker容器…...

MobaXterm使用技巧
引言 在现代IT环境中,远程管理和SSH连接已经成为管理员和开发者日常工作的重要组成部分。MobaXterm是一款功能强大的终端模拟器,它集成了多种网络工具,非常适合用于远程管理、编程和网络调试。本文将汇总一些MobaXterm的使用技巧,…...

openstack中的rabbitmq
基本概念 基础介绍 exchange:用于分发信息,有direct、fanout、topic、headers; binding:exchange、queue之间的虚拟连接,由一个或者多个routing key组成; queues:用来暂存消息,供…...

etcd三节点,其中一个坏掉了的恢复办法
一、配置etcdctl环境变量 --------------------------------------------------------------------------------------------- #其中证书实际路径和endpoints,以环境情况为准,查询方式 # ps -ef | grep etcd-cafile # ps -ef | grep etcd-servers export ETCDCTL_API3 export…...

计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

C编程控制PC蜂鸣器方法2
在《C编程控制PC蜂鸣器》一文中,我们了解并使用了通过IO端口控制的方式操作硬件,而有些时候这对于一些朋友来说太模糊了,很容易让人迷糊,这次采用最基本的write系统调用来写入input_event数据实现相同功能。这里涉及到的input_event可参考《C编程实现键盘LED闪烁方法2》一文…...

C# SQL 辅助工具
{/// <summary>/// sql 辅助工具/// </summary>public class SqlStructureHelps{#region 增删改查/// <summary>/// 截断/// </summary>/// <typeparam name"T"></typeparam>/// <returns></returns>public static …...

eNSP简单用法
建立一个简单的拓扑图 点击绿色三角开启设备 双击设备可以进行命令编辑 视图 分为三个视图:用户视图、系统视图、接口视图 用户视图 在默认模式下就是,为<huawei> 按ctrlz返回用户视图 系统视图: 在用户视图下输入sys切换&#…...

1035. 不相交的线
1. 题目 1035. 不相交的线 2. 解题思路 题目一看是求最值,那就可以考虑用DP来做。 核心点就是确定DP数组的含义以及状态转移方程: dp数组含义:dp[i][j],nums1 前 i 个数和 nums2 前 j 个数的最大连线数dp[i][j] dp[i - 1][j …...

1.pytest基础知识(默认的测试用例的规则以及基础应用)
一、pytest单元测试框架 1)什么是单元测试框架 单元测试是指再软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。 2)单元测试框架 java:junit和testing python:un…...

Linux常见查看文件命令
目录 一、cat 1.1. 查看文件内容 1.2. 创建文件 1.3. 追加内容到文件 1.4. 连接文件 1.5. 显示多个文件的内容 1.6. 使用管道 1.7. 查看文件的最后几行 1.8. 使用 -n 选项显示行号 1.9. 使用 -b 选项仅显示非空行的行号 二、tac 三、less 四、more 五、head 六、…...

初识 performance_schema:轻松掌握MySQL性能监控
什么是 performance_schema performance_schema 是 MySQL 5.8 版本的一个强大功能,它就像是一个内置的**“性能侦探”**,专门用来监控和分析 MySQL 服务器的资源消耗和等待情况。有了它,数据库管理员和开发者就能实时了解服务器的运行状态&a…...

linux下top命令查看和解释
怎么看top结果: top - 10:20:48 up 8 days, 14:07, 2 users, load average: 6.04, 5.82, 4.73 Tasks: 11099 total, 1 running, 10916 sleeping, 0 stopped, 1 zombie %Cpu(s): 8.9 us, 4.6 sy, 0.0 ni, 86.1 id, 0.1 wa, 0.0 hi, 0.3 si, 0.0 st K…...

换个手机IP地址是不是不一样?
在当今这个信息爆炸的时代,手机已经成为我们生活中不可或缺的一部分。而IP地址,作为手机连接网络的桥梁,也时常引起我们的关注。你是否曾经好奇,换个手机,IP地址会不会也跟着变呢?本文将深入探讨这个问题&a…...

【从计算机的发展角度理解编程语言】C、CPP、Java、Python,是偶然还是应时代的产物?
参考目录 前言什么是"computer"?计算机的大致发展历程计算机系统结构阶段(1946~1981)计算机网络和视窗阶段(1982~2007)复杂信息系统阶段(2008~today)人工智能阶段 越新的语言是越好的吗、越值得学习吗? 前言 最近读了 《Python语言程序设计基础》 这本书…...

《Google软件测试之道》笔记
介绍 GTAC:Google Test Automation Conference,Google测试自动化大会。 本书出版之前还有一本《微软测试之道》,值得阅读。 质量不是被测试出来的,但未经测试也不可能开发出有质量的软件。质量是开发过程的问题,而不…...

实战讲稿:Spring Boot整合MyBatis
文章目录 实战讲稿:Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…...

基于深度学习的眼部疾病检测识别系统
温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 眼部疾病的早期诊断对于防止视力下降乃至失明至关重要。然而,专业的医疗资源分布不均,尤其是在偏远地区,人们很难获得专业的眼科医生提供的及时诊断服务。本系统…...

curl格式化json之jq工具?
jq 是一个轻量级的命令行工具,用于解析、操作和格式化 JSON 数据。它类似于 sed 或 awk,但专门用于处理 JSON 格式。使用 jq,你可以从复杂的 JSON 数据中提取所需的信息,格式化输出,进行数据筛选,甚至修改 …...

百收SEO蜘蛛池
百收SEO蜘蛛池 网站搜索排名上不去?SSL证书来帮忙! #SSL证书#网站优化#搜索引擎优化 谷歌蜘蛛石的话有非常多的一个重要性,首先的话就是能够提升我们网站的一个输入,尤其是对于我们百收SEO蜘蛛池新站来说,我们在做独立…...

(娱乐)魔改浏览器-任务栏图标右上角加提示徽章
一、目标: windows中,打开chromium,任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角,加上"有1条新消息"的小提示图标,也叫徽章(badge)注意:本章节纯属娱乐,有需要…...

JVM相关
1.JVM内存区域 一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。 内存中会根据作用的不同被划分成不同的区域: (1)栈:存储的内容是代码在执行过程中,方法之间的调用关系&a…...

9.18 微信小程序开发笔记
如何获取英语单词的发音,使其能在小程序界面通过点击外发? 1.通过外界API获取(例如有道API) 不下载音频文件,每次需要时直接API获取发音,存储压力小。但是一般的API都有使用次数限制,在背单词…...

dpdk课程学习之练习笔记八(dpvs的了解)
只是看到这个,跟着流程做一下练习,了解这个东东是干啥的,再就是搭建环境,基于dpdk的环境,顺手也就练习dpdk的环境搭建了。 0:总结 1:知道了lvs能实现的功能,挺强大。 2࿱…...

Linux标准IO-系统调用详解
1.1 系统调用 系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。不止 Linux 系统,所有的操作系统都会向应用层提供系统调用,应用程序通…...

LeetCode004-两个有序数组的中位数-最优算法代码讲解
最有帮助的视频讲解 【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7a2ef256a4db9d2a 时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(…...

Unity携程Coroutine用法
一.携程概述 官方的解释是,携程允许你可以在多个帧中执行任务。在Unity中,携程是一个可以暂停并在后续帧中从暂停处继续执行的方法。 二.携程写法 下面示例使用携程和Update打印前5帧的时间间隔,展示了携程的基础写法 using System.Colle…...

腾讯百度阿里华为常见算法面试题TOP100(5):子串、堆
之前总结过字节跳动TOP50算法面试题: 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 子串 560.和为K的子数组...

「数据科学」清洗数据,真实数据集中缺失值的查看与处理
在数据科学的工作过程中,我们通过查看数据的基本要素和元数据之后,需要根据查看的结果,考虑是否需要清洗数据。缺失值的查看与处理,就是清洗数据的一部分。如果我们的数据集中,存在缺失值的话,就需要考虑如…...

彩蛋岛 销冠大模型案例
彩蛋岛 销冠大模型案例 任务: https://kkgithub.com/InternLM/Tutorial/tree/camp3/docs/EasterEgg/StreamerSales 视频 https://www.bilibili.com/video/BV1f1421b7Du/?vd_source4ffecd6d839338c9390829e56a43ca8d 项目git地址: https://kkgithu…...