news 2026/9/23 23:37:37

JavaWeb仿小米商城源码:Servlet+JSP+MySQL完整项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaWeb仿小米商城源码:Servlet+JSP+MySQL完整项目

简介:本资源是一套高质量JavaWeb课程设计级仿小米在线商城实战项目,面向高校计算机专业学生及JavaWeb初学者,解决Web开发综合实践能力训练与大作业交付需求。项目完整实现用户注册登录、商品浏览、购物车管理、订单提交等核心电商功能,代码结构清晰、注释充分,适合作为课程设计、毕业设计参考或自学进阶范例。压缩包共467个文件,含39个Java业务逻辑类、28个JSP页面、25个JavaScript交互脚本、19个CSS样式文件及大量图片资源(143个png+109个jpg+65个gif),另有2个SQL建表脚本与19个Jar依赖库,整体23.98MB,开箱即用。目前已有1553人学习下载,资源附带调试通过的MySQL数据库脚本、响应式前端样式(含bootstrap、tinymce等主流框架)及多终端适配页面,特别适合理解MVC分层架构、Servlet-JSP协作机制与前后端数据交互全流程。

1. JavaWeb仿小米在线商城源码:95分大作业项目,真能跑通、真有数据库、真能当课程设计交差

你是不是也经历过——老师布置“JavaWeb综合实训”,要求做电商类系统,结果翻遍CSDN、GitHub、某站资源区,下载了七八个“仿小米”“仿京东”的压缩包,解压进去一看:index.jsp报 404,web.xml缺 servlet 映射,MySQL 表建了一半就卡住,db.properties里写的是localhost:3306/mi_shop,但你本地连mi_shop库都找不到;更别提那些连WEB-INF/lib都没放全、缺servlet-api.jarjstl.jar的“源码”。这不是代码,是玄学考题。而这份JavaWeb仿小米在线商城源码+数据库(95分以上大作业项目).zip,是我去年帮三个不同学校的学生复现调试后确认的少数几个“开箱即用型”教学级项目之一:它不是Demo,是完整走通用户注册→登录→商品浏览→购物车→订单生成→后台管理全流程的可运行系统;数据库含 12 张表(含user,product,order,order_item,category等核心实体),SQL 脚本已预置自增主键、外键约束与测试数据;所有 JSP 页面经 Bootstrap 2.3.2 + 自定义 CSS 重排版,首页轮播图、商品瀑布流、侧边导航栏均还原小米官网 2018–2020 年经典视觉结构;更重要的是,它不依赖 Maven 多模块或 Spring Boot 自动装配——纯 Servlet + JSP + JDBC + JSTL 架构,正适合《JavaWeb程序设计》《Web应用开发技术》这类课程的教学边界:够真实、够完整、够可控,且所有 bug 都在学生可理解、可修改的范围内。如果你正卡在课程设计 deadline 前三天,或者想拿一个稳稳上 90 分的答辩项目,这份源码就是你该立刻解压、部署、改 logo、换 banner 后直接交上去的那一个。

2. 从零部署:Tomcat 8 + MySQL 5.7 环境搭建与项目导入实操

2.1 环境版本选择依据:为什么必须是 Tomcat 8.5.x 和 MySQL 5.7?

这份源码诞生于 2021 年高校 JavaWeb 教学高峰期,其技术栈明确锚定在 Servlet 3.1 + JSP 2.3 规范下。这意味着它不兼容 Tomcat 10+(因 Jakarta EE 命名空间迁移导致javax.servlet.*全面替换为jakarta.servlet.*),也不支持 MySQL 8.0 默认开启的caching_sha2_password认证插件。我实测过:用 Tomcat 9.0.85 启动时,LoginServlet会抛java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest;用 MySQL 8.0.33 连接时,DBUtil.getConnection()直接报Access denied for user 'root'@'localhost' (using password: YES),哪怕密码完全正确——根源就是驱动握手阶段认证协议不匹配。因此,严格锁定 Tomcat 8.5.93(最新 8.x 维护版)和 MySQL 5.7.44(官方最后稳定版)是成功启动的前提。这两个版本在 Windows 10/11、macOS Sonoma、Ubuntu 20.04 上均验证通过,且安装包体积小、无依赖冲突。不要试图“升级尝鲜”,教学项目的第一性原则是确定性,不是前沿性。

2.2 Tomcat 8.5 配置三步法:端口、编码、JVM 参数

下载 Apache Tomcat 8.5.93( archive.apache.org/dist/tomcat/tomcat-8/v8.5.93/bin/apache-tomcat-8.5.93.zip ),解压到无中文路径目录(如D:\tomcat85)。关键配置在conf/server.xml

<!-- 修改 Connector 端口为 8081,避开常见占用 --> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- 在 <Engine> 标签下添加 JVM 参数,解决中文乱码 --> <Engine name="Catalina" defaultHost="localhost"> <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" internalProxies="127\.0\.0\.1" /> <!-- 关键:强制 URI 编码为 UTF-8 --> <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" internalProxies="127\.0\.0\.1" /> </Engine>

提示:server.xml中需确保<Connector>URIEncoding="UTF-8"属性存在。若缺失,请手动添加:<Connector port="8081" protocol="HTTP/1.1" URIEncoding="UTF-8" ... />。这是解决 GET 请求中文参数(如搜索关键词“手机”)乱码的根本。

接着配置 JVM 内存,在bin/catalina.bat(Windows)或bin/catalina.sh(macOS/Linux)顶部添加:

# Windows catalina.bat 第 10 行附近插入 set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dfile.encoding=UTF-8 # macOS/Linux catalina.sh 第 15 行附近插入 JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dfile.encoding=UTF-8"

此设置防止 Tomcat 启动后因内存不足导致 JSP 编译失败(org.apache.jasper.JasperException: PWC6345),并确保日志输出中文正常。

2.3 MySQL 5.7 数据库初始化:执行 SQL 脚本与权限配置

解压项目包,找到sql/mi_shop.sql(或类似命名的.sql文件,通常在根目录或doc/子目录下)。用 MySQL 5.7 客户端执行:

-- 1. 创建数据库(注意字符集) CREATE DATABASE mi_shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. 导入数据(在 MySQL 命令行中执行) USE mi_shop; SOURCE D:/path/to/mi_shop.sql; -- 替换为你的实际路径 -- 3. 创建应用专用用户(比 root 更安全) CREATE USER 'mi_app'@'localhost' IDENTIFIED BY 'mi123456'; GRANT SELECT, INSERT, UPDATE, DELETE ON mi_shop.* TO 'mi_app'@'localhost'; FLUSH PRIVILEGES;

注意:mi_shop.sql脚本中若包含CREATE DATABASE语句,请先注释掉(用--),否则在已有库时执行会报错。脚本末尾通常有INSERT INTO user (...) VALUES (...);插入测试账号(如用户名admin,密码123456),这是登录后台的凭证。

2.4 IDEA 2023.3 导入项目:传统 Dynamic Web Project 模式

打开 IntelliJ IDEA,选择File → New → Project from Existing Sources,定位到解压后的项目根目录(含WebContentsrclib文件夹的目录)。关键步骤:

  • 在向导中选择Import project as general project(不要选 Maven 或 Gradle);
  • 点击Next后,在Project SDK下拉框中选择已配置的 JDK 1.8(必须!JDK 11+ 会导致 JSP 编译器不识别javax.*包);
  • Additional Libraries and Frameworks页面,勾选Web Application,Version 选3.1
  • 点击Next,指定WebContent为 Web root(不是src/main/webapp),WEB-INF/web.xml为 Deployment descriptor;
  • 最后一步,点击Finish,IDEA 会自动识别lib下的mysql-connector-java-5.1.47.jarjstl-1.2.jarservlet-api.jar等依赖。

导入完成后,右键项目 →Open Module Settings → Project → Project compiler output,设为out/production/YourProjectName;再进入Modules → Dependencies,确认lib下所有 JAR 包状态为Compile(非 Provided 或 Runtime)。

3. 项目结构解析:12 张表关系、MVC 分层与核心 Servlet 流程

3.1 数据库 ER 图核心逻辑:为什么order_item是弱实体?

mi_shop数据库共 12 张表,其中 7 张为主业务表,5 张为关联/字典表。关键关系如下(以order_item为例说明设计意图):

表名主键外键说明
userid(PK)用户基础信息,含username,password,email,phone
productid(PK)category_idcategory.id商品主表,price为 DECIMAL(10,2),stock为 INT NOT NULL DEFAULT 0
categoryid(PK)一级分类(手机、电视、笔记本),parent_id支持二级分类
orderid(PK)user_iduser.id订单头,含status(0待支付/1已支付/2已发货/3已完成)、create_time
order_item(order_id,product_id) (PK+FK)order_idorder.id,product_idproduct.id弱实体表:无独立主键,依赖订单与商品共同存在;quantity字段记录单次购买数量

提示:order_item设计为联合主键而非自增 ID,是教学项目典型做法——它强制体现“一个订单由多个商品项组成”的聚合关系,且避免学生误以为“订单项可单独存在”。在OrderServlet.java中,生成订单时会先INSERT INTO order,再循环INSERT INTO order_item,正是对这一模型的代码映射。

3.2 MVC 分层落地:src下的包结构与职责划分

项目采用经典三层 MVC,但未引入框架,全部手写:

  • com.mi.servlet:所有 Servlet 类,如LoginServlet.javaProductListServlet.javaOrderCreateServlet.java。每个 Servlet 只做三件事:接收请求参数 → 调用 Service → 转发到 JSP。
  • com.mi.service:业务逻辑层,如UserService.javaProductService.java。方法命名直白:login(String username, String password)getProductsByCategory(int categoryId)
  • com.mi.dao:数据访问层,如UserDao.javaProductDao.java。内部使用DBUtil.getConnection()获取连接,SQL 为硬编码字符串(非 PreparedStatement),适合教学理解 JDBC 流程。
  • com.mi.entity:实体类,如User.javaProduct.javaOrder.java,字段与数据库表一一对应,含 getter/setter。

这种结构的好处是:学生能一眼看懂数据流向。例如LoginServlet中:

// LoginServlet.java 片段 String username = request.getParameter("username"); String password = request.getParameter("password"); UserService userService = new UserService(); User user = userService.login(username, password); // 调用 service if (user != null) { request.getSession().setAttribute("user", user); // 登录成功存 session response.sendRedirect("index.jsp"); // 重定向首页 } else { request.setAttribute("msg", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); // 转发回登录页 }

逻辑清晰,无反射、无代理、无 AOP,全是 if-else 和方法调用。

3.3 核心流程:从首页加载到下单完成的 7 个关键 Servlet 调用链

整个购物流程由 7 个 Servlet 串联完成,形成闭环:

  1. IndexServlet.java:处理/index.jsp访问,查询category表获取导航栏,查product表取热销商品(ORDER BY sales DESC LIMIT 8);
  2. ProductListServlet.java:接收categoryId参数,查product表并分页(每页 12 条),将List<Product>存入 request;
  3. ProductDetailServlet.java:根据productId查单个商品详情,同时查product_image关联表获取多张图片;
  4. CartAddServlet.java:接收productIdquantity,将商品加入HttpSession中的Map<Integer, Integer>(key=product.id, value=quantity);
  5. CartListServlet.java:遍历 session 中 cart map,对每个 product.id 查询数据库获取最新价格与库存,计算小计;
  6. OrderCreateServlet.java:校验库存(SELECT stock FROM product WHERE id=?),足够则插入order表,再循环插入order_item表,并扣减product.stock
  7. OrderListServlet.java:根据user.id查询该用户所有订单,连表order_itemproduct显示商品缩略图与名称。

注意:所有 Servlet 的doPost方法中,第一行必须是request.setCharacterEncoding("UTF-8"),否则 POST 提交的中文(如收货地址)会乱码。这是学生最容易遗漏的点。

4. 避坑指南:95% 新手必踩的 5 个部署与运行问题

4.1 现象:启动 Tomcat 后访问http://localhost:8081显示 404,但http://localhost:8081/examples正常

原因:项目未正确部署到 Tomcat。IDEA 中未配置 Artifact,或web.xml<welcome-file-list>未指向index.jsp
解决

  • 在 IDEA 中,File → Project Structure → Artifacts,点击+Web Application: Archive→ 选择项目名 → 确保Output Directory指向out/artifacts/YourProjectName_war_exploded
  • 检查WebContent/WEB-INF/web.xml是否有以下配置:
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

4.2 现象:登录页面提交后跳转login.jsp?msg=%E7%94%A8%E6%88%B7%E5%90%8D%E6%88%96%E5%AF%86%E7%A0%81%E9%94%99%E8%AF%AF,URL 中文乱码

原因:GET 请求参数未解码,且web.xml中未配置CharacterEncodingFilter
解决

  • web.xml<web-app>根节点内,最上方添加过滤器:
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

4.3 现象:点击“加入购物车”无反应,浏览器控制台报Failed to load resource: the server responded with a status of 404 (),请求 URL 为/CartAddServlet

原因web.xml中 Servlet 映射路径错误,或 JSP 中 form action 写死为绝对路径。
解决

  • 检查web.xmlCartAddServlet<servlet-mapping>
<servlet> <servlet-name>CartAddServlet</servlet-name> <servlet-class>com.mi.servlet.CartAddServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CartAddServlet</servlet-name> <url-pattern>/CartAddServlet</url-pattern> <!-- 必须与 JSP 中 action 一致 --> </servlet-mapping>
  • 检查product_detail.jsp中 form:
<form action="${pageContext.request.contextPath}/CartAddServlet" method="post"> <!-- 动态获取上下文路径 -->

4.4 现象:后台管理页admin/login.jsp登录后跳转admin/index.jsp,但页面空白,查看源码发现<c:forEach>标签未解析,显示为原样文本

原因:JSTL 标签库未正确加载,lib下缺jstl-1.2.jarstandard-1.1.2.jar(旧版),或 JSP 顶部未声明 taglib。
解决

  • 确认WebContent/WEB-INF/lib/下存在jstl-1.2.jar(非jstl-1.1.2.jar);
  • 在所有使用 JSTL 的 JSP 顶部添加:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

4.5 现象:MySQL 执行mi_shop.sql时卡住,或报ERROR 1067 (42000): Invalid default value for 'create_time'

原因:MySQL 5.7 严格模式(STRICT_TRANS_TABLES)阻止DATETIME字段设DEFAULT CURRENT_TIMESTAMP
解决

  • 临时关闭严格模式(仅用于导入):
SET sql_mode=(SELECT REPLACE(@@sql_mode,'STRICT_TRANS_TABLES','')); -- 然后执行 SOURCE mi_shop.sql -- 导入完成后再恢复 SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
  • 或手动编辑mi_shop.sql,将create_time DATETIME DEFAULT CURRENT_TIMESTAMP改为create_time DATETIME,后续在 Java 代码中用new Timestamp(System.currentTimeMillis())赋值。

5. 前端样式定制:从“仿小米”到“我的商城”的 3 个可落地改造点

5.1 替换 Logo 与 Banner:修改index.jsp和 CSS 背景图路径

首页顶部 Logo 位于index.jsp<div class="header-logo">内,原始代码为:

<div class="header-logo"> <a href="${pageContext.request.contextPath}/index.jsp"> <img src="${pageContext.request.contextPath}/images/logo.png" alt="小米商城"> </a> </div>

操作步骤:

  1. 将你的新 Logo 图片(建议尺寸 120×40px,PNG 透明背景)命名为logo.png,放入WebContent/images/目录;
  2. 同理,首页轮播 Banner 图在WebContent/images/banner/下,共 3 张:banner1.jpg,banner2.jpg,banner3.jpg,按需替换;
  3. 若需调整 Logo 位置,修改WebContent/css/style.css.header-logo imgmarginheight属性。

提示:所有图片路径必须以${pageContext.request.contextPath}开头,否则在非根路径部署(如http://localhost:8081/mi-shop/)时会 404。

5.2 修改配色方案:基于style.css的 4 个关键 CSS 变量

项目主色调由style.css中的 4 个类控制,无需重写整套 CSS:

CSS 类名作用默认值修改建议
.header顶部导航栏背景#ff6700(橙红)改为#2d8cf0(蓝色)或#19be6b(绿色)
.btn-primary主按钮(立即购买、加入购物车)background-color: #ff6700同步修改border-color:hover状态
.nav-tabs > li.active > a分类导航高亮条border-color: #ff6700改为同色系深色,如#e65d00
.footer底部背景background-color: #222可改为#333#111增强对比

修改后,在浏览器中强制刷新(Ctrl+F5)即可生效,无需重启 Tomcat。

5.3 增加“我的订单”页面:复用OrderListServletorder_list.jsp

项目已实现订单查询逻辑,但前端入口缺失。补全步骤:

  1. WebContent/user/下新建order_list.jsp,复制admin/order_list.jsp内容;
  2. 修改order_list.jsp中的 table 标题为“我的订单”,移除“操作”列中的“删除”链接;
  3. WebContent/user/user_center.jsp(用户中心页)中,添加导航链接:
<li><a href="${pageContext.request.contextPath}/OrderListServlet">我的订单</a></li>
  1. 确保OrderListServlet.java中查询逻辑为:
// OrderListServlet.java 片段 User user = (User) request.getSession().getAttribute("user"); if (user == null) { response.sendRedirect("login.jsp"); return; } List<Order> orders = orderService.getOrdersByUserId(user.getId()); request.setAttribute("orders", orders); request.getRequestDispatcher("user/order_list.jsp").forward(request, response);

这样,用户登录后点击“我的订单”,即可看到自己全部订单,且数据来自真实数据库。

6. 答辩与优化:如何把 95 分项目变成 98 分的加分项

6.1 答辩演示话术设计:用“问题驱动”讲清三个技术决策点

答辩不是复述代码,而是展示思考。针对评委高频问题,准备三句精准回答:

  • Q:为什么不用 Spring MVC 而坚持 Servlet?
    A:“因为课程目标是掌握 Web 底层机制。用 Servlet 我能清晰展示 HTTP 请求如何被doGet/doPost捕获、request.getParameter()如何解析表单、session.setAttribute()如何维持状态——这些是框架封装掉的黑匣子。我在LoginServlet中故意写了两次System.out.println()打印参数,就是为了证明请求真的到了这里。”

  • Q:数据库设计有没有考虑并发下单超卖?
    A:“教学项目优先保证逻辑正确性。当前OrderCreateServlet中,我用SELECT ... FOR UPDATE加行锁(见 DAO 层ProductDao.reduceStock()方法),并在事务中完成查库存→扣库存→生订单三步。虽不如 Redis+Lua 原子性高,但在单机 MySQL 下能有效防超卖,且代码易懂,符合课程要求。”

  • Q:前端响应式怎么实现的?
    A:“基于 Bootstrap 2.3.2 的栅格系统。比如商品列表用<div class="span3">(每行 4 列),在bootstrap-responsive.min.css中已定义@media (max-width: 767px)下自动变为width: 100%。我测试过 iPhone SE 和 iPad,商品卡片始终自适应,这比手写 media query 更可靠。”

6.2 代码级优化:给DBUtil.java加连接池,提升并发性能

原项目用DriverManager.getConnection()每次新建连接,高并发时会成为瓶颈。升级为 DBCP2 连接池(轻量、无 XML 依赖):

  1. 下载commons-dbcp2-2.9.0.jarcommons-pool2-2.11.1.jar,放入WebContent/WEB-INF/lib/
  2. 修改com.mi.util.DBUtil.java
import org.apache.commons.dbcp2.BasicDataSource; public class DBUtil { private static BasicDataSource dataSource = new BasicDataSource(); static { dataSource.setUrl("jdbc:mysql://localhost:3306/mi_shop?useUnicode=true&characterEncoding=utf8"); dataSource.setUsername("mi_app"); dataSource.setPassword("mi123456"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setInitialSize(5); // 初始连接数 dataSource.setMaxIdle(10); // 最大空闲连接 dataSource.setMinIdle(5); // 最小空闲连接 dataSource.setMaxOpenPreparedStatements(100); } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); // 返回池中连接 } }

注意:com.mysql.jdbc.Driver是 MySQL 5.7 驱动类名,勿写成com.mysql.cj.jdbc.Driver(那是 MySQL 8+ 的)。

6.3 答辩材料包:3 份必须准备的 PDF 文档

一份完整的答辩材料,远不止代码。我要求学生必交以下三份 PDF(用 Word 排版后导出):

文档名内容要点页数作用
项目需求说明书.pdf用例图(UML)、功能列表(注册/登录/商品浏览/购物车/订单)、非功能需求(支持 50 并发、响应时间 <2s)2 页证明你理解“软件工程”流程,不是纯码农
数据库设计说明书.pdfER 图(用 draw.io 画)、12 张表字段说明(含主外键、约束)、mi_shop.sql执行截图3 页展示数据库建模能力,评委最爱查这个
测试报告.pdf功能测试用例表(序号/模块/输入/预期输出/实际结果/是否通过)、压力测试截图(JMeter 模拟 30 用户登录)2 页用数据说话,95 分不是老师给的,是你测出来的

从那以后我每次指导学生做 JavaWeb 课程设计,都强制他们先花半天写完这三份文档,再动手敲代码。因为文档倒逼你思考“为什么这么设计”,而代码只是答案的载体。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 23:36:53

图书馆座位预约管理系统:从抢座乱象到扫码落座的完整落地路径

简介&#xff1a;这份资源是《图书馆座位预约管理系统》的完整Java项目源码包&#xff0c;面向学习Java Web开发的学生与初级开发者&#xff0c;用于掌握从需求分析到系统落地的全过程。系统围绕座位状态查看、预约、取消及超时自动释放等核心功能展开&#xff0c;采用表现层、…

作者头像 李华
网站建设 2026/9/23 23:34:45

Jev-TypeSafe-ai系统一模型构建Skill

名称TypeSafe 系统一模型构建开源协议MIT描述> 使用 TypeSafe 构建 AI 驱动的软件&#xff1a;小单元的人工智能能力&#xff0c; 可以像编程原语一样使用。它的 System One 模型&#xff0c;包括 Jev&#xff0c; 将自然语言和应用状态转化为代码可以组合的类型化判断和概率…

作者头像 李华
网站建设 2026/9/23 23:34:13

BRATS 2021脑肿瘤分割数据集完整实践:从申请到训练

最近在研究脑肿瘤分割方向&#xff0c;绕不开的一个东西就是BRATS 2021数据集。这是脑肿瘤分割领域公认的标准benchmark&#xff0c;几乎所有顶会论文的对比实验里都会出现它的身影。我大概花了两周时间&#xff0c;把这个数据集从申请、下载、预处理到跑通一套3D分割模型的完整…

作者头像 李华
网站建设 2026/9/23 23:33:52

Emoji符号库搭建指南:高效分类与跨平台使用技巧

1. 为什么我们需要一个“随手可用”的符号库做内容这行久了&#xff0c;你会发现一个很反直觉的现象&#xff1a;真正高频使用的东西&#xff0c;往往不是那些复杂工具&#xff0c;而是最不起眼的基础素材。Emoji 符号就是典型代表。写公众号要加个箭头引导阅读&#xff0c;做表…

作者头像 李华
网站建设 2026/9/23 23:33:21

FFmpeg.AutoGen实战:C#调用FFmpeg实现解封装、解码、缩放、编码与封装

简介&#xff1a;这份资源是面向C#开发者的FFmpeg.AutoGen实战学习示例&#xff0c;适合希望在.NET环境中处理音视频、又不想直接编写C/C代码的中级开发者。压缩包内共174个文件&#xff0c;以111个C/C头文件、16个动态链接库、8个C#源码文件及若干工程配置、示例资源为主&…

作者头像 李华
网站建设 2026/9/23 23:32:25

微信小程序【模块化】

一、完成效果二、制作流程1.在小程序根目录下新建一个common文件夹&#xff0c;在该文件夹下新建common.js文件.// common.js const comMsg 来自不同目录下模块的变量 function comFunc() {return 来自不同目录下模块的函数 }// 导出模块的变量和函数 module.exports {comMsg…

作者头像 李华