当前位置:首页>python>不用Python也能搞AI?Java+TensorFlow实战:从零训练神经网络模型并在Spring Boot中部署

不用Python也能搞AI?Java+TensorFlow实战:从零训练神经网络模型并在Spring Boot中部署

  • 2026-06-30 08:49:45
不用Python也能搞AI?Java+TensorFlow实战:从零训练神经网络模型并在Spring Boot中部署

不想学Python又想给应用加AI能力?本文手把手教你用Java和TensorFlow训练神经网络模型,从Iris鸢尾花分类到Spring Boot集成部署。附完整代码+Maven依赖+避坑指南。


为什么Java开发者需要关注TensorFlow?

想象下面这个场景

假如你是某电商公司的Java后端开发。产品经理拿着一份AI研究报告来找你:

“我们想在订单系统里加一个功能:根据用户输入的投诉文本,自动分类投诉类型(物流问题、产品质量、退换货)。我看AI都能做,给你三天时间搞一下?”

你的第一反应可能是:“这要用Python吧?我要去学PyTorch/TensorFlow、搞环境配置、再搭个Flask服务……”

好消息是:你可以直接用Java完成这件事。

TensorFlow官方提供了完整的Java API。你可以:

  • 用Java代码训练神经网络
  • 导出模型文件
  • 在Spring Boot应用中直接加载
  • 无需额外Python服务

本文就用一个经典案例(Iris鸢尾花分类)带你走通这条链路。即使你对神经网络零基础,也能跟着代码跑起来。


TensorFlow Java入门准备

Maven依赖配置

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0          http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>tensorflow-java-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><tensorflow.version>0.5.0</tensorflow.version></properties><dependencies><!-- TensorFlow Java Core --><dependency><groupId>org.tensorflow</groupId><artifactId>tensorflow-core-platform</artifactId><version>${tensorflow.version}</version></dependency><!-- 日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>2.0.9</version></dependency></dependencies></project>

验证安装

import org.tensorflow.TensorFlow;publicclassTestTensorFlow{publicstaticvoidmain(String[] args){        System.out.println("TensorFlow version: " + TensorFlow.version());    }}

预期输出:TensorFlow version: 2.15.0


神经网络核心概念速查

💡 建议:第一遍阅读时快速扫过,看到代码后再回头对照。

概念
一句话解释
代码中的体现
层(Layer)
一组神经元的集合
hiddenLayer1Weights
权重(Weight)
神经元连接强度,训练中调整
Variable(initializer)
偏置(Bias)
给神经元加偏移量
variable(fill(0.1f))
激活函数
决定神经元是否触发
nn.relu()
 / nn.softmax()
损失函数
衡量预测与真实的差距
MeanSquaredError
优化器
根据损失调整权重
Adam

数据集准备——Iris鸢尾花分类

数据集介绍

Iris数据集是机器学习界的“Hello World”:

项目
说明
样本数量
150条
特征数量
4个(花萼长宽、花瓣长宽)
类别数量
3个(Setosa、Versicolour、Virginica)

数据实体类

publicenum IrisSpecies {    IRIS_SETOSA(0"Iris-setosa"),    IRIS_VERSICOLOUR(1"Iris-versicolor"),    IRIS_VIRGINICA(2"Iris-virginica");// 省略构造方法和getter}publicclassIrisDataLine{privatefinalfloat sepalLength;privatefinalfloat sepalWidth;privatefinalfloat petalLength;privatefinalfloat petalWidth;privatefinal IrisSpecies irisSpecies;// 省略构造方法和getter}

数据读取

private List<IrisDataLine> loadTrainingData()throws IOException {    List<IrisDataLine> trainData = new ArrayList<>();try (InputStream is = getClass().getResourceAsStream("/iris.csv");         BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {        reader.readLine(); // 跳过表头        String line;while ((line = reader.readLine()) != null) {if (line.isBlank()) continue;            String[] parts = line.split(",");            trainData.add(new IrisDataLine(                Float.parseFloat(parts[0]),  // sepal_length                Float.parseFloat(parts[1]),  // sepal_width                Float.parseFloat(parts[2]),  // petal_length                Float.parseFloat(parts[3]),  // petal_width                IrisSpecies.getIrisSpecies(parts[4])            ));        }    }return trainData;}

构建神经网络模型

网络拓扑

输入层(4) → 隐藏层1(5) → 隐藏层2(4) → 输出层(3)激活函数:       ReLU          ReLU         Softmax

配置常量

publicclassModelConfig{publicstaticfinalint INPUT_LAYER_WIDTH = 4;publicstaticfinalint HIDDEN_LAYER_1_WIDTH = 5;publicstaticfinalint HIDDEN_LAYER_2_WIDTH = 4;publicstaticfinalint OUTPUT_LAYER_WIDTH = 3;publicstaticfinalint TRAINING_EPOCHS = 4;publicstaticfinalfloat LEARNING_RATE = 0.01f;publicstaticfinallong RANDOM_SEED = 42L;}

构建代码

// 创建计算图Graph graph = new Graph();Ops tf = Ops.create(graph);// 输入层占位符Placeholder<TFloat32> inputLayer = tf.withName("input_placeholder")    .placeholder(TFloat32.classPlaceholder.shape(Shape.of(-1, 4)));// 初始化器Initializer initializer = new Glorot<>(Distribution.NORMAL, RANDOM_SEED);// 隐藏层1:4 → 5Var<TFloat32> h1Weights = tf.withName("hidden1_weights")    .variable(initializer.call(tf, tf.array(45), TFloat32.class));Var<TFloat32> h1Biases = tf.withName("hidden1_biases")    .variable(tf.fill(tf.array(5), tf.constant(0.1f)));var h1 = tf.nn.relu(tf.math.add(tf.linalg.matMul(inputLayer, h1Weights), h1Biases));// 隐藏层2:5 → 4Var<TFloat32> h2Weights = tf.withName("hidden2_weights")    .variable(initializer.call(tf, tf.array(54), TFloat32.class));Var<TFloat32> h2Biases = tf.withName("hidden2_biases")    .variable(tf.fill(tf.array(4), tf.constant(0.1f)));var h2 = tf.nn.relu(tf.math.add(tf.linalg.matMul(h1, h2Weights), h2Biases));// 输出层:4 → 3Var<TFloat32> outWeights = tf.withName("output_weights")    .variable(initializer.call(tf, tf.array(43), TFloat32.class));Var<TFloat32> outBiases = tf.withName("output_biases")    .variable(tf.fill(tf.array(3), tf.constant(0.1f)));var output = tf.withName("output_activation")    .nn.softmax(tf.math.add(tf.linalg.matMul(h2, outWeights), outBiases));

训练模型

训练配置

try (Session session = new Session(graph)) {var lossFunction = new MeanSquaredError(Reduction.AUTO);var optimizer = new Adam(LEARNING_RATE);    Placeholder<TFloat32> trainingOutput = tf.placeholder(TFloat32.class,Placeholder.shape(Shape.of(-1, 3)));var loss = lossFunction.call(tf, trainingOutput,         graph.operation("output_activation").output(0));var minimize = optimizer.minimize(loss);// 训练循环...}

训练循环

List<IrisDataLine> trainData = loadTrainingData();for (int epoch = 0; epoch < 4; epoch++) {int correct = 0;for (IrisDataLine data : trainData) {try (Tensor<TFloat32> input = createInputTensor(data);             Tensor<TFloat32> expected = createOutputTensor(data.getIrisSpecies())) {            List<Tensor<?>> result = session.runner()                .addTarget(minimize)                .feed("input_placeholder", input)                .feed(trainingOutput, expected)                .fetch("output_activation")                .run();            Tensor<TFloat32> out = (TFloat32) result.get(0);if (predictSpecies(out) == data.getIrisSpecies()) correct++;            out.close();            result.forEach(Tensor::close);        }    }    System.out.printf("Epoch %d: 准确率 %.1f%% (%d/150)%n"                      epoch, correct/150.0*100, correct);}

预期输出

Epoch 0: 准确率 78.0% (117/150)Epoch 1: 准确率 80.7% (121/150)Epoch 2: 准确率 82.0% (123/150)Epoch 3: 准确率 82.7% (124/150)

保存和导出模型

// 构建签名Signature signature = Signature.builder()    .key(Signature.DEFAULT_KEY)    .input("input_placeholder"           graph.operation("input_placeholder").output(0))    .output("output_activation"            graph.operation("output_activation").output(0))    .build();// 导出模型SessionFunction sessionFunction = SessionFunction.create(signature, session);SavedModelBundle.exporter("./models/iris_classifier")    .withFunction(sessionFunction)    .withTags(SavedModelBundle.DEFAULT_TAG)    .export();

导出后的目录结构:

models/iris_classifier/├── saved_model.pb└── variables/    ├── variables.data-00000-of-00001    └── variables.index

加载模型并进行预测

publicclassIrisClassifier{private SavedModelBundle model;private Session session;publicIrisClassifier(String modelPath){        model = SavedModelBundle.load(modelPath, "serve");        session = model.session();    }publicfloat[] predict(float sepalLength, float sepalWidth,float petalLength, float petalWidth) {try (Tensor<TFloat32> input = Tensor.of(TFloat32.classShape.of(1, 4), data -> {            data.setFloat(sepalLength, 00);            data.setFloat(sepalWidth, 01);            data.setFloat(petalLength, 02);            data.setFloat(petalWidth, 03);        })) {            List<Tensor<?>> result = session.runner()                .feed("input_placeholder", input)                .fetch("output_activation")                .run();            Tensor<TFloat32> output = (TFloat32) result.get(0);float[] probs = newfloat[]{                output.getFloat(00),                output.getFloat(01),                output.getFloat(02)            };            output.close();            result.forEach(Tensor::close);return probs;        }    }publicvoidclose(){if (session != null) session.close();if (model != null) model.close();    }}

Spring Boot集成实战

模型服务Bean

@ServicepublicclassTensorFlowModelService{@Value("${tensorflow.model.path:./models/iris_classifier}")private String modelPath;private SavedModelBundle model;private Session session;@PostConstructpublicvoidinit(){        model = SavedModelBundle.load(modelPath, "serve");        session = model.session();        System.out.println("✅ 模型加载成功");    }@PreDestroypublicvoidcleanup(){if (session != null) session.close();if (model != null) model.close();    }publicfloat[] predict(float sepalLength, float sepalWidth,float petalLength, float petalWidth) {// 见上一节代码    }}

Controller

@RestController@RequestMapping("/api/iris")@RequiredArgsConstructorpublicclassIrisController{privatefinal TensorFlowModelService modelService;@PostMapping("/predict")public IrisPredictResponse predict(@RequestBody IrisPredictRequest request){float[] probs = modelService.predict(            request.getSepalLength(),            request.getSepalWidth(),            request.getPetalLength(),            request.getPetalWidth()        );int idx = getMaxIndex(probs);        String[] species = {"Setosa""Versicolour""Virginica"};returnnew IrisPredictResponse(species[idx], probs[idx], probs);    }}

测试API

curl -X POST http://localhost:8080/api/iris/predict \  -H "Content-Type: application/json" \  -d '{"sepalLength":5.1,"sepalWidth":3.5,"petalLength":1.4,"petalWidth":0.2}'

响应:

{"predictedSpecies""Setosa","confidence"0.92,"probabilities": [0.920.050.03]}

使用预训练模型(EfficientDet)

查看模型Signature

SavedModelBundle model = SavedModelBundle.load("./models/efficientdet-d0""serve");System.out.println(model.signatures());

输出:

Inputs: "input_tensor": dtype=DT_UINT8, shape=(1, -1, -1, 3)Outputs: "detection_boxes""detection_scores""detection_classes""num_detections"

推理代码

public List<DetectionResult> detect(float[][][] image){try (Tensor<TUint8> input = createImageTensor(image)) {        List<Tensor<?>> result = session.runner()            .feed("input_tensor", input)            .fetch("detection_boxes")            .fetch("detection_scores")            .fetch("detection_classes")            .run();// 解析结果...    }}

选型对比与总结

Java vs Python TensorFlow

维度
Python
Java
模型训练
✅ 首选
⚠️ 基础支持
模型推理
工程化集成
需额外服务
✅ 直接嵌入
Java团队友好度
✅ 高

最佳实践:Python训练 → 导出SavedModel → Java加载推理

核心要点清单

## 训练阶段定义网络拓扑配置损失函数和优化器训练循环 + 准确率监控## 导出阶段构建Signature使用 SavedModelBundle.exporter()## 推理阶段加载模型:SavedModelBundle.load()创建输入Tensorsession.runner().feed().fetch()关闭Tensor和Session## Spring Boot集成@PostConstruct 加载模型@PreDestroy 释放资源作为单例Bean提供服务

写在最后

一句话总结:Java + TensorFlow = 用你最熟悉的语言,拥抱AI的能力。

对于Java开发者来说,TensorFlow Java API提供了一个低门槛的AI入口。你不需要切换到Python,不需要搭建额外的微服务,就能在自己的应用中直接调用神经网络模型。

无论是经典的Iris分类,还是前沿的目标检测,Java都能胜任推理这一核心环节。

如果本文帮你打开了Java+AI的大门,欢迎收藏和分享。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 06:45:36 HTTP/2.0 GET : https://f.mffb.com.cn/a/489858.html
  2. 运行时间 : 0.107840s [ 吞吐率:9.27req/s ] 内存消耗:4,839.65kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c25615baf02dc9505adeea5d5a154916
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000496s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000837s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000324s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000287s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000569s ]
  6. SELECT * FROM `set` [ RunTime:0.000201s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000862s ]
  8. SELECT * FROM `article` WHERE `id` = 489858 LIMIT 1 [ RunTime:0.000644s ]
  9. UPDATE `article` SET `lasttime` = 1783118737 WHERE `id` = 489858 [ RunTime:0.023894s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000393s ]
  11. SELECT * FROM `article` WHERE `id` < 489858 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000558s ]
  12. SELECT * FROM `article` WHERE `id` > 489858 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000456s ]
  13. SELECT * FROM `article` WHERE `id` < 489858 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002814s ]
  14. SELECT * FROM `article` WHERE `id` < 489858 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000839s ]
  15. SELECT * FROM `article` WHERE `id` < 489858 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007151s ]
0.109430s