JavaBean+JSP零食商城源码:从部署到下单的完整实战指南
简介这份资源是面向计算机相关专业学生与Java Web初学者的一套完整项目实战包主题为基于JavaJavaBeanJSP的网上零食销售系统适合用作课程设计、毕业设计或自学练手帮助读者理解传统JSP开发模式下的电商业务实现思路。压缩包为zip格式整体约633.38MB内含项目全套源码与配套完整文档源码均经过测试校正可保证百分百成功运行文档部分则对系统设计思路与实现过程做了系统说明。目前已有656人学习下载具备一定的参考热度。读者可从中获得一套可直接运行的零食销售系统源码涵盖商品展示、购物车、订单管理等典型模块同时结合文档梳理数据库表结构与JavaBean封装逻辑便于快速搭建环境、对照调试并在此基础上进行二次开发或功能扩展是学习JSPMySQL技术栈的实用参考材料。1. 从一份 JSP 零食商城源码说起它到底能跑通什么前阵子帮一个学弟看他毕设题目是网上零食销售系统技术栈写的是 Java JavaBean JSP MySQL。他卡在购物车数量加减上整整两天页面一刷新数据就丢。我拿到他下载的那份源码包解压、配库、改连接、丢进 Tomcat二十分钟跑起来了。问题出在他把购物车对象存进了 request 作用域而不是 session。这件事让我觉得这套看着老掉牙的 JSP 方案其实对很多做课程设计、毕设、JavaWeb 入门的人来说依然是性价比最高的选择——它没有 Spring 那一堆注解和自动装配的黑匣子从浏览器请求到数据库查询整条链路你都能在代码里一行行看到。这份资源就是一套基于 Java JavaBean JSP 的网上零食销售系统配套 MySQL 数据库和完整设计文档。它解决的不是高并发、分布式这些工程问题而是我要一个结构完整、能演示、能讲清楚、能改得动的 JavaWeb 项目这个具体诉求。适合三类人正在做 JavaWeb 课程设计的学生、需要一份可运行参考项目练手的初学者、以及想拿它当模板改造成自己毕设的开发者。下面我按实际复现的顺序把环境、数据库、核心模块和踩坑点拆开讲。2. 环境与数据库落地JDK、Tomcat、MySQL 三件套怎么配不翻车2.1 版本选型为什么这套老栈反而要卡版本JSP JavaBean 这套技术对版本其实挺敏感不是越新越好。JDK 建议用 8Tomcat 用 8.5 或 9MySQL 用 5.7 或 8.0。原因很直接这套源码里的 JDBC 驱动、Servlet API 依赖、以及 JSP 页面里的 taglib 写法都是按那个年代的规范写的。你要是上 JDK 17 配 Tomcat 10第一个坑就是包名——Tomcat 10 之后javax.servlet全部改成了jakarta.servlet源码里所有import javax.servlet.*直接编译不过报错一片红。我一般会这么配JDK 8u 系列任意小版本Tomcat 9.0.xMySQL 5.7.44 或 8.0.x。MySQL 8 和 5.7 的差别主要在驱动类名和连接串参数上8.0 要用com.mysql.cj.jdbc.Driver连接串还得带时区和 SSL 参数否则启动就报时区错误。下面这套配置是我反复验证过的组合。组件推荐版本关键原因JDK1.8源码 Servlet 依赖为 javax 包高版本需迁移Tomcat9.0.x兼容 javax.servlet10 起包名变更MySQL5.7.44 / 8.0.x驱动类名与连接串参数不同JDBC 驱动mysql-connector-java 5.1.x / 8.0.x需与 MySQL 版本匹配IDEEclipse / IDEA需支持 Dynamic Web Project2.2 数据库导入建库、导表、改连接串拿到源码后第一件事不是急着部署而是先把数据库跑起来。资源包里通常有一个.sql文件里面是建库建表和初始数据。我习惯先用命令行确认 MySQL 服务正常再导入。# 登录 MySQL8.0 版本 mysql -u root -p # 创建数据库字符集用 utf8mb4避免中文零食名乱码 CREATE DATABASE snack_shop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 退出后用命令行导入 sql 文件 mysql -u root -p snack_shop snack_shop.sql导入完成后进库看一眼表结构和数据量确认没导空。USE snack_shop; SHOW TABLES; -- 常见会有 user、product、category、orders、order_item、cart 这几张表 SELECT COUNT(*) FROM product;接下来是最关键的一步改数据库连接配置。JSP 项目一般把连接信息写在 JavaBean 或工具类里常见文件名是DBUtil.java或DBHelper.java也可能直接写在某个BaseDao里。找到它把用户名、密码、库名改成你自己的。// DBUtil.java 典型写法 public class DBUtil { // MySQL 8.0 用 cj 驱动5.7 可用 com.mysql.jdbc.Driver private static final String DRIVER com.mysql.cj.jdbc.Driver; // 8.0 必须带 serverTimezone 和 useSSL否则连接失败 private static final String URL jdbc:mysql://localhost:3306/snack_shop?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalse; private static final String USER root; private static final String PASSWORD 你的密码; public static Connection getConnection() throws Exception { Class.forName(DRIVER); return DriverManager.getConnection(URL, USER, PASSWORD); } }这里的参数每一个都有讲究。useUnicodetruecharacterEncodingutf8保证中文零食名不乱码serverTimezoneAsia/Shanghai是 MySQL 8.0 的硬性要求不写就抛The server time zone value is unrecognizeduseSSLfalse是本地开发省去证书配置。改完这几处数据库这层基本就通了。2.3 部署到 Tomcat从 Dynamic Web Project 到访问首页源码导入 IDE 时要确保项目被识别成 Dynamic Web ProjectEclipse或 Web ApplicationIDEA否则WEB-INF/web.xml不生效。导入后检查三件事WEB-INF/lib下有没有mysql-connector-java.jarWEB-INF/web.xml里的欢迎页配置指向哪个 JSP以及项目的 Build Path 里 JDK 是不是 1.8。# 把项目打成 war 或直接部署到 Tomcat webapps # 方式一IDE 里配置 Tomcat Server 直接 Run on Server # 方式二手动拷贝 cp -r snack_shop /path/to/tomcat/webapps/ # 启动 Tomcat /path/to/tomcat/bin/startup.sh # Linux/Mac # Windows 下双击 bin/startup.bat启动后浏览器访问http://localhost:8080/snack_shop/能看到首页商品列表就说明整条链路通了。如果 404先看 Tomcat 控制台有没有部署异常如果 500多半是数据库连接或 SQL 报错往下看日志里的Caused by。提示Tomcat 启动日志里如果出现ClassNotFoundException: com.mysql.cj.jdbc.Driver说明驱动 jar 没放进WEB-INF/lib而不是 Build Path。Web 项目运行时只认WEB-INF/lib下的 jar。3. JavaBean 与 JSP 分工数据层和展示层怎么各司其职3.1 JavaBean 的四个规范与实体映射这套系统的骨架就是 JavaBean。所谓 JavaBean说白了就是符合几条约定的普通 Java 类私有属性、公有无参构造、公有的 getter/setter、实现 Serializable。它在这里承担两个角色——一是作为数据实体比如 Product、User、Order二是作为业务封装比如 Cart、OrderService。实体类通常和数据库表一一对应。以商品为例表里有哪些字段Bean 里就有哪些属性。// Product.java —— 与 product 表对应 public class Product implements Serializable { private int id; private String name; // 零食名称 private double price; // 单价 private int stock; // 库存 private String category; // 分类 private String image; // 图片路径 private String description; // 描述 public Product() {} // 无参构造JSP 用 jsp:useBean 时必须 public int getId() { return id; } public void setId(int id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } // 其余 getter/setter 省略 }为什么一定要无参构造因为 JSP 里的jsp:useBean标签底层就是靠反射调用无参构造来实例化的。少了它页面直接报InstantiationException。这是新手最容易忽略的一条规范。3.2 JSP 页面里怎么用 Bean三种作用域别用错JSP 用jsp:useBean配合jsp:setProperty、jsp:getProperty来操作 Bean核心是scope属性。它有四个取值page、request、session、application。用错作用域就是文章开头学弟那个购物车丢数据的翻车现场。%-- 商品详情页商品数据只在当前请求用scope 用 request --% jsp:useBean idproduct classcom.snack.entity.Product scoperequest / jsp:setProperty nameproduct property* / %-- 购物车必须跨请求保持scope 用 session --% jsp:useBean idcart classcom.snack.entity.Cart scopesession / %-- 页面展示 --% h2jsp:getProperty nameproduct propertyname //h2 p价格jsp:getProperty nameproduct propertyprice / 元/pproperty*是个省事写法它会自动把请求参数按名字匹配到 Bean 的同名属性上前提是参数名和属性名一致。购物车用 session 作用域是因为用户加购、改数量、结算分散在多个请求里request 一刷新就没了。而商品详情这种一次性展示用 request 就够用 session 反而会污染会话数据。3.3 购物车逻辑session 里存对象还是存 Map购物车是这套系统里最能体现 JavaBean 价值的地方。常见实现有两种一种是把CartItem列表直接塞进 session另一种是用MapInteger, CartItem以商品 id 为键。我更推荐后者因为改数量、删商品时查找是 O(1)不用遍历。// Cart.java —— 购物车业务 Bean public class Cart implements Serializable { // key 是商品 idvalue 是购物项 private MapInteger, CartItem items new HashMap(); public void add(Product p, int qty) { if (items.containsKey(p.getId())) { // 已存在就累加数量 items.get(p.getId()).setQuantity( items.get(p.getId()).getQuantity() qty); } else { items.put(p.getId(), new CartItem(p, qty)); } } public void remove(int productId) { items.remove(productId); } public double getTotal() { double sum 0; for (CartItem it : items.values()) { sum it.getProduct().getPrice() * it.getQuantity(); } return sum; } // getter/setter 省略 }CartItem里持有Product引用和数量getTotal()实时算总价。这里有个细节Cart 必须实现 Serializable因为 Tomcat 在会话持久化或重启时可能序列化 session 里的对象不实现就会在特定场景下报NotSerializableException。这个坑平时不触发一旦服务器重启就冒出来属于典型的玄学问题。4. 核心业务链路排查从登录到下单哪一步最容易断4.1 登录与权限session 校验和过滤器登录逻辑本身不复杂查 user 表比对密码成功就把 User 对象放进 session。真正容易出问题的是未登录也能直接访问后台页面这个漏洞。规范做法是加一个权限过滤器。// AuthFilter.java —— 拦截未登录访问 public class AuthFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) resp; HttpSession session request.getSession(); // 放行登录、注册、静态资源 String uri request.getRequestURI(); if (uri.contains(login) || uri.contains(register) || uri.contains(.css)) { chain.doFilter(req, resp); return; } if (session.getAttribute(user) null) { response.sendRedirect(request.getContextPath() /login.jsp); return; } chain.doFilter(req, resp); } }过滤器要在web.xml里注册或者用WebFilter注解。注意放行规则别写太死否则登录页自己被拦就陷入死循环了。4.2 下单与库存事务和并发扣减下单是整条链路里最需要小心的一步。它涉及三张表orders 插订单、order_item 插明细、product 扣库存。这三步必须在一个事务里否则插了订单没扣库存或者扣了库存订单没生成数据就脏了。// OrderService.java —— 下单事务 public boolean createOrder(int userId, Cart cart) { Connection conn null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); // 关闭自动提交开启事务 int orderId orderDao.insertOrder(conn, userId, cart.getTotal()); for (CartItem it : cart.getItems().values()) { orderDao.insertItem(conn, orderId, it); // 扣库存带 stock qty 条件防止超卖 int rows productDao.reduceStock(conn, it.getProduct().getId(), it.getQuantity()); if (rows 0) { conn.rollback(); // 库存不足整体回滚 return false; } } conn.commit(); return true; } catch (Exception e) { try { if (conn ! null) conn.rollback(); } catch (Exception ex) {} e.printStackTrace(); return false; } finally { try { if (conn ! null) conn.setAutoCommit(true); } catch (Exception ex) {} } }扣库存的 SQL 要写成UPDATE product SET stock stock - ? WHERE id ? AND stock ?靠数据库的行锁和条件判断来防超卖。如果先查库存再更新两个请求同时进来就会超卖这是并发场景下的经典翻车点。虽然课程设计里并发压力不大但把这条写对答辩时是个加分项。4.3 中文乱码三个位置要统一JSP 项目的中文乱码是老生常谈但每次都能卡住人。乱码可能出现在三个位置页面显示、表单提交、数据库存储。要根治就得三处统一成 UTF-8。%-- 每个 JSP 页面顶部声明 --% % page contentTypetext/html;charsetUTF-8 languagejava pageEncodingUTF-8 %// POST 请求在读取参数前设置 request.setCharacterEncoding(UTF-8); response.setContentType(text/html;charsetUTF-8);数据库连接串里带上characterEncodingutf8建库时用utf8mb4。三处都对了中文才不会变成问号或方块。GET 请求的乱码还得改 Tomcat 的server.xml在 Connector 上加URIEncodingUTF-8。5. 避坑与常见问题这几处我踩过你别再踩5.1 现象页面报 404但项目明明部署了原因通常是访问路径不对。JSP 项目的访问地址是http://localhost:8080/项目名/页面.jsp项目名是部署时的 context path不是文件夹名。如果 IDE 里改了 context path或者 war 包名和预期不一致就会 404。解决去 Tomcat 的webapps目录看实际解压出来的文件夹名或者看 IDE 部署配置里的 Application context。5.2 现象数据库连不上报 Access denied 或 Communications link failureAccess denied是用户名密码错或者该用户没有远程/本地权限。Communications link failure多半是 MySQL 服务没启动或者端口不是 3306。解决先net start mysqlWindows确认服务在跑再用mysql -u root -p手动登录验证账号。8.0 版本还要确认连接串带了serverTimezone。5.3 现象JSP 里jsp:useBean报 ClassNotFoundExceptionBean 类没编译或者包名写错。JSP 里class属性要写全限定名比如com.snack.entity.Product不能只写Product。另外确认编译后的.class文件在WEB-INF/classes对应包路径下。Eclipse 有时不自动编译需要 Project → Clean 一下。5.4 现象购物车数据一刷新就没了作用域用错把 Cart 放进了 request 而不是 session。解决jsp:useBean的 scope 改成 session或者手动session.setAttribute(cart, cart)。同时确认 Cart 和 CartItem 都实现了 Serializable。5.5 现象下单后库存没变或者订单生成了但明细为空事务没生效。检查conn.setAutoCommit(false)是否在操作前调用commit()是否在所有操作之后。如果 DAO 里各自拿了新连接事务就跨不了必须把同一个 Connection 一路传下去。这是分层设计里最容易断的地方。6. 二次开发与验证怎么确认你改的代码真的生效了跑通只是第一步多数人拿到这套源码是要改的——改界面、加功能、换主题。改完之后怎么确认没改坏我一般走一套固定验证流程。先做冒烟测试登录 → 浏览商品 → 加购 → 改数量 → 下单 → 查订单这条主链路走一遍任何一步断了都说明改动影响了核心逻辑。然后针对改动点做定向验证。比如你改了商品查询的 SQL就去数据库里手动执行一遍同样的语句对比结果集你改了 JSP 页面就打开浏览器开发者工具看 Network 里返回的 HTML 结构对不对。-- 验证下单后库存是否正确扣减 SELECT id, name, stock FROM product WHERE id 1; -- 验证订单和明细是否对应 SELECT o.id, o.total, i.product_id, i.quantity FROM orders o JOIN order_item i ON o.id i.order_id WHERE o.id 你的订单号;进阶一点可以给关键 DAO 方法加日志用System.out.println或 log4j 打印执行的 SQL 和影响行数。这样一旦数据不对能立刻定位是 SQL 写错还是参数传错。我还会在DBUtil里加一个连接测试的 main 方法改完连接配置先单独跑一下确认能连上再启动 Tomcat省得每次都等服务器起来才发现连不上。// DBUtil 里加个自测入口改完配置先跑它 public static void main(String[] args) { try (Connection conn getConnection()) { System.out.println(数据库连接成功 conn.getMetaData().getURL()); } catch (Exception e) { System.out.println(连接失败 e.getMessage()); } }这套流程看着笨但能挡住八成以上的低级错误。从那以后我每次改完数据库相关代码都强制先跑一遍这个连接自测和主链路冒烟再谈别的。希望这套拆解能帮你把这份零食商城源码真正跑起来、改得动。本文还有配套的精品资源点击获取

相关新闻

JSP在线仓库管理系统源码复现指南:从环境搭建到业务闭环

JSP在线仓库管理系统源码复现指南:从环境搭建到业务闭环

简介:这份资源是面向Java Web初学者与课程设计开发者的JSP在线仓库管理系统完整源码,基于JSP技术实现,适合用于毕业设计、课程实训或自学练手。系统覆盖仓库管理员登录、货品及类别信息管理、采购信息管理、出库入库管理、财务信息管理和管理…

2026/10/9 6:58:45 阅读更多 →
Agent-Reach:三步提升智能体触达能力,从规划到执行真正落地

Agent-Reach:三步提升智能体触达能力,从规划到执行真正落地

说实话,现在聊 AI Agent,大家首先想到的都是“聪明”、“能规划”、“会写代码”这种身上的能力标签。但不管你用的是哪家大模型的底座,也不管你的 Agent 框架写得有多优雅,真正扔到业务环境里跑上一周,你会发现最卡脖…

2026/10/9 6:58:45 阅读更多 →
计算机网络考试题PDF复习法:考点地图与三轮刷题

计算机网络考试题PDF复习法:考点地图与三轮刷题

简介:兰州理工大学计算机网络考试题是一份面向高校计算机与网络工程专业学生的考试复习资料,适合用来备考期末、考研复试或查漏补缺。资源内容按题型组织,预览中可见选择题、填空题、名词解释与简答题等,覆盖TCP/IP协议核心、数据…

2026/10/9 6:58:45 阅读更多 →

最新新闻

编写恰到好处的产品退市(EOL)通知:Product-Manager-Skills 的 eol-message 技能实战指南

编写恰到好处的产品退市(EOL)通知:Product-Manager-Skills 的 eol-message 技能实战指南

AI 技能AI 插件 【免费下载链接】Product-Manager-Skills Product Management skills framework built on battle-tested methods for Claude Code, Cowork, Codex, and AI agents. 项目地址: https://gitcode.com/gh_mirrors/pr/Product-Manager-Skills 点击查看 免…

2026/10/9 7:31:10 阅读更多 →
用面试转录预测 Culture Index 特质:interpreting-culture-index 的 predict-from-interview 工作流实战指南

用面试转录预测 Culture Index 特质:interpreting-culture-index 的 predict-from-interview 工作流实战指南

AI 技能AI 插件应用安全网络安全AI 评测 【免费下载链接】skills Trail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows 项目地址: https://gitcode.com/gh_mirrors/skills8/skills 点击查看 免费下载 本文是 T…

2026/10/9 7:31:10 阅读更多 →
遗传算法求解电力系统经济调度:爬坡约束与网损的Matlab实现

遗传算法求解电力系统经济调度:爬坡约束与网损的Matlab实现

搞电力系统优化的同行应该都有同感:经济调度(Economic Dispatch)这个题目看起来不难——把负荷分给几台机组让总成本最低,但一旦把爬坡约束、网损这些工程细节塞进去,"简单"就变成了"复杂"。尤其是…

2026/10/9 7:31:10 阅读更多 →
Arcane 贡献指南:搭建 Go + SvelteKit 双端热重载开发环境并提交高质量 PR

Arcane 贡献指南:搭建 Go + SvelteKit 双端热重载开发环境并提交高质量 PR

云原生运维容器运行时 【免费下载链接】arcane Modern Docker Management, Designed for Everyone 项目地址: https://gitcode.com/gh_mirrors/arcane2/arcane 点击查看 免费下载 Arcane 是一个面向所有人的现代化 Docker 管理平台,采用 Go 后端、Svelt…

2026/10/9 7:31:10 阅读更多 →
wp-calypso 的 createSelector 详解:用 @automattic/state-utils 构建带缓存失效机制的 Redux 记忆化选择器

wp-calypso 的 createSelector 详解:用 @automattic/state-utils 构建带缓存失效机制的 Redux 记忆化选择器

前端CMS 【免费下载链接】wp-calypso The JavaScript and API powered WordPress.com 项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso 点击查看 免费下载 wp-calypso(WordPress.com 的前端应用)的 Redux 状态树刻意保持精简&#…

2026/10/9 7:31:10 阅读更多 →
Playnite 主题改 3 处 XAML 就能加动画

Playnite 主题改 3 处 XAML 就能加动画

Playnite 主题改 3 处 XAML 就能加动画 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https://gitcode.com/GitHub_T…

2026/10/9 7:30:09 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →