Java Web可视化项目实战:从数据库设计到图表渲染
做数据展示这块最怕的就是辛辛苦苦把数据统计出来结果在页面上只能看到密密麻麻的表格。用户看不进去开发也讲不清业务价值。“Java Web可视化实践项目”这个名字实际上就是解决这类问题的一类典型工程。我最近刚好完整走了一遍从数据库设计、后端接口封装到前端图表渲染的流程把这套思路整理出来对于刚接触可视化后台开发的同学来说应该比单纯看框架文档更有参考价值。这个项目的本质是在一个标准Java Web服务上把业务数据通过聚合查询转化成图表展示让阅读者能直接从图形看出趋势、对比和异常而不是去逐行读表格。它不涉及太花哨的算法核心考验的是数据建模能力、接口设计能力和前后端联调时的细节把握能力。1. 项目整体设计与核心思路1.1 可视化需求背后的真实痛点很多后台管理系统之所以要加可视化模块不是因为领导觉得大屏好看而是业务方确实在原始表格里读不出信息。比如销售数据几千条订单记录摆在页面上就算加了排序、筛选人也没法在短时间内判断“这个月增长最快的到底是哪个品类”。可视化本质上做的是信息压缩把大量行记录压缩成柱状图里的根柱子、折线图里的几个拐点。我在设计这个项目时第一件事不是选图表库而是先去明确指标口径日订单量、成交金额、用户活跃数、接口成功率每个指标都必须说清楚“怎么算”。很多项目死在第一步就是因为后端给的字段名和前端期望的对不上或者SQL聚合逻辑本身就有重复计算。这个项目的关键取舍在于后端只返回已经聚合好的最终数据前端不做任何统计处理。这样职责清晰也方便后续如果换报表工具接口可以原样复用。1.2 技术选型背后的逻辑为什么是这套组合技术栈选型上我遵循“稳定、好招人、生态成熟”的原则。Spring Boot作为基础框架没有争议它把配置和部署成本压到很低起步快持久层我用的是MyBatis因为聚合查询往往需要写比较复杂的SQLMyBatis对这种场景非常友好尤其foreach动态拼时间范围、多条件组合筛选这些功能比JPA那套自动SQL直观得多。数据库选了MySQL常规业务量下完全没有压力。需要说明的是可视化接口的查询模式和管理后台列表页不一样它的查询模式很固定按时间段分组、按维度聚合、求总和或均值。针对这种特征我建了专门的统计表或者物化视图不去直接打业务流水表。存储上还配了Redis做热点缓存因为大屏展示或者看板首页往往是多个人同时打开同一个统计维度逐个请求数据库完全没有必要。图表库我用的是成熟的开源产品ECharts强调一下原因它自带丰富的交互组件、动态更新和面积堆叠功能不需要自己写Canvas重造轮子。业界主流方案对比其实已经很明确我把几个重点列一下方案优点劣势使用场景后端生成图表图片前端工作量小交互差、无法局部刷新、带宽浪费报表邮件、静态导图纯前端计算数据响应快、服务器压力小大数据量下浏览器卡顿、数据口径容易不一致轻量级、单机数据量少后端聚合前端图表库渲染口径统一、可承载大数据量、交互丰富前后端联调成本略高管理后台可视化、大屏、运营看板从这个表格可以看出来大部分中后台场景选第三种是符合投入产出比的。执行时间、内存占用不高但可视化模块的开发效率会有明显提升。如果你做的项目数据量百万级以下这套方案维持高性价比如果真的到了千万级那需要在前端分页加载或者后端下钻维度上做更多文章这个后面排查章节再细说。2. 核心功能模块与实现细节2.1 统计看板SQL聚合是灵魂接口只是搬运工可视化项目最核心的模块通常是统计看板它一般由几个关键图表组成总览卡片单值指标、趋势图折线、分类占比饼图、排名列表横向柱状图。这里面的重点是后端查询必须先想清楚粒度。以订单趋势为例直接按天分组求和是一个思路但如果看板支持“按小时/按天/按周”切换后端就要预留粒度参数而不是每个粒度写一个接口。我实际设计的聚合SQL长这样SELECT DATE_FORMAT(create_time, #{dateFormat}) AS stat_period, COUNT(*) AS order_count, SUM(amount) AS total_amount FROM trade_order WHERE create_time #{startTime} AND create_time #{endTime} AND status IN (1, 5) GROUP BY stat_period ORDER BY stat_period;这里有两个细节容易踩坑。第一DATE_FORMAT的格式化串不能由前端直接传否则会有SQL注入风险。我在后端定义了一个白名单映射表day - %Y-%m-%dweek - %Y-%umonth - %Y-%m。前端上传的只是day/week/month这几种枚举后端去查映射而不是直接把格式化串拼进SQL。第二金额字段的精度问题Java后端用BigDecimal接收如果使用double很可能出现一堆小数尾巴在图表上的tooltip里显示一长串非常不专业。索引方面这种查询主要落在create_time上所以我在trade_order表上建了一个复合索引(create_time, amount)让范围过滤和求和都在索引内完成避免回表和临时表排序。这里补充一个我自己的习惯每个聚合查询跑完以后都要用EXPLAIN看一眼是否出现了Using filesort有的话直接加索引不然后期数据量上来了接口会突然变慢。看板接口的数据结构尽量采用前端方便消费的扁平对象。比如折线图接口返回{ code: 0, data: { categories: [2025-01-01, 2025-01-02], series: [ {name: 订单量, type: bar, data: [120, 300]}, {name: 成交金额, type: line, data: [4500, 12000]} ] } }前端拿到这个结构可以直接塞进了图表库不需要二次转换。很多新手习惯把数据库行记录直接返回把字段名为order_count之类的东西留给前端自己拼接结果前端代码大量出现map既难维护又容易在字段不存在时报错。2.2 实时监控面板SSE与WebSocket的选择很多可视化项目不仅仅做历史数据展示还要做实时监控比如服务器CPU使用率、在线用户数、当天实时成交流水。这个需求最直接的方案是轮询前端定时器每5秒请求一次接口。但轮询有不少问题最典型的是无效请求太多用户切后台或页面挂着一天产生了大量无意义的HTTP调用。我选了SSEServer-Sent Events作为默认推送方案原因很实际这个项目以服务端到客户端的单向推送为主不需要频繁往服务器发消息。Spring Boot对SSE支持很完善通过SseEmitter几行代码就能实现。核心结构如下GetMapping(/stream/realtime) public SseEmitter streamRealtime() { SseEmitter emitter new SseEmitter(0L); // 使用独立线程定期推送数据 executorService.execute(() - { try { while (true) { MapString, Object data statisticsService.queryRealtimeData(); emitter.send(SseEmitter.event().data(data)); Thread.sleep(5000); } } catch (Exception e) { emitter.completeWithError(e); } }); return emitter; }前端用EventSource接收浏览器自带断线重连机制比WebSocket的部分场景简单不少。但SSE有连接数隐忧它对每个浏览器标签页都会占用一个HTTP连接如果用户多开页面Tomcat的线程和连接都会被占据。所以我们在项目里同时给监控面板设了一个“五分钟无操作自动停止推送”的机制避免后台页面干挂连接。如果你需要双向通信比如用户切换监控指标时服务端要立刻返回定制数据那WebSocket是更合适的方案。这个我在项目里也做了一套备用实现核心组件是ServerEndpoint。从实施结果看WebSocket的复杂度明显高于SSE需要自己维护session集合还要处理连接关闭时的线程清理没有特殊需求没必要强行上。2.3 数据权限可视化隐藏的暗坑图表不像列表页有分页一次性把某个维度的全量数据都暴露出来。如果系统有多租户或者多部门场景比如区域经理只能看自己区域的数据总部才能看全国那么数据权限处理不好等于把所有人的数据都脱光了。我处理方案是在统计接口的SQL后面动态追加条件。比如按机构隔离设计上把业务表都带上org_id字段统计时优先过滤。这块不是加一个where那么简单还要考虑汇总接口和明细接口的口径要保持一致。假如汇总报表按全国统计点下钻到某个区域时区域接口也应该用同样的过滤逻辑否则两层数据对不上用户会对系统失去信任。我把权限过滤逻辑总结成了一条原则统计入口统一走一个权限上下文由当前登录人的角色决定可见的orgId集合后端把这个集合注入到SQL查询条件里。大屏项目尤其要注意这种投在公开场合的屏幕权限漏洞会直接被放大在开发阶段就要规划好。3. 完整实操过程从建表到图表渲染3.1 初始化工程与数据准备我用Spring Initializr快速生成了项目骨架依赖只选择Web、MyBatis、MySQL驱动和Lombok。这里建议不要往工程里堆太多依赖后面每加一个中间件都意味着更多的排错成本。数据源配置走application.yml多环境用application-dev.yml、application-prod.yml分开我一般至少把数据库连接串、连接池大小和日志级别这三项单独抽出来方便不同环境切换。启动类上我加了MapperScan扫描Mapper包这样可以省略每个Mapper上加注解的重复操作。项目结构用经典的分层controller处理参数、service写业务和事务、mapper写SQL。虽然很多人觉得Java项目分层很老套但对于可视化这种逻辑清晰的项目分层反而是降低理解成本的最佳方式。直接在controller里写SQL的做法短期看起来舒服复用和测试的时候会非常痛苦。数据准备阶段我写了一个造数脚本。由于项目是实践性质的没有真实业务数据我用存储过程往trade_order表插入了约10万条测试记录时间跨度一年每天数量通过随机函数控制模拟自然的波动趋势同时给一部分日期制造明显的波峰和波谷这样图表上的趋势变化才看得出效果。数据造完后我用几个聚合SQL先核对了总数、日期范围和金额总和确认基础数据没有脏数据再开始写接口。3.2 后端的接口分层设计与代码落地后端我按“统计卡片、趋势图、分类占比、实时数据”四个模块拆分了Controller。为了避免接口数量爆炸所有查询用POST请求参数放在请求体里DTO内部做了参数校验。为什么要用POST而不是GET因为参数里时间范围、维度、组织ID这些组装起来会很长而且GET参数容易被日志系统全部记录下来导致敏感数据泄露。POST可以避免这些问题也方便统一做鉴权。我给统计接口定义了一个通用返回体public class ResultT implements Serializable { private Integer code; private String message; private T data; }所有接口固定返回这个结构前端Axios拦截器统一处理code非0的情况。要注意的是图表接口和POST表单接口不太一样图表接口一旦查询失败前端不应该渲染一个空图而是需要展示友好错误信息并配合全局告警提示。所以我在后端对异常做了包装遇到SQLSyntaxException或查询超时返回的message要清晰比如“统计日期不能超过90天”而不是一串堆栈信息。其中一个关键接口的实现值得展开看看查询分类占比的Mapperselect idselectCategoryStat resultTypemap SELECT category_name AS name, SUM(amount) AS value FROM trade_order WHERE create_time BETWEEN #{startTime} AND #{endTime} AND org_id IN foreach collectionorgIds itemitem open( separator, close) #{item} /foreach GROUP BY category_name ORDER BY value DESC /select这里resultTypemap在MyBatis里可以直接返回键值对但要注意MySQL对重复的category_name不要有大小写不一致的问题否则会出现两条视觉上类似的图例。为了杜绝这个问题我在造数和业务层面都统一了枚举字典不让用户手工录入分类名称。3.3 前端图表渲染与联调过程前端部分我选择了比较轻的Vue框架配合开箱即用的脚手架。页面布局整体是一列的两个卡片上面是筛选条件和实时面板开关下面放大图表容器。字数有限就不贴全部代码了只展示一个关键套路图表的组件封装。封装图表组件时我把echarts实例放在watch回调里统一更新watch: { chartData: { handler(newVal) { this.myChart.setOption({ xAxis: { data: newVal.categories }, series: [{ data: newVal.series }] }); }, deep: true } }如果每次数据刷新都用setOption增量更新默认情况下组件内部会merge新旧数据某些数据项长度不一致时就会产生残留。第一次渲染用完整option后续更新时数组类型的数据会整段替换对象类型的配置项则会递归合并一般通用场景下够用的。还有一点组件销毁时需要调用dispose释放资源否则页面频繁切换时会出现内存泄漏浏览器会越来越卡。联调的过程中最常遇到的问题就是字段名不统一。后端返回orderCount前端写成了order_count或者反过来。为了解决这个问题我在后端统一了DTO命名规范JSON里用驼峰数据库里用下划线中间通过MyBatis的mapUnderscoreToCamelCase配置自动转换。这样至少能避免八成低级错误。图表加载体验上我给图表容器设置了固定高度并在数据加载时显示一个轻量loading状态而不是等数据回来后突然撑开页面。加载动画我用图表库自带的showLoading方法比手撸CSS简单体验也专业。想强调的一点第一次数据还没有返回时不要初始化为空数组否则图表会先渲染出一个空框数据来了再动画过渡视觉上闪一下观感不够好。3.4 权限与缓存安全落地与性能优化接口鉴权我用了成熟方案登录后签发JWT过滤器里解析token再把用户信息放进当前请求上下文。统计接口的权限控制也在这一层实现从上下文取出用户所属的机构层级连同service层的参数一起传递到Mapper的orgId过滤条件中。这就形成了“三层数据隔离”页面看不到无权访问的数据接口拒绝了无token的请求管理员角色下还能看到所有机构的汇总。缓存部分我对热点统计维度保持10分钟的过期时间。这里有个优化思路失败率的指标不要缓存太久实时性要求高而历史订单趋势、用户增长曲线这类数据天然就不会在10分钟内变化设置一小时甚至更长都合理。另外我选用了Cacheable注解实现key的粒度做成了“维度:开始时间:结束时间:组织ID”这样一个部门刷新数据不会把另一个部门的缓存也冲掉。4. 常见问题与排错经验实录4.1 查询越来越慢走了索引但还是不行开发环境数据量小的时候接口毫无压力但到了联调测试阶段数据量上来后某个趋势接口竟然耗时3秒多。第一反应是索引失效但用EXPLAIN检查后发现索引确实走了。后面定位到真正瓶颈DATE_FORMAT写在GROUP BY里MySQL在聚合时无法直接利用索引的有序性必须额外做一次文件排序。处理办法是先把原始时间字段范围查出来存到临时表或者子查询里对查出来的数据再做格式化后来我改成把格式化后的日期字段单独存成冗余列并在这列上建索引查询性能一下提升接近10倍。另外还有一个隐藏问题BETWEEN ... AND ...的范围查询包含边界值而日期字段往往带时分秒如果用BETWEEN 2025-01-01 AND 2025-12-31会漏掉12月31日那一整天的数据。我统一改成和的半开区间写法虽然只是细节却直接影响报表正确性。总之聚合查询的性能优化需要同时关注效率与正确性两个层面都要小心。4.2 图表刷新时旧数据残留和抖动图表刷新出现的一类问题和上面提到的setOption合并机制有关。切换时间范围时分类数量和系列个数都变了如果不做处理旧图例会一直挂在图上。我的处理很简单每次更新时间范围之后直接调用chart.clear()再调用setOption(option, true)Force重新渲染整张图。虽然技术上没有利用到增量更新的优势但保证了在快速切换时间范围时数据展示是稳定的。有时候图表还出现“跳动”现象柱状图彼此叠在上面答案是y轴的最大值没有跟随数据变化被固定死了。ECharts默认情况下y轴会自动计算最大值但如果你在初始化时手动设置了yAxis.max甚至设置为一个写死的数那么数据超过这个值后柱子会顶出容器。正确做法是不硬编码轴的上限或者统一在计算max时乘上1.2倍并向上取整让图表呼吸感好一点。4.3 时区问题图表时间错位八小时这个坑特别容易在可视化项目里出现。后端把create_time存成datetime没有指定时区服务端和数据库部署在同一台机器时事情还好但如果数据库用的是云数据库或者后端连接串里没有设置serverTimezone查询结果就会差出8小时。测试时一般不会注意到展示大屏后就会发现凌晨的数据跑到了中午。排查这类问题的方法是先把SQL客户端查出来的原始值和通过Java接口返回来的值做对比如果SQL结果正确而接口结果错误十有八九是JDBC驱动时区转换问题。将连接串加上serverTimezoneAsia/Shanghai并统一让Java和MySQL都使用东八区时间之后这类问题基本绝迹。前端在展示时也建议用时间戳而不是字符串避免浏览器解析ISO字符串时又按本地时区显示一次。4.4 常见问题速查表问题现象可能原因排查方向接口慢、页面转圈索引缺失或使用了函数导致索引失效EXPLAIN看类型和extra图表显示空白后端返回[]或字段名不匹配浏览器Network看原始返回图表有残留旧数据setOption合并机制改用clear()后重设或使用 notMerge时间维度差8小时JDBC连接时区配置不对检查连接串serverTimezone大屏打开多标签页后服务器卡SSE连接过多限制推送时长或用WebSocket替代图表数据对不上总数权限过滤/聚合口径不一致核对统计SQL和明细SQL过滤条件柱状图柱子顶出边界y轴max硬编码配置不设max或动态计算这张表基本覆盖了可视化模块上线前后最常遇到的问题每一条都是我在实际开发中踩过并解决的。建议读者遇到问题时先对着表自查一遍多数情况能在半小时内定位。5. 个人经验与下一步建议这个项目做下来我最大的体会是可视化模块的核心竞争力不在于图表多炫而在于数据准确、实时性达标、权限体系严谨。技术上其实没有特别高深的东西但每一步都有大量细节需要打磨比如日期格式、接口约定、字段命名、缓存粒度。初学者如果直接上手可视化项目我的建议是不要一上来就研究太酷的图表形态先让数据流动起来把一个折线图、一个柱状图、一个饼图做到数据准确、切换流畅、权限正确就已经能覆盖大多数业务场景了。接下来可以扩展的方向也很明确一是把报表导出做成异步任务因为前端生成大图表数据的内存占用很吓人二是接入告警能力让异常指标在达到阈值时主动推送给相关人员而不是等人发现之后再来查三是如果业务规模变大以改造为数据大屏多维度下钻的模式。每一步都是在当前骨架基础上的增量演进不需要推翻重来。建议读者按照这套思路自己动手跑一遍过程中遇到的坑大概率和我记录的这些大同小异。

相关新闻

Vold与Rild架构深度对比:Android系统层守护进程的设计精髓

Vold与Rild架构深度对比:Android系统层守护进程的设计精髓

做Android系统层开发这些年,我始终觉得有两个native守护进程是所有做Framework、做系统定制的人都绕不开的:一个是负责存储卷管理的Vold,另一个是负责电话通信的Rild。这本书第8章把这两个东西放到一起讲,初看有点怪——Vold是管文…

2026/10/15 6:06:41 阅读更多 →
Android系统定制必读:Vold与Rild守护进程架构与排障实战

Android系统定制必读:Vold与Rild守护进程架构与排障实战

这章我前后翻了三遍,每次读都有新收获。Vold和Rild这两个名字,凡是做过Android系统定制或者ROM开发的人都不会陌生:一个管存储,一个管电话,看起来八竿子打不着,但都属于“用户空间最接近内核硬件”的那一层…

2026/10/15 6:06:41 阅读更多 →
ATML标准实战解析:基于XML的测试信息模型如何解决ATS接口难题

ATML标准实战解析:基于XML的测试信息模型如何解决ATS接口难题

搞测控系统这些年,我最大的感受就是:方案好写,接口难缠。同一个被测对象,上午在A台架上测完,下午换个台架,程序和配置往往要重写一遍;测试报告想统一归档,各台位导出的格式却五花八门…

2026/10/15 6:06:41 阅读更多 →

最新新闻

现代CMake实战:从target到依赖传递的C++构建指南

现代CMake实战:从target到依赖传递的C++构建指南

1. 为什么一个C老手也会在CMake上翻车刚入行那会儿,我对构建工具的态度是能躲就躲。写几个源文件,g main.cpp -o app一行命令搞定,干净利落。直到某天接手一个稍微像样点的工程——十几个源文件、三四个第三方依赖、还要同时支持Linux和Windo…

2026/10/15 22:06:34 阅读更多 →
独立游戏Q4冲刺:联机与UI重构及百日自律打卡实战

独立游戏Q4冲刺:联机与UI重构及百日自律打卡实战

1. 独立游戏周报背后的开发节奏与自律体系1.1 为什么用“周报”驱动独立游戏开发做独立游戏的人都有一个共同的痛点:没人管你。没有项目经理追进度,没有同事问你今天干了啥,所有的节奏全靠自己撑。我见过太多有才华的开发者,技术不…

2026/10/15 22:06:34 阅读更多 →
Cocos2d-x 3.0字体渲染原理与性能优化实战

Cocos2d-x 3.0字体渲染原理与性能优化实战

1. 项目概述:为什么字体渲染是Cocos2d-x 3.0里最被低估的“隐形瓶颈” 你有没有遇到过这样的情况:游戏UI明明用的是同一套美术资源,但在不同安卓机型上文字边缘发虚、粗细不均,甚至部分汉字直接显示成方块?或者在iOS真…

2026/10/15 22:06:34 阅读更多 →
Java学生成绩管理系统实战:Swing+JDBC+MySQL课程设计源码与实验报告

Java学生成绩管理系统实战:Swing+JDBC+MySQL课程设计源码与实验报告

简介:这是一套面向高校计算机相关专业学生与Java初学者的学生成绩管理系统完整项目,可作为课程设计、期末大作业或Java GUI与数据库综合练习的参考方案。系统基于Java语言开发,采用图形界面交互,覆盖登录验证、学生与教师注册、成…

2026/10/15 22:06:34 阅读更多 →
WSL2+Ollama+Open WebUI:Windows本地部署大模型全指南

WSL2+Ollama+Open WebUI:Windows本地部署大模型全指南

最近一直在折腾怎么在 Windows 上跑本地大模型,试过几套方案之后,最终稳定下来的是 WSL2 Ubuntu Ollama Open WebUI 这套组合。Ollama 负责模型下载和推理,Open WebUI 提供类似聊天产品的浏览器界面,而 WSL2 Ubuntu 承接了兼容…

2026/10/15 22:06:34 阅读更多 →
深入PostgreSQL表空间:物理原理、命令细节与生产排错指南

深入PostgreSQL表空间:物理原理、命令细节与生产排错指南

PostgreSQL里的表空间(tablespace)命令,表面上就那么几条:CREATE TABLESPACE、DROP TABLESPACE、ALTER TABLE SET TABLESPACE。但我发现很多同行,包括一些写了几年PG的开发者,都只停留在“会敲命令”的层面…

2026/10/15 22:05:25 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →