云原生后端【免费下载链接】fissionFast and Simple Serverless Functions for Kubernetes项目地址https://gitcode.com/gh_mirrors/fi/fission点击查看免费下载本文基于 RFC-0023: Stateful functions — keyed state API and sticky routing 编写结合当前仓库源码pkg/apis/core/v1、pkg/statestore、pkg/statesvc、pkg/fetcher、pkg/router验证每一项设计与落地细节。RFC 状态为ImplementedPR #3593 合并于 2026-07-22粘性路径分配跟随 PR #3619。本指南聚焦 Fission 平台新增的**键控有状态函数keyed stateful functions**能力如何通过FunctionSpec.State为函数开启一个按 keyspace 隔离、带配额与 TTL、由平台侧强制 namespace 隔离的 KV 状态 API以及第二阶段如何在路由器上通过HRWrendezvous hash粘性路由让同一请求键的所有请求稳定落在同一个 Pod 上。读完本文你将掌握StateConfig/StickyConfig的完整字段语义、statesvc 的 HTTP 契约、令牌派生与注入机制、配额原子性保证CountedKV/quota.tla以及粘性路由在endpointcache.Index.Admit中的落地方式。一、动机与定位把“有状态”做进平台“FaaS 是无状态的”这一惯性是大量工作负载离开 FaaS 平台的根本原因凡是需要会话session、按用户计数器、购物车、限流器或 Agent 对话记忆的负载都必须自带 Redis、把凭据手工写进每个环境镜像并且每个团队都要重新实现一次 scope 隔离与配额。RFC-0023 的目标是平台只做一次这件事平台在 specialize 时已经具备向每个 Pod 注入 per-pod 配置的能力fetcher specialize payload平台已经通过 HKDF 派生 scoped 服务密钥pkg/auth/hmactenant-controller 的 per-namespace keysRFC-0021 之后平台拥有自带租户隔离的 KV 底座statestoreKVStore。三者结合后函数代码只需对一个集群内本地 HTTP API调用state.get/set/cas/delete/list即可跨环境、跨后端获得可移植的持久状态。这是 Cloudflare Durable Objects / Dapr state 同类的差异化能力文档明确不是 Lambda 平级Lambda 至今没有对应物。目标Goals一个最小状态 HTTP APIget/set/delete/cas/list按函数隔离TTL、大小配额、namespace 隔离全部由平台侧强制用户代码零凭据能力以“注入的 URL scoped bearer token”形式到达node/python 环境的 SDK helper 只需 ~20 行纯 HTTP 封装任何环境无需 SDK 也可用Phase 3 提供按请求键的可选粘性路由基于现有 ready-pod 索引在持久状态之上实现一致的进程内缓存通过 memory 驱动在 RFC-0018 本地开发循环中可用。非目标Non-goalsv1 不支持跨函数共享状态keyspace 属于单个函数不支持跨 key 事务、查询/二级索引与大 blobKV 值默认上限 256KiBblob 应进对象存储粘性路由不提供严格单写者保证粘性是优化持久真相是状态 API不替代用户自建的关系型数据库。二、Function CRD 上的 API 面StateConfig 与 StickyConfigFunctionSpec新增一个可空字段存在即开关与Tool、Streaming相同的约定// FunctionSpec 新增presence opt-in State *StateConfig json:state,omitempty对应源码见 pkg/apis/core/v1/types.go 与 pkg/apis/core/v1/types.go。完整结构含当前仓库源码中的精化注释// StateConfig 声明一个函数的键控状态 keyspace 与配额RFC-0023。 // 存在 FunctionSpec.State 即开关——没有单独 enabled 标志内存零值与存储对象永不失配。 type StateConfig struct { // Keyspace 命名该函数读写持久键空间。默认取函数名显式设置是为了函数改名时不孤立数据。 // 字符集刻意排除 :令牌派生 info-string 分隔符与 #平台保留的 keyspace#meta 配额记账兄弟键。 // optional // kubebuilder:validation:Pattern^[a-z0-9](https://link.gitcode.com/i/d56556a4835b8f0c60bbc81b38881c5c)?$ // kubebuilder:validation:MaxLength63 Keyspace string json:keyspace,omitempty // DefaultTTL 应用于未携带显式 TTL 的写入。必须 0零或 nil表示默认不过期。 // optional DefaultTTL *metav1.Duration json:defaultTTL,omitempty // MaxValueBytes 限制单个值的字节数。0 表示平台默认DefaultStateMaxValueBytes 256KiB。 // blob 属于对象存储。 // optional // kubebuilder:validation:Minimum0 MaxValueBytes int64 json:maxValueBytes,omitempty // MaxKeys 限制 keyspace 的存活键数随每次写入原子地强制quota.tla S3。 // 0 表示平台默认DefaultStateMaxKeys。 // optional // kubebuilder:validation:Minimum0 MaxKeys int64 json:maxKeys,omitempty // Backend 为该 keyspace 选择一个具名 statestore 驱动。v1 中接受并校验但尚未生效 // statesvc 用其单一配置驱动服务所有 keyspace按函数选择后端是文档化的延后项。 // optional Backend string json:backend,omitempty // Sticky 非 nil 时把函数切入粘性路由路由器把声明的请求键一致哈希到 ready-pod 集合 // 在 pod 集合稳定时同一键的请求落在同一 pod。尽力而为是优化而非正确性依赖——S6 // 持久真相始终在状态 API 之后。 // optional Sticky *StickyConfig json:sticky,omitempty } // StickySource 选择路由器从请求中提取粘性路由键的位置。 // kubebuilder:validation:Enumheader;queryparam type StickySource string const ( StickySourceHeader StickySource header // pkg/apis/core/v1/const.go#L179 StickySourceQueryParam StickySource queryparam // pkg/apis/core/v1/const.go#L180 ) // StickyConfig 声明如何从请求中提取粘性路由键。缺少键的请求回退到默认 endpoint 选择。 type StickyConfig struct { Source StickySource json:source // 例如 header Name string json:name // 例如 X-Session-Id }默认值与有效值语义字段默认值取值约束备注Keyspace函数名1–63 字符^[a-z0-9](https://link.gitcode.com/i/d56556a4835b8f0c60bbc81b38881c5c)?$不含:#显式设置以支持函数改名不丢数据DefaultTTL无不过期 0对无显式 TTL 的写入生效MaxValueBytes262144256KiB 00 平台默认const.goDefaultStateMaxValueBytesMaxKeys10000 00 平台默认const.goDefaultStateMaxKeysBackend 默认驱动引用已配置驱动否则仅警告v1 校验但语义延后Sticky.Source—header/queryparam二选一PathParam延后文档明确未实现Sticky.Name—非空如X-Session-IdEffectiveKeyspace/EffectiveMaxValueBytes/EffectiveMaxKeys三个方法负责把零值解析成有效配置见 validation.go。Webhook / 准入校验Go CRD marker 双重强制校验逻辑在 pkg/apis/core/v1/validation.go 与 validation_state_test.gokeyspace 字符集与长度stateKeyspaceRegexp镜像 kubebuilder markerGo 侧再查一遍让 CLI 也能客户端校验配额非负MaxValueBytes、MaxKeys、DefaultTTL均须 0sticky source 枚举仅header/queryparam且Sticky.Name非空executor 约束容器执行器container executor函数被拒绝——没有 fetcher sidecar 来投递 scoped 令牌validation.goallowedFunctionsPerContainer: infinite环境上的函数也被拒绝一个共享 mount 服务多个函数单一 per-pod 令牌文件无法隔离它们——webhook 需要拉取环境对象来强制这一点RFC 注释明确。三、statesvc面向函数的作用域化头部而非新的数据库服务器RFC-0021 已经提供了statestoresvc头部--statestorePortpkg/statestore/statestoresvc但它服务的是原始的、无作用域的KVStore/EventLog/Queue——只给控制面 HTTP-client 驱动嵌入式模式用。它绝不能被函数 Pod 触达一个函数打到 raw 端口就能读写任何所有者的键。因此 statesvc 是一个独立的、带作用域的函数侧表面复用底层 substrate 而不再是第二份拷贝它是fission-bundle的一个 head--stateApiPortClusterIP 仅集群内的svc/statesvc采用与已发布的statestoresvc/mcpheads 相同的形态Options-onlyStart(ctx, clientGen, logger, mgr, opts)可注入net.Listener/readyz依赖statestore.Capabilities.PingRFC-0021与 Function-cache 同步/healthz、/readyz绕过认证。Helm 组件见 charts/fission-all/templates/statesvc/每个请求的 KV 访问都包在已发布的scopedKVstatestore.NewScoped(inner, quotaResolver)里scope 来自已验证的令牌——raw driver 的Capabilities从不交给函数复用hmac.ServiceStatestore派生家族并沿用 statestore 的 NetworkPolicy 约定而非另起炉灶。HTTP 契约JSON over HTTP路由与头部定义在 pkg/statesvc/stateapi/stateapi.go这是一个不依赖 controller-runtime 的轻量叶子包CLI 可导入头部或字段改名在此是每个客户端的编译期破坏GET /v1/state/{key} → 200 {value} X-Fission-State-Version | 404 PUT /v1/state/{key} bodyvalue; If-Match: version → Set with IfVersion412 冲突; TTL via X-Fission-State-TTL DELETE /v1/state/{key} If-Match → Delete with ifVersion POST /v1/state/{key}/cas {expectVersion, value} — 为没有 If-Match 管道能力的客户端提供显式 CAS GET /v1/state?prefixcursor → 分页键列表List请求头部X-Fission-State-Namespace、X-Fission-State-Keyspace、X-Fission-State-Version、X-Fission-State-TTL管理面查询参数scope-namespace、scope-keyspace。它们骑在查询字符串而非头部——HMAC 签名覆盖请求 URI 而不覆盖头部因此签名能绑定它们statesvc 拒绝 header 携带的管理 scope防重放改目标加固机器可读错误码Error{error, code}JSONbad_request/unauthorized/forbidden/not_found/version_conflict/quota_value_bytes/quota_keys/capability_unavailable/internalCAS 请求体{expectVersion, value}ExpectVersion 0表示 create-only仅当键不存在才写成功List 响应体{keys, cursor}cursor为空表示已穷尽。KV 表面没有独立 CAS 方法底层statestore.KVStore只有Get/Set/Delete/List——不存在独立的CAS方法。比较并交换compare-and-swap是Set配合SetOptions.IfVersion实现的IfVersion nil无条件写入IfVersion 0create-only键不存在才写IfVersion 0对指定版本做 CAS。HTTP 层If-Match: version直接映射到IfVersion缺失或不匹配即返回 412version_conflict。Scope 从令牌来绝不从请求来scope 不是客户端提交的scopedKV的Scope{Namespace, Owner, Keyspace}完全由已验证令牌派生。注意 pkg/statesvc/auth.go 的StateOwner是一个固定的Scope.Owner刻意不是函数名keyspace 显式存在于StateConfig因此函数改名后其 keyspace 与数据可以保留。一个函数不能靠篡改头部来命名另一个函数的 keyspace——令牌校验失败即 403。配额MaxValueBytes、MaxKeys、namespace 字节预算由scopedKV.Set强制违反时返回带机器可读体的 413/429错误码quota_value_bytes/quota_keys。四、配额原子性quota.tla 与 CountedKV竞态check-then-actRFC 明确指出scopedKV.Set的旧形态——countKeys之后Set——是先检查后执行两个并发写者可能同时读到count MaxKeys-1都通过检查都写入从而突破预算。quota.tla精确建模了这个场景其负配置AtomicQuota FALSE可产出超标的 trace。设计要求并要审计已发布scopedKV的修复是MaxKeys/ namespace 字节的强制必须与写入原子——对计数器键做 KV CAS或让值写入以计数事务为条件——绝不采用裸的 read-check-then-write。这与队列的 epoch 列、游标的 version-CAS 属于同一类防护。落地CountedKV / SetCounted当前仓库已按此落地pkg/statestore/interfaces.go 定义可选的CountedKV能力SetCounted(ctx, scope, key, val, opts, maxKeys)是“带存活键预算的 Set”预算强制与写入是一步pkg/statestore/scoped.goscopedKV.Set在MaxKeys 0时统一走SetCounted——注释明确SetCounted是唯一的强制路径Set与直接SetCounted在预算边界上必须行为一致内存驱动 pkg/statestore/memory/kv.gostore mutex 使计数与写入成为单步SQL 驱动 pkg/statestore/sqlstore/kv.go事务先对#meta计数键取锁再写入statestoresvcHTTP head 把驱动包进NewScopedhandler 类型断言CountedKV来服务线上的maxKeyspkg/statestore/httpapi/server.goconformance 测试要求每个驱动必须实现CountedKVpkg/statestore/statestoretest/conformance.go且 scoped_quota_race_test.go 守卫“scoped store 仍满足CountedKV”这一不变量用pgregory.net/rapid让 N 个并发写者竞速预算边界。注意 RFC 描述的实现选项最终落为“值写入以计数事务为条件”即SetCounted而非“计数器键 CAS”——后者需要 TTL 漂移自愈其存活重数会与进行中的预留并发竞速被 mixed-churn race 测试捕获。五、令牌派生与注入派生HKDF keyspace-scoped info每个函数的令牌是经pkg/auth/hmac的 HKDF 派生与DeriveServiceKeyNS相同的hkdf.Key(sha256, master, nil, info, 32)构造但info扩展到 keyspace 粒度KeyVersion:statestore:ns:keyspace走既有的ServiceStatestore通道再用EncodeKeyForEnv十六进制编码后随环境传输二进制 env-var 的 UTF-8 问题在 tenant-controller 工作中已经踩过——这正是 encode 步骤不可省略的原因。statesvc 侧重新派生并常量时间比较verifyKeyspaceToken见 pkg/statesvc/auth.go无状态验证、零令牌存储与ServiceRouterInternal/ServiceStatestore同一家族。这直接支撑不变量S1为函数 A 派生的令牌永远无法读写函数 B 的 keyspace。注入按“函数无关 vs 每函数”切分这是评审暴露出的真实约束poolmgr 通用 Pod 的user-function 容器在函数身份已知之前就已经在运行而环境变量无法注入运行中的容器。因此必须拆分FISSION_STATE_URL是函数无关的svc/statesvc的 ClusterIP作为普通环境变量在通用 Pod 创建poolmgr与 Deployment 渲染newdeploy/container时设置——正是今天internalAuthEnvVars被添加的位置pkg/fetcher/configFISSION_STATE_TOKEN是每函数/keyspace 的只能在 specialize 时派生poolmgr 下它不能是容器环境变量而随FunctionSpecializeRequest已以-specialize-requestCLI 参数送达 fetcherpkg/fetcher/config传递newdeploy/container 下 Pod 自创建起就是函数专属令牌作为 Deployment 渲染时的普通 env var。一个“两个都做成 env var”的朴素设计会在 poolmgr 温路径上静默失败——RFC 明确记录了这一点。当前仓库的落地fetcher 写令牌文件实现最终选择了比“运行时写它”草图更好的方案令牌由 fetcher 派生它已持有主密钥并写入共享挂载下的/userfunc/.fission-state-token以{namespace, keyspace, token}JSON 形式存在无需改变环境镜像契约。见 pkg/fetcher/statetoken.goStateTokenFileName .fission-state-tokenL22StateCredentials{Namespace, Keyspace, Token}L28-L32——claims 随令牌一起传输因为 statesvc 的无状态验证要根据声明的 (namespace, keyspace) 重新派生writeStateTokenFile以 0444 权限写入env 容器以不同用户运行、只读它executor 通过FISSION_STATE_TOKEN_PATH把文件路径交给 SDK无主密钥的开发集群写占位令牌statesvc 的 pass-through 模式接受任意 bearer——SDK 契约保持一致见 auth.go 的passThrough分支。根密钥轮换会在下一次 specialize 时轮换所有令牌旧新密钥的双接受窗口覆盖运行中的 Podfuzz 测试的 rotation key 用例正是验证masterOld派生仍然通过——见 auth_fuzz_test.go与 internal-auth 的轮换叙事一致。六、Phase 3粘性路由HRW in Admit目标与语义边界目标在 Pod 集合稳定时所有携带同一键的请求落在同一已 specialize 的 Pod 上使持久状态 API 之上的进程内缓存保持相干并让单写者模式免于 CAS 抖动。关键边界不变量S6粘性是优化绝不是正确性依赖——任何请求合法地落在任何 Pod 上持久真相始终在状态 API 后面。接缝Admit 内部的分支而非策略对象在已发布的数据平面里endpoint 选择与并发准入是一个融合的原子操作resolverpkg/router/resolver_fallback.go的两个Admit调用点——poolmgr 温路径与 newdeploy/container 的 endpoint-LB 路径调用endpointcache.Index.Admit(namespace, name, requestsPerPod)返回(Endpoint, release func(), AdmitResult)。Admit扫描不可变的 endpoint 快照跳过 not-ready / quarantined / at-capacity 的 endpoint今天默认取**最少在飞least-outstanding**的一个再做有界 CAS 槽位占用。没有可插拔的 pick 接口——least-outstanding 内联在Admit里。因此粘性路由给这个扫描加一个分支而不是引入策略对象Admit获得可选的 sticky keyresolver 按StickyConfig提取后传入当 key 存在时扫描按(key, endpoint) 的 rendezvous hashHRW对 ready endpoint 排序取最高排名的可准入者而不是 least-outstanding。HRW 的优点Pod 增删时最小重排、无环状态——纯粹是 (key, ready endpoints) 的函数。返回形状(Endpoint, release, AdmitResult)不变因此下面的记账接缝不受影响。源码证据在 pkg/router/endpointcache/index.goAdmit(namespace, name, version string, requestsPerPod int, stickyKey string)L537注释明确“默认 least-outstandingstickyKey 非空时取最高 HRW 排名的可准入endpoint饱和的 sticky 赢家不可准入走正常溢出行为”L518-L522命中检查在 L590ownerAddr是 sticky key 在 ready 集合中的真实 HRW 赢家L567。记账不变量因为粘性 pick 仍在Admit内部router-admitted 与 executor-resolved 的切分不受影响——Release ! nil ⟺ router-admitted依然成立pkg/router/transport.go无需改动。行为细节缺 key 回退请求缺失声明的 key 时走默认 pick文档化行为不是错误——由fission_router_sticky_key_missing_total计数pkg/router/metrics.go注释在 transport.go饱和回退哈希到的 endpoint 饱和时Admit回退到正常溢出行为而非在 sticky 目标上排队粘性在饱和下尽力而为文档化Churn 语义扩容/缩容或 Pod 替换时某个键的 owner 可能移动。因为持久真相是状态 API、内存只是缓存这只是延迟事件缓存预热绝非正确性事件想要更强围栏的函数可用 CAS 版本号作为 fencing token文档化模式冷路径索引没有 endpoint冷函数时走正常 executor 冷启动 RPC 路径一旦存在 endpoint 粘性才生效遗留数据平面endpointSliceCache.modeoff不支持粘性router 在准入时看不到数据平面模式故在 RFC 中记录而非告警保持 pinned-legacy CI 腿有意义。指标与 teleport 检测fission_router_sticky_requests_total粘性请求计数fission_router_sticky_key_missing_total声明了但缺失 key 的请求计数fission_router_sticky_teleports_totalendpointcache/metrics.go粘性键发生了 Pod 迁移teleport的计数——由stickyLast感知per-key-hash 的 256 bucket 原子数组index.goL478每个粘性函数约 2KiBnoteStickyPick记录该键桶上次被准入的地址下次同键被准入到不同地址即 teleportL480-L501。区分canary 权重里早已存在stickyWeightHashFNV-64apkg/router/canary.gogetCanaryBackend用其按权重选后端——那是 canary 的按 key 稳定性与本 RFC 的 endpoint HRW 粘性不同。endpointcache 的 HRW 分数有TestHrwScoreMatchesFNV64a钉住字节级一致性。七、不变量与验证体系RFC 定义六条不变量当前仓库都有对应验证手段不变量内容验证S1scope 隔离A 的令牌无法读写 B 的 keyspacego test -fuzz对有效令牌做位翻转/截断/scope 拼接/重编码断言只有精确派生的令牌通过——auth_fuzz_test.goS2无丢失更新单键并发 CAS 可线性化每版本恰一个赢家porcupine对真实 statesvc HTTP 面非仅驱动记录的并发历史做线性化检查 get→cas 计数器集成测试零丢失增量per-key CAS 协议本身已被 substrate 的 TLCeventlogsub.tla的 version-CAS 游标、workflowfold.tla的 CAS-append覆盖statesvc 继承而非重证S3配额健全性MaxValueBytes/MaxKeys/namespace 预算永不被突破含并发竞速计数器TLC 检查而非仅属性测试quota.tla建模并发写者竞速MaxKeys计数器AtomicQuota FALSE负配置产出 check-then-act 超额的 trace——设计源头真相之上再用rapid序列竞速内存驱动配额边界S4粘性确定性pick 是 (key, ready endpoint set) 的纯函数每台 router 副本独立得到同一 Pod纯函数rapid测试S5最小重排移除一个 Pod 只移动映射到它的键新增只移动现在映射到它的键HRW 性质随机 churn 序列下断言“只有被移除 Pod 的键发生移动”的rapid测试S6粘性是优化而非正确性依赖架构性约定文档化TLA 规格位于 docs/rfc/specs/quota.tla/quota.cfg、eventlogsub.tla、workflowfold.tla等。其余TTL 行为与令牌轮换双接受窗口跑在testing/synctest气泡里虚拟时钟、确定性、无 sleepsticky resolver 路径在并发 endpoint churn 下以-race运行gorillaMethods()咬过的 build-vs-serve 竞态家族。RFC-0020 bench 目标状态 API 延迟 p99 5ms集群内分别测嵌入式模式与外部 Postgres另有 sticky 缓存命中率场景。八、备选方案对比为何不这样做备选结论Dapr sidecar 提供状态per-pod sidecar 注入与 poolmgr 通用池模型冲突Pod 先于函数身份存在且拖入第二个控制面——RFC-0021 已拒绝直接注入 DSN凭据进函数每个环境都要带 DB 客户端配额/租户不可强制轮换一个泄露函数的访问等于轮换整个存储——拒绝状态面挂在 router internal listener 上Pod 更少但把请求热路径的可用性与 NetworkPolicy 面耦合到状态流量且扩大 GHSA 加固监听的职责——独立 ClusterIP head 廉价且可独立扩缩Kubernetes ServicesessionAffinity: ClientIP错误的键客户端 IP ≠ 逻辑键对 router 的直接 Pod endpoint 拨号不可用对 resolver 的准入记账不可见用 CRD 当 KV 后端etcd 写速率与对象上限——RFC-0021 Motivation 已拒绝九、向后兼容与分阶段上线向后兼容纯增量——CRD 可选字段nil 完全今天的行赞分享云原生后端【免费下载链接】fissionFast and Simple Serverless Functions for Kubernetes项目地址https://gitcode.com/gh_mirrors/fi/fission点击查看免费下载相关推荐PVCNN 完全指南从论文到代码快速掌握 Point-Voxel CNN 核心技术PVCNN 完全指南从论文到代码快速掌握 Point Voxel CNN 核心技术 PVCNNPoint Voxel CNN是2019年NeurIPS会Wouter与Redux实现路由状态与全局状态的同步Wouter与Redux实现路由状态与全局状态的同步 你是否曾遇到单页面应用中路由跳转后用户信息丢失刷新页面后购物车数据清空这些问题的根源往往是路由状态与前端React Router路由监控终极指南实时监控路由状态和性能React Router路由监控终极指南实时监控路由状态和性能 React Router是React生态系统中最流行的路由解决方案为单页应用提供强大的路由管前端路由上一篇3分钟解锁网易云音乐ncmdump让你的NCM格式文件重获自由下一篇Redwood v8.0.0 升级指南从 Webpack 时代迁移到 Vite 与新特性全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
大模型算法之后,为什么产品经理成了最热门的岗位?TaoToken视角下的AI产品经理NPDP能力拆解 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 14:05:12
TVA具身智能运行机理(44):适配国产NPU核心技巧解析 前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&… · 2026/9/25 14:04:53
基于规则与LLM兜底的arXiv论文汇总系统:从信息过载到结构化筛选 1. 从一份论文汇总清单说起:我为什么要做这件事每天早上刷 arXiv 的 cs.LG 板块,已经成了我这两年雷打不动的习惯。但说实话,真正让我头疼的不是读论文本身,而是"读哪些"。cs.LG 这个板块每天的更新量在 200 到 400 篇之… · 2026/9/25 17:32:56
昇腾Atlas 300V部署YOLO:从环境准备到性能调优 很多人第一次听到“atlas部署yolo”,第一反应是问“Atlas 300V 24G 是运算加速卡吗”。我直接给结论:它是华为昇腾系列面向边缘推理场景的AI加速卡,准确说是推理卡,不是拿来训练大型模型的GPU卡。但论“加速运算”能力,… · 2026/9/25 17:32:56
2026最权威的十大降AI率平台横评: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/9/25 17:32:49
专精特新企业三大核心痛点与系统性突围方案解析 专精特新这四个字,这几年在中小企业圈子里几乎成了“金字招牌”。我见过不少企业花大力气去对标、申报,把“小巨人”或“专精特新”的牌子挂到墙上之后,反而开始犯嘀咕:接下来怎么走?钱还是紧巴巴,研发和销… · 2026/9/25 17:32:43
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37