JavaWeb连接MySQL实战:JDBC到增删改查的完整项目案例
Day10是个分水岭前面学的Servlet、JSP、HTTP协议这些零散知识点今天终于串起来了——用JavaWeb连接MySQL数据库做一个小而完整的项目案例。如果你正跟着黑马或类似的教程走会发现今天的笔记量突然变大其实是因为从“写单页程序”变成了“写一个带数据库的web应用”思维要转个弯。这篇文章我用自己的视角把这一天的重点理一遍包括IDEA跑通Web项目的配置、JDBC连接MySQL的详细过程、一个可复用的增删改查骨架以及我实际踩过的坑。适合刚好学到Day10、或者做JavaWeb课程设计无从下手的同学直接照着抄。1. 环境准备IDEA跑通JavaWeb项目的那些配置1.1 JDK、Tomcat、Maven版本怎么搭才不打架先说版本。很多人卡在配置半天最后发现是JDK和Tomcat版本不兼容。Tomcat 9和Tomcat 10一个关键区别Tomcat 10把Servlet API的包名从javax.servlet改成了jakarta.servlet。代码里写import javax.servlet.*的项目放到Tomcat 10上直接编译报错。所以我个人建议学习阶段用Tomcat 9.0.x JDK 8或JDK 11这套组合最稳网上的资料和教程也最多。如果你用的是JDK 17那Tomcat 9也支持但JavaWeb学习阶段没必要追新稳定压倒一切。Maven方面IDEA内置的Maven版本通常够用。要注意的是settings.xml里的镜像源。国内直连中央仓库经常超时我一般在mirror节点加阿里云镜像这样下载依赖才快。具体的配置就不贴完整文件了核心就一句把mirrorOf设为centralurL指向阿里云仓库地址。改完之后IDEA里Maven的配置路径是Settings - Build, Execution, Deployment - Build Tools - Maven把User settings file切到你的settings.xml然后点一下Reload让IDEA重新加载。1.2 IDEA中配置Tomcat的完整步骤这一步是Day10最容易劝退的地方。很多人代码写完了一运行发现“Error configuring application listener”或者干脆没有Artifact选项。其实顺序对了就很简单。前提是你的项目是一个Maven Web项目也就是在pom.xml里声明了packagingwar/packaging并且项目结构里有src/main/webapp目录。如果建的是纯Java项目后面全白搭。配置Tomcat的路径是Run - Edit Configurations - 左上角 - Tomcat Server - Local。然后要指定两个东西Application server点Configure选你本地Tomcat解压目录IDEA会识别出版本号。URL通常IDEA会自动生成http://localhost:8080/项目名_war_exploded/。这串地址看着长但别手改成短路径否则后面访问路径对不上。如果你想用根路径访问可以改Application context为/这样启动后直接http://localhost:8080就能打开首页。点开Deployment选项卡点选Artifact然后选择项目名:war exploded。重点来了选war exploded而不是war因为前者是解压目录支持热部署改JSP和Java文件不用频繁重启。确认后启动Tomcat跑起来浏览器能打开欢迎页配置就算通了。如果你用的是新版IDEA比如2022.3Tomcat Server的选项可能在插件里被隐藏了。需要先确认装了Smart Tomcat插件或者官方Tomcat插件。这个坑比较隐蔽很多人找半天没有Tomcat选项其实是插件没启用。1.3 依赖管理MySQL驱动和连接池别用错坐标Day10开始连数据库pom.xml里至少要加两个依赖MySQL驱动和连接池。我用的是mysql-connector-j新版坐标8.0.33版本。注意老教程里写的是com.mysql:mysql-connector-java新版Maven仓库把坐标改成了com.mysql:mysql-connector-j如果你用旧坐标在某些环境里会解析失败。连接池我选Druid因为国内用的多监控方便。坐标是com.alibaba:druid版本1.2.x。如果不想引连接池直接用JDBC的DriverManager也能跑通但连接每次都要新建开发效率低。Day10阶段我建议直接上连接池养成好习惯。配置信息可以写在一个druid.properties属性文件里注意数据库名、用户名、密码要和本地MySQL一致。2. 数据库设计与JavaWeb连接MySQL的细节2.1 一个适合练手的两张表结构Day10的完整案例通常是用户管理或者员工管理我这次以“用户订单”为例表不用多但要把外键、时间字段、唯一约束都体现出来。用户表t_userCREATE TABLE t_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(32) UNIQUE NOT NULL, password VARCHAR(64) NOT NULL, real_name VARCHAR(32) DEFAULT , create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;订单表t_orderCREATE TABLE t_order ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, product_name VARCHAR(64) NOT NULL, amount DECIMAL(10,2) DEFAULT 0.00, status TINYINT DEFAULT 0, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES t_user(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;注意字符集一定要用utf8mb4而不是utf8MySQL的utf8不是真正的四字节UTF-8存emoji或者生僻字会报错甚至乱码。外键加上去练习SQL和程序逻辑时会更接近真实项目。2.2 JDBC连接MySQL从DriverManager到连接池很多人背了JDBC五步走但还是搞不懂为什么每次都要写Class.forName(com.mysql.cj.jdbc.Driver)。简单说这是让驱动类被加载驱动自己会向DriverManager注册一个实例。MySQL 8.x的驱动类路径是com.mysql.cj.jdbc.Driver不是老版的com.mysql.jdbc.Driver写错会报“找不到类”。用DriverManager连接的核心代码就这几行String url jdbc:mysql://localhost:3306/webday10?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8; Connection conn DriverManager.getConnection(url, root, 你的密码);这里serverTimezoneAsia/Shanghai是MySQL 8必须加的不加会报时区错误。characterEncodingutf8是告诉MySQL客户端用UTF-8传参防止中文乱码。这一段代码用完必须conn.close()否则数据库连接数飙升。用Druid连接池后不再需要DriverManager而是通过DruidDataSourceFactory加载配置Properties props new Properties(); props.load(new FileInputStream(src/druid.properties)); DataSource ds DruidDataSourceFactory.createDataSource(props); Connection conn ds.getConnection();不同之处在于ds.getConnection()拿到的连接用完了执行conn.close()时并不是真正关闭物理连接而是把连接放回池子里。这个机制容易让人懵你只要记住不管用哪种方式finally里都要写close()只不过连接池的close是“还回去”。2.3 为什么要用PreparedStatement而不是StatementDay10写增删改查我见到不少同学习惯用Statement拼接SQLStatement stmt conn.createStatement(); stmt.execute(INSERT INTO t_user(username, password) VALUES( name , pwd ));这种写法能跑但有两个致命问题第一是SQL注入漏洞用户输入; DROP TABLE t_user; --你的表就没了第二是性能每次拼接字符串SQL数据库都要硬解析。正确处理是用PreparedStatement预编译SQL骨架参数用?占位然后setString绑值。String sql INSERT INTO t_user(username, password, real_name) VALUES(?,?,?); PreparedStatement ps conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, md5(password)); // 这里只是示意实际要做加盐哈希 ps.setString(3, realName); ps.executeUpdate();executeUpdate()返回受影响行数增删改都用它executeQuery()返回ResultSet查询用。记住这条线Day10的代码就不会乱。3. 核心功能实现注册、登录、列表展示的完整套路3.1 用户注册功能参数接收与MD5加密注册页面的表单提交过来Servlet里拿到HttpServletRequest后调用request.getParameter(username)拿值。这里有一个新手必踩的坑表单input的name属性和getParameter()里的字符串必须一模一样否则拿到的是null。我见过有人检查半天代码最后发现是表单里nameuser_nameServlet里写的getParameter(username)。密码不能明文存MySQL。虽然Day10课堂案例可能只做简单加密但我是建议你至少用MD5加盐。注意单纯MD5已经被彩虹表攻破学习阶段可以直接用MD5(密码 固定盐值)然后存哈希值。真实开发用BCrypt但Day10先不展开。判断注册是否成功的标准executeUpdate()返回大于0就成功然后重定向到登录页用response.sendRedirect(login.jsp)而不是forward因为要避免刷新页面重复提交。3.2 登录校验与Session从request到session的链路登录逻辑比注册多了一步查库比对。查询时用executeQuery()拿到ResultSet如果rs.next()为真说明账户密码存在就创建SessionHttpSession session request.getSession(); session.setAttribute(loginUser, user); session.setMaxInactiveInterval(30 * 60); response.sendRedirect(index.jsp);这里我有话要说request.getSession()默认是“有就拿没有就创建”。如果你只是判断用户是否登录建议用request.getSession(false)这样不会为每个静态资源访问都创建一个没用的Session。登录成功后把用户对象放进Session后续要判断权限直接Session里取属性就行。踩过的坑Session在重定向后会丢其实不会。只要同一个浏览器没关Cookie里的JSESSIONID没失效Session就能取到。如果开发时发现Session丢了先检查你是否在代码里不小心调用了session.invalidate()或者浏览器设置了禁用Cookie。另外Tomcat里Session默认超时是30分钟可以通过web.xml里配置session-timeout修改单位是分钟。3.3 用户列表展示Servlet JSP EL JSTL四件套页面要展示数据老式写法是在JSP里写Java代码比如% for(User u : list) { %这种经久但并不好维护。Day10应该开始习惯EL表达式和JSTL标签。Servlet里查完数据库把List存入request域request.setAttribute(userList, userList); request.getRequestDispatcher(user_list.jsp).forward(request, response);JSP页面里遍历% taglib prefixc urihttp://java.sun.com/jsp/jstl/core % c:forEach items${userList} varu tr td${u.id}/td td${u.username}/td td${u.realName}/td /tr /c:forEach注意JSTL依赖需要在pom.xml里添加Apache的jstl和taglibs-standard-impl都要加否则页面会报找不到jstl/core。IDEA里如果JSP编译不过先检查Maven依赖里有没有红叉。用EL时${u.username}会调用User对象的getUsername()方法所以实体类必须写对getter/setter这里出问题通常就是getter命名不规范。4. 从零整合一个“订单用户管理系统”案例4.1 项目分层结构包名怎么拆才清晰Day10的完整案例我推荐按标准分层建包虽然代码量会多但思路清晰com.xxx.webday10.controller -- Servlet类 com.xxx.webday10.service -- 业务逻辑接口和实现 com.xxx.webday10.dao -- 数据访问层 com.xxx.webday10.entity -- 实体类对应表结构 com.xxx.webday10.util -- 数据库连接池工具类有同学会问Servlet里直接写JDBC不行吗行但工程上不行。一旦业务复杂度上来比如一个操作要同时改三张表你需要在Service层管理事务。Day10阶段你至少要养成“Controller只负责收参数、调Service、跳页面”的习惯Dao只负责SQL操作。后面学Spring的时候你会发现这套思路就是MVC的雏形。4.2 一个标准的查询用户订单列表的代码走读我用“查询某用户的订单列表”作为完整案例的切片。Dao层写方法public ListOrder findOrdersByUserId(int userId) { ListOrder list new ArrayList(); String sql SELECT * FROM t_order WHERE user_id ?; try (Connection conn DbUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, userId); ResultSet rs ps.executeQuery(); while (rs.next()) { Order o new Order(); o.setId(rs.getInt(id)); o.setProductName(rs.getString(product_name)); o.setAmount(rs.getBigDecimal(amount)); o.setStatus(rs.getInt(status)); list.add(o); } } catch (SQLException e) { e.printStackTrace(); } return list; }这里用了try-with-resources语法JDK7支持这样Connection、PreparedStatement、ResultSet都会自动关闭比在finally里挨个判空省事。但要注意ResultSet也要关try-with-resources里如果只写conn和ps而不写rsrs不会被自动关。建议写成try (Connection conn ...; PreparedStatement ps ...; ResultSet rs ps.executeQuery())。技术上讲ps关闭时一般会连带关闭rs但显式声明更保险。Service层调用DaoController层把数据塞到请求域里再转发到JSP。这个流程跑通一次后你会发现所有功能都是同一套模板Dao写SQLService写业务Servlet写转发。这就是JavaWeb的“套路”。4.3 部署启动与数据库配置的对齐在IDEA里启动Tomcat之前一定要先确认MySQL服务起来了而且数据库名、账号密码和druid.properties里一致。我遇到过最无语的报错Access denied for user rootlocalhost检查了半小时发现密码写成了字符串的password占位符没改。用Navicat连一下数据库确认能连上再启动Tomcat能省很多排查时间。访问项目时URL路径分三层根路径是Tomcat默认http://localhost:8080/你自己的项目要加上下文路径比如http://localhost:8080/webday10_war_exploded/具体Servlet要加WebServlet(/login)注解映射的路径那么完整地址就是http://localhost:8080/webday10_war_exploded/login。新同学经常把这三层混淆经常出现404后面会专门讲。5. 常见问题速查我从Day10开始反复踩的坑5.1 MySQL乱码与时区问题乱码是JavaWeb连接数据库最高频的问题。乱码分三类页面乱码、请求参数乱码、数据库存储乱码。页面乱码JSP文件头部加% page contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %HTML的meta标签也要写charsetUTF-8。请求参数乱码POST请求在获取参数前设置request.setCharacterEncoding(UTF-8)GET请求则需要在Tomcat的server.xml的Connector节点加上URIEncodingUTF-8。数据库存储乱码连接URL里加characterEncodingutf8表字段用utf8mb4三层对齐基本不会有问题。时区问题的主要表现是java.sql.SQLException: The server time zone value йʱ。解决方案连接URL加serverTimezoneAsia/Shanghai或者在MySQL执行set global time_zone8:00。5.2 热部署失效与内存崩溃IDEA里点“Update Resources”有时不生效尤其是改了web.xml或者Servlet注解。我自己的经验是修改Java类后必须重新编译如果还是老代码就Build - Rebuild Project然后重启Tomcat。热部署不是万能的别依赖它。另外反复重启Tomcat会报Port 8080 was already in use这表示上个进程没杀掉。Windows下用命令netstat -ano | findstr :8080 taskkill /PID 具体PID /F这个命令我在课程设计时节帮室友解决过无数次。5.3 404、500的排查顺序404先看URL路径对不对再排查web.xml或WebServlet里的映射是否匹配。500优先看IDEA的Console日志最简单的断点排查法在Servlet第一行打上断点用Debug模式启动走一遍流程。如果断点没进说明请求没到你写的Servlet要么URL错了要么Servlet没被容器管理。断点进了但后面报错看异常堆栈第一行就是原因。还有一类隐蔽问题ClassNotFoundException: com.mysql.cj.jdbc.Driver。明明IDEA里依赖是有的但Tomcat运行时报错原因通常是Maven依赖没有打包进WEB-INF/lib。在IDEA的Artifact配置里把lib目录加进去或者检查webapp目录下有没有WEB-INF/lib里面有没有mysql驱动jar包。这个坑很经典属于“编译能过运行就挂”的典型。5.4 一个提升效率的小技巧日志别再用System.outDay10的代码里很多人用System.out.println()打印调试信息这个习惯要尽快改掉。至少用Logger或者简单的日志框架这样能区分错误级别而且打印到文件的日志不会因为控制台滚动丢失。没引框架的时候你可以在工具类里写一个LogUtil静态方法统一输出时间、线程、内容。我后来用Log4j2但那又是另一个话题了。Day10阶段你用Logger.getLogger(...)也不算难反而对你后面学框架有帮助。关于连接池的几个参数我这里也分享一个参考值initialSize5、minIdle5、maxActive20、maxWait3000。初学的时候不用纠结为什么是这些数字记住一个原则maxActive不要太大20够用了。曾经有人把maxActive配到200结果并发不高数据库先挂了。还有一点诚挚建议Day10的代码题不要复制粘贴别人的完整项目。你可以参考案例但一定要自己敲一遍。因为排查Bug的过程就是你真正理解Servlet运行流程的过程。我当年把用户注册功能改了六遍第一遍抄第二遍默写第三遍加功能到第四遍才算把getParameter、setAttribute、forward、sendRedirect之间的关系彻底捋明白。6. 后话Day10之后你该往哪个方向复习如果你把今天的用户和订单案例做完了能独立运行我建议你趁热打铁做三个扩展任务第一把订单的查询改成条件查询加一个按产品名模糊搜索。模糊搜索要用LIKE CONCAT(%, ?, %)注意不能用LIKE %?%否则?不会被当参数替换。这个扩展能加深你对PreparedStatement参数占位的理解。第二把删除功能做成“确认后删除”。表单提交用onsubmitreturn confirm(确定删除吗)同时Servlet里判断如果订单存在就不允许删除用户这能让你体会事务为什么存在。第三给JSP页面加一个简单的分页。分页要三个参数当前页pageNum、每页大小pageSize、总条数totalCount然后计算offset。你会学到LIMIT ?, ?的SQL和前端页码按钮的生成逻辑。这一步做完你的JavaWeb基础基本就稳了。这些任务都做完后回头再看Spring、MyBatis这些框架时你会发现它们只是把你Day10手写的代码包装得更好用而已。这也是为什么我坚持分享Day10的笔记这个节点学会的东西会一直伴随你整个Java后端开发生涯。最后分享一个我到现在还在用的习惯每次写好JavaWeb项目都会在同一浏览器无痕窗口里测试一遍完整的注册、登录、增删改查流程同时开着F12的Network面板。一旦某个请求显示500直接点开Preview看异常信息再配合IDEA的Console定位速度极快。这比对着代码干瞪眼高效得多。希望这篇笔记能帮你跨过JavaWeb入门时最陡的那个坡。

相关新闻

基于bert-base-chinese的微博情感分析微调实战与LoRA优化

基于bert-base-chinese的微博情感分析微调实战与LoRA优化

简介:这份资源是面向高校学生与NLP入门者的中文情感分析实战项目,基于WeiboSenti100k数据集对bert-base-chinese进行微调,可用于毕业设计、课程设计或软件工程实践,帮助读者掌握预训练模型在文本分类任务中的完整落地流程。压缩包…

2026/10/9 3:20:05 阅读更多 →
JavaWeb连接MySQL实战:JDBC+连接池+DAO实现用户增删改查

JavaWeb连接MySQL实战:JDBC+连接池+DAO实现用户增删改查

这天的内容我在实际做项目时回头再看,觉得是整个JavaWeb阶段里性价比最高的一课。Day10的主题正好卡在“能跑”和“能扛”之间的分水岭上——Servlet和JSP你已经会用了,但是项目一旦要让用户真正用起来、数据要存得住,就必须把数据库接进来&a…

2026/10/9 3:20:05 阅读更多 →
Go实现出现频率最低数字:边界处理与易错点全解析

Go实现出现频率最低数字:边界处理与易错点全解析

刷题群里看到“出现频率最低的数字”这道题时,我第一反应是:这不就是计数题换个问法吗?但真正用 Go 写完整再跑测试,才发现里面至少有三个坑:负数怎么处理、没出现过的数字算不算“0次”、并列时怎么保证返回最小的那一…

2026/10/9 3:20:05 阅读更多 →

最新新闻

项目合同管理实战避坑指南:从订立、变更到结算的全流程经验

项目合同管理实战避坑指南:从订立、变更到结算的全流程经验

刚看到项目管理教材目录里"16.6 项目合同管理"这一节时,很多人第一反应是把它当成选择题考点:背背合同类型、记记索赔流程、知道几个关键词,考试能蒙对就行。但实际上,项目经理真正的工作里,合同管理是最不像…

2026/10/9 3:56:27 阅读更多 →
关键字新闻爬虫:百度新闻与今日头条采集入库完整方案

关键字新闻爬虫:百度新闻与今日头条采集入库完整方案

简介:针对百度新闻与今日头条的Java新闻爬虫项目资源,围绕“按关键词抓取新闻并落库”的真实场景设计,面向Java初、中级开发者,可帮助学习网络数据采集与存储的完整链路。压缩包共20个文件,其中16个为Java源码&#xf…

2026/10/9 3:56:27 阅读更多 →
pstack-claude:用Linux栈跟踪诊断Claude/Codex本地代理故障

pstack-claude:用Linux栈跟踪诊断Claude/Codex本地代理故障

1. 项目概述:pstack-claude 是什么,它解决的是哪类开发者的真实痛点?pstack-claude 这个名字乍看像一个工具组合词,但拆开来看——“pstack”是 Linux 系统中用于打印进程栈跟踪(process stack trace)的经典…

2026/10/9 3:56:27 阅读更多 →
C++多态深度解析:从虚函数表到工程实践

C++多态深度解析:从虚函数表到工程实践

先问你一个问题:如果有一天你接手了一个老项目,handler 数组里挂了十几个回调函数,每个回调背后都是一套完全不同的对象行为,但它们的注册方式却完全一样——你第一反应是什么?八成会感慨一句:“这就是多态…

2026/10/9 3:56:27 阅读更多 →
Agent触达层实战:从Function Calling到MCP构建可靠工具调用

Agent触达层实战:从Function Calling到MCP构建可靠工具调用

1. 项目解析:Agent-Reach到底在解决什么问题圈子里的朋友看到Agent-Reach这个名字,第一反应多半是:这不就是给Agent装了一双“手”吗?确实,我拿到这个项目标题时的理解也是这样——Agent是智能体,Reach是触…

2026/10/9 3:56:27 阅读更多 →
论文降重工具怎么选?从查重原理到实战流程全解析

论文降重工具怎么选?从查重原理到实战流程全解析

经常有师弟师妹拿着大篇幅标红的查重报告来找我,第一句话就是:“师兄,用什么工具能一夜之间把重复率降下去?”说实话,每次听到这种问题我都想把“一夜之间”四个字划掉。降重不是体力活,也不是无脑堆工具就…

2026/10/9 3:55:26 阅读更多 →

日新闻

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/7 13:34:55 阅读更多 →