新闻详情

新闻详情

首页 / 资讯中心 / 详情

SpringBoot旅游管理系统毕业设计:从技术选型到部署上线

发布时间:2026/9/10 2:41:07来源:尧图网络
SpringBoot旅游管理系统毕业设计:从技术选型到部署上线
1. 项目概述与选题价值分析1.1 为什么旅游管理系统是毕设的“黄金选题”每年毕业季计算机专业的学生都在纠结同一个问题做什么题目才能既好过盲审、又能让自己在答辩时有话可说我见过太多人选了过于抽象的算法题目结果代码写了一堆数据库只有三张表业务逻辑完全撑不起来。也有不少人选纯管理系统做出来就是个挂着网页外壳的CRUD导师一问业务流程就哑火。旅游管理系统恰好是介于这两者之间的一个均衡点。它的业务链路完整从用户注册登录到浏览景点、查看线路再到下单预订、订单支付、后台管理一整条线下来涉及的技术点覆盖了绝大多数企业对初级开发者的能力要求。更重要的是旅游行业的业务模式大家都熟悉不需要额外的领域知识门槛导师能看懂学生能讲清开发量也适中——一个学期认真做完全可以做出一套能演示、能答辩、能写进简历的项目。从技术角度看SpringBoot是目前Java后端开发的事实标准。绝大多数企业的Java岗位招聘要求里都会写“熟悉SpringBoot”。用SpringBoot做毕设等于把技术栈踩在了主流路线上而不是用SSH那套老古董或者纯Servlet硬写。这一点在答辩和面试时都非常加分。1.2 这套系统能解决什么问题这套旅游管理系统解决的核心问题有三个。第一信息展示的问题。传统的线下旅行社靠纸质传单和门店咨询信息更新慢、触达范围有限。系统提供一个在线平台景点介绍、线路详情、价格信息、行程安排全部数字化用户可以随时随地查看。第二预订流程的问题。线下报名需要用户跑门店或者打电话效率低且容易出错。系统把选线路、填订单、确认支付这一套流程搬到线上订单状态全程可追踪用户和管理员都能实时看到进度。第三管理效率的问题。对运营方来说景点信息维护、线路上下架、订单处理、用户管理这些工作如果靠Excel和聊天记录来做数据散乱且容易丢失。系统提供一个集中的后台管理界面所有数据统一管理操作留痕权责清晰。所以这套系统不是简单的“网页数据库”堆砌它实际上覆盖了一个完整的线上旅游业务闭环。这也是它作为毕设的含金量所在项目功能完整、逻辑自洽、演示效果清晰。1.3 适合谁来参考这篇文章主要面向两类人。第一类是正在准备毕设的计算机相关专业的学生。如果你选题方向是Web应用开发或者导师给了比较宽泛的“管理系统类”题目那么这篇文章能帮你理清完整的开发思路从技术选型到模块拆分从数据库设计到部署上线每一步都有参照。第二类是准备转行Java开发、想做个人项目的求职者。旅游管理系统作为个人项目写进简历比烂大街的“图书管理系统”“学生管理系统”有辨识度得多。业务流程复杂程度适中能在面试中体现出你具备完整的项目开发经验和问题排查能力。2. 技术选型与整体架构设计思路2.1 为什么选SpringBoot而不是SSH或SSM很多人在起步阶段会纠结技术栈。我直接说结论有SpringBoot可选的情况下就不用考虑SSHStrutsSpringHibernate了。至于SSMSpringSpringMVCMyBatis虽然是上一代的主流组合但它的配置复杂度对新手来说是不小的负担尤其是那一堆XML配置光是spring-mvc.xml、mybatis-config.xml就能折腾好几天。SpringBoot最大的优势是“约定大于配置”。内嵌Tomcat不用单独部署WAR包自动配置机制省去了大量样板代码SpringBoot Starter把常用的依赖打包好引入一个依赖就等于引了一组相关依赖。这些特性对学生来说意味着什么意味着把精力花在业务逻辑上而不是花在“配置文件报错排查”上。我见过太多学生整个毕业设计的时间有一半浪费在配置环境上。SpringBoot把这条弯路基本铲平了。当然SpringBoot也不是没有学习成本——自动装配的原理、Starter机制、配置文件优先级这些概念需要理解否则遇到问题会不知道怎么排查。但比起SSM那一堆XML学习曲线已经友好太多了。2.2 系统整体架构前后端分离还是服务端渲染这个项目通常有两种做法一种是传统的服务端渲染用Thymeleaf模板引擎渲染页面另一种是前后端分离Vue或者React负责前端SpringBoot只提供RESTful接口。如果是做毕设我建议分情况时间充裕、想挑战一下、简历上想体现前后端分离能力的可以选VueSpringBoot分离式开发时间紧、求稳、主要想跑通业务逻辑的Thymeleaf方案更保险。前后端分离的优势很明显——现在企业的开发模式基本都是这个面试时更有话题性。但代价是工程量增加前端也需要学习Vue的基础用法还要处理跨域问题、接口联调、打包部署等额外事项。Thymeleaf方案则是SpringBoot的“亲儿子”集成简单页面和后台逻辑在同一个工程里部署时一个JAR包搞定对于毕设演示来说完全够用。实际开发中我个人的建议是如果从来没接触过Vue就不要临时抱佛脚。宁可把服务端渲染版本做扎实也不要在前后端分离上磕磕绊绊最后交个半成品。反过来如果你之前有过Vue项目经验那前后端分离的完成度上限会更高做出来后项目质量确实会明显上一个档次。2.3 技术栈全景与版本选择这个项目我用到的核心技术栈大概是这样的层次技术选型说明后端框架SpringBoot 2.7.x稳定版本兼容性最好ORM框架MyBatis-Plus内置CRUD方法减少重复代码数据库MySQL 5.7 或 8.0免费开源资料丰富前端框架Bootstrap / Vue3可选Bootstrap快速成型Vue3做分离版模板引擎Thymeleaf非分离版与SpringBoot集成度最高权限控制Spring Security 或 JWT / 拦截器按需选择毕设用拦截器Session足够构建工具Maven主流项目构建工具开发工具IntelliJ IDEA社区版即可接口测试Postman / Apifox调试RESTful接口关于版本这里特别提醒一句SpringBoot 3.x 已经发布很久了但如果是第一次做项目我建议用2.7.x而不是3.x。原因是SpringBoot 3.x基于Jakarta EE标准很多老教程和资料里的import语句不一样遇到问题时网上能找到的解决方案大部分还是针对2.x的。另外SpringBoot 3.x要求JDK 17以上而很多学校机房和电脑上装的还是JDK 8。为了省事选2.7.x是最稳的。2.4 数据库设计旅游业务的表结构规划数据库设计是毕设项目里最见功力的一环很多学生第一次画表就卡住了原因在于没有想清楚业务关系。旅游管理系统主要的实体关系其实不难梳理用户、景点、线路、订单、公告、评论加上必要的关联表。我的建议是至少准备这几张核心表user用户表用户ID、用户名、密码、手机号、邮箱、头像、创建时间scenic_spot景点表景点ID、名称、所在地、简介、图片、门票价格、开放时间、创建时间travel_line旅游线路表线路ID、线路名称、出发地、目的地、行程天数、价格、行程安排、线路图片、状态orders订单表订单ID、订单编号、用户ID、线路ID、出行日期、预定人数、订单金额、订单状态、下单时间announcement公告表公告ID、标题、内容、发布时间comment评论表评论ID、用户ID、线路ID、评分、评论内容、评论时间admin管理员表管理员ID、账号、密码、角色关键的表关系是订单表跟用户表、线路表的关系一个用户可以对多条线路下单一条线路也可以被多个用户预订所以订单表设计成中间表里面同时存用户ID和线路ID。这里有个容易忽略的点订单金额不要只从线路表的价格字段读取而是在下单时把当时的单价快照到订单表里。因为线路价格可能会调整如果用户下单后价格变了订单金额跟着变就说不过去了。这种细节在答辩时提出来导师会觉得你确实有工程意识。3. 核心功能模块设计与实现3.1 用户端功能模块用户端是这个系统的门面用户进来第一眼看到的是什么直接就影响对整个系统的印象。功能上大致可以拆成下面几个模块注册登录模块是最基础的部分。注册时建议做用户名唯一性校验和密码二次确认密码存储不能明文入库至少要用MD5加盐或者BCrypt加密。很多学生在毕设里密码直接明文存储答辩时被导师一问就会很尴尬因为这是最基本的安全意识问题。景点与线路展示模块是核心内容展示区。首页轮播图推荐热门景点下面排列推荐线路每条线路卡片展示名称、价格、出发地、目的地和缩略图。点击进入详情页展示完整的行程规划、价格明细、包含费用和不包含费用等。预订下单模块是业务闭环的关键。用户选择线路后填写出行日期、出行人数、联系人信息系统自动根据线路价格和人头数算出总价。下单后生成订单编号格式可以用当前时间戳加随机数保证唯一性。个人中心模块用于查看个人信息、修改密码、查看我的订单。订单列表按状态区分待支付、已支付、已取消、已完成。用户可以对已完成的线路进行评论和评分。3.2 管理员端功能模块后台管理模块的呈现方式建议单独做一套符合管理员操作习惯的界面左侧菜单栏加右侧内容区的经典布局。管理员登录验证要区分用户角色和管理员角色。简单做法是在admin表中单独存管理员账号配合拦截器做权限控制。用户端的请求和管理端的请求走不同的URL前缀比如前端以 /index 开头后台以 /admin 开头拦截器只拦截 /admin/** 下的请求这样权限控制就清晰了。管理员端的数据看板模块可以用统计图展示系统运营概况比如用户总数、订单总数、今日新增订单、总营收。这些数据通过SQL聚合查询实现用ECharts或Chart.js把数据可视化。景点管理模块的功能是对景点信息的增删改查包括上传图片、编辑简介、设置门票价格。这里有个实用的细节图片上传后建议存储到服务器本地目录数据库只存相对路径这样切换环境时不需要处理大字段的迁移。线路管理模块是后台最复杂的模块除了基本的增删改查还涉及上下架操作。下架的线路在用户端不展示但数据库里还保留数据便于日后重新上架用status字段标记状态即可。订单管理模块是管理员使用频率最高的模块核心功能包括订单查询按订单编号、用户、状态筛选、订单详情查看、订单状态修改、订单导出Excel。导出功能在答辩演示时效果很好可以现场导出一份订单报表。3.3 接口设计与统一返回格式如果你做的是前后端分离版本接口设计就非常重要。建议设计一个统一的Result返回类无论成功失败都返回固定的JSON结构包含状态码、消息和数据三部分例如public class ResultT { private Integer code; private String message; private T data; }成功时code为200失败时code为500未登录时code为401。前端拿到这个结果根据code做分支处理。这样做的目的是前后端联调时接口的交互逻辑是统一的不会出现一个接口返回这种格式、另一个接口返回另一种格式的情况。接口的具体设计上建议遵循RESTful风格比如POST /api/user/register 注册POST /api/user/login 登录GET /api/scenic/list 景点列表GET /api/scenic/detail/{id} 景点详情GET /api/line/list 线路列表GET /api/line/detail/{id} 线路详情POST /api/order/submit 提交订单GET /api/order/list 我的订单POST /api/order/cancel 取消订单这种接口设计在答辩时很容易讲清楚而且面试官一看就知道你具备基本的企业级开发规范意识。3.4 代码分层与包结构设计好的包结构是项目可维护性的基础。很多学生的项目所有代码混在一起Service层直接写SQLController里写业务逻辑两三千行代码堆在一个类里。这种代码哪怕功能能用答辩时也会被导师质疑代码规范。推荐的分层方式是这样的com.example.travel ├── controller // 接口层接收参数、返回结果 ├── service // 业务层处理核心业务逻辑 ├── mapper // 数据访问层MyBatis的Mapper接口 ├── entity // 实体类对应数据库表 ├── dto // 数据传输对象用于接口参数接收 ├── config // 配置类如跨域配置、拦截器配置 ├── common // 通用类如Result返回类、异常处理 └── utils // 工具类如JWT工具、日期工具Controller层的职责是接收HTTP请求、参数校验、调用Service、返回结果不写业务逻辑。Service层是业务逻辑的核心事务控制也在这里。Mapper层只负责数据库操作每张表对应一个Mapper接口。这里有一个实用的经验数据库表结构设计的每个字段在entity实体类里都有对应的属性这个对应关系要仔细检查。尤其是字段类型数据库里的datetime对应Java的LocalDateTimedecimal对应BigDecimal不要用String硬接否则后续处理数据时会很痛苦。4. 实操过程从源码导入到本地成功运行4.1 环境准备JDK、Maven、MySQL在导入项目之前先把环境准备好。JDK版本建议8或11Maven使用3.6以上版本MySQL使用5.7或8.0均可。如果电脑上是有多个JDK版本的记得在IDEA的Project Structure里确认项目使用的是哪个JDK避免版本不对导致编译失败。Maven的配置有一个常见坑国内访问Maven中央仓库非常慢。解决方案是在Maven的settings.xml里配置阿里云镜像这样依赖下载速度会快很多。如果不配镜像首次导入项目时需要下载上百兆依赖等半小时是家常便饭。4.2 数据库初始化与配置文件修改拿到源码之后第一步是创建数据库。通常项目里会附带一个.sql文件在Navicat或命令行中执行即可mysql -u root -p travel.sql执行完后确认表是否创建成功SHOW TABLES;接下来是最关键的步骤修改application.yml配置文件里的数据库连接信息。不要直接用默认的账号密码必须改成你自己本机的MySQL账号密码数据库名称也要和实际创建的库名保持一致。spring: datasource: url: jdbc:mysql://localhost:3306/travel_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 你的密码 driver-class-name: com.mysql.cj.jdbc.Driver这里有个容易忽略的点连接URL里的serverTimezoneAsia/Shanghai参数。如果不设置时区MySQL 8.0版本会报时区相关的错误。很多学生在这个问题上卡了半天明明账号密码都对就是连不上数据库。4.3 启动项目与常见启动报错排查配置完成后启动方式有两种一种是在IDEA里直接运行主启动类另一种是打JAR包在服务器上运行。IDEA里运行的步骤很简单找到Application类右键Run即可。如果启动过程中报错最常用的排查方法是看控制台最底部的异常信息。我整理了几类最常见的启动问题端口被占用是频率极高的问题。SpringBoot默认端口是8080如果本地有其他程序占用启动就会失败。解决办法是先找出占用端口的进程或者直接在配置文件里改端口。server: port: 8080检查端口占用在命令行里执行netstat -ano | findstr 8080查出来PID之后在任务管理器里找到对应进程并结束即可或者直接换个端口。数据库连接失败也是高频问题。报错信息大概像这样Access denied for user rootlocalhost。出现这个错误先检查账号密码是否完全一致再检查密码是否包含特殊字符导致YAML解析问题。如果密码包含特殊字符建议在配置里用单引号引起来。还有一种报错是Unknown database xxx这个是因为数据库名字写错了或者数据库没有创建成功。回到MySQL命令行里执行SHOW DATABASES看看实际的库名大小写是否匹配。4.4 打包部署从IDEA到服务器有些学校的毕设要求提供部署演示或者你觉得答辩时在本地环境跑有风险建议提前打包成JAR文件部署到服务器上或者至少部署在一台干净的环境里。打包前先确认配置文件的数据库连接已经改成服务器的地址然后执行Maven打包命令mvn clean package -DskipTests打包完成后在target目录下会生成一个jar文件使用如下命令启动java -jar travel-system.jar如果想在服务器后台运行用nohup命令nohup java -jar travel-system.jar logs.txt 21 这样即使关闭终端服务也会持续运行。启动后访问http://服务器IP:8080 就能看到系统首页了。这里有一个非常实用的技巧在服务器上部署前先在本机用IDEA把项目完整跑通确认功能没问题。因为服务器环境更简洁一旦出问题排查起来更麻烦。本机跑通后打包部署到服务器基本就是一把过。5. 常见问题与排查技巧实录5.1 前端页面样式加载不出来的问题页面能打开但样式全乱这通常是静态资源的路径问题。如果是Thymeleaf版本检查页面HTML的引入路径是否使用了th:href和th:src语法不要写死相对路径。在浏览器按F12打开开发者工具看Network面板里CSS和JS文件的请求状态码404就说明路径写错了。如果是前后端分离版本样式加载不出来的原因大概率是前端部署的静态资源路径与后端接口路径不匹配。Vue项目打包后会有dist目录把dist目录里的内容放到Nginx配置的root路径下接口请求通过反向代理转发到SpringBoot服务。5.2 中文乱码问题中文乱码在数据库和页面两个层面都可能出现。如果数据库里存的本身就是乱码说明建库的时候字符集没设置对。MySQL建库时建议显式指定字符集CREATE DATABASE travel_db DEFAULT CHARACTER SET utf8mb4;UTF8MB4是UTF8的超集可以存储emoji等特殊字符是当前推荐的字符集选择。如果表已经建好了可以通过ALTER语句修改表的默认字符集。如果页面显示乱码检查两个地方一是HTML页面的charset是否设置成UTF-8二是SpringBoot配置文件中是否设置了统一的编码。在application.yml里加一行server: servlet: encoding: charset: UTF-8 enabled: true force: true这样基本能解决服务端到客户端的编码问题。5.3 MyBatis-Plus使用中的几个坑MyBatis-Plus虽然把常用的CRUD封装好了但使用过程中有几个常见的坑值得注意。第一个坑是实体类的表名映射。MyBatis-Plus默认的表名解析规则是把类名的驼峰格式转下划线格式如果数据库表名不符合这个规则需要加TableName注解指定表名。第二个坑是字段映射。数据库字段是下划线命名Java属性是驼峰命名需要在配置里开启驼峰映射否则查询出来的对象属性值为null。mybatis-plus: configuration: map-underscore-to-camel-case: true第三个坑是逻辑删除。MyBatis-Plus支持逻辑删除配置好逻辑删除字段后删除操作会自动变成UPDATE语句更新删除标记查询会自动过滤已删除的数据。这个功能建议在毕设里用上因为它是企业开发的常见标准做法在答辩时提出来很加分。5.4 跨域问题前后端分离版前后端分离开发的场景下前端运行在8081端口后端运行在8080端口浏览器会发起跨域请求后端不做处理的话前端会报错。解决方案有三类第一类是在后端添加全局跨域配置类实现WebMvcConfigurer接口的addCorsMappings方法第二类是使用CrossOrigin注解加在Controller类或方法上第三类是后端不加任何处理通过Nginx反向代理把相同域名的请求转发到不同端口从根本上规避跨域问题。在实际开发中我建议用Nginx方案因为这也是生产环境的真实做法。本地调试时先用后端跨域配置解决部署时再切换到Nginx代理两边都不耽误。5.5 热门问题的速查表报错信息可能原因解决方案Port 8080 was already in use端口被占用查找占用进程并结束或修改server.portAccess denied for user数据库账号密码错误核对application.yml中的用户名密码Unknown database数据库不存在执行SQL脚本创建数据库Failed to configure a DataSource数据源配置缺失检查spring.datasource配置Cannot load driver class驱动依赖缺失在pom.xml中添加mysql-connector-java依赖Whitelabel Error Page请求路径不存在或Controller未配检查Controller的RequestMapping路径Cache key is null实体类主键未指定在实体主键字段加TableId注解中文乱码字符集不一致统一UTF-8数据库用utf8mb46. 系统扩展与答辩亮点提炼6.1 还可以加哪些功能旅游管理系统做成基础版之后如果你想在答辩时更有竞争力有几个方向可以做扩展。支付模块。接入支付宝沙箱环境或微信支付沙箱模拟真实支付流程。支付功能是旅游业务不可或缺的一环能把这个功能做出来项目的完整度会提升一大截。数据可视化。在后台数据看板中加入ECharts图表展示订单量趋势、热门景点排行、用户增长曲线等。这个功能做起来不难但视觉效果非常好答辩时数据一出来导师会觉得你在工程实践上有自己的想法。消息通知。用户下单成功后可以给用户发送邮件或短信通知。邮件用SpringBoot集成的JavaMailSender就能实现短信则可以通过阿里云短信服务接入。这个功能虽然有外部依赖但实现逻辑并不复杂。分布式锁和缓存。在高并发场景下多个用户同时抢订同一条低价线路可能产生超卖问题可以用Redis做分布式锁或者乐观锁控制。如果项目里加入Redis缓存热点景点数据并讲解缓存击穿、穿透、雪崩的应对策略这个项目的技术深度就会从毕设层面拉到接近企业项目的水平。6.2 如何在答辩时把项目讲出彩答辩时不要只演示功能更要讲清楚“为什么这么设计”。我建议按照这样一个思路来组织你的讲解逻辑先讲项目的业务背景和用户痛点一句话说清楚解决了什么问题。然后讲技术选型说明为什么用SpringBoot、MyBatis-Plus、这些技术解决了什么开发痛点。接着讲系统架构给导师展示你画的架构图说明每一层的职责。再讲核心功能选两三个亮点功能做深度讲解比如订单的并发控制、权限拦截器、图片上传处理。最后讲项目的难点和解决方法这个部分最能体现你的独立思考能力。面试官很喜欢问的一个问题是“项目中你印象最深的一个Bug”。这个问题一定要提前准备。不要模棱两可地说“没有遇到什么Bug”那会让你看起来像个工具人。你应该挑一个真实的问题来展开比如我之前在开发中遇到过一次订单模块并发提交时会出现数据不一致问题原因是两个用户同时提交订单后一个把前一个的库存覆盖了。后面通过给订单表加唯一索引配合数据库事务最终解决了这个问题。这样一讲面试官就能感受到你是真的在做项目而不是在背题库。6.3 从毕设到简历项目经验的包装技巧做完这个项目如果只是放在毕设论文里交差未免太可惜。稍微包装一下完全可以变成简历上很有含金量的项目经验。项目名称可以写“旅游管理系统的设计与实现”具体描述不要只写“实现了用户登录注册、景点浏览、线路预订功能”而是用一些更专业的词汇负责系统整体架构设计完成用户端与管理端功能开发基于SpringBoot搭建RESTful API使用MyBatis-Plus实现数据持久化设计订单状态流转机制并通过Redis缓存热点景点数据提升系统响应速度。还要写明“使用项目管理系统进行需求分析撰写相关开发文档”。这种描述方式把具体技术名词全面融入让人一看就知道你的技术栈和能力范围。更重要的是简历上写的每一条技术在面试时都要能接得住。所以你在写简历之前先把项目里用到的每一项技术的基本原理搞清楚准备几个可以深挖的问题做到心中有数。7. 实操心得与避坑建议我做了不少项目也带过一些学生做毕设有一些切身体会很想分享出来。第一件事不要在环境配置上死磕。很多学生在导入项目、配环境这一步就被卡住了花了整整一周的时间反复折腾JDK、Maven、IDEA最后发现只是某个配置文件里多了个空格。我的建议是把环境配置当成一个必须按步骤走的流程遇到问题先记录下来不要纠结一晚上。很多时候第二天再看问题就迎刃而解了。如果是在一个环节卡了超过两个小时果断去查资料或者问人而不是独自硬扛。第二件事数据库设计一定要先做扎实。我在实践里发现凡是在开发过程中频繁返工的项目几乎都是因为表结构设计不合理。还没想清楚业务关系就急着建表到了开发后期发现缺字段、缺约束然后反复修改实体类、修改SQL整个项目代码就变得很乱。正确做法是先把表结构设计好至少把所有核心表和它们的关系理清楚再开始写代码。这一步值得花两三天时间认真打磨。第三件事学会用Controller-Service-Mapper这个三层结构来组织和调试代码。很多同学在排错时习惯在Controller里打印日志一层一层往下看。其实更高效的方式是先确定是哪一层出了问题再用debug断点定位。IDE的Debug功能一定要熟练使用设置断点、单步执行、查看变量值这个技能在开发阶段和答辩演示时都能派上大用场。第四件事注释和文档不能扔掉。很多同学觉得代码能跑就行注释无所谓。但毕设论文是需要贴代码的导师会看你代码的可读性。每个类的顶部加上注释说明这个类的作用核心方法上加上注释说明参数和返回值的含义。这样不仅论文好写整个项目也会显得更专业。最后再分享一个实用小技巧项目开发过程中建议每一周都用git commit备份一次代码。哪怕只有你自己一个人开发用一个本地仓库记录版本历史也比哪天代码改坏了无法回退要踏实得多。答辩前再整理一下README文档把项目简介、技术栈、启动步骤、默认账号密码写清楚这份README不仅是给别人看的也是你自己回顾项目时的指南。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

2026年9月长期流量卡怎么选?五大硬指标与避坑实操指南 2026/9/10 3:23:13

2026年9月长期流量卡怎么选?五大硬指标与避坑实操指南

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

阅读更多 →
北京SEO外包公司案例拆解:从排名截图到自然流量的真伪鉴别 2026/9/10 3:23:13

北京SEO外包公司案例拆解:从排名截图到自然流量的真伪鉴别

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

阅读更多 →
DeepSeek Harness实战:从Agent运行外壳到多模型API接入全攻略 2026/9/10 3:23:13

DeepSeek Harness实战:从Agent运行外壳到多模型API接入全攻略

这两年做 AI Agent,我一直绕不开一个词:Harness。说实话,第一次看到 Agent Harness 这个概念时我也懵了一下,以为是什么云平台。后来用 DeepSeek 跑多模型 Agent 时才算彻底搞明白——Harness 就是你 Agent 的“方向盘和底盘”。今…

阅读更多 →
Spring核心原理与实战:IoC、AOP、循环依赖与Spring Boot自动配置全解析 2026/9/10 3:23:13

Spring核心原理与实战:IoC、AOP、循环依赖与Spring Boot自动配置全解析

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

阅读更多 →
CKEDITOR从Word粘贴图片并上传的完整解决方案 2026/9/10 3:23:13

CKEDITOR从Word粘贴图片并上传的完整解决方案

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

阅读更多 →
造价软件选型全攻略:底层逻辑、主流平台对比与避坑指南 2026/9/10 3:20:13

造价软件选型全攻略:底层逻辑、主流平台对比与避坑指南

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞