当前位置:首页>课件>长方体正方体体积交互式课件的制作

长方体正方体体积交互式课件的制作

  • 2026-04-21 01:46:01
长方体正方体体积交互式课件的制作
帮朋友用DeepSeek制作的一个用于长方体、正方体体积探究的交互式课件:通过3D方块堆积,帮助直观理解长、宽、高与体积的关系。
1.复制下面的代码;
2.在桌面新建一个文本文档,粘贴代码到文本文档,保存;
3.将文本文档的文件后缀名修改为:.html
4.打开即可使用
代码如下:

<!DOCTYPE html>

<html lang="zh-CN">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

    <title>长方体体积探究 · 柱状优先添加</title>

    <link href="https://fonts.googleapis.com/css2?family=Inter:opsz@14..32&display=swap" rel="stylesheet">

    <style>

        body {

            margin: 0;

            overflow: hidden;

            font-family: 'Inter', sans-serif;

            background-color: #111;

        }

        #info-panel {

            position: absolute;

            top: 20px;

            left: 20px;

            background: rgba(30, 30, 40, 0.9);

            backdrop-filter: blur(10px);

            color: white;

            border-radius: 24px;

            padding: 24px;

            width: 300px;

            box-shadow: 0 20px 40px rgba(0,0,0,0.5);

            border: 1px solid rgba(255,255,255,0.1);

            pointer-events: all;

            z-index: 10;

        }

        h2 {

            font-size: 1.3rem;

            margin-top: 0;

            margin-bottom: 20px;

            font-weight: 500;

            letter-spacing: 0.5px;

            border-bottom: 1px solid rgba(255,255,255,0.2);

            padding-bottom: 10px;

            color: #ccc;

        }

        .dimension-control {

            background: rgba(0,0,0,0.3);

            border-radius: 18px;

            padding: 18px;

            margin-bottom: 20px;

            border: 1px solid rgba(255,255,255,0.05);

        }

        .dimension-item {

            display: flex;

            align-items: center;

            justify-content: space-between;

            margin-bottom: 12px;

        }

        .dimension-item label {

            width: 70px;

            color: #aaa;

            font-size: 0.9rem;

        }

        .dimension-item input {

            width: 70px;

            background: #222;

            border: 1px solid #444;

            color: white;

            padding: 8px 12px;

            border-radius: 30px;

            font-size: 1rem;

            text-align: center;

            outline: none;

            transition: 0.2s;

            font-weight: 500;

        }

        .dimension-item input:focus {

            border-color: #4a9eff;

            background: #1a1a1a;

        }

        .dimension-item span {

            color: #888;

            font-size: 0.85rem;

            margin-left: 5px;

        }

        .btn-update {

            width: 100%;

            background: #2a6df4;

            border: none;

            color: white;

            padding: 12px;

            border-radius: 40px;

            font-size: 1rem;

            font-weight: 600;

            cursor: pointer;

            margin-top: 10px;

            transition: background 0.2s, transform 0.1s;

            border: 1px solid rgba(255,255,255,0.1);

            letter-spacing: 0.5px;

        }

        .btn-update:hover {

            background: #1a5be0;

        }

        .btn-update:active {

            transform: scale(0.98);

        }

        .stack-control {

            background: rgba(0,0,0,0.3);

            border-radius: 18px;

            padding: 18px;

            margin-bottom: 20px;

        }

        .stack-grid {

            display: grid;

            grid-template-columns: repeat(3, 1fr);

            gap: 10px;

            margin-bottom: 15px;

        }

        .stack-btn {

            background: #333;

            border: 1px solid #555;

            color: #eee;

            padding: 12px 0;

            border-radius: 36px;

            font-size: 0.95rem;

            font-weight: 500;

            cursor: pointer;

            transition: all 0.15s;

            text-align: center;

            backdrop-filter: blur(5px);

        }

        .stack-btn:hover {

            background: #3d3d4d;

            border-color: #7a9eff;

            color: white;

        }

        .stack-btn:active {

            transform: scale(0.96);

        }

        .wide-btn {

            grid-column: span 2;

        }

        .reset-btn {

            background: #4a2a2a;

            border-color: #a04a4a;

            color: #ffb0b0;

        }

        .reset-btn:hover {

            background: #6d3a3a;

            border-color: #ff7b7b;

            color: white;

        }

        .counter {

            background: #1e1e2a;

            border-radius: 40px;

            padding: 16px 18px;

            text-align: center;

            border: 1px solid #3a3a4a;

            margin-bottom: 15px;

        }

        .counter-number {

            font-size: 2.2rem;

            font-weight: 700;

            color: #ffd966;

            line-height: 1.2;

        }

        .counter-label {

            font-size: 0.85rem;

            color: #aaa;

            letter-spacing: 1px;

        }

        .layer-info {

            background: #1a1a28;

            border-radius: 30px;

            padding: 16px;

            text-align: center;

            border: 1px solid #3f3f5a;

        }

        .layer-title {

            font-size: 0.8rem;

            color: #b0b0d0;

            margin-bottom: 6px;

        }

        .layer-value {

            font-size: 1.5rem;

            font-weight: 600;

            color: #9bc5ff;

        }

        .layer-hint {

            font-size: 0.8rem;

            color: #8a8aac;

            margin-top: 8px;

        }

        .footer-note {

            font-size: 0.75rem;

            color: #666;

            text-align: center;

            margin-top: 20px;

        }

    </style>

</head>

<body>

    <div id="info-panel">

        <h2>📦 自定义长方体尺寸</h2>

        <div class="dimension-control">

            <div class="dimension-item">

                <label>长度 (X轴)</label>

                <input type="number" id="input-length" min="1" max="8" value="7">

                <span>单位</span>

            </div>

            <div class="dimension-item">

                <label>宽度 (Z轴)</label>

                <input type="number" id="input-width" min="1" max="8" value="6">

                <span>单位</span>

            </div>

            <div class="dimension-item">

                <label>高度 (Y轴)</label>

                <input type="number" id="input-height" min="1" max="8" value="5">

                <span>单位</span>

            </div>

            <button class="btn-update" id="update-frame">⟳ 更新长方体框架</button>

        </div>

        <div class="stack-control">

            <div style="margin-bottom: 12px; color:#ccc; font-size:0.9rem;">🧱 精细堆放控制</div>

            <div class="stack-grid">

                <button class="stack-btn" id="add-one">+1 添加一个 (向上)</button>

                <button class="stack-btn" id="add-row">↔ 堆一行</button>

                <button class="stack-btn" id="add-column">↕ 堆一列</button>

                <button class="stack-btn" id="add-layer">⬜ 铺一层</button>

                <button class="stack-btn wide-btn" id="add-all">⚡ 一键完成</button>

                <button class="stack-btn reset-btn" id="reset-all">🗑 清空重置</button>

            </div>

        </div>

        <div class="counter">

            <div class="counter-number" id="block-count">25</div>

            <div class="counter-label">已放置小方块</div>

        </div>

        <div class="layer-info">

            <div class="layer-title">📐 铺设层级</div>

            <div class="layer-value" id="layer-display">第1层, 共42</div>

            <div class="layer-hint" id="layer-hint">一层有 7 × 6 = 42 个小方块</div>

        </div>

        <div class="footer-note">点击按钮填充 · “添加一个”现在会向上堆叠</div>

    </div>

    <script type="importmap">

        {

            "imports": {

                "three": "https://unpkg.com/three@0.128.0/build/three.module.js",

                "three/addons/": "https://unpkg.com/three@0.128.0/examples/jsm/"

            }

        }

    </script>

    <script type="module">

        import * as THREE from 'three';

        import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

        // --- 初始化场景、相机、渲染器 ---

        const scene = new THREE.Scene();

        scene.background = new THREE.Color(0x11131f);

        const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);

        camera.position.set(12, 8, 14);

        camera.lookAt(3, 2, 3);

        const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: false });

        renderer.setSize(window.innerWidth, window.innerHeight);

        renderer.setPixelRatio(window.devicePixelRatio);

        document.body.appendChild(renderer.domElement);

        // --- 灯光 ---

        const ambientLight = new THREE.AmbientLight(0x404060);

        scene.add(ambientLight);

        const dirLight1 = new THREE.DirectionalLight(0xffffff, 1);

        dirLight1.position.set(2, 5, 3);

        scene.add(dirLight1);

        const dirLight2 = new THREE.DirectionalLight(0xffeedd, 0.8);

        dirLight2.position.set(-3, 4, -2);

        scene.add(dirLight2);

        const fillLight = new THREE.PointLight(0x4466aa, 0.5);

        fillLight.position.set(1, 2, 4);

        scene.add(fillLight);

        // --- 辅助网格地面 ---

        const gridHelper = new THREE.GridHelper(20, 20, 0x88aaff, 0x335588);

        gridHelper.position.y = 0;

        scene.add(gridHelper);

        // --- 控制器 ---

        const controls = new OrbitControls(camera, renderer.domElement);

        controls.enableDamping = true;

        controls.dampingFactor = 0.05;

        controls.autoRotate = false;

        controls.enableZoom = true;

        controls.maxPolarAngle = Math.PI / 2;

        // --- 全局状态 ---

        let cubes = [];                // 所有小方块的Group

        let placed = [];               // placed[y][z][x] 布尔值

        let length = 7, width = 6, height = 5;  // 默认值

        // 当前长方体线框对象

        let frameLine = null;

        // UI元素

        const elLength = document.getElementById('input-length');

        const elWidth = document.getElementById('input-width');

        const elHeight = document.getElementById('input-height');

        const elCount = document.getElementById('block-count');

        const elLayerDisplay = document.getElementById('layer-display');

        const elLayerHint = document.getElementById('layer-hint');

        // 初始化placed数组

        function initPlacedArray() {

            placed = [];

            for (let y = 0; y < height; y++) {

                const layer = [];

                for (let z = 0; z < width; z++) {

                    const row = new Array(length).fill(false);

                    layer.push(row);

                }

                placed.push(layer);

            }

        }

        // 更新长方体线框

        function updateFrame() {

            if (frameLine) scene.remove(frameLine);

            const w = length;

            const h = height;

            const d = width;

            const points = [

                new THREE.Vector3(0, 0, 0), new THREE.Vector3(w, 0, 0),

                new THREE.Vector3(w, 0, 0), new THREE.Vector3(w, 0, d),

                new THREE.Vector3(w, 0, d), new THREE.Vector3(0, 0, d),

                new THREE.Vector3(0, 0, d), new THREE.Vector3(0, 0, 0),

                new THREE.Vector3(0, h, 0), new THREE.Vector3(w, h, 0),

                new THREE.Vector3(w, h, 0), new THREE.Vector3(w, h, d),

                new THREE.Vector3(w, h, d), new THREE.Vector3(0, h, d),

                new THREE.Vector3(0, h, d), new THREE.Vector3(0, h, 0),

                new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, h, 0),

                new THREE.Vector3(w, 0, 0), new THREE.Vector3(w, h, 0),

                new THREE.Vector3(w, 0, d), new THREE.Vector3(w, h, d),

                new THREE.Vector3(0, 0, d), new THREE.Vector3(0, h, d)

            ];

            const geometry = new THREE.BufferGeometry().setFromPoints(points);

            const material = new THREE.LineBasicMaterial({ color: 0xffaa55 });

            frameLine = new THREE.LineSegments(geometry, material);

            scene.add(frameLine);

        }

        // 清除所有小方块

        function clearAllCubes() {

            cubes.forEach(cube => scene.remove(cube));

            cubes = [];

        }

        // 重置状态 (尺寸不变但清空)

        function resetState() {

            clearAllCubes();

            initPlacedArray();

            updateUI();

        }

        // 根据新尺寸完全重置

        function resizeAndReset(newL, newW, newH) {

            length = newL;

            width = newW;

            height = newH;

            clearAllCubes();

            initPlacedArray();

            updateFrame();

            updateUI();

        }

        // 创建单个小方块 (带边框)

        function createSmallCube(x, y, z) {

            const group = new THREE.Group();

            const geom = new THREE.BoxGeometry(0.98, 0.98, 0.98);

            const material = new THREE.MeshPhongMaterial({

                color: 0x4a9eff,

                transparent: true,

                opacity: 0.75,

                shininess: 30,

                emissive: 0x112233

            });

            const cube = new THREE.Mesh(geom, material);

            cube.castShadow = true;

            cube.receiveShadow = false;

            cube.position.set(x + 0.5, y + 0.5, z + 0.5);

            group.add(cube);

            const edges = new THREE.EdgesGeometry(geom);

            const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: 0x000000 }));

            line.position.copy(cube.position);

            group.add(line);

            return group;

        }

        // ---------- 寻找空闲位置的不同策略 ----------

        // 层优先 (y, z, x) —— 用于堆一行/堆一列,保证从最底层最前排开始

        function findNextEmptyLayerFirst() {

            for (let y = 0; y < height; y++) {

                for (let z = 0; z < width; z++) {

                    for (let x = 0; x < length; x++) {

                        if (!placed[y][z][x]) {

                            return { x, y, z };

                        }

                    }

                }

            }

            return null;

        }

        // 柱优先 (x, z, y) —— 用于“添加一个”,优先向上堆叠

        function findNextEmptyColumnFirst() {

            for (let x = 0; x < length; x++) {

                for (let z = 0; z < width; z++) {

                    for (let y = 0; y < height; y++) {

                        if (!placed[y][z][x]) {

                            return { x, y, z };

                        }

                    }

                }

            }

            return null;

        }

        // 获取当前最低的未完全填满的层 (用于UI显示)

        function getCurrentLayerIndex() {

            for (let y = 0; y < height; y++) {

                for (let z = 0; z < width; z++) {

                    for (let x = 0; x < length; x++) {

                        if (!placed[y][z][x]) {

                            return y; // 返回第一个空缺的层索引

                        }

                    }

                }

            }

            return height; // 全部填满,返回height表示最后一层已满

        }

        // 在指定坐标放置方块

        function placeAt(x, y, z) {

            if (y >= height || z >= width || x >= length || y < 0 || z < 0 || x < 0) return false;

            if (placed[y][z][x]) return false;

            const cubeGroup = createSmallCube(x, y, z);

            scene.add(cubeGroup);

            cubes.push(cubeGroup);

            placed[y][z][x] = true;

            return true;

        }

        // --- 堆放操作 ---

        function addOne() {

            const pos = findNextEmptyColumnFirst(); // 柱优先

            if (pos) {

                placeAt(pos.x, pos.y, pos.z);

                updateUI();

            }

        }

        function addRow() {

            const pos = findNextEmptyLayerFirst(); // 层优先,保证水平行起始正确

            if (!pos) return;

            const { x: startX, y, z } = pos;

            for (let x = startX; x < length; x++) {

                if (!placed[y][z][x]) {

                    placeAt(x, y, z);

                }

            }

            updateUI();

        }

        function addColumn() {

            const pos = findNextEmptyLayerFirst(); // 层优先

            if (!pos) return;

            const { x, y, z: startZ } = pos;

            for (let z = startZ; z < width; z++) {

                if (!placed[y][z][x]) {

                    placeAt(x, y, z);

                }

            }

            updateUI();

        }

        function addLayer() {

            const pos = findNextEmptyLayerFirst();

            if (!pos) return;

            const targetY = pos.y;

            for (let z = 0; z < width; z++) {

                for (let x = 0; x < length; x++) {

                    if (!placed[targetY][z][x]) {

                        placeAt(x, targetY, z);

                    }

                }

            }

            updateUI();

        }

        function addAll() {

            for (let y = 0; y < height; y++) {

                for (let z = 0; z < width; z++) {

                    for (let x = 0; x < length; x++) {

                        if (!placed[y][z][x]) {

                            placeAt(x, y, z);

                        }

                    }

                }

            }

            updateUI();

        }

        // 计算当前已放置数量

        function countPlaced() {

            let cnt = 0;

            for (let y = 0; y < height; y++) {

                for (let z = 0; z < width; z++) {

                    for (let x = 0; x < length; x++) {

                        if (placed[y][z][x]) cnt++;

                    }

                }

            }

            return cnt;

        }

        // 更新UI:计数、当前层、提示

        function updateUI() {

            const cnt = countPlaced();

            elCount.textContent = cnt;

            const totalPerLayer = length * width;

            const currentLayerIndex = getCurrentLayerIndex();

            // 显示层号从1开始,如果全部填满则显示最后一层

            const displayLayer = currentLayerIndex === height ? height : currentLayerIndex + 1;

            elLayerDisplay.textContent = `第${displayLayer}层, 共${totalPerLayer}`;

            elLayerHint.textContent = `一层有 ${length} × ${width} = ${totalPerLayer} 个小方块`;

        }

        // --- 事件绑定 ---

        document.getElementById('update-frame').addEventListener('click', () => {

            let newL = parseInt(elLength.value, 10);

            let newW = parseInt(elWidth.value, 10);

            let newH = parseInt(elHeight.value, 10);

            newL = Math.min(8, Math.max(1, newL));

            newW = Math.min(8, Math.max(1, newW));

            newH = Math.min(8, Math.max(1, newH));

            elLength.value = newL;

            elWidth.value = newW;

            elHeight.value = newH;

            resizeAndReset(newL, newW, newH);

        });

        document.getElementById('add-one').addEventListener('click', addOne);

        document.getElementById('add-row').addEventListener('click', addRow);

        document.getElementById('add-column').addEventListener('click', addColumn);

        document.getElementById('add-layer').addEventListener('click', addLayer);

        document.getElementById('add-all').addEventListener('click', addAll);

        document.getElementById('reset-all').addEventListener('click', resetState);

        // --- 初始化默认场景 ---

        resizeAndReset(7, 6, 5);

        // 预填充25个方块,现在会以柱状顺序呈现(但数量仍为25)

        (function prefill25() {

            for (let i = 0; i < 25; i++) {

                addOne();

            }

        })();

        // --- 动画循环 ---

        function animate() {

            requestAnimationFrame(animate);

            controls.update();

            renderer.render(scene, camera);

        }

        animate();

        // --- 窗口自适应 ---

        window.addEventListener('resize', () => {

            camera.aspect = window.innerWidth / window.innerHeight;

            camera.updateProjectionMatrix();

            renderer.setSize(window.innerWidth, window.innerHeight);

        });

    </script>

</body>

</html>

最新文章

随机文章

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