JavaWeb蛋糕店源码跑通全流程:JSP+Servlet+MySQL实战解析
简介一份基于JavaWeb的蛋糕店网站系统源码面向计算机专业学生的课程设计、毕业设计或期末大作业场景项目经导师指导并获得97分好评整体完整、可直接运行。系统采用Servlet/JSP与JavaBean分层设计覆盖商品展示、购物车、用户注册登录及订单管理等常用业务模块适合希望快速搭建Web项目的学习者。压缩包共408个文件、约22.02MB包含55个Java源码和110个class文件便于对比调试58个JSP页面配合12个CSS、14个JS完成页面呈现20个XML配置文件管理数据映射18个JAR包封装运行依赖另附SQL脚本用于初始化数据库。资源已有1740人学习下载解压后导入IDE并配置数据库即可使用能够从代码结构到业务流程完整理解JavaWeb项目开发脉络。1. 到手一个 javaweb 蛋糕店源码包先搞清它是什么再动手期末临近很多人会从网上下载一个“基于javaweb的蛋糕店网站系统源码课程设计.zip”压缩包里是代码、SQL脚本和一份可能已经过期的说明文档。这个东西本质是一个用 JSP Servlet MySQL 写成的电商小站前台能注册登录、浏览蛋糕、加购物车、下单后台能管理分类、商品和订单。它不花哨但胜在完整——正好覆盖 JavaWeb 课程设计里老师最喜欢问的会话管理、请求转发、JDBC 操作这些点。它适合三类人急着交课程设计和毕设的学生刚学完 JavaWeb 想找个完整案例练手的人以及想快速看一套老牌 JSP 项目长什么样子的初级开发者。下载它不等于能直接交差后面要做的版本对齐、数据库初始化和二次改动才是真正拉开分差的地方。接下来我把跑通这类项目的通用路径拆开从源码结构、环境配置到坑点给你一条能照着走的路。2. 拆解源码包结构与选型JSPServlet 为什么是课程设计主流2.1 源码包里通常有哪些东西一眼看懂目录结构这类课程设计源码包虽然来自不同作者但目录骨架高度相似。少数是 Maven 工程更多是传统 Web 工程结构。常见解压后你会看到类似下面的布局cake-shop/ ├── sql/ │ └── cake_db.sql # 建库建表脚本附初始数据 ├── src/ │ └── com/cake/ │ ├── dao/ # 数据访问层直接写 JDBC │ ├── service/ # 业务层通常比较薄 │ ├── servlet/ # Controller处理请求转发 │ ├── entity/ # User、Cake、Order 等实体类 │ └── util/ # DBUtil、日期工具 └── WebRoot/有的叫 webapp 或 WebContent ├── META-INF/ ├── WEB-INF/ │ ├── web.xml # Servlet 映射、欢迎页、Filter │ └── lib/ # mysql-connector-java.jar 等 ├── css/ js/ images/ ├── admin/ # 后台管理页面 ├── index.jsp # 前台门户页 └── ...看这个结构你就明白这项目没有 Spring 容器帮忙注入DAO、Service、Servlet 之间的依赖都是靠手动 new 出来再传递的。WEB-INF/lib下如果有mysql-connector-java.jar说明它是非 Maven 工程编译运行全依赖这个目录下的 jar 包如果根目录有pom.xml那就是 Maven 工程依赖集中在中央仓库本地仓库缺包会自动下载。两个概念要分清src放 Java 源码编译输出到WEB-INF/classesWebRoot放页面和静态资源是 Tomcat 发布时挂载的根目录。如果打开 IDEA 后页面图片全裂、点击链接 404八成是导入时把发布目录设错了后面我会专门讲。2.2 技术选型为什么课程设计大多选 JSPServlet 而不是 Spring Boot你在下载这类源码时可能也好奇为什么 2024 年了课程设计还是 JSPServlet 的天下。我见过不少老师直接把 Spring Boot 课题毙掉理由很简单课程设计考核的是你对 JavaWeb 基础链路的理解而不是你会不会抄一段 starter 配置。这里把三种主流技术栈摆在一起对比你就能看懂手里的源码价值在哪技术栈典型配置对课程设计的友好度最容易翻车的地方JSP Servlet JDBCJDK 8 Tomcat 8.5 MySQL 5.7高知识点全裸露好答辩编码乱码、手动拷 jarSSMSpring SpringMVC MyBatisMaven Tomcat MySQL 8中高老师认可但配置量大XML 和注解混用、依赖冲突Spring BootMaven 内嵌 Tomcat中写起来快但基础被掩盖讲不出 Servlet 生命周期JSPServlet 版本最大的好处是“黑匣子少”。一次请求从 JSP 表单发出Servlet 接收调用 DAO 查询 MySQL结果再转发回 JSP每一步都是显式的。老师问“Cookie 和 Session 有什么区别”“GET 和 POST 有什么区别”你能指着代码讲出来。换成 Spring Boot 后你连web.xml都不用写反而很难解释清楚DispatcherServlet前面还发生了什么。如果你的压缩包里是 SSM 工程不用慌跑通思路差别不大只是配置项从web.xml转移到了applicationContext.xml和spring-mvc.xml数据库连接串也从.properties文件里读。下面我主要按最经典的 JSPServlet 结构来拆SSM 版本我会在关键位置补一句差异。3. 用 IDEA 跑通蛋糕店项目JDK/Tomcat/MySQL 三件套配置3.1 版本对齐JDK 8、Tomcat 8.5、MySQL 5.7 是最稳组合在 IDEA 里运行 javaweb 项目第一步不是双击源码而是对齐三件套版本。我见过太多人在这栽跟头装了 Tomcat 10 去跑老项目直接启动报ClassNotFoundException: javax.servlet.Filter或者用 MySQL 8 的驱动类com.mysql.cj.jdbc.Driver去读老项目的db.properties结果找不到类。最稳的组合是 JDK 8 Tomcat 8.5 MySQL 5.7。理由很现实老课程设计源码大多基于javax.servlet包编写Tomcat 8.5 完美兼容JDK 8 对 JSP 里的 scriptlet 语法和% %表达式兼容最好MySQL 5.7 的建表脚本基本不用改而 MySQL 8 对datetime默认值、字符集排序规则更严格常导致导入 SQL 时报错。组件推荐版本替代版本注意事项JDK1.8用 JDK 11 编译老项目sun.misc类缺失、javax.annotation报错常见Tomcat8.5.xTomcat 10 使用jakarta.servlet老代码必炸MySQL5.7MySQL 8 需改驱动为com.mysql.cj.jdbc.Driver并加时区参数IDEA2021 均可新版本不影响关键是选对 Tomcat 和 SDK如果你只有 MySQL 8也不是不能跑。后面 3.3 我会给出兼容写法把driverClassName和 URL 参数一起改掉就能衔接上。3.2 导入 IDEA 与启动从解压到页面上线的操作步骤IDEA 导入老项目有个“玄学”点不要用 Maven 的Import向导去打开非 Maven 工程直接File - Open选择解压目录IDEA 会把它识别为普通项目。如果你是 Maven 工程则选pom.xml右键Add as Maven Project。打开后的操作顺序我按最稳妥的路径列出来第一步设置项目 SDK。File - Project Structure - Project把Project SDK选成 1.8Language Level选 8。老代码如果用了泛型、Lambda语言级别太低会编译报错。第二步把WebRoot或webapp标记为 Web 根目录。在 Project Structure 里选择Facets - Web - Deployment Descriptors指定WEB-INF/web.xmlWeb Resource Directory指向WebRoot目录。这一步漏掉运行后会访问不到 JSP 页面。第三步配置 Tomcat。Run - Edit Configurations - - Tomcat Server - Local在Deployment页签点加号选择Artifact - Web Application: Exploded。注意选 Exploded 而不是 Archive后者是 war 包IDEA 每次启动都要重新打整包慢且容易出缓存问题。然后在Server页签把URL里的地址栏填成http://localhost:8080/Application Context保持/或改成/cake这决定了访问路径。第四步在项目的WEB-INF/lib下放进mysql-connector-java.jar。非 Maven 项目不会自动拉依赖这一步没有启动后必报ClassNotFoundException: com.mysql.jdbc.Driver。若项目是 Maven 工程在pom.xml中确认依赖坐标即可不要手动再拷 jar否则会和 Maven 本地仓库的类造成冲突。完成以上四步后点击 Debug 启动控制台出现Server startup in xxx ms就说明 Tomcat 起来了。浏览器访问首页如果看到蛋糕列表说明项目骨架没问题下一步就是数据库连接。3.3 数据库连接配置javaweb 连接 MySQL 数据库改哪几行大多数课程设计源码会把数据库配置放在src/db.properties或WEB-INF/classes/jdbc.properties里也有直接写在DBUtil.java中的情况。无论哪种核心四行都是下面这些你可以直接照抄并替换成自己的库名和密码jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/cake_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai jdbc.usernameroot jdbc.password123456参数说明useUnicodetruecharacterEncodingutf8解决中文写入乱码useSSLfalse避免 MySQL 8 默认要求 SSL 握手serverTimezoneAsia/Shanghai是 MySQL 8 必填项否则报 “CST” 时区错误。如果是 MySQL 5.7可以不加serverTimezone加上也不影响。Java 侧的加载逻辑通常长这样public class DBUtil { private static final String URL jdbc:mysql://localhost:3306/cake_db ?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai; private static final String USER root; private static final String PASSWORD 123456; static { try { Class.forName(com.mysql.jdbc.Driver); // 8.0 改为 com.mysql.cj.jdbc.Driver } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(MySQL驱动加载失败请确认jar已放入WEB-INF/lib); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } }代码逻辑说明Class.forName的作用是触发驱动类的静态注册让DriverManager能认出 MySQL 协议。MySQL 8 之后驱动主类改为com.mysql.cj.jdbc.Driver老驱动类仍然存在但内部是空壳强烈建议直接换新的。getConnection()每次调用都会新建物理连接课程设计够用但如果你后续要做简历级改造这里一定要换成 Druid 连接池。如果 import 完 SQL 后项目还是登录不进去先别急着改代码。用命令行直接验证mysql -uroot -p123456能不能登录再用 Navicat 打开cake_db库看表数量是否为 5~7 张。常见失败原因是 SQL 脚本只执行了一半或者密码里带了特殊字符导致.properties解析出错。4. 蛋糕店核心表设计与功能链路从点蛋糕到生成订单4.1 五张核心表user、category、cake、orders、order_item蛋糕店系统的核心不是页面漂亮而是表设计能不能撑住“用户下单→卖家发货”的闭环。课程设计里的表通常不超过 8 张但至少要有这五张。下面是常见的建表 SQL你导入后可以对比着看CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(50) NOT NULL, phone VARCHAR(20) DEFAULT NULL, role TINYINT DEFAULT 1 COMMENT 1普通用户, 0管理员 ) ENGINEInnoDB DEFAULT CHARSETutf8; CREATE TABLE category ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(30) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8; CREATE TABLE cake ( id INT PRIMARY KEY AUTO_INCREMENT, category_id INT, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL COMMENT 单价避免用FLOAT, stock INT DEFAULT 0, description TEXT, image VARCHAR(255) DEFAULT NULL, FOREIGN KEY (category_id) REFERENCES category(id) ) ENGINEInnoDB DEFAULT CHARSETutf8; CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, total_price DECIMAL(10,2) NOT NULL, status TINYINT DEFAULT 0 COMMENT 0待付款, 1已付款, 2已发货, 3已完成, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES user(id) ) ENGINEInnoDB DEFAULT CHARSETutf8; CREATE TABLE order_item ( id INT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, cake_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL(10,2) NOT NULL COMMENT 下单时的快照价格, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (cake_id) REFERENCES cake(id) ) ENGINEInnoDB DEFAULT CHARSETutf8;参数说明price用DECIMAL(10,2)而不是FLOAT是因为浮点数在累加对账时会出现 0.10.20.30000000000000004 的误差课程设计答辩时问到这里很加分。orders和order_item拆成两张表是典型的“订单主表 订单明细表”设计一份订单可以包含多个蛋糕主表只存总价和状态明细表存每个蛋糕的数量和快照价。create_time默认值用CURRENT_TIMESTAMP可以让 MySQL 自动填时间。如果你的 MySQL 5.7 报DEFAULT CURRENT_TIMESTAMP语法错误通常是版本太老可以把这行删掉由 Java 层new Timestamp(System.currentTimeMillis())手动写入。4.2 一次点蛋糕的请求链路JSP 到 Servlet 到 JDBC跑通一个完整订单流程是验证项目不是空壳的关键。下面这段是加购物车场景里最常见的 Servlet 代码骨架很多课程设计都长这样WebServlet(/cart/add) public class CartAddServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1. 防止乱码请求和响应两边都设置 UTF-8 req.setCharacterEncoding(UTF-8); resp.setContentType(text/html;charsetUTF-8); // 2. 拿参数cakeId 来自商品页的隐藏域或链接 int cakeId Integer.parseInt(req.getParameter(cakeId)); int quantity Integer.parseInt(req.getParameter(quantity)); // 3. 从 Session 里取购物车没有则新建 ListCartItem cart (ListCartItem) req.getSession().getAttribute(cart); if (cart null) { cart new ArrayList(); req.getSession().setAttribute(cart, cart); } // 4. 合并同类项数量累加 for (CartItem item : cart) { if (item.getCakeId() cakeId) { item.setQuantity(item.getQuantity() quantity); resp.sendRedirect(req.getContextPath() /cart.jsp); return; } } cart.add(new CartItem(cakeId, quantity)); resp.sendRedirect(req.getContextPath() /cart.jsp); } }代码逻辑说明WebServlet(/cart/add)是 Servlet 3.0 之后的注解映射省去了web.xml里写servlet和servlet-mapping两段配置。req.getSession().getAttribute(cart)把购物车存在 Session 里这样淘宝购物车一样用户关闭页面再打开只要浏览器会话没失效蛋糕还在里面。合并同类项的逻辑很多人会漏漏了之后就会出现同一款蛋糕在购物车里变成两行。这里有一个答辩高频问法“为什么购物车放 Session 而不是放 Cookie”你要答得上来——Cookie 只能存字符串且有容量限制存放对象需要序列化Session 存活在服务端操作对象集合更自然但服务器内存压力会变大正式项目会用 Redis 替代 Session 做共享存储。4.3 前台与后台的分界角色权限靠什么拦课程设计系统的后台通常是一套独立的admin/目录里面是商品管理、订单管理、用户列表页面。前后台只靠 Session 里的role字段区分不具备真正的安全控制。常见的权限判断代码长这样% if (user ! null user.getRole() 0) { % a href%request.getContextPath()%/admin/cake_list.jsp蛋糕管理/a % } else { % a href%request.getContextPath()%/login.jsp请先登录/a % } %逻辑说明user.getRole() 0判定管理员用 JSP scriptlet 直接在页面里写逻辑虽然难看但这就是课程设计的主流写法。更规范的做法是用 Filter 拦截所有/admin/*请求校验 Session 里没有user对象或role不是 0 就重定向到登录页。你想在答辩时加分就把这个 Filter 加上代码量不大但讲到权限控制时能给出具体的类名和拦截规则比一句“我们是在页面里判断的”强得多。5. 常见问题避坑MySQL 连接失败到 404 的五个血泪现场5.1 中文乱码页面、数据库、连接串三处必须同时对齐现象后台添加蛋糕名称为“提拉米苏”前台显示“????”或 JSP 页面中文正常写入 MySQL 后变成乱码。原因数据链路任意一环的字符集不是 UTF-8。比如 JSP 页面没有声明% page contentTypetext/html;charsetUTF-8 %或 MySQL 表用了latin1默认字符集或 JDBC 连接串没带characterEncodingutf8。解决三处一起改。JSP 头部统一加上contentType声明web.xml里可以加一个 CharacterEncodingFilter或者直接在 doPost 开头req.setCharacterEncoding(UTF-8)MySQL 建库时用CREATE DATABASE cake_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci。另外注意server.xml里有个URIEncodingUTF-8属性它管的是 GET 请求参数编码如果你在地址栏手输中文参数乱码改它。5.2 Tomcat 10 与 javax.servlet 冲突启动报 ClassNotFound 的根源现象下载项目用 Tomcat 10 启动控制台报java.lang.ClassNotFoundException: javax.servlet.Filter或提示Servlet xxx threw exception。原因Tomcat 10 起将javax.servlet迁移为jakarta.servlet所有老项目的import javax.servlet.*和web.xml头部的 schema 都指向旧域名运行时找不到类。解决换 Tomcat 8.5 或 9.0不要手贱去批量替换源码里的javax为jakarta因为 JSP 内置对象和 Tomcat 内部实现还会牵扯到其他类库。如果必须用 Tomcat 10需要同时升级依赖到jakarta.servlet-api但课程设计不值得花这个时间。5.3 点击登录或商品详情返回 404项目上下文路径没对齐现象首页能开但点“登录”跳到http://localhost:8080/login.jsp时 404或者图片全裂。原因页面里用的是相对路径比如hreflogin.jsp当前 URL 在/admin/下时它会拼成/admin/login.jsp自然找不到。另一个常见问题是 IDEA Tomcat 配置里Application Context设成了/cake但页面跳转写死了href/login.jsp导致路径变成http://localhost:8080/login.jsp丢了/cake前缀。解决统一改用动态绝对路径JSP 中写法是a href%request.getContextPath()%/login.jsp登录/arequest.getContextPath()返回的是/cake这样的上下文路径与 Tomcat 配置保持一致不管应用名怎么改链接都不会断。Servlet 里resp.sendRedirect也要写成resp.sendRedirect(req.getContextPath() /login.jsp)只写/login.jsp一定会串路径。5.4 MySQL 连接失败驱动包、时区、密码三个隐藏点现象启动日志出现Cannot create PoolableConnectionException或页面报Access denied for user rootlocalhost。原因一是mysql-connector-java.jar没有复制到WEB-INF/lib或复制了但 IDEA 没有将它加入 Artifact 的WEB-INF/lib二是 MySQL 8 没配serverTimezone三是建库用的密码和.properties文件里的密码不一致。解决先看控制台完整异常栈是ClassNotFoundException就去 Artifact 里加 jar是SQLException: Access denied就检查密码和用户名。这里提一个 IDEA 老手才知道的操作双击WEB-INF/lib里的 jarIDEA 会自动把它加入模块依赖但只有在Structure - Artifacts - Output Layout里勾选Copy WEB-INF/lib的情况下jar 才会在运行时被发布。5.5 HTTPS 或端口被占用启动成功但页面一直转圈现象8080端口被别的进程占用Tomcat 启动日志显示严重错误或者页面等半天才打开。原因之前启动过别的服务比如 Nginx、其他 Tomcat 实例或 Session 缓存导致旧进程没被杀干净。解决在命令行执行netstat -ano | findstr 8080看 PID再用taskkill /PID pid /F杀掉。不要直接改 Tomcat 配置文件里的端口因为课程设计代码中很多地方硬编码了8080改端口会让跳转全部失效。如果你改了端口记得全局搜索8080把 URL 常量一起改掉。6. 把一个课程设计改造成简历级项目三个进阶方向与验证方法很多人的课程设计跑通了就交差但它和“能写进简历”的项目之间差的不是功能数量而是几个关键设计。我建议你在交稿前做三件事。第一把 DAO 里的裸 JDBC 换成 Druid 连接池。你不需要重塑架构只需要把DBUtil.getConnection()的内部实现替换成从DruidDataSource取连接。这样代码改动量极小但你能在简历上写“使用连接池管理数据库连接避免频繁创建连接”。面试官追问连接池参数时你至少能说出initialSize、maxActive、minIdle三个名词并解释为什么maxActive不是越大越好。第二加一个登录拦截的 Filter。这个类只有十几行却能把你项目从“谁都能直接访问后台管理页”提升为“有基础安全设计”。核心思路是判断 Session 中的user对象是否为空为空则拦截所有/admin/*请求并跳转登录页。做完后再把首页、商品列表、购物车接口各走一遍确认拦截器没有误伤。第三验证清单比跑起来更重要。我在课程设计答辩前会做一张表列出每个核心接口的测试数据注册一个用户、登录、把某一款蛋糕加入购物车、提交订单、管理员后台把订单状态改为已发货。每个流程用浏览器手动走一遍记录 URL 和预期结果。这张表和项目的数据库关系图打印出来就是答辩时最好的展示材料。最后说一句我自己踩过的坑当年我把项目导成了 war 包直接扔给老师结果老师机器上没有 IDEA 的 Artifact 配置解压后连不上数据库。后来学乖了无论谁要项目都附上README.md写清 JDK 版本、Tomcat 版本、MySQL 账号密码以及先执行哪个 SQL 文件。这一个小习惯帮我少挨了不少骂。希望这些经验也能帮到你。本文还有配套的精品资源点击获取

相关新闻

DRNN动态递归神经网络:面向工业控制的自适应时序建模

DRNN动态递归神经网络:面向工业控制的自适应时序建模

简介:本资源是一篇聚焦非线性系统智能控制的学术论文,面向自动化、控制工程及人工智能方向的研究生、科研人员与工程师,重点解决传统线性模型难以建模的复杂系统控制难题。论文提出一种融合DRNN回归神经网络与自适应PID策略的新型控制算法&am…

2026/10/9 12:28:46 阅读更多 →
全国省份城市数据库表:MySQL行政区划表设计与导入实战

全国省份城市数据库表:MySQL行政区划表设计与导入实战

简介:这份资源面向需要在中国行政区划数据上做开发的 MySQL 使用者,提供一份可直接导入的全国省份城市数据库表脚本,适合搭建地理信息系统、物流管理、人口统计分析等需要地域信息的应用场景,也适合作为学习 SQL 建表与层级数据设…

2026/10/9 12:27:45 阅读更多 →
阿布量化交易工具包实战:从环境搭建到策略回测的完整指南

阿布量化交易工具包实战:从环境搭建到策略回测的完整指南

简介:阿布量化交易工具面向希望跨越复杂代码阶段、快速上手量化分析的普通投资者与进阶交易者,提供一套综合AI大数据量化系统。工具整合K线形态、经典指标、走势趋势、时间序列、统计概率与传统均线等多个分析维度,并内置上百种子量化模型&am…

2026/10/9 12:27:45 阅读更多 →

最新新闻

JavaWeb试题库系统实战:Servlet+JSP+MySQL全流程部署与调优

JavaWeb试题库系统实战:Servlet+JSP+MySQL全流程部署与调优

简介:这是一份面向计算机、通信、人工智能及自动化等专业学生的JavaWeb课程实践资源,聚焦试题库管理系统的完整开发实现,适用于期末大作业、课程设计或毕业设计参考。资源包含可直接运行的源码、配套MySQL数据库脚本及详细文档说明&#xff0…

2026/10/9 12:55:31 阅读更多 →
Qt TCP Socket实战指南:从原理到粘包拆包、心跳重连与断线恢复

Qt TCP Socket实战指南:从原理到粘包拆包、心跳重连与断线恢复

1. 先搞清楚Qt TCP Socket到底是什么做Qt开发这么多年,经常有人在群里问"怎么用Qt写网络通信",其实Qt框架对Socket的封装已经非常成熟,你不需要像写Linux C那样手动去处理套接字描述符、bind、listen、accept这一长串流程&#xff…

2026/10/9 12:55:31 阅读更多 →
TIL:Rails 迁移 DSL 实战——用 create_join_table 创建多对多连接表

TIL:Rails 迁移 DSL 实战——用 create_join_table 创建多对多连接表

文档教程知识库 【免费下载链接】til :memo: Today I Learned 项目地址: https://gitcode.com/gh_mirrors/ti/til 点击查看 免费下载 Rails 的迁移 DSL 为"在两个已存在的表之间创建连接表(join table)"这一高频需求提供了专用助手…

2026/10/9 12:55:31 阅读更多 →
ThinkPHP 5.0 请求生命周期与架构解析:从入口到响应的完整流程

ThinkPHP 5.0 请求生命周期与架构解析:从入口到响应的完整流程

1. 从入口文件说起:一次请求到底经历了什么很多人学tp5.0,上来就啃控制器和模型,结果写了几周代码,还是说不清一个URL从浏览器敲下去到页面返回,中间到底跑了哪些代码。我当初也是这样,直到有一次线上出了个…

2026/10/9 12:55:31 阅读更多 →
高中数学集合与函数核心概念与解题方法全解析

高中数学集合与函数核心概念与解题方法全解析

1. 从一道让全班卡壳的题说起:集合与函数到底难在哪如果你问一个刚上高一的学生,高中数学第一个让你觉得“不对劲”的地方是什么,十有八九会提到集合与函数。初中数学好歹还能靠直觉和公式硬算,到了集合这里,突然冒出一…

2026/10/9 12:55:31 阅读更多 →
Claude Code 长期记忆方案:用 claude-mem 实现跨会话上下文持久化

Claude Code 长期记忆方案:用 claude-mem 实现跨会话上下文持久化

Claude Code 用久了,你一定会遇到一个尴尬的场景:昨天刚和它梳理清楚的模块架构,今天打开新会话它全忘了,你得重新讲一遍背景、贴一遍文件结构、再说一遍约束条件。更难受的是,这种“失忆”不是偶发,而是常…

2026/10/9 12:54:30 阅读更多 →

日新闻

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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →