大数据缓存实战:Redis与Alluxio定位配置与踩坑
干大数据这行的人迟早会被一个词拦住慢。任务跑得慢、查询出得慢、报表刷得慢追根问底大多不是因为计算引擎不给力而是存储访问拖了后腿。我在几个大数据平台的项目里折腾过缓存方案常用的两样是Redis和Alluxio。Redis多数人都不陌生做热数据缓存一把好手Alluxio相对小众但数据规模一上去、任务都在读同一个底层存储的时候它是真正能省时间的组件。这篇文章想把我在实际使用中对这两个引擎的定位、配置和踩坑经验整理出来适合正在搭大数据平台、或者已经发现任务和查询越跑越慢的技术同学参考。1. 缓存在大数据架构里的定位为什么不是一套缓存走天下1.1 数据访问的瓶颈到底出在哪一层大数据链路通常分好几层数据源、存储层、计算引擎、下游服务、前端。真正落到项目里慢的地方往往集中在两类访问路径上。第一类是计算引擎访问远端存储的慢。数据落在HDFS或者对象存储里Spark任务启动之后每个executor都在拉远端的数据块。单次随机读的延迟可能只有几十毫秒一旦涉及几万个文件每个文件还要做一次元数据查找和打开操作累积的开销就非常可观。更麻烦的是同一份数据一天要被十几个任务反复读每次读都走一遍完整的网络和磁盘路径纯粹在重复花冤枉钱。第二类是业务服务重复读取相同数据的慢。报表服务一个请求要按商品维度、地区维度去做聚合维表数据几百 MB查询时每次都去数据库或者底层存储拿一遍。数据本身根本没什么变化但查询路径太长数据库压力和接口延迟都下不来。缓存解决的就两个字就近。把热点数据放到离计算和查询最近的地方最好就是内存里。但内存缓存不是一种方案就能包打天下的因为记录级查询和文件级读取对缓存的要求完全不同。1.2 Redis和Alluxio其实是两个层级的缓存我用两句话总结这两个东西的分工Redis是记录级缓存数据形态是键值对适合放维度表、聚合结果、配置项、分布式锁这些小而热的数据。Alluxio是文件块级缓存它是架在底层存储之上的分布式缓存文件系统适合加速计算任务对文件的反复读取。把这两个定位理清楚之后很多架构选型的争论都会消失。不是Alluxio要替代Redis也不是Redis能解决大文件读取问题它们各管一层配合起来才完整。可以看这个对比对比维度RedisAlluxio缓存粒度键值、记录文件块数据来源业务系统、数据库、计算结果落盘底层存储HDFS、对象存储等主要使用方业务服务、脚本、APISpark、Flink、Presto 等计算引擎典型数据体量几GB到几十GB几十GB到TB级主要痛点击穿、雪崩、内存耗尽与底层存储的一致性、缓存命中率大数据架构里的缓存策略说白了就是让每一层热点数据都有一个合理的去处。接下来我会把两个引擎的配置细节和实操经验分开讲。2. Redis作为热数据缓存使用场景与部署参数2.1 在数据架构里Redis到底缓存什么东西在大数据项目里我会把以下几类数据放进Redis。第一类是维度表和字典表。用户维表、城市维表、商品类目表这类数据量一般不大几十万到几百万行但查询频率极高。常见的做法是启动时加载一遍到Redis用Hash结构或者直接存序列化后的字符串查询时按Key读取查询路径短延迟最小。第二类是最近时间窗的聚合结果。实时看板要展示过去5分钟订单量今日各省销售额如果每次刷新都去跑实时计算或者查宽表系统压力很大。让Flink或者Spark任务定期把聚合结果写入Redis看板服务直接读Redis响应时间能从秒级降到毫秒级。第三类是任务状态和分布式锁。调度系统里多个worker抢任务、上报状态Redis的setnx配合过期时间是最常见的锁实现。正在运行的job状态、失败次数放Redis比放数据库更合适读写开销低天然支持过期清理。第四类是布隆过滤器。缓存穿透的场景里请求量很大、又常常查不存在的Key时可以在Redis里维护一个布隆过滤器先过滤掉不存在的Key再决定是否回源数据库。这个方法便宜又有效。放Redis的数据有个硬性原则小而热。单个value尽量控制在几十KB以内不要放大对象。大对象不光序列化和网络传输都占资源还会加大内存分配压力一个不小心就把Redis搞成GC瓶颈。2.2 Redis部署模式和关键参数Redis在大数据架构里一般有两种部署形态。主从加哨兵适合缓存数据量在单机物理内存内能装下、并发没有高到必须分片的情况。架构简单运维成本低平时出问题也好定位。Redis Cluster适合数据量明显超过单机内存或者写并发高需要分片的情况。用了Cluster之后要注意Key尽量带业务前缀避免跨slot的批量读写。平时能用mget就用mget不要写循环GET。参数方面我实测过一套比较稳的配置maxmemory 20gb maxmemory-policy allkeys-lru activedefrag yes slowlog-log-slower-than 10000 timeout 300内存上限怎么估举个例子。假设要缓存1000万条维度记录单条记录存储约200字节每个Key还要额外占约50字节的开销。那内存需求大约是10,000,000 × 200B ≈ 2GBKey和元数据开销约 10,000,000 × 50B ≈ 500MB再给Redis留出20%内存给客户端缓冲和持久化用保守估算(2GB 500MB) / 0.8 ≈ 3.1GB所以一台机器分个4GB给Redis是合理的起始配置。maxmemory-policy我一般建议allkeys-lru。缓存数据本身可以重建没必要保留所有Key不淘汰。如果有一些高优Key必须命中可以把它们集中在独立实例上避免和其他缓存混跑。持久化方面缓存实例建议用RDB做快照不用AOF每写必刷换IO代价不划算。更稳的玩法是主库不做持久化从库开启持久化主库全心服务读写。2.3 Redis防止击穿、穿透、雪崩的实践三个经典问题我在实际项目里都遇到过。缓存穿透请求的Key在数据库里根本不存在缓存里永远没有请求全部打到数据库。处理方式是在Redis里放一个布隆过滤器先拦截不存在的Key也可以再简单一点查询结果为空时自己缓存一个空值设置短过期时间比如一到两分钟挡住大部分穿透请求。缓存击穿某个热点Key在缓存过期的瞬间大量请求同时打到数据库。解决办法是后端加互斥锁保证只有一个线程回源其他线程等待或者直接返回旧值。实操上也可以用逻辑过期时间在Value里嵌一个过期时间戳读到时发现已经过期就异步去刷新接口层面不做阻塞。缓存雪崩大量Key在同一时刻过期数据库瞬间被打爆。最简单的解法是过期时间统一加随机因子比如基础过期时间加上随机1到10分钟。这样过期时间天然错峰不容易形成压力尖峰。还有一个非常实战的经验批量读取热点数据时别用循环GET尽量用mget或pipeline。我自己测过一次取100个Key循环GET跨网络请求可能要几十毫秒mget一次往返整体延迟能降80%以上。在高频查询服务里这个优化比加机器还管用。3. Alluxio作为分布式数据缓存层原理与落地配置3.1 Alluxio到底解决了什么问题Redis解决的是记录级热数据共享的问题但大数据计算场景里最痛的往往是文件读得太慢。一个Spark任务要从HDFS或对象存储读几十TB的数据每次运行都要重新走一遍网络IO任务时间一大半耗在读数据上。同一个数据多个任务反复在读底层存储被拉到快扛不住。这时候Alluxio的价值就很明显了。Alluxio可以理解成一个分布式的缓存文件系统。它作为计算框架和底层存储之间的一层对外暴露URI通常是 alluxio:// 协议开头。底层存储UFS可以是HDFS、对象存储、NAS等被挂载到Alluxio的命名空间下。当计算引擎按 alluxio:// 路径读文件时Alluxio worker会先在内存和本地缓存里找数据块命中就直接返回没命中再回UFS读并把读到的数据块缓存到本地。用大白话说就是给计算引擎加了一层分布式内存盘跟操作系统页面缓存原理相似只是它是分布式的、跨节点的。这层能解决的问题很直接避免任务反复从远端存储拉数据降低小文件访问的元数据开销屏蔽底层存储迁移。底层存储从HDFS切成对象存储时只要改挂载配置上层计算逻辑完全不用动。3.2 Alluxio部署模式与资源分配Alluxio集群里有三个关键角色。master负责文件系统元数据响应客户端挂载、打开文件等请求。worker真正存数据块负责缓存读写。还有一个Job worker用于异步任务比如预加载和持久化通常和worker部署在同一批节点上。生产部署时master我一般放在独立小机器上至少两三台做高可用worker 和计算节点混部比如和Spark的executor节点放在一起这样数据读取走本机或本机内存省去跨节点拷贝。资源分配是最容易出错的地方。给Alluxio分配太多内存看起来是能缓存更多实际会引发JVM堆外内存压力、GC问题。通常建议worker内存设置为物理内存的60%到70%剩下的留给操作系统和计算引擎。举个例子。一台128GB内存的机器既跑Spark worker又跑Alluxio worker我会把Alluxio可用内存配到80GB左右Spark execution memory预留30GB左右剩下的留给OS和缓冲。Alluxio的缓存还支持分层内存、SSD、HDD。机器有SSD的话可以把SSD加进缓存层级形成内存不命中就落到本地SSD再落到HDD的降级路径。配置大概长这样alluxio.worker.ramdisk.size20gb alluxio.worker.tieredstore.level0.aliasMEM alluxio.worker.tieredstore.level0.dirs.path/mnt/ramdisk alluxio.worker.tieredstore.level1.aliasSSD alluxio.worker.tieredstore.level1.dirs.path/data/alluxio-cache块大小建议参考底层存储和计算任务粒度。默认可能是128MB如果任务粒度偏小、数据碎片化可以调成64MB不过块太小会增加元数据开销还是看实测数据。3.3 Alluxio与计算引擎的集成配置以Spark为例集成Alluxio就是在Spark配置里指定Alluxio的访问协议。假设Alluxio master是 alluxio://192.168.1.10:19998Spark任务里读数据路径直接写成 alluxio://192.168.1.10:19998/table/part.parquet。然后确保Spark运行环境能识别 alluxio scheme。具体做法是在spark-defaults.conf里加spark.hadoop.fs.alluxio.implalluxio.hadoop.FileSystem spark.serializerorg.apache.spark.serializer.KryoSerializer spark.hadoop.fs.alluxio.impl.disable.cachefalse如果Spark任务和Alluxio worker在同一个物理机上最简单的方法是把Alluxio做成本地缓存层计算结果落盘直接写到 alluxio:// 路径后续任务也直接读 alluxio:// 路径加速效果马上就出来了。Presto或Trino也是同样的思路把Hive Metastore的warehouse目录映射到alluxio路径上查询的时候优先走Alluxio缓存。集成时有个容易忽略的点Alluxio的元数据可能和UFS不一致。默认情况下Alluxio会做元数据同步但同步频率要自己控制。如果是每天定时更新一批分区文件建议在数据更新后手动触发一次元数据同步避免读到旧文件。3.4 Alluxio的数据预热与缓存管理Alluxio不是打开文件就把所有内容缓存到本地而是按数据块按需缓存。为了让任务第一次跑就快可以在任务运行前主动load。常用命令alluxio fs load /data/table/part-*.parquetload之后数据块进入Alluxio worker缓存后面所有读同一路径的任务都很快。还有一个命令是distributedLoad效果类似但不会占当前客户端的带宽alluxio fs distributedLoad --replication1 /data/table/part-*.parquet缓存命中率的监控特别重要。线上跑的时候不能只盯有没有变快要看每个worker的cache hit rate。我发现一旦命中率低八成是缓存容量覆盖不了热点数据集或者缓存被非热点数据挤占。这种时候优先调整预加载策略而不是盲目加内存。4. Redis和Alluxio怎么配合选型场景与参考方案4.1 什么时候优先用Redis什么时候上Alluxio项目做多了判断方法很直接痛点发生在查询接口读维度信息、读聚合结果回源太慢优先考虑Redis。痛点发生在计算任务读数据文件太慢、小文件多、多个任务重复读同一批文件优先考虑Alluxio。既有实时查询又有批量计算任务的平台经常两层都上。查询的维度数据放Redis批任务的文件读取走Alluxio。对比表可以帮选型判断维度用Redis用Alluxio数据形态记录、键值、小JSON文件、目录、对象主要使用方业务服务、脚本、APISpark、Flink、Presto 等计算引擎数据体量单机或小集群内存整个集群共享缓存空间一致性要求按业务更新即可文件级别与UFS保持同步典型收益查询延迟从几十ms降到个位数ms任务读文件时间下降30%以上4.2 参考案例某跨平台数据分析系统我之前接触过一个数据平台项目架构简化下来是数据落在HDFS集群调度系统每天跑上百个Spark任务下游还有一个报表服务查前一天的聚合结果。数据量上来之后问题暴露得很明显。Spark任务里有不少步骤要读同一个明细表这个表每天都十多个任务重复读而且单日分区有几十万个文件。任务读文件的时间经常占到整体运行时间的40%。报表服务每次查询都要按商品维度、地区维度分组汇总维表直接存在HDFS里起请求就是读HDFS小文件慢的时候接口要两秒多。后来调整方案给Spark任务前面加了Alluxio把被重复读的明细表在调度前用distributedLoad预加载到Alluxio之后Spark读的都是Alluxio缓存块。报表服务接Redis商品维表、地区维表和各时间粒度的聚合结果同步进Redis。效果还算明显Spark任务对明细表的读取时间平均降了差不多35%整体运行时间从两个多小时降到一个半小时左右报表接口P95从500ms左右降到20ms以内。两个改动都不大没改SQL逻辑只改了路径和查询方式。4.3 一套可落地的分层缓存参考方案把两层缓存组合起来的参考架构从上到下大致是报表/查询服务只访问Redis按Key读维度数据和聚合结果。Redis集群存放维表、聚合结果、分布式锁和布隆过滤器按业务前缀组织Key。实时/离线计算引擎Spark任务优先读Alluxio存储层。Alluxio集群挂在HDFS和对象存储之上提供文件块级缓存。底层UFS真正存储所有历史数据。配置层面的要点我在多个项目里反复调过Redis的过期时间统一加随机数避免整点集中过期。Alluxio worker内存别一把梭先根据底层文件总量和热点比例算好再分配。Alluxio预加载任务要放进调度链里像前置阶段一样任务开始前先load。关键路径上都要有监控缓存命中率这个指标必须随时能看到不能等用户说慢了再查。5. 常见问题与排查经验速查5.1 Redis缓存故障排查实录第一类Redis变慢、CPU飙高。先用慢日志定位redis-cli slowlog get 50再查big keyredis-cli --bigkeys --host host --port 6379Big key典型的坑是一个大Hash有几十万个字段每次操作都慢明明数据总量不大延迟却高得离谱。遇到这种情况集中拆大Key拆成多个Hash或者改用普通String缓存。第二类内存涨到上限。检查info memoryredis-cli info memory重点看used_memory和used_memory_rss。如果used_memory_rss远大于used_memory说明内存碎片较多或者淘汰策略没生效。可以开启activedefrag或者在低峰期重启主节点。第三类过期Key导致瞬时CPU高。大量Key同时过期Redis在清理过期Key时会占大量CPU。解决方案和防止雪崩一样过期时间加随机数或者把Key分散到多个业务前缀让过期时间错开。5.2 Alluxio常见问题与排查方法Alluxio最常见的表象问题是怎么没有加速。第一件事看是metadata hit还是data block hit。Alluxio worker日志里有请求统计指标。如果metadata请求很高而block命中率低往往说明任务是读了很多文件但每个文件只读一次或者数据被访问间隔太长根本缓存不住。这种场景下无脑加内存不如调预加载策略。还有一类是磁盘空间不足导致缓存驱逐失败。Alluxio worker配了本地SSD作二级缓存时磁盘不够就会一直触发驱逐频繁IO反而变慢。遇到这种问题检查worker日志里和 Eviction 相关的记录或者调大磁盘水位。再有UFS更新后上层Spark任务还是读到旧缓存数据。大概率是Alluxio元数据没同步。处理方式alluxio fs ls -R /data/table /dev/null或者执行alluxio fs metadataSync /data/table并确认所有任务用户对挂载路径有读权限。5.3 分层缓存踩坑记录单独看每个组件可能都正常但两层一起用的组合坑也不少。一是Alluxio worker和Redis放在同一批机器上内存分配相互挤占最后发现Redis在淘汰、Alluxio在驱逐。后来我和运维约定内存分配按项目维度隔离Redis分多少、Alluxio worker分多少写进资源规范实在不行用容器做隔离。二是监控没打通。很多团队Redis的监控看得很细Alluxio的指标基本没人管。我的建议是把两个引擎的核心指标放进同一个监控面板Redis的命中率、内存、慢请求Alluxio的缓存命中率、worker内存、回源量再结合任务耗时一起看。只要有一层异常面板上直接能看出来。三是缓存重建流程缺失。维度表更新时只想着刷新Redis忘了Alluxio缓存的文件已经旧了。后来我给所有离线数据更新都加了一个缓存同步步骤先更新UFS再让Alluxio重新load再刷新Redis中的聚合结果。步骤虽然多但踩过的坑可以从根上堵住。我个人在实际操作中的体会是缓存分层不是越花哨越好而是把热点数据放到对的位置。Redis管住小而热的记录Alluxio管住大而重的文件块两者搭配在一起并不冲突。先把这两层的监控做好再聊优化是更稳妥的路径。如果你也在大数据平台上做缓存选型建议先从最痛的点入手查询慢就先把Redis做好任务慢就先把Alluxio跑通别一上来就上全套架构。跑通一层看到收益再去加另一层你会发现自己对整套系统的掌控感完全不同。

相关新闻

基于蝴蝶优化算法的IEEE30节点无功优化Matlab实现与参数调优

基于蝴蝶优化算法的IEEE30节点无功优化Matlab实现与参数调优

1. 从"网损"到算法:先搞懂无功优化到底在优化什么说到电力系统优化调度,"有功优化"大家都很熟——机组出多少钱、发多少有功,直接影响运行成本。但大部分人第一次接触"无功优化"时都会有一个疑问:无…

2026/10/11 23:39:46 阅读更多 →
四月修复版H5农场养殖鸡蛋理财鸡源码部署与支付对接避坑指南

四月修复版H5农场养殖鸡蛋理财鸡源码部署与支付对接避坑指南

简介:最新修复版H5农场牧场养殖理财鸡游戏运营源码,定位为可直接运营的网站游戏项目,适合有建站基础、希望搭建休闲理财类H5游戏的个人或团队二次开发。资源包共2271个文件,约88.4MB,主体由HTML页面、JavaScript逻辑、…

2026/10/11 23:39:46 阅读更多 →
改进版Q-learning实战:Double Q、n步回报与经验回放

改进版Q-learning实战:Double Q、n步回报与经验回放

简介:基于Q-learning的改进版强化学习算法项目,聚焦路径规划场景,面向MATLAB用户及强化学习入门者。项目针对经典Q-learning收敛慢的问题,融合学习率衰减、动态ε-greedy探索、经验回放、目标网络与双线性更新等改进策略&#xff…

2026/10/11 23:38:45 阅读更多 →

最新新闻

拆解Amical的whisper.cpp封装:如何构建带Metal/CUDA/CPU自动回退的C++原生模块

拆解Amical的whisper.cpp封装:如何构建带Metal/CUDA/CPU自动回退的C++原生模块

【免费下载链接】amical 🎙️ AI Dictation App - Open Source and Local-first ⚡ Type 3x faster, no keyboard needed. 🆓 Powered by open source models, works offline, fast and accurate. 项目地址: https://gitcode.com/gh_mirrors/…

2026/10/12 0:27:12 阅读更多 →
基于YOLO的管道缺陷检测:980张图像训练实战与避坑指南

基于YOLO的管道缺陷检测:980张图像训练实战与避坑指南

简介:本资源为面向YOLO系列目标检测算法的下水管道缺陷检测数据集,适用于从事管道巡检、市政设施维护与工业视觉检测的开发者及研究人员,可解决缺陷样本稀缺、标注格式不统一等问题。压缩包共2000个文件,约33.89MB,包含…

2026/10/12 0:27:12 阅读更多 →
物联网模组柔性FPC天线方案全解析:选型、布局与调试

物联网模组柔性FPC天线方案全解析:选型、布局与调试

1. 项目背景与选型思路做物联网产品硬件设计的朋友,十有八九都遇到过同一个问题:模组选好了、主板画完了、结构堆叠也敲定了,结果天线没地方放。尤其是这两年,NB-IoT、Cat.1、BLE、LoRa 这些模组方案层出不穷,模组本身…

2026/10/12 0:27:12 阅读更多 →
用Tauri构建桌面天气应用:从技术选型到打包发布的完整实践

用Tauri构建桌面天气应用:从技术选型到打包发布的完整实践

桌面天气应用这个需求,看起来挺简单,但真做起来会发现它横跨了数据接口、桌面端集成、界面设计、异常处理好几个层面的问题。我前后用了两个周末把一套完整方案跑通,过程中踩了不少坑,这里把从选型到发布的完整链路梳理出来&#…

2026/10/12 0:27:12 阅读更多 →
UML四层建模实战:从用例图到部署图构建教务管理系统

UML四层建模实战:从用例图到部署图构建教务管理系统

简介:本资源是南京邮电大学软件工程课程设计的完整实验报告,面向高校计算机类专业本科生及软件工程初学者,聚焦教务管理系统的面向对象分析与UML建模实践。报告系统呈现了从需求分析到UML建模的全流程:涵盖用例图(管理…

2026/10/12 0:26:12 阅读更多 →
UML用例图与顺序图建模核心:抓准动作主体与交互时序

UML用例图与顺序图建模核心:抓准动作主体与交互时序

简介:本资源是一份面向软件工程专业学生、UML初学者及备考人员的系统性试题汇编,聚焦用例图、顺序图与协作图等核心交互建模技能,帮助读者深入理解UML动态建模原理与实际应用差异。资料以1个62KB的Word文档形式呈现,内容涵盖7大知…

2026/10/12 0:26:12 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →