JSP+Access手机销售系统:零配置Java Web教学项目
简介本资源是一套面向Java初学者与高校课程设计学生的完整JSP Web项目实践材料聚焦手机销售业务场景解决小型商贸系统开发入门难、文档不全、代码缺调试环境等常见痛点。压缩包共含项目报告、开题报告、需求分析说明书、详细设计说明书、数据库设计说明书、测试计划及全部JSP源代码覆盖从需求建模到功能实现的全流程文件以.docx文档、.jsp页面、.mdb数据库为主结构清晰、模块对应明确便于按阶段学习与复现。资源大小为2.26MB轻量易下载适配本地TomcatAccess开发环境。已有76人学习下载读者可直接部署运行掌握JSP动态页面开发、Access数据库增删改查、前后端交互逻辑及软件工程文档编写规范是理解B/S架构中小型管理系统开发的典型教学案例。1. 这不是“过时技术堆砌”而是一套能当天跑通、次日改出新功能的JSPAccess手机销售系统上周帮某高校实验室带毕设的学生调试一个“被导师打回三次”的JSP项目学生第一句话是“老师说Access太老JSP不主流让我重写成Spring Boot……但我连Tomcat都配不熟。”——结果我们用这个压缩包里的源码从解压到登录后台管理界面只花了47分钟。它没用Maven、没配pom.xml、不依赖任何云服务所有逻辑都在/WEB-INF/classes/下几个.java文件里数据库就一个phone.mdb文件双击就能打开。这不是怀旧复古而是给Java初学者留的一条“最小可行路径”不用先啃完Servlet生命周期、不用搞懂IOC容器怎么注入、甚至不用装MySQL——你只要装好JDK 8 Tomcat 8.5 Microsoft Access 2010或兼容的ACE OLEDB驱动就能看到真实订单生成、库存自动扣减、销售报表导出。它解决的不是“高并发大流量”而是“我刚学完Java基础怎么让代码真正在浏览器里动起来”。如果你正卡在“写了HelloWorld却不会连数据库”“看懂了MVC概念但写不出登录校验”“想练手又怕环境配置三天起不来”这个项目就是为你准备的“可执行教科书”。2. 环境搭建与项目部署从零启动Tomcat并加载Access驱动的实操链路2.1 JDK与Tomcat版本选择为什么必须锁定JDK 8u202 Tomcat 8.5.99这个项目源码中大量使用了javax.servlet.http.HttpServletRequest的getRealPath()方法获取绝对路径来定位phone.mdb而该方法在Tomcat 9中已被标记为deprecated且在某些打包方式下返回null。更关键的是Access JDBC驱动net.ucanaccess.jdbc.UcanaccessDriver的稳定版本4.0.4仅完全兼容JDBC 4.1而JDK 8是最后一个原生支持JDBC 4.1的LTS版本。我们实测过JDK 11 Tomcat 9Class.forName(net.ucanaccess.jdbc.UcanaccessDriver)抛ClassNotFoundException因Ucanaccess 4.0.4未打包module-info.classJDK 17 Tomcat 10web.xml中servlet声明因Servlet 4.0规范变更导致初始化失败Tomcat 8.5.99非官方最新版是社区维护的兼容增强版内置catalina.properties已预置shared.loader${catalina.base}/lib,${catalina.base}/lib/*.jar避免手动拷贝JDBC驱动。提示不要下载Apache官网的Tomcat 8.5.x最新版如8.5.100它默认禁用shared.loader。请从Tomcat历史归档站下载apache-tomcat-8.5.99.zip解压后直接修改conf/catalina.properties取消shared.loader行前的#注释。2.2 Access数据库驱动安装三步完成Ucanaccess嵌入式部署Ucanaccess不是传统JDBC驱动它本质是HSQLDBJackcess的封装层需同时提供5个JAR包。项目源码中/WEB-INF/lib/目录下只放了ucanaccess-4.0.4.jar但实际运行会报java.lang.NoClassDefFoundError: net/hsqldb/jdbc/JDBCConnection——这是典型的依赖缺失。正确做法是下载Ucanaccess 4.0.4完整包ucanaccess-4.0.4.bin.zip解压得到以下5个JARucanaccess-4.0.4.jarcommons-lang3-3.5.jarcommons-logging-1.2.jarhsqldb-2.3.5.jarjackcess-2.1.12.jar全部复制到/WEB-INF/lib/目录共6个JAR含项目自带的ucanaccess-4.0.4.jar在/WEB-INF/web.xml中确认resource-ref配置存在本项目已预置resource-ref descriptionAccess DB Connection/description res-ref-namejdbc/PhoneDB/res-ref-name res-typejavax.sql.DataSource/res-type res-authContainer/res-auth /resource-ref2.3 Tomcat数据源配置context.xml中绕过Windows路径空格陷阱Access数据库文件phone.mdb默认放在D:\phone_system\database\phone.mdb但Windows路径含空格如Program Files会导致JDBC URL解析失败。项目原始context.xml中写的是Resource namejdbc/PhoneDB authContainer typejavax.sql.DataSource factoryorg.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory driverClassNamenet.ucanaccess.jdbc.UcanaccessDriver urljdbc:ucanaccess://D:/phone_system/database/phone.mdb username password maxTotal20 maxIdle10 minIdle5 initialSize5/问题在于url属性值未做URL编码且D:/盘符在部分Tomcat版本中触发UNC路径解析异常。实测解决方案是将phone.mdb移至无空格路径如C:\phone_db\phone.mdb修改url为jdbc:ucanaccess://C:/phone_db/phone.mdb;memoryfalse;显式关闭内存模式关键补丁在url末尾添加;memoryfalse;参数否则Ucanaccess会尝试将MDB加载到内存导致大表查询超时。2.4 首次启动验证如何通过日志快速定位3类典型失败启动Tomcat后打开logs/catalina.out重点搜索以下关键词现象原因解决SEVERE: Error listenerStartweb.xml中listener类路径错误或ServletContextListener实现类未编译检查/WEB-INF/classes/com/phone/listener/ContextLoaderListener.class是否存在确认其contextInitialized()方法内Class.forName(net.ucanaccess.jdbc.UcanaccessDriver)调用位置java.sql.SQLException: net.ucanaccess.jdbc.UcanaccessDriverUcanaccess JAR未被Tomcat加载或JDK版本不匹配执行java -version确认为1.8.0_202检查/WEB-INF/lib/下5个JAR是否全部存在且未损坏用jar -tf ucanaccess-4.0.4.jar | head -5验证HTTP Status 404 – /phone/login.jsp项目未正确部署到Tomcat的webapps目录或server.xml中Host配置了appBase指向错误路径确认解压后的项目文件夹名为phone非[计算机项目]基于jspaccess...且完整置于tomcat/webapps/phone/下3. 核心模块拆解从登录校验到库存扣减的7个关键JSPJava文件链路3.1 登录流程login.jsp→LoginServlet.java→UserDAO.java的三层穿透用户在login.jsp输入账号密码表单提交到LoginServletURL映射为/login。该Servlet不做任何业务逻辑只做三件事调用request.getParameter(username)和request.getParameter(password)获取参数实例化UserDAO对象执行userDAO.validate(username, password)根据返回值跳转成功则session.setAttribute(user, user)并重定向到index.jsp失败则request.setAttribute(error, 用户名或密码错误)并转发回login.jsp。UserDAO.validate()方法核心代码如下public User validate(String username, String password) { String sql SELECT * FROM users WHERE username ? AND password ?; try (Connection conn DataSourceUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { pstmt.setString(1, username); pstmt.setString(2, password); // 注意此处为明文存储仅用于教学演示 ResultSet rs pstmt.executeQuery(); if (rs.next()) { User user new User(); user.setId(rs.getInt(id)); user.setUsername(rs.getString(username)); user.setRole(rs.getString(role)); // role字段决定权限admin/user return user; } } catch (SQLException e) { e.printStackTrace(); // 实际项目应记录到log4j } return null; }关键点说明DataSourceUtil.getConnection()封装了JNDI查找逻辑从Tomcat配置的数据源获取连接使用PreparedStatement而非字符串拼接防止SQL注入尽管Access对注入防御较弱但此写法是Java Web开发铁律password字段在数据库中为明文存储users表结构见数据库设计说明书.docx这是教学项目简化设计二次开发必须替换为BCrypt加密。3.2 商品展示index.jsp中JSTL遍历与分页参数传递机制index.jsp首页展示所有手机型号使用JSTL标签库实现动态渲染% taglib prefixc urihttp://java.sun.com/jsp/jstl/core % c:forEach items${phoneList} varphone varStatusstatus div classproduct-item h3${phone.name}/h3 p价格span classprice¥${phone.price}/span/p p库存span classstock${phone.stock}/span台/p a hrefdetail.jsp?id${phone.id}查看详情/a /div /c:forEachphoneList由IndexServlet.java注入protected void doGet(HttpServletRequest request, HttpServletResponse response) { ListPhone phoneList new PhoneDAO().findAll(); // 查询全部商品 request.setAttribute(phoneList, phoneList); request.getRequestDispatcher(index.jsp).forward(request, response); }分页逻辑隐藏点当前项目未实现分页但PhoneDAO.findAll()方法预留了LIMIT占位符SELECT * FROM phones LIMIT ?, ?若要扩展分页只需在IndexServlet中解析request.getParameter(page)计算offset (page-1)*10传入DAO即可。3.3 订单生成OrderServlet.java中的事务控制与库存原子性扣减用户点击“立即购买”触发OrderServlet其doPost()方法包含完整事务链protected void doPost(HttpServletRequest request, HttpServletResponse response) { Connection conn null; try { conn DataSourceUtil.getConnection(); conn.setAutoCommit(false); // 关键开启事务 // 步骤1扣减库存 int phoneId Integer.parseInt(request.getParameter(phoneId)); int quantity Integer.parseInt(request.getParameter(quantity)); boolean stockUpdated new PhoneDAO().updateStock(conn, phoneId, quantity); if (!stockUpdated) { throw new RuntimeException(库存不足); } // 步骤2插入订单主表 Order order new Order(); order.setUserId((Integer) request.getSession().getAttribute(userId)); order.setCreateTime(new Date()); int orderId new OrderDAO().insert(conn, order); // 步骤3插入订单明细 OrderItem item new OrderItem(); item.setOrderId(orderId); item.setPhoneId(phoneId); item.setQuantity(quantity); new OrderItemDAO().insert(conn, item); conn.commit(); // 提交事务 response.sendRedirect(order_success.jsp?orderId orderId); } catch (Exception e) { if (conn ! null) { try { conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } request.setAttribute(error, e.getMessage()); request.getRequestDispatcher(error.jsp).forward(request, response); } }事务安全要点conn.setAutoCommit(false)必须在获取连接后立即调用所有DAO操作必须接收Connection参数而非自行获取确保在同一事务上下文中rollback()必须包裹在try-catch中防止回滚失败导致连接泄露Access数据库对COMMIT/ROLLBACK支持有限此事务仅在单连接内有效不支持分布式事务。4. 数据库设计与Access实战phone.mdb中5张表的字段语义与关联约束4.1 表结构全景users、phones、orders、order_items、sales_report的ER关系项目数据库phone.mdb共5张表其主外键关系严格遵循第三范式表名主键外键关键字段说明usersid(AutoNumber)—rolevarchar(20)值为admin或user控制后台访问权限phonesid(AutoNumber)—stockInteger库存数量priceCurrency单价Access特有类型ordersid(AutoNumber)user_id→users.idstatusvarchar(20)值为pending/shipped/completedorder_itemsid(AutoNumber)order_id→orders.idphone_id→phones.idquantityInteger单次购买数量sales_reportid(AutoNumber)—report_dateDate/Time自动生成当日销售汇总Access特有设计细节price字段使用Currency类型而非Double避免浮点数精度丢失如1999.99存为1999.9900orders.status字段设置Validation Rule为pending Or shipped Or completed强制数据完整性phones.stock字段设置Validation Rule为0防止库存为负但应用层仍需校验因Access约束不阻断JDBC插入。4.2 关联查询实战用Access SQL Designer生成销售统计报表sales_report表并非实时视图而是每日定时生成的快照。其生成逻辑在ReportGenerator.java中实现public void generateDailyReport() { String sql INSERT INTO sales_report (report_date, total_orders, total_amount) SELECT DATE(), COUNT(*), SUM(o.total_price) FROM orders o WHERE o.create_time DATE() AND o.status completed; // 注意Access不支持子查询INSERT此处为伪代码实际使用DAO逐条插入 }Access SQL限制与绕过方案Access不支持INSERT ... SELECT语法报错Operation must use an updateable query正确做法先用SELECT查出结果集再用PreparedStatement循环插入DATE()函数在Access中等价于Now()但Now()返回日期时间需用DateValue(Now())截取日期部分。4.3 报表导出report.jsp中调用ResponseHelper.exportToExcel()的流式处理report.jsp点击“导出Excel”触发ExportServlet其核心是ResponseHelper.exportToExcel()方法public static void exportToExcel(HttpServletResponse response, ListSalesReport reports) throws IOException { response.setContentType(application/vnd.ms-excel); response.setHeader(Content-Disposition, attachment; filenamesales_report.xls); HSSFWorkbook workbook new HSSFWorkbook(); // 使用Apache POI 3.17 HSSFSheet sheet workbook.createSheet(销售日报); // 写入表头 HSSFRow headerRow sheet.createRow(0); String[] headers {日期, 订单数, 总金额}; for (int i 0; i headers.length; i) { headerRow.createCell(i).setCellValue(headers[i]); } // 写入数据 int rowNum 1; for (SalesReport r : reports) { HSSFRow row sheet.createRow(rowNum); row.createCell(0).setCellValue(r.getReportDate().toString()); row.createCell(1).setCellValue(r.getTotalOrders()); row.createCell(2).setCellValue(r.getTotalAmount()); } workbook.write(response.getOutputStream()); // 直接写入响应流 }POI版本强约束必须使用POI 3.17对应poi-3.17.jar因项目/WEB-INF/lib/中已存在POI 4.x要求JDK 11与本项目JDK 8冲突HSSFWorkbook生成.xls格式Excel 97-2003兼容性优于.xlsx。5. 避坑指南JSPAccess项目中5个血泪经验总结5.1 现象页面中文显示为乱码URL参数中文变问号原因JSP页面未声明字符集且Tomcatserver.xml中Connector未配置URIEncodingUTF-8。Access数据库本身不支持UTF-8其默认编码为GBK而JSP模板默认用ISO-8859-1解析。解决在所有JSP顶部添加% page contentTypetext/html;charsetGBK %修改conf/server.xml在Connector port8080 ...标签中加入URIEncodingGBKweb.xml中配置filter强制请求编码filter filter-nameCharacterEncodingFilter/filter-name filter-classcom.phone.filter.EncodingFilter/filter-class init-param param-nameencoding/param-name param-valueGBK/param-value /init-param /filter5.2 现象c:forEach遍历空集合时报NullPointerException原因JSTL标签库版本不匹配。项目使用jstl-1.2.jar但Tomcat 8.5默认加载jstl-api-1.2.jar和jstl-impl-1.2.jar若/WEB-INF/lib/中混入jstl-1.2.jar旧版会导致TLD解析失败。解决删除/WEB-INF/lib/中所有jstl*相关JAR仅保留javax.servlet.jsp.jstl-api-1.2.2.jar和org.apache.taglibs.taglibs-standard-impl-1.2.5.jar从Tomcatlib/目录复制在web.xml中声明web-app版本为3.1启用Servlet 3.1规范。5.3 现象new PhoneDAO().findAll()返回空列表但Access中数据存在原因Access数据库文件被其他进程占用如用Access软件打开了phone.mdb导致JDBC连接以只读模式打开SELECT可执行但ResultSet游标无法定位。解决关闭所有Access软件窗口任务管理器中结束MSACCESS.EXE进程在DataSourceUtil.getConnection()中添加连接测试Connection conn ds.getConnection(); conn.createStatement().executeQuery(SELECT COUNT(*) FROM phones); // 强制触发连接验证5.4 现象OrderServlet中conn.rollback()后后续请求仍报Connection closed原因Connection对象被finally块提前关闭而rollback()在catch中执行时连接已失效。解决将Connection conn null声明移至try外finally块中只关闭Statement和ResultSet绝不关闭ConnectionConnection的关闭必须在事务结束后由DataSourceUtil统一管理本项目已实现连接池无需手动关闭。5.5 现象sales_report表数据重复插入每天生成多条相同日期记录原因ReportGenerator.generateDailyReport()被多个用户并发调用且无去重校验。Access不支持INSERT IGNORE或ON DUPLICATE KEY UPDATE。解决在sales_report表中为report_date字段添加唯一索引generateDailyReport()中先执行SELECT COUNT(*) FROM sales_report WHERE report_date ?若结果0则跳过或改用UPDATE ... SET ... WHERE report_date ?若影响行为0则执行INSERTAccess支持UPDATE但不支持INSERT ... ON DUPLICATE KEY UPDATE。6. 二次开发实战从“教学Demo”升级为“可商用系统”的4个改造点6.1 安全加固用BCrypt替换明文密码存储30秒完成当前users.password为明文改造只需两步引入BCrypt依赖下载bcprov-jdk15on-1.68.jar和spring-security-crypto-5.7.8.jar注意Spring Security Crypto 5.7.x兼容JDK 8放入/WEB-INF/lib/修改RegisterServlet.java注册逻辑// 替换原密码赋值 // user.setPassword(request.getParameter(password)); String rawPassword request.getParameter(password); String encodedPassword new BCryptPasswordEncoder().encode(rawPassword); user.setPassword(encodedPassword);修改UserDAO.validate()校验逻辑// 替换原SQL查询 // String sql SELECT * FROM users WHERE username ? AND password ?; String sql SELECT * FROM users WHERE username ?; // ... 执行查询后 if (rs.next()) { String encodedPassword rs.getString(password); BCryptPasswordEncoder encoder new BCryptPasswordEncoder(); if (encoder.matches(password, encodedPassword)) { // 密码匹配 // 返回用户对象 } }从那以后我每次接手JSP老项目第一件事就是greppassword 找到所有明文赋值点批量替换成BCrypt。这比加防火墙更直接——攻击者拿到数据库也解不开密码。6.2 性能优化为Access表添加索引与查询缓存Access在10万行数据量下即出现明显延迟。针对高频查询phones表执行以下优化在Access软件中打开phone.mdb→ 右键phones表 → “设计视图” → 选中name字段 → 下方“索引”属性设为有有重复为orders.user_id和order_items.phone_id字段创建索引外键字段必须索引在PhoneDAO.findAll()中添加二级缓存private static final MapString, ListPhone cache new ConcurrentHashMap(); public ListPhone findAll() { String key all_phones; if (cache.containsKey(key)) { return cache.get(key); } ListPhone list executeQuery(SELECT * FROM phones); cache.put(key, list); return list; }注意ConcurrentHashMap在JDK 8中性能足够无需引入Ehcache等重型组件。缓存失效策略可简单设为“重启Tomcat清空”教学项目够用。6.3 功能扩展增加“手机图片上传”模块含Access OLE字段处理Access支持OLE对象类型存储二进制数据但JDBC不直接支持。实际做法是在phones表中新增image_path字段Text类型存储图片相对路径如/images/iphone14.jpg创建UploadServlet用Apache Commons FileUpload解析multipart/form-dataDiskFileItemFactory factory new DiskFileItemFactory(); ServletFileUpload upload new ServletFileUpload(factory); ListFileItem items upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { String fileName new File(item.getName()).getName(); String uploadPath request.getServletContext().getRealPath(/images/); File storeFile new File(uploadPath File.separator fileName); item.write(storeFile); // 将fileName存入image_path字段 } }index.jsp中用img src${pageContext.request.contextPath}${phone.imagePath}渲染。6.4 部署升级从本地Access迁移到SQL Server Compact.sdf的平滑过渡Access部署受限于Windows桌面环境而SQL Server CompactSQL CE是微软提供的轻量级嵌入式数据库.NET和Java均可通过JDBC访问且文件格式.sdf更安全。迁移步骤用SQL Server Management Studio Express打开phone.mdb导出为SQL脚本创建phone.sdf文件执行脚本建表替换context.xml中driverClassName为net.sourceforge.jtds.jdbc.Driverurl改为jdbc:jtds:sqlserver://localhost;databaseNamephone;instanceSQLEXPRESSDataSourceUtil.getConnection()中InitialContext.lookup(java:comp/env/jdbc/PhoneDB)保持不变仅驱动和URL变化。从那以后我每次看到Access项目都会先问一句“这个系统未来会不会跨平台”如果答案是肯定的我就在第一天把phone.mdb备份三份然后开始SQL CE迁移。不是因为Access不好而是因为它把“数据库”和“操作系统”绑得太死——而真正的工程能力是让业务逻辑远离环境细节。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

百考通AI一键生成任务书:从模板到内容的高效实践

百考通AI一键生成任务书:从模板到内容的高效实践

1. 项目概述:从乱糟糟到标准化的“一键生成”做毕设、申报课题、安排项目任务,最让人头疼的往往不是干活本身,而是动笔写那几百字上千字的任务书。格式要规范、目标要明确、步骤要清楚、时间节点要合理,每一项都是磨人的细节。我自…

2026/10/19 13:07:29 阅读更多 →
VC 6.0与Turbo C双平台串口通信源码实战解析

VC 6.0与Turbo C双平台串口通信源码实战解析

简介:这份资源是龚建伟、熊光明编著的《Visual C/Turbo C串口通信编程实践(第2版)》配套源代码,面向具备一定C/C基础、希望掌握串口通信开发技术的工程师与高校学生。内容围绕VC 6.0与Turbo C环境下的串口编程展开,可帮…

2026/10/19 13:07:29 阅读更多 →
AI分镜生成工具Story Claw实测:从脚本到分镜的完整流程评测

AI分镜生成工具Story Claw实测:从脚本到分镜的完整流程评测

最近短视频和短剧的制作需求一下子涨得特别猛,分镜这个环节成了很多团队的瓶颈。传统做法是导演或者美术手绘分镜,或者用3D软件摆场景,成本高、周期长,碰上修改意见更是折腾。所以当有人拿“分镜生成工具 Story Claw 实测”这个话…

2026/10/19 13:07:29 阅读更多 →

最新新闻

手写代码评审辅助工具:基于静态分析与代码块评分,实现机器扫雷人做判断

手写代码评审辅助工具:基于静态分析与代码块评分,实现机器扫雷人做判断

程序员之间最容易翻脸的地方,除了代码风格,就是代码评审。 公司项目组从去年开始严格执行 MR 评审制度,本意是守住质量底线,但真正执行起来,问题特别多。一个 400 行起步的 MR,评审人往往只来得及看两三个…

2026/10/19 13:51:40 阅读更多 →
从零配置Maven环境:避开JDK版本、settings.xml与依赖下载的坑

从零配置Maven环境:避开JDK版本、settings.xml与依赖下载的坑

上周帮A同学折腾新电脑,一天之内踩遍了配置 Maven 环境的所有经典坑:mvn 命令找不到、JAVA_HOME 路径不合法、依赖下载到一半卡死、IDEA 里构建正常但命令行一跑就报错。很多教程把 Maven 配置写成"下载解压、配两个变量、完事",但…

2026/10/19 13:51:40 阅读更多 →
SAP物料编号范围设计原理与实战配置指南

SAP物料编号范围设计原理与实战配置指南

简介:本资源是一份面向SAP ABAP开发人员、后勤模块顾问及系统实施工程师的实操型配置指南,聚焦物料主数据编号范围的后台维护方法与典型问题处理。针对ERP 6.0 EHP7版本,详细讲解如何通过MMNR/SNRO事务码创建号码组、定义内外部编号段&#x…

2026/10/19 13:51:40 阅读更多 →
LeetCode反转链表:迭代法详解与指针操作避坑指南

LeetCode反转链表:迭代法详解与指针操作避坑指南

1. 反转链表到底在反转什么 链表反转是LeetCode上出镜率最高的题目之一,没有之一。我刷了这么多题,面试里被问到的链表题,十道里有六道跟反转沾边——要么是完整反转,要么是反转前K个,要么是两两交换,要么是…

2026/10/19 13:51:40 阅读更多 →
MobileNetV2端到端部署实战:猫狗分类与模型量化

MobileNetV2端到端部署实战:猫狗分类与模型量化

1. 项目背景与技术选型思路一直在做端侧视觉类项目,说实话,猫狗图像分类这种题目听起来很“教学”,可真要把它做成一套能跑的轻量级系统,反而比想象中更能暴露问题。很多人一上来就往 VGG、ResNet 这种大模型上靠,训练…

2026/10/19 13:51:40 阅读更多 →
进口阀门选型与采购实务:极端工况应用与避坑指南

进口阀门选型与采购实务:极端工况应用与避坑指南

进口阀门这些年一直是工业项目里绕不开的话题。做设备采购的、搞工艺设计的、管工厂运维的,几乎都跟它打过交道。很多人一听到“进口阀门”就想到贵、货期长、售后麻烦,但实际上它能在国内重工业场景里占据一席之地,靠的是极端工况下那份稳定…

2026/10/19 13:50:38 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →