当前位置:首页>python>感知机:30 行 Python 从零写一个会"犯错-学习"的神经网络分类器

感知机:30 行 Python 从零写一个会"犯错-学习"的神经网络分类器

  • 2026-07-06 22:23:06
感知机:30 行 Python 从零写一个会"犯错-学习"的神经网络分类器

感知机:神经网络的第一个细胞

1957 年的疯狂预言 · 加权求和 · 阶跃函数 · 梯度下降雏形 · 从零手写一个二分类器

1957 年,一个叫 Frank Rosenblatt 的人造了一台叫 Mark-1 感知机 的机器。它有 400 个光电池作为"眼睛",能识别简单的几何图形。当时《纽约时报》兴奋地预言这台机器将能"行走、说话、看见、书写、自我复制"。

预言夸张了,但感知机的核心思想——加权求和 + 阈值判断——至今仍是所有神经网络的基础单元。这节课我们用 Python 从零实现一个感知机,理解它的每一个细节。理解感知机 = 理解深度学习的 DNA。

📚 本节课你会学到:

① 感知机的历史与核心思想② 加权求和 + 阶跃激活函数的完整流程③ "犯错-调整"训练算法的直觉和公式④ 从零用 Python 实现感知机(含训练+测试)⑤ 感知机在二维平面画了一条线——直观理解⑥ 感知机的致命局限:为什么 XO 分不开


Python 热身:本节课用到的语法

这节课的核心计算全靠 NumPy——它能一瞬间算出几百个数的加权和。提前认识三个用法:

① NumPy 数组与点积

普通 Python 列表算加权和又慢又烦。NumPy 一个 np.dot 搞定:

import numpy as np; z = np.dot([1,2,3], [0.5,0.3,0.1]) → 1.4

② random.choice 和列表推导式

训练时随机选样本用 random.choice;提取数据用一行列表推导式。

random.choice(正例) · x值 = [d["x"] for d in 数据]

⚠️ 先装 NumPy:Jupyter 里运行 pip install numpy 即可。如果已经装了 Anaconda,NumPy 会自动包含。

一、1957 年:一个疯狂的预言

1957 年,康奈尔航空实验室的 Frank Rosenblatt 造了 Mark-1 感知机。输入是 20×20=400 个光电池,输出是二进制的"是三角形吗?是/否"。整个网络只有一个神经元,权重靠手动调节电位器来训练。

《纽约时报》当时的报道:"这是电子计算机的胚胎,海军预计它将能行走、说话、看见、书写、自我复制,并意识到自己的存在。"

💡 现在看来预言太乐观了——但感知机的核心思想(加权求和+阈值判断)到今天仍是所有神经网络的基础。下一课的多层感知机、后面的 CNN、Transformer,全部建立在这个最简单的细胞之上。

二、感知机是怎么工作的

感知机是二分类模型——只能回答"是 +1"或"不是 -1"。假设有 N 个特征,每个特征对应一个权重。原理就一句话:

输出 = f( w₁x₁ + w₂x₂ + ... + wₛxₛ )

加权求和 → 过"门槛"函数 → 出结果

⚡ 阶跃激活函数 f(x)

如果 x ≥ 0 → 输出 +1(正类)

如果 x < 0 → 输出 -1(负类)

像个门槛:信号够强就触发,不够就沉默。

🧠 直觉理解

"要不要去跑步?"

天气好(+1)×0.5 + 不累(+1)×0.3 + 有朋友陪(+1)×0.2

→ 总分 > 0 就去,否则不去。

🔬 感知机内部结构

x₁
x₂x₃
↓ w₁=0.5        ↓ w₂=0.3        ↓ w₃=0.2
Σwx

↓ 阶跃函数 f → +1(去!)或 -1(不去)


三、感知机怎么学习:犯错,然后调整

感知机不会一开始就知道正确的权重。它的学习策略极其朴素——猜错了就调,猜对了就过

第 1 步:初始化

所有权重设为 0(或很小的随机数)。感知机此时对世界一无所知。

第 2 步:随机挑一个样本,预测

从训练集随机选一个正例和一个负例,用当前权重算出输出。

第 3 步:如果猜错了,调整权重

正例被错判为负 → 权重加上特征值(往正方向拉)负例被错判为正 → 权重减去特征值(往负方向推)

第 4 步:重复 N 次,直到收敛

不断循环 2-3 步。权重逐渐收敛到把两类干净分开的值。

💡 核心公式(不用完全懂,代码会帮我们算):w_new = w_old + η × (标签 × 特征)这就是梯度下降的雏形——每次朝误差减小的方向走一小步。步长取决于学习率 η:大了跳过头,小了学太慢。

四、动手写:从零实现感知机

分三步:造数据 → 训练 → 测试。30 行核心代码,直接复制到 Jupyter 跑。

第一步:生成训练数据

人为造一些"线性可分"的二维数据——正例在右上角,负例在左下角:

import
 numpy as npimport random# 正例:在右上角 (x>0, y>0)正例 = [np.array([1.5,2.0]), np.array([3.0,1.5]),        np.array([2.5,3.0]), np.array([3.5,2.5]), np.array([2.0,3.5])]# 负例:在左下角 (x<0, y<0)负例 = [np.array([-1.5,-2.0]), np.array([-2.5,-1.0]),        np.array([-3.0,-2.5]), np.array([-1.0,-3.0]), np.array([-2.0,-3.5])]

第二步:训练函数(核心)

def
训练感知机(正例, 负例, 迭代=100, 学习率=1.0):    维度 =len(正例[0]) +1# 特征数+1(偏置)    权重 = np.zeros(维度)foriinrange(迭代):        正样本, 负样本 = random.choice(正例), random.choice(负例)        正入 = np.append([1], 正样本)  # 加偏置        负入 = np.append([1], 负样本)ifnp.dot(正入, 权重) <0:  # 正例错判            权重 += 学习率 * 正入ifnp.dot(负入, 权重) >=0:  # 负例错判            权重 -= 学习率 * 负入return权重最终权重 = 训练感知机(正例, 负例, 迭代=100, 学习率=1.0)
💡 偏置 bias 是什么?往输入前面加的"1",对应的权重就是偏置。没有偏置的话,感知机只能画经过原点的直线,限制太大了。

第三步:测试——它学会了吗?

def
预测(权重, 样本):    输入 = np.append([1], 样本)return1if np.dot(输入, 权重) >= 0else -1# 测试新样本print(预测(最终权重, [2.0,2.0]))  # → 1(右上角,正确!)print(预测(最终权重, [-2.0,-1.5]))  # → -1(左下角,正确!)

跑完这三步,训练集准确率应该是 100%——因为数据是人为构造的、线性可分的。如果不是 100%,试着把迭代次数从 100 改到 200,或者检查你的数据有没有混在一起。


五、直觉理解:感知机在二维平面画了一条线

当只有两个特征(x₁, x₂)时,感知机的决策公式其实就是一条直线:

w₀ + w₁x₁ + w₂x₂ = 0

这是一条直线的方程!一边是正类,一边是负类。

训练的过程,本质上是不断旋转和移动这条线,直到它刚好把正负两类分开。训练前权重都是 0,线不存在;训练后权重收敛,线干净地把两类切开。

训练前

权重全是 0,决策线不存在。正负例混在一起,感知机什么都分不清。

训练后

权重收敛,决策线(也叫"超平面")把两类干净分开。右上角 +1,左下角 -1。

⚠️ 感知机的致命局限:它只能处理线性可分的问题。如果数据像同心圆(正类在里圈、负类在外圈),一根直线永远分不开。1969 年 Minsky 在《感知机》一书中指出了这一点,直接导致了第一次 AI 冬天。解法?下一课的多层感知机

六、现实应用:手写数字识别

课程 Notebook 里有一个更实战的例子:用感知机区分手写数字 0 和 1。28×28 = 784 个像素展平成向量,就是感知机的 784 个输入。每个像素一个特征,一个权重。

更进一步的挑战:识别 0-9 全部数字

策略是"一对多"——训练 10 个感知机,每个只管"这个数字是 X 吗?"最后投票。→ 在 Jupyter 里打开课程的 PerceptronMultiClass.ipynb 试试。


一张图记住感知机

输入

特征值 x₁, x₂, ..., xₛ(像素值、肿瘤大小等)

计算

加权求和 z = w₁x₁ + w₂x₂ + ... + wₛxₛ + 偏置

激活

阶跃函数:z ≥ 0 → +1(正类),z < 0 → -1(负类)

训练

猜错就调:正例错判 → 加特征值;负例错判 → 减特征值。这是梯度下降的雏形。

局限

只能处理线性可分问题。多层网络(下节课)突破了这个限制。


知识检测

(长按选中文字即可看到答案)

Q1. 感知机的输出是什么类型的?

A. 二分类(+1或-1)  B. 多分类  C. 任意实数值  D. 概率值

A。感知机是二分类器,只输出 +1 或 -1。

Q2. 感知机的核心计算是什么?

A. 直接相加  B. 加权求和后过阶跃函数  C. 多层传播  D. Sigmoid 输出

B。加权求和(w₁x₁+w₂x₂+...)是核心,然后过阶跃函数。

Q3. 正例被错判为负时,权重怎么调?

A. 不改  B. 把特征值加到权重上  C. 减特征值  D. 反向传播

B。正例错判说明权重太小,需要加上特征值往正方向拉。

Q4. 感知机最大的局限是什么?

A. 永远学不会  B. 只能两个特征  C. 只能处理线性可分  D. 计算太慢

C。只能处理线性可分问题,这是 Minsky 1969 年指出的致命弱点。


课后行动

1   跑代码(必做)

把上面三块代码复制到 Jupyter Notebook,运行后确认准确率 100%。这节课不跑代码等于白学。

预计用时:20 分钟

2   调参实验

把学习率改成 0.1 和 5.0,观察训练过程有什么不同。迭代次数改到 10 和 500 呢?把发现的规律记下来。

预计用时:15 分钟

3   造数据

自己再造一组正例和负例(比如 x 很大的点),看感知机还能分开吗?如果正负例在图上交叉了会怎样?

预计用时:10 分钟

4   在线 Quiz

去课程页面做课前和课后测验(英文),看看正确率。链接在 Lesson 3 的 GitHub 页面里。

预计用时:10 分钟


下节课预告

一个感知机只能画一条线。如果把很多个感知机堆叠起来呢?下节课是整门课最硬核的一节:

• 多层网络突破 XOR 线性不可分• Sigmoid / ReLU 非线性激活函数替代粗糙的阶跃• 从零写一个微型深度学习框架(前向传播 + 反向传播)• 这是整个课程最值得投入时间的一节课

📌 下节课的数学预习:微积分中的"链式法则"和"偏导数"——听起来吓人,但我会用最直观的方式讲。你可以现在搜一下 3Blue1Brown 的反向传播视频,先建直觉。

课程来源:microsoft/AI-For-Beginners · Lesson 3 (Perceptron)

Notebook:GitHub 搜 "AI-For-Beginners Perceptron.ipynb"

🤖

代码跑通了吗?准确率到 100% 了吗?

把你的调参实验结果告诉我——学习率改成 0.1 和 5.0 分别发生了什么?——或者你自己造的数据长什么样。我们来讨论为什么有些情况感知机能分开,有些不行。

觉得有用的话,点「在看」转给一起学 AI 的朋友 👍

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-07 00:59:46 HTTP/2.0 GET : https://f.mffb.com.cn/a/503824.html
  2. 运行时间 : 0.299128s [ 吞吐率:3.34req/s ] 内存消耗:4,373.90kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c980c581940d3386373509758baa55a1
  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.000489s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000554s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.019804s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004167s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000646s ]
  6. SELECT * FROM `set` [ RunTime:0.000273s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000657s ]
  8. SELECT * FROM `article` WHERE `id` = 503824 LIMIT 1 [ RunTime:0.003834s ]
  9. UPDATE `article` SET `lasttime` = 1783357186 WHERE `id` = 503824 [ RunTime:0.026242s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001154s ]
  11. SELECT * FROM `article` WHERE `id` < 503824 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000439s ]
  12. SELECT * FROM `article` WHERE `id` > 503824 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004393s ]
  13. SELECT * FROM `article` WHERE `id` < 503824 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.016859s ]
  14. SELECT * FROM `article` WHERE `id` < 503824 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.110903s ]
  15. SELECT * FROM `article` WHERE `id` < 503824 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.030740s ]
0.300741s