Cassandra实战:无主架构、数据建模与高并发写入核心原理
提起Cassandra不少后端同学的第一反应可能是“听说过好像是个分布式数据库”“排名挺靠前的但周围好像也没几个团队真在用”。这种印象特别真实。我在分布式存储、中间件这块折腾了十年出头先后维护过几套Cassandra集群也亲眼见过一个高并发写入场景从“MySQL半死不活”迁移到Cassandra之后扩容只需要加节点、改配置那种畅快感。这篇文章不从官方文档给你念定义而是站在一个实际用过的从业者角度把这套系统最关键的几件事讲透它为什么会出现、解决什么问题、数据模型背后那套思维为什么和传统数据库完全不同、读写路径里哪些机制决定性能上限以及你最关心的——什么业务适合上它、上手时最容易踩哪些坑。如果你正在做技术选型或者已经决定用Cassandra但还停留在“会用CQL”的阶段这篇文章能帮你少走不少弯路。1. 为什么会有Cassandra单机扩展不动了才去想别的路1.1 关系型数据库的写入瓶颈是结结实实存在的先说个很多人都经历过的场景。业务早期MySQL单库单表完全够用读写都顺畅。等到用户量上来写入量一天比一天夸张主从架构开始撑不住主库写入压力大、从库同步延迟、分库分表之后跨库关联查询变复杂运维同学半夜三更被报警电话叫醒。更深一层的问题是关系型数据库在后端是“单点写入”的模型——无论你怎么分片一个数据项总得有一个唯一的归属节点负责写入扩展性天然受限。不是MySQL不好而是它出生年代的硬件和业务模型决定了它的设计方向。到了互联网时代高并发写入和数据规模成为常态单机的CPU、内存、磁盘总有上限。这时候横向扩展就不是“加分项”而是“必须项”了。于是有团队开始想能不能做一套没有单一主节点的数据库所有节点都能写入数据自动打散分布负载均衡靠加机器而不是换更大的机器1.2 两篇论文催生出的设计路线Cassandra的技术路线非常清晰它的存储引擎借鉴了Bigtable的LSM树思路集群模型则融合了Dynamo的分区、复制与去中心化设计。这俩都是公开的论文思路。简单说Dynamo那边的核心贡献是用一致性哈希把数据均匀分散到节点上节点间无主从之分写入请求发给任意节点都可以由节点之间的副本复制机制去完成数据同步。Bigtable那边的核心贡献是不用传统B树原地更新磁盘数据而是先在内存里攒批、再顺序写盘、形成不可变的SSTable文件配合后台合并操作来整理数据。Cassandra把这两套思想合在了一起同时在工程上做了大量简化既没有复杂的依赖调度也降低了实现分布式系统的门槛。它提供类SQL的CQL查询语言数据通过一致性哈希自动分布在环上每个节点保存数据副本节点挂了由周围节点共同承担读写。你作为使用者不需要操心某个key到底落在哪个节点也不需要担心主节点挂了怎么办。1.3 它到底是什么不是什么很多人拿Cassandra和HBase对比因为都是LSM树存储引擎、都是海量写入场景。但它俩定位差别很大HBase依赖HDFS和ZooKeeper是主从架构中的一种数据强一致性能力更好但写入链路更长运维组件更多Cassandra是无主架构节点之间地位对等写路径更短可用性更高更适合多数据中心、跨地域部署和几乎不能接受停机的时间。它也不是“强事务数据库”。Cassandra没有完整的ACID事务它提供的是一致性等级制度。你写数据时指定一致性级别是ONE、QUORUM还是ALL系统会按照对应数量的副本完成写确认或读取协调。这套设计放弃了传统数据库的串行化事务换来了海量吞吐和高可用。你非要拿它存订单流水、做金融账务系统我只能劝你再想想。2. 不必先背API先把设计哲学揉明白2.1 去中心化没有主节点意味着没有单点Cassandra集群里每个节点都是对等的这是它最反直觉的地方。你随便连哪台机器执行CQL都行这个节点就是本次请求的协调者。协调者根据分区键算出数据应该落在哪些节点上然后联系对应的副本节点完成操作。节点之间会互相维护一份集群拓扑图新加入的节点会被自动发现并纳入数据分布。去中心化带来一个直接好处没有主节点就意味着没有“主挂全挂”的单点故障。任何一个节点宕机只要副本数足够读写请求会由其他节点继续服务。坏处是去中心化让一致性控制变复杂了所以它必须用别人那套一致性等级机制来管控。你想牺牲多少一致性、换多少可用性全看业务需求。2.2 Gossip协议节点之间怎么互相认识Cassandra节点间传递状态信息靠的是Gossip协议。直白点说就是“散布消息”每个节点周期性随机挑几个其他节点互相交换自己知道的集群状态包括谁活着、谁死了、谁的负载高、谁的Token范围是什么。信息不像主从架构那样在一个中心点汇总而是像传染病一样在整个集群里扩散。第一次看这套协议的人容易关心一个问题如果一个节点状态变化了多久整个集群都知道答案是通常非常快但有个传播过程。实际使用中如果你改配置、加节点、删除节点心里要记得“不是马上生效”而是需要一点时间让集群状态收敛。我见过有人刚给集群加完节点立刻跑压力测试发现数据分布不均衡然后开始怀疑自己操作错了。其实等几分钟等新节点拉起数据流再观察负载均衡调度通常就正常了。2.3 一致性等级最终一致不等于不靠谱这是新手最容易误解的地方。有人一听“最终一致”就联想到丢数据、报表对不上。其实Cassandra的一致性是用一系列等级来精确控制的一致性等级写入确认要求读取结果要求适用场景ONE任意一个副本写入成功从任意一个副本读取对一致性要求最低性能最好适合大量写入日志QUORUM过半副本写入成功合并过半副本数据后返回默认推荐读写都过半可保证读到最新ALL所有副本写入成功所有副本返回后合并一致性最强但节点故障会影响读写可用性这里的QUORUM值得细讲如果写入时要求过半副本确认读取时也要求过半副本返回那么读写集合必有交集也就是说读请求至少会覆盖到一个包含最新数据的副本这样就能保证读到最新值。这个思想叫“多数派相交”不理解它你就很难明白为什么最终一致的系统可以在多数派条件下对外表现得像“强一致”。所以在实际项目里关键业务数据把读写都设成QUORUM是可以应付大多数一致性需求的。要注意的是一致性等级越高需要的副本交互就越多延迟和失败概率也会上升。设置ALL之前先想清楚你确定愿意为了强一致牺牲可用性吗3. 数据模型决定你能否用得起来的是分区键3.1 CQL长得像SQL但关系最好早点断了刚接触Cassandra的人会特别亲切因为CQL写着像SQLCREATE TABLE、SELECT、INSERT、UPDATE、DELETE感觉差不多。但这种亲切是假象。CQL只选择了类SQL的语法外壳底层是完全不同的数据组织方式。你在MySQL里可以随便写where条件、做join、搞子查询和group by在Cassandra里如果查询不走主键路径基本就是全表扫描集群再多也扛不住。我见过一个典型反面案例。有人把MySQL业务表逻辑直接翻译成CQL建表读写倒是能跑等到查询要求多了发现想按业务字段查时只能建一堆二级索引最后二级索引膨胀到比正经数据还占磁盘查询性能惨不忍睹。总结一句话SQL的语法是服务你的但数据模型按查询设计不是按实体设计。3.2 partition key和clustering key是生命线Cassandra的表结构里有两类键分区键partition key和聚簇键clustering key。分区键决定了一条数据落在哪个节点、以及数据在文件里按什么顺序总体分布。聚簇键决定同一分区内部的数据排序方式。比如一张订单表如果主键设计为(uid, order_time)那么每一条订单数据会按用户uid分区同一个用户的所有订单在聚簇键order_time排序下有顺序地存放。查询条件必须是“uid等于什么”“uid等于什么且order_time在哪个范围”这样带前缀的路径才能直接定位到分区并顺序扫数据。你要是问“按商品ID查订单”那么要么你另外建一张以商品ID为分区结构的表要么接受全集群扫描。这个约束决定了建模时必须把业务查询当成第一优先级来设计主键。3.3 建模的黄金法则查询先行、反范式Cassandra官方社区有一句话常被提及先想好你的查询模式再设计表。传统关系型建模是先分析实体关系再通过查询把表关联起来。Cassandra恰恰反过来——你先列出所有需要支持的查询针对每一个高频查询设计一张表。同一个业务实体可能出现好几张不同的表比如订单主表、按用户查订单的表、按商品查销量汇总的表这是非常正常的。数据冗余不是设计失误而是分布式系统的必然代价。配合查询先行还要接受反范式。把需要展示的字段直接冗余存进去避免跨节点join。我习惯把要展示的字段都塞到同一张表里最多预留几个“宽行”字段做增量累积。这样查询路径最简单性能也最可预期。3.4 二级索引和物化视图能不用就不用Cassandra提供了二级索引和物化视图听上去很贴心但我实际用下来的体会是它们只适合轻量级场景或者管理后台低并发查询。二级索引本质上是维护一份本地索引查询时如果没命中分区需要向集群内的多个节点广播查询差不多就是一次微型全表扫描。物化视图背后也依赖额外的主键逻辑调整起来比直接冗余表更复杂。刚上手的团队往往喜欢用二级索引“凑合”支持一下非主键查询。我的建议是如果这个非主键查询会被用户直接高频命中在项目初期老老实实建反范式表如果只是内部运营后台偶尔罢了二级索引还能接受。4. 读写路径理解内部机制才能压榨性能4.1 写路径为什么Cassandra写得快Cassandra的写性能好不是硬件堆出来的而是路径设计非常短。任何一个协调节点收到写入请求后它先定位副本节点把数据发给对应节点。每个节点收到写入后先把操作追加到CommitLog顺序写盘然后把数据写入内存中的MemTable只要这一步完成就给客户端返回成功。整个过程不需要查找旧数据、不需要更新随机磁盘位置、不需要维护二级索引。这个设计好比记账每天先在小本子上记流水晚上再统一誊写账本。小本子顺序写特别快誊写账本才涉及到整理和排序。对应到Cassandra就是CommitLog顺序写保证崩溃可恢复MemTable在内存里攒数据等到门限触发后一次性把数据dump成不可变的SSTable文件。这种“先顺序写日志、再批量刷盘”的思路天然对机械硬盘和固态硬盘都友好。4.2 读路径不是简单按主键找一条记录Cassandra读取一条数据时可能要同时查MemTable和多个SSTable文件找出所有版本再按时间戳合并。如果每次读都把所有SSTable扫一遍性能就崩了。于是它先查内存里的MemTable然后借助每层SSTable的布隆过滤器Bloom Filter快速判断“这个文件里有没有我要的数据”。布隆过滤器是基于概率的判断它只会漏报不会误报说“没有”就一定没有说“可能有”才去真正读文件。这个机制大幅减少了无效磁盘读取。另外还有Row Cache、Key Cache等缓存层能缓存热数据的关键位置。所以Cassandra读性能的上限跟你的数据分布、SSTable层级、缓存命中率非常相关。写多读多的场景下建议把SSTable合并频率调高一点减少文件数量因为在文件多、层级杂乱的时候读放大是会实实在在拖慢查询的。4.3 Compaction和Tombstone看不见的幕后工程随着数据不断写入SSTable文件越积越多重复键和旧版本数据散落在不同文件里。后台的Compaction合并压缩机制会定时挑选SSTable文件把它们合并成一个更大的文件顺便丢弃过期数据和已删除标记。这个过程很像整理房间不整理房间也能住但东西越堆越多找东西越来越慢定期整理速度会变快但整理本身消耗资源。删除操作在Cassandra里尤其隐蔽。它不是立刻物理擦除数据而是写入一个Tombstone墓碑标记。等到Compaction真正执行时才把带墓碑的数据清理掉。如果你的业务模型高频删除旧数据却没有控制好Compaction策略和墓碑清理时机那么整个集群会出现“数据量看着不大、但是查询越来越慢、磁盘只增不减”的诡异现象。我处理过好几个类似问题最终根因都是Tombstone堆积把读路径拖垮了。4.4 LSM和B树的取舍为什么不用原地更新有人问过MySQL的B树也很成熟Cassandra为什么非要用LSM树那套“先内存后落盘”的设计核心原因是随机IO和顺序IO的悬殊差距。B树对单条记录做更新时需要定位到对应的数据页做随机读写磁盘的随机IO延迟比顺序IO高一个数量级。LSM树的做法是放弃原地更新把所有写操作变成顺序追加最终通过后台合并达到整理数据的目的。代价是读放大、写放大和合并开销但这恰恰换来的是大量写入场景下的稳定吞吐。这套取舍决定了Cassandra注定不是“全能选手”。你让它像MySQL那样处理千奇百怪的即时查询它会很难受你让它几百上千个并发同时灌数据再按分区快速读出它如鱼得水。5. 场景判断哪些活儿适合它干哪些不适合5.1 适合写多读少的海量数据处理我见到Cassandra用得最顺的场景集中在这么几类物联网设备上报数据的时序存储、社交应用的Feeds流、消息系统中海量聊天记录的冷热分离、电商购物车和Session管理。这些场景共性是写入量巨大单个客户端查询通常都带明确的用户ID读取模式相对固定不需要跨实体join和复杂事务。Cassandra的自动数据打散能力让集群可以随时加机器吸收新增流量很适合业务预测不准、经常突然涨量的项目。以IoT传感器上报为例每个传感器每分钟上报一条状态一天可能上亿条。传统关系库30天存储就得做分区裁剪和归档每次扩容都要停窗口。换成Cassandra按传感器ID做分区把时间作为聚簇键查询一条传感器某时间范围的数据很快写入压力被整个集群分担运维只需要规划好时间维度的过期策略配一个TTL自动清理老数据非常省心。5.2 不适合强事务、复杂关联、多变查询需要强事务原子性的账务系统、需要大量join和子查询的传统业务系统、查询条件完全不固定的数据仓库这些场景不要勉强让Cassandra上。它在事务上只支持单分区的原子操作跨分区的多个操作无法保证一致的原子性。尽管有LWT但那只能覆盖单分区条件更新性能和复杂度都有代价。另外如果你没有固定的访问模式领导今天让你按手机号查用户明天让你按注册时间查用户后天让你按地域汇总下单量关系型数据库和真正的大数据查询引擎都比Cassandra合适。用它干活的前提是你得先确人业务查询稳定、可提前建模。5.3 一句话评估法遇到一个业务场景我习惯用几句话做快速评估数据写入量是不是单机扛不住的级别查询是否都能用“某个固定实体ID范围条件”表达能不能接受数据最终一致带来的短暂不同步窗口业务是否完全不能容忍主节点故障导致的停机如果前两个是肯定、后两个能接受Cassandra大概率合适。如果有任何一个不满足我建议你重新考虑。6. 上手实操从单机到三节点集群的经验6.1 环境准备和关键配置项先别急着在生产环境上集群我建议本地先用Docker起一个单节点把CQL和基本操作跑通再去配置真实集群。下载安装包后最核心的配置文件是cassandra.yaml里面有几个参数新手必须搞明白cluster_name同一个集群的节点必须一致否则节点会被拒绝加入。seeds种子节点列表新节点通过它来学习集群拓扑。建议每个数据中心至少配置两个种子节点。listen_address、rpc_address前者是节点间内部通信地址后者是客户端连接地址别混在一起。num_tokens虚拟节点数默认值在大多数场景够用不建议一上来就乱调。data_file_directories数据目录有条件的话放到独立的NVMe固态盘上。配置完后用cassandra服务启动执行nodetool status就能看到节点状态。出现UNUp Normal就说明节点健康。三个节点组集群时可以先把第一个节点启动等它变UN了再依次添加第二、第三个节点。整个过程不需要手动分配Token虚拟节点机制会自动划分配置。只要能正常互相发现你的集群就已经形成。6.2 节点规划和容量估算的土办法容量估算很容易被忽视。Cassandra为了让出合并空间磁盘占用往往是实际数据的数倍。我做容量规划时习惯按“原始数据量×副本数×崩溃余量×合并余量”来估算。举个例子原始数据100GB三机房副本数3为了应对节点替换和Compaction我通常预留30%~50%的空闲空间那么单个节点至少得准备“100GB×3×1.5/节点数”的空间。如果节点数少单机磁盘压力会很大宁可多上几台机器也不要让单节点磁盘长期超过85%否则Compaction容易把磁盘写满直接触发节点故障。内存配置方面Cassandra默认使用堆内缓存和堆外存储。通常给JVM堆配置16GB以下就足够太多内存会导致GC停顿变长反而影响吞吐。系统内存的剩余部分会用于页缓存。保持“JVM堆适中、页缓存充裕”是常见的调优方向。6.3 用cassandra-stress完成第一轮压测配置好集群别急着写业务代码先用官方自带的cassandra-stress工具测试吞吐能力。它内置了多种压力模型可以直接模拟写入、混合读写。我常用的做法是先用简单的默认写模型跑一轮观察集群的QPS、延迟和CPU、磁盘IO。这里的经验是Cassandra集群瓶颈通常先出现在磁盘IO和GC上而不是CPU。如果压测中看到平均写延迟飙升多半是磁盘排到瓶颈或者GC停顿太频繁。压测还应该验证一致性问题。把读写一致性设成QUORUM用cassandra-stress模拟持续高并发写入过一段时间去查是否存在心跳超时节点。多轮压测下来如果某个节点的GC停顿不断突破阈值建议从JVM参数和堆内存开始排查而不是盲目加机器。6.4 我踩过的三个坑第一把数据目录放在系统盘。某次生产环境磁盘告警后来发现数据目录和系统日志共用同一块云盘Compaction时系统盘被打满整个节点挂掉。后来数据文件一律独立挂盘调度任务也做了限流。第二忽视Tombstone堆积。一个消息队列场景里业务方高频写入又高频删除过期消息建表时没设置合适的TTL和下压缩策略集群膨胀到磁盘紧张后的查询经常超时。那次清理数据花了两个周末血泪教训。现在我会在压测初期就加入带TTL的写模型观察删除操作对SSTable数量的影响。第三一致性等级设置和业务预期不匹配。有次上线前把读写都设成ALL自认为最安全结果正好赶上机器网络抖动客户端连续报错用户体验一落千丈。后来改成QUORUM同时在业务层做了缓存兜底问题解决。对于大多数业务QUORUM已经是性价比很高的选择ALL适合那些“宁可不可用也不读旧值”的极少数场景。这些坑其实都指向同一件事Cassandra的分布式理念非常好但用起来的很多问题源于对内部机制的理解不够。它不会像传统数据库那样由DBA帮你兜底一切你作为使用者必须理解分区、副本、一致性、Compaction之间的关系才能把这头大象驯服。我现在的习惯是在任何Cassandra项目开工前先把所有业务的查询模式列成一张表针对每个查询验证主键设计再谈集群规模和性能指标这套流程下来基本没有再出过结构性问题。

相关新闻

滚动卡顿优化实战:从渲染管线到scroll监听与长列表

滚动卡顿优化实战:从渲染管线到scroll监听与长列表

先抛一段最近的处理经历。 某个信息流页面,快速滑动时掉帧严重,手指划过去页面像卡了齿轮。我的第一反应和大多数人一样:先去看滚动监听函数,把里面能省的逻辑全省一遍,节流、防抖、状态标记全用上。结果折腾完一轮&a…

2026/10/13 13:30:09 阅读更多 →
Spring Boot+HTML5问卷调查系统实战:从课设到可部署应用

Spring Boot+HTML5问卷调查系统实战:从课设到可部署应用

1. 一次课设的重新思考:从“交差”到“能用的系统”如果你是因为毕设或课程设计搜到这个题目,那我想先聊点实在的。Spring Boot HTML5的问卷调查系统,属于那种“看起来不复杂,但真要做得顺滑还是有一堆细节”的项目。很多同学做的…

2026/10/13 13:29:09 阅读更多 →
NPM包管理器深度解析:从配置文件到依赖管理实战

NPM包管理器深度解析:从配置文件到依赖管理实战

1. NPM是什么:先理清包管理器的职责边界接手一个旧项目,最怕的不是业务逻辑难读,而是npm install跑完,终端里飘出一大片红色报错。我见过不少开发者,第一反应就是把提示里的--force直接复制上去装完拉倒,结…

2026/10/13 13:29:09 阅读更多 →

最新新闻

掌握新一代AI工具:从提示词设计到工作流搭建的硬技能

掌握新一代AI工具:从提示词设计到工作流搭建的硬技能

1. 为什么“会用AI工具”正在变成一项硬技能 这两年我身边做开发的朋友、做设计的朋友、甚至做运营和行政的朋友,都在聊同一件事:AI工具怎么用才能真正落到工作里。不是那种“打开网页问一句、复制答案”的浅层玩法,而是把它当成一个能持续产…

2026/10/13 15:08:40 阅读更多 →
TNT Unicode Controls 2.3.0 解决Delphi乱码

TNT Unicode Controls 2.3.0 解决Delphi乱码

简介:这是一套基于 Delphi 开发的第三方 Unicode 控件套装,核心价值在于补足 VCL 组件对字符集支持不足的缺陷,使中文、日文、韩文乃至欧洲多语言文本能在同一界面中流畅呈现,特别适合承担国际化改造任务的桌面程序项目。压缩包共…

2026/10/13 15:08:40 阅读更多 →
Video.js源码级改造:实现RTMP-WS与HLS双协议统一播放

Video.js源码级改造:实现RTMP-WS与HLS双协议统一播放

简介:本资源是一套基于Video.js实现RTMP推流与HLS直播播放的轻量级HTML5原生播放器实践方案,面向前端开发者、音视频初学者及Web直播功能集成需求者,解决在不依赖大型框架前提下快速搭建兼容性好、可定制性强的网页端流媒体播放能力问题。压缩…

2026/10/13 15:08:40 阅读更多 →
多传感器融合的电力系统入侵检测:Python多级融合实战

多传感器融合的电力系统入侵检测:Python多级融合实战

简介:面向具备一定Python编程基础并熟悉数据处理与机器学习算法的科研人员,以及电力系统和工业控制安全方向的研究生、工程师,该资源围绕多源数据融合技术,给出针对电力系统网络入侵的检测方案。方案覆盖数据预处理、特征提取、融…

2026/10/13 15:08:40 阅读更多 →
全流程供应链系统源码拆包:从采购到结算链路与二次开发避坑指南

全流程供应链系统源码拆包:从采购到结算链路与二次开发避坑指南

简介:这是一套面向零售与供应链领域开发者、技术团队及企业信息化选型人员的高度可定制供应链中台基础系统,全部源码开放,可用于商用目的。系统覆盖零售管理、电子商务、供应链、财务、车队、仓库、人员、产品、订单、会员、连锁与加盟等业务…

2026/10/13 15:08:40 阅读更多 →
【CStackGUI 实战】我用自研的 Win32 GUI 框架写了个「工具箱启动器」:8 页签、真注册表操作、右键菜单管理

【CStackGUI 实战】我用自研的 Win32 GUI 框架写了个「工具箱启动器」:8 页签、真注册表操作、右键菜单管理

文章目录一、这是什么二、功能介绍1. 八页签工具启动器 全局搜索2. 我的工具:改一个 ini 就能加工具,不用重编译3. 右键菜单管理:扫描、批量禁用、备份删除、一键还原4. 成对开关:模式照抄原版,落点绝不越界5. 日志与…

2026/10/13 15:07:39 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →