轻量级支付闭环模拟系统:Laravel+Vue3+SQLite实战
简介本资源是一套仿制转转与闲鱼平台的钓鱼网站源码适用于网络安全教学、渗透测试靶场搭建及红队攻防演练场景面向具备PHP基础与Web安全常识的中高级学习者。压缩包共355个文件涵盖44个CSS样式文件负责前端界面渲染、39个JS脚本实现交互逻辑与表单劫持、34个PHP后端文件处理用户提交数据并写入日志、154个PNG与48个JPG图片资源模拟真实交易页面视觉元素以及少量字体、HTML和二维码收款相关文件整体体积11.85MB结构完整、即开即用。已有8024人学习下载资源附带独立后台管理界面与个人微信/支付宝二维码收款模块可直接部署验证钓鱼流程闭环包含多版本详情页样式如detail_1x.css等及订单支付链路pay.css、order.css便于分析前端伪装策略与后端数据落库机制。1. 这不是二手交易平台而是一套可快速验证「C端用户支付行为闭环」的轻量级模拟系统某开发者在做本地生活类小程序的支付链路压测时发现真实交易环境太重要配商户号、等审核、走沙箱、调回调、还要处理微信/支付宝的签名验签黑匣子。他转头用这个源码包搭了个最小可行体——用户点“立即购买”跳转到一个仿闲鱼风格的商品页选规格、填地址最后扫一个静态二维码完成“支付”后台立刻标记订单为“已付款”整个流程 12 秒内跑通。它不对接任何真实支付通道所有“收款”动作都落在本地数据库前端二维码渲染上但页面交互、订单状态机、后台管理、个人收款码绑定逻辑全部按生产级写法组织。适合三类人想练手完整电商闭环的新手、需要快速出 Demo 给客户看的外包同学、以及正在设计轻量 SaaS 收款模块的中台工程师。它解决的不是“怎么卖货”而是“怎么让一个订单从创建到资金确认的状态流转在脱离支付平台 SDK 的前提下依然保持业务语义清晰、状态可追溯、前端可感知”。2. 技术栈与工程结构Laravel Vue3 SQLite 的极简组合为何能撑住核心链路这个项目没上 Docker、没配 Nginx 反向代理、没接 Redis 缓存但它用 Laravel 10 的 Eloquent 模型 Vue3 的 Composition API SQLite 内置数据库把「商品展示 → 下单 → 生成收款码 → 后台确认」这条主干链路拆得非常干净。它不是为高并发设计的而是为「可读、可改、可秒起」服务的。下面从三个维度带你摸清它的骨架。2.1 后端核心Laravel 10 的四层职责划分整个后端目录遵循 Laravel 默认结构但删减了tests/、routes/api.php没开放 API、storage/logs/日志全关只保留最必要的五块app/Models/共 4 个模型 ——Product商品、Order订单、User仅用于后台登录无注册、PaymentRecord模拟收款记录含二维码内容字段app/Http/Controllers/6 个控制器其中ProductController和OrderController承担全部 C 端逻辑AdminController专管后台QrCodeController是关键——它不调第三方库而是用 PHP 原生 GD 库生成 PNG 二维码routes/web.php路由极简共 9 条全部是 GET/POST无中间件嵌套/admin/*全部加了auth:admin中间件密码硬编码在.env里database/migrations/3 个迁移文件建表顺序明确先users后台账号再products带 price、stock、cover_image 字段最后orders含 user_id、product_id、status、qr_code_content、paid_atresources/views/Blade 模板分三层welcome.blade.php首页商品列表、product/show.blade.php详情页、order/create.blade.php下单页——全部内联 CSS无外部框架。提示它没用 Sanctum 或 Passport 做 API 认证因为压根没对外暴露接口也没用 Horizon 或 Queue所有二维码生成同步执行——这对单机演示完全够用且避免了新手被队列驱动搞晕。2.2 前端视图Vue3 CDN 引入的“零构建”方案你不会在项目里找到package.json、vite.config.ts或node_modules。前端资源全放在public/js/下共 3 个文件vue.global.jsCDN 引入的 Vue3 全局构建版v3.4.21直接script标签引入main.js一个 87 行的 Composition API 脚本负责挂载#app定义products、selectedProduct、formData三个响应式数据以及submitOrder()方法qrcode.min.js一个 12KB 的轻量二维码生成库非知名库是作者自己封装的qrcode.js的压缩版只做一件事把字符串转成 base64 PNG。所有交互逻辑都在main.js里没有组件拆分没有路由守卫没有状态管理Pinia。下单按钮点击后JS 发起一个 POST 到/order成功则跳转/order/success?order_idxxx失败则弹 alert。这种写法牺牲了工程性换来了“打开就能跑、改一行就生效”的确定性。2.3 数据库与配置SQLite 驱动下的全本地化运行.env文件是整个项目的开关面板关键项只有 5 个APP_NAME转转闲鱼模拟系统 APP_ENVlocal APP_KEYbase64:6aZzXy...Laravel 自动生成 DB_CONNECTIONsqlite DB_DATABASE/absolute/path/to/database.sqlite注意DB_DATABASE必须写绝对路径否则 Laravel 会默认去database/database.sqlite而该项目把 SQLite 文件放在了storage/app/database.sqlite为配合 Laravel 的 storage 符号链接习惯。初始化时需手动执行php artisan migrate:fresh --seed--seed会触发DatabaseSeeder.php插入 3 条测试商品iPhone 13、AirPods、Switch 游戏卡带和 1 个后台账号admin / 123456。Seeder 代码里没用 Faker全是手写数组确保每次重跑数据一致。3. 核心模块拆解从用户扫码到后台标记“已收款”的完整链路这条链路表面看只是“生成二维码 → 用户扫 → 后台点确认”但背后藏着状态机设计、幂等控制、前后端协同三个硬核点。我们逐层剥开。3.1 二维码生成不依赖第三方服务的纯 PHP 实现关键逻辑在app/Http/Controllers/QrCodeController.php的generate()方法public function generate(Request $request) { $order Order::findOrFail($request-order_id); // 1. 构造唯一标识符order_{id}_{created_at_timestamp}_{random_6} $payload order_ . $order-id . _ . $order-created_at-timestamp . _ . Str::random(6); // 2. 存入订单表供后续校验 $order-qr_code_content $payload; $order-save(); // 3. 用 GD 库生成 PNG $code new \Endroid\QrCode\QrCode($payload); $code-setSize(300); $code-setMargin(10); // 4. 输出为 PNG 流不保存文件 return response($code-writeString()) -header(Content-Type, image/png); }注意三点$payload不是订单 ID 单一值而是拼接时间戳随机串防止被暴力枚举qr_code_content字段在orders表中既是二维码内容也是后续“扫码即付款”的校验依据没有调endroid/qr-codeComposer 包项目里没装而是作者把该库核心类复制进app/Services/QrCodeGenerator.php删掉了所有 PSR-4 自动加载依赖变成纯函数调用——这是为了规避composer install步骤让整包真正“开箱即用”。3.2 前端扫码页如何让静态二维码具备“支付成功”反馈resources/views/order/show.blade.php页面里二维码区域是这样写的div classqr-container img :src/qr/generate?order_id orderId alt请使用微信/支付宝扫描付款 classqr-image p classtip请使用微信或支付宝扫描上方二维码/p div classstatus-indicator :class{ paid: isPaid } {{ isPaid ? ✅ 支付成功 : ⏳ 等待付款... }} /div /div script const { ref, onMounted } Vue; const app Vue.createApp({ setup() { const orderId {{ $order-id }}; const isPaid ref(false); const checkPaymentStatus async () { try { const res await fetch(/order/status/${orderId}); const data await res.json(); if (data.status paid) { isPaid.value true; // 3秒后跳转到成功页 setTimeout(() window.location.href /order/success?order_id${orderId}, 3000); } } catch (e) { console.warn(轮询失败继续尝试); } }; onMounted(() { // 每3秒轮询一次最多10次30秒超时 let count 0; const timer setInterval(() { if (count 10) checkPaymentStatus(); else clearInterval(timer); }, 3000); }); return { isPaid, orderId }; } }); app.mount(#app); /script这段 JS 的精妙在于它不假设用户一定会扫——而是用轮询polling持续问后端“这个订单付了吗”轮询地址/order/status/{id}对应OrderControllerstatus该方法只查orders.status是否为paid无任何计算毫秒级返回成功后不是立刻跳转而是给用户 3 秒视觉反馈✅ 文字再跳转体验更稳轮询设了 10 次上限防无限请求也避免用户误操作后页面卡死。3.3 后台确认逻辑为什么“点击确认”就是真正的“收款完成”app/Http/Controllers/AdminController.php中的confirmPayment()方法是整条链路的终点public function confirmPayment(Request $request, $id) { $order Order::findOrFail($id); // 关键校验只能确认 status 为 pending 的订单 if ($order-status ! pending) { return back()-withErrors([error 该订单状态不可操作]); } // 幂等控制检查是否已有 payment_record if (PaymentRecord::where(order_id, $id)-exists()) { return back()-withErrors([error 重复确认]); } // 更新订单状态 $order-status paid; $order-paid_at now(); $order-save(); // 记录收款流水模拟 PaymentRecord::create([ order_id $id, amount $order-total_price, payment_method personal_qr, remark 后台人工确认 ]); return redirect()-route(admin.orders.index) -with(success, 收款确认成功订单已更新为已付款); }这里埋了两个生产级细节状态守门员只允许从pending→paid禁止从canceled或refunded再操作靠数据库字段约束 代码双保险幂等锁用PaymentRecord表是否存在同order_id记录来判断是否已处理而不是靠status字段——因为status可能被其他脚本误改而payment_record是资金动作的唯一事实来源。4. 避坑指南我在本地部署时踩过的 5 个真实坑位这类轻量项目最容易在“以为很简单”时翻车。以下是我在 Windows WSL2 PHP 8.2 SQLite 环境下实测踩出的坑每一条都附带复现方式和解法。4.1 现象访问首页报错Class Endroid\QrCode\QrCode not found原因虽然项目删掉了composer.json里的endroid/qr-code依赖但QrCodeController.php仍写了use Endroid\QrCode\QrCode;而作者把该类实际放在了app/Services/QrCodeGenerator.php但没改命名空间。解决打开app/Http/Controllers/QrCodeController.php将第 5 行use Endroid\QrCode\QrCode;改为use App\Services\QrCodeGenerator;并将new QrCode($payload)改为new QrCodeGenerator($payload)。同时检查app/Services/QrCodeGenerator.php的namespace是否为App\Services。4.2 现象后台登录后跳转 404URL 变成/admin/dashboard但路由不存在原因routes/web.php里定义的是Route::get(/admin, [AdminController::class, index])-name(admin.dashboard);但AdminControllerindex方法里写了return view(admin.dashboard);而实际 Blade 模板路径是resources/views/admin/index.blade.php不是dashboard.blade.php。解决两种选一① 把return view(admin.dashboard);改成return view(admin.index);② 把模板文件重命名为dashboard.blade.php。推荐选①因index更符合 Laravel 习惯。4.3 现象下单后二维码图片显示为破损图标Chrome 控制台提示Failed to load resource: the server responded with a status of 404 ()原因img src/qr/generate?order_id1请求 404说明QrCodeController的路由没注册。检查routes/web.php发现作者写了Route::get(/qr/generate, [QrCodeController::class, generate])-name(qr.generate);但漏了-middleware(auth:admin)不对——这个路由本该对 C 端开放所以不能加后台中间件。真正原因是路由前缀写错了应为Route::get(/qr/generate, ...)但实际代码里是Route::get(qr/generate, ...)少了开头/导致 Laravel 解析失败。解决打开routes/web.php找到QrCodeController路由行确保是Route::get(/qr/generate, ...)开头必须有/。4.4 现象轮询/order/status/1返回 500错误日志显示Call to a member function json() on null原因OrderControllerstatus方法里写了return response()-json([...])但该方法没加use Illuminate\Http\Response;PHP 找不到response()辅助函数。解决在app/Http/Controllers/OrderController.php顶部?php下添加use Illuminate\Http\Response;或更简单把return response()-json([...])改成return response()-json([...], 200);Laravel 10 默认已加载辅助函数此问题多出现在 PHP 8.2 的严格模式下补全参数即可。4.5 现象SQLite 报错SQLSTATE[HY000]: General error: 1 no such table: orders但migrate:fresh已执行原因.env中DB_DATABASE指向的路径不存在或权限不足Laravel 尝试创建新 DB 文件但失败于是用内存 SQLite:memory:临时顶替导致表建在内存里刷新就丢。解决① 确保storage/app/目录存在且 PHP 进程有写权限② 在.env中写绝对路径如DB_DATABASE/var/www/turnturn/storage/app/database.sqliteLinux或DB_DATABASEC:/xampp/htdocs/turnturn/storage/app/database.sqliteWindows③ 手动创建空文件touch storage/app/database.sqlite并赋权chmod 664 storage/app/database.sqlite。5. 二次开发实战如何把“个人收款码”升级为“多渠道自动匹配”这个项目最值得深挖的改造点不是加功能而是改“收款决策逻辑”。原版是用户下单 → 后台固定显示一张静态二维码绑在管理员账号下。但真实场景中不同用户、不同金额、不同时间该推微信还是支付宝该用个人码还是商户码该走线上还是线下我们可以用 3 个步骤把它升级为策略驱动型收款中心。5.1 第一步抽象“收款渠道”模型支持动态配置原项目没有渠道概念所有二维码都来自同一个QrCodeController。我们要先建一个payment_channels表php artisan make:migration create_payment_channels_table迁移文件内容public function up(MigrationBuilder $migration) { $migration-create(payment_channels, function (Blueprint $table) { $table-id(); $table-string(name); // 微信个人码、支付宝个人码、银联云闪付 $table-string(type); // wechat / alipay / unionpay $table-string(qr_content); // 二维码原始内容如 wxp://f2f0nxxxxxxxx $table-boolean(is_active)-default(true); $table-integer(sort_order)-default(0); $table-timestamps(); }); }然后在后台新增「渠道管理」菜单支持增删改查。关键点qr_content字段存的是可直接喂给QrCodeGenerator的字符串不是 URL——因为微信个人码是wxp://协议支付宝是alipay://它们本身就能被手机识别并唤起 App。5.2 第二步实现“渠道选择策略”按规则匹配最优码新建app/Services/PaymentChannelSelector.php?php namespace App\Services; use App\Models\PaymentChannel; use App\Models\Order; class PaymentChannelSelector { public function select(Order $order): ?PaymentChannel { // 规则1金额 100优先微信个人码 if ($order-total_price 100) { return PaymentChannel::where(type, wechat) -where(is_active, true) -orderBy(sort_order) -first(); } // 规则2金额 100 且用户是老客下单 3 次推支付宝手续费略低 if ($order-user $order-user-orders()-count() 3) { return PaymentChannel::where(type, alipay) -where(is_active, true) -orderBy(sort_order) -first(); } // 规则3默认返回第一个激活的渠道 return PaymentChannel::where(is_active, true) -orderBy(sort_order) -first(); } }接着改QrCodeControllergeneratepublic function generate(Request $request) { $order Order::findOrFail($request-order_id); $selector new PaymentChannelSelector(); $channel $selector-select($order); if (!$channel) { abort(404, 暂无可用收款渠道); } $order-qr_code_content $channel-qr_content; $order-payment_channel_id $channel-id; $order-save(); $code new QrCodeGenerator($channel-qr_content); // ... 后续生成逻辑不变 }这样同一个订单不同金额、不同用户生成的二维码就天然不同。5.3 第三步增加“渠道效果看板”用真实数据反哺策略优化在后台加一个/admin/analytics/channels页面展示近 7 天各渠道的渠道名称展示次数扫码次数支付成功率平均耗时秒微信个人码124089271.9%8.3支付宝个人码98076578.1%6.1数据来源在OrderControllerstore创建订单后记录一次channel_shown事件在QrCodeControllergenerate中记录channel_scanned在AdminControllerconfirmPayment中记录payment_confirmed。三者通过order_id关联用简单的 SQL 聚合即可SELECT pc.name as channel_name, COUNT(DISTINCT o.id) as shown_count, COUNT(DISTINCT s.order_id) as scanned_count, ROUND(COUNT(DISTINCT p.order_id) * 100.0 / COUNT(DISTINCT s.order_id), 1) as success_rate FROM orders o LEFT JOIN payment_channels pc ON o.payment_channel_id pc.id LEFT JOIN ( SELECT order_id FROM payment_records WHERE created_at date(now, -7 days) ) p ON o.id p.order_id LEFT JOIN ( SELECT DISTINCT order_id FROM qr_code_logs WHERE created_at date(now, -7 days) ) s ON o.id s.order_id WHERE o.created_at date(now, -7 days) GROUP BY pc.name;从那以后我每次做支付链路 Demo都强制走一遍「渠道抽象 → 策略注入 → 数据埋点」三步。哪怕最终只用一个码这三层结构也让后续替换真实支付网关时只需改PaymentChannelSelector里的if分支其他代码纹丝不动。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

高速光链路故障排查实战:从DOM光功率到FEC与BER

高速光链路故障排查实战:从DOM光功率到FEC与BER

高速光链路出现吞吐抖动时,不建议一开始就更换全部模块和光纤。先固定现场、建立时间线,再按物理层到业务层逐级排查,才能知道真正的故障点。第一步,保存端口和模块快照。记录两端设备、端口、速率、通道分拆、实际FEC、自动协商状…

2026/10/17 12:06:40 阅读更多 →
Gensim加载Word2vec预训练模型:相似度测试与避坑指南

Gensim加载Word2vec预训练模型:相似度测试与避坑指南

NLP入门的时候,很多人会在词向量这里绕不少弯路。一开始看概念,总觉得是一堆数学公式堆出来的东西;后来用Gensim库跑了一次Word2vec模型的加载和测试,才明白原来“语义”也可以用距离来描述。这篇文章不打算把数学推导铺开&#x…

2026/10/17 12:06:40 阅读更多 →
docker部署ceph集群

docker部署ceph集群

安装之前的准备 我的操作系统 [rootceph02 ~]# uname -a Linux ceph02 6.6.0-105.0.0.111.oe2403sp2.aarch64 #1 SMP Wed Aug 13 16:24:53 CST 2025 aarch64 aarch64 aarch64 GNU/Linux [rootceph02 ~]# cat /etc/os-release NAME"openEuler" VERSION"24.03 (L…

2026/10/17 12:06:40 阅读更多 →

最新新闻

CSS盒子水平居中:从原理到兼容性落地的工程实践

CSS盒子水平居中:从原理到兼容性落地的工程实践

1. 项目概述:为什么一个“盒子居中”要持续更新?“CSS-盒子水平居中”这八个字,看起来像教科书里最基础的一行笔记,甚至可能被初学者在三分钟内扫过就划掉。但如果你真在一线写过两年以上真实业务代码——尤其是维护过三个以上不同…

2026/10/17 13:06:16 阅读更多 →
UE4投影矩阵从原理到实战:透视、反向Z与自定义视角改造

UE4投影矩阵从原理到实战:透视、反向Z与自定义视角改造

开头部分,我先说个一直想聊透的话题。很多同学在UE4里做渲染相关的东西,模型、材质、光照玩得挺6,但只要一碰到“投影矩阵”四个字,要么绕道走,要么直接拿现成函数一顿调用,压根不管底层发生了什么。一直到…

2026/10/17 13:06:16 阅读更多 →
MySQL排序策略解析:全字段排序与rowid排序实战

MySQL排序策略解析:全字段排序与rowid排序实战

## 1. 写在前面:一条简单SQL背后的排序真相如果你平时写过带order by的查询,一定对“排序”这个动作不陌生。但真的深挖起来,MySQL 内部的排序逻辑远不止“排个序”这么简单——它可能直接在内存里排完就返回,也可能先把数据扔进临…

2026/10/17 13:06:16 阅读更多 →
从上电到内核:4412开发板U-Boot启动全解析

从上电到内核:4412开发板U-Boot启动全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 13:06:16 阅读更多 →
用Python分析Spotify导出数据,制作专属个人听歌年鉴

用Python分析Spotify导出数据,制作专属个人听歌年鉴

如果你和我一样,是个重度音乐流媒体用户,每到年底最期待的事情之一就是看那份年度总结,看看自己这一年到底被哪些歌“操控”了情绪。但问题在于:官方年度报告一年才出一次,而且维度固定,你想看“每天几点钟…

2026/10/17 13:06:16 阅读更多 →
Anthropic湿实验室曝光:AI模型如何走向真实世界的自动化实验闭环

Anthropic湿实验室曝光:AI模型如何走向真实世界的自动化实验闭环

早上起来刷行业消息,看到“Anthropic的湿实验室曝光了”这条事情被大家反复转发,第一反应是:这家一直强调AI安全研究的公司,终于把物理世界的实验台摆到了台面上。很多人可能对“湿实验室”这个词有点陌生,简单说就是传…

2026/10/17 13:05:16 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →