云原生存储【免费下载链接】distributionThe toolkit to pack, ship, store, and deliver container content项目地址https://gitcode.com/gh_mirrors/dis/distribution点击查看免费下载Go JOSE 是 JOSEJavaScript Object Signing and Encryption标准族在 Go 语言中的完整实现覆盖 JSON Web EncryptionJWERFC 7516、JSON Web SignatureJWSRFC 7515与 JSON Web TokenJWTRFC 7519三大规范。本文以当前仓库 distribution 所携带的go-jose/go-jose/v4依赖为主体系统梳理其版本演进、算法与密钥类型支持矩阵、JWS/JWE/JWT 的使用方式并深入源码讲解该库如何在 distribution 的 token 认证后端中承担令牌解析、签名算法约束与可信密钥校验的关键职责。读完本文你将掌握 go-jose 的算法选择依据、compact 与 JSON 序列化差异以及一条从 JWT 签发到注册中心验签的完整实战链路。说明文中涉及的算法标识符、常量定义与代码行为均以仓库内 vendor/github.com/go-jose/go-jose/v4 的实际源码和 distribution 的 go.modgithub.com/go-jose/go-jose/v4 v4.1.4为准。一、go-jose 是什么覆盖 JWE/JWS/JWT 的 Go 实现Package jose的目标是提供 Javascript Object Signing and Encryption 标准集的实现具体包括 JSON Web EncryptionRFC 7516、JSON Web SignatureRFC 7515和 JSON Web TokenRFC 7519其中 JWT 支持位于独立的子包中。库同时支持 compact 序列化与 JWS/JWE JSON 序列化两种格式并可选地支持多接收者multi-recipient场景。从 vendor/github.com/go-jose/go-jose/v4/doc.go 的包注释可以看到/* Package jose aims to provide an implementation of the Javascript Object Signing and Encryption set of standards. It implements encryption and signing based on the JSON Web Encryption and JSON Web Signature standards, with optional JSON Web Token support available in a sub-package. The library supports both the compact and JWS/JWE JSON Serialization formats, and has optional support for multiple recipients. */配套的 vendor/github.com/go-jose/go-jose/v4/jwt/doc.go 则说明jwt子包提供了 JSON Web Token 标准的实现。整个模块的源码布局包括jws.go、signing.goJWS 签名/验签核心jwe.go、crypter.goJWE 加密/解密核心jwk.goJWK 密钥对象cipherCBCHMAC、Concat KDF、ECDH-ES、AES key wrap 等密码学原语jwtJWT 构建、解析与校验jsonfork 自 Go 标准库的 JSON 实现。关键设计决策大小写敏感的 JSON 成员名匹配go-jose 使用一份 fork 自 Go 标准库encoding/json的 JSON 包见 vendor/github.com/go-jose/go-jose/v4/json该实现采用大小写敏感的成员名匹配而非 Go 标准库默认的大小写不敏感匹配。这一设计的目的在于避免 go-jose 与其他语言实现的库之间对同一 JOSE 消息产生不同的解释确保跨语言互操作时语义一致。所有 JWS/JWE 的头部解析都经由该json包完成例如 shared.go 中的rawHeader、getString、getAlgorithm等辅助方法。二、版本演进为什么 distribution 使用 v4README 明确了版本策略Version 4 是当前稳定版本导入路径为import github.com/go-jose/go-jose/v4。它至少支持当前及上一个 Go 主版本当前要求Golang 1.24Version 3 仅接收关键安全更新官方建议迁移到 Version 4Version 1 和 2 已经过时可在旧仓库square/go-jose中找到未来的Version 5将引入破坏性 API 变更并要求 Golang 的encoding/json/v2目前需要 Go 1.25 且以GOEXPERIMENTjsonv2构建。在 distribution 中github.com/go-jose/go-jose/v4以v4.1.4版本被引入见 go.mod。其升级轨迹在发布说明中清晰可见v3 时代 go-jose 曾是替换docker/libtrust的方案见 releases/v3.0.0-alpha.1.toml随后逐步从 v3 升级到 v4 系列如 releases/v3.0.0-beta.1.toml 中新增 v4.0.2、releases/v3.0.0-rc.4.toml 中升级到 v4.0.5、releases/v3.1.0.toml 中升级到 v4.1.4。这印证了 distribution 跟随上游稳定版本的节奏。三、算法支持矩阵加密、签名、内容加密与压缩go-jose 的算法标识符尽可能与 JSON Web AlgorithmsRFC 7518标准保持一致可在 shared.go 中看到这些常量定义例如RSA1_5、RSA_OAEP、HS256、RS256、A128GCM等。3.1 密钥加密Key Encryption / Key Management算法密钥加密方式算法标识符RSA-PKCS#1v1.5RSA1_5RSA-OAEPRSA-OAEP、RSA-OAEP-256AES key wrapA128KW、A192KW、A256KWAES-GCM key wrapA128GCMKW、A192GCMKW、A256GCMKWECDH-ES AES key wrapECDH-ESA128KW、ECDH-ESA192KW、ECDH-ESA256KWECDH-ES直接ECDH-ES¹直接加密dir¹¹ 在多接收者模式下不支持。此外shared.go 还定义了 PBES2 系列的密钥管理算法常量PBES2-HS256A128KW、PBES2-HS384A192KW、PBES2-HS512A256KW说明 v4 在密码口令派生方面也有内置支持。3.2 签名 / MAC 算法签名 / MAC 方式算法标识符RSASSA-PKCS#1v1.5RS256、RS384、RS512RSASSA-PSSPS256、PS384、PS512HMACHS256、HS384、HS512ECDSAES256、ES384、ES512Ed25519EdDSA²² 仅在包版本 2 及以上可用v4 当然可用。其中各算法的语义在源码常量注释中有明确定义例如ES256 SignatureAlgorithm(ES256) // ECDSA using P-256 and SHA-256PS256 SignatureAlgorithm(PS256) // RSASSA-PSS using SHA256 and MGF1-SHA256。3.3 内容加密算法内容加密方式算法标识符AES-CBC HMACA128CBC-HS256、A192CBC-HS384、A256CBC-HS512AES-GCMA128GCM、A192GCM、A256GCM3.4 压缩算法压缩方式算法标识符DEFLATE (RFC 1951)DEF对应常量NONE CompressionAlgorithm()与DEFLATE CompressionAlgorithm(DEF)均定义在 shared.go。3.5 支持的密钥类型以下密钥类型可直接传入NewEncrypter或NewSigner等函数每种密钥也可按需包装为 JWK 以附加密钥 IDkid算法对应类型RSA*rsa.PublicKey、*rsa.PrivateKeyECDH、ECDSA*ecdsa.PublicKey、*ecdsa.PrivateKeyEdDSA¹ed25519.PublicKey、ed25519.PrivateKeyAES、HMAC[]byte¹ 仅在包版本 2 及以上可用。四、JWS 签名与验签的源码级实现4.1 签名者接口与构造入口signing.go 定义了签名核心类型type Signer interface { Sign(payload []byte) (*JSONWebSignature, error) Options() SignerOptions }构造签名的入口是NewSigner(sig SigningKey, opts *SignerOptions)其内部转发到NewMultiSigner而NewMultiSigner会为每个SigningKey调用addRecipient并依据密钥类型分派到不同的签名实现ed25519.PrivateKey→newEd25519Signer*rsa.PrivateKey→newRSASigner*ecdsa.PrivateKey→newECDSASigner[]byteHMAC→newSymmetricSignerJSONWebKey/*JSONWebKey→newJWKSigner实现OpaqueSigner接口的类型 →newOpaqueSigner其他类型 → 返回ErrUnsupportedKeyType4.2 签名流程与受保护头部genericSigner.Sign(payload []byte)的工作流程见 signing.goSign方法为每个接收者构造受保护头部至少包含alg若启用了EmbedJWK将公钥 JWK 直接嵌入jwk头否则且密钥带 KeyID写入kid头——两者互斥这是 go-jose 有意为之的设计决策避免同时出现嵌入 JWK 与 kid 造成歧义若配置了NonceSource在受保护头部写入nonce将ExtraHeaderstyp、cty、crit、b64等合并进受保护头部按 compact 序列化规则拼接base64url(protected) . base64url(payload)当b64false时 payload 不编码再交给底层签名器计算签名。SignerOptions提供了一组链式方法用于定制受保护头部WithHeader(k HeaderKey, v interface{})写入任意头部键值WithContentType(contentType)写入ctyWithType(typ)写入typWithCritical(names ...string)追加crit列表WithBase64(b64 bool)当b64false时设置b64头并自动加入crit。4.3 验签路径JSONWebSignature.Verify(verificationKey interface{})是单签名验证入口支持ed25519.PublicKey、*ecdsa.PublicKey、*rsa.PublicKey、JSONWebKey、*JSONWebKeySet、[]byte以及实现OpaqueVerifier的类型。如果消息带多个签名应使用VerifyMulti。DetachedVerify则面向签名与载荷分离的场景。验证时库会检查critCritical头未受保护头部中出现crit直接报错受保护头部中的crit必须全部在库支持的集合supportedCritical当前仅含b64之内否则返回ErrUnsupportedCriticalHeader。验签失败统一返回ErrCryptoFailure。五、JWE 加密体系与 JWK 密钥对象5.1 JWE 的密钥层级JWE 采用双层加密模型密钥管理算法如RSA-OAEP、A256KW、ECDH-ES负责加密内容加密密钥CEK内容加密算法如A128CBC-HS256、A256GCM负责用 CEK 加密实际载荷。相关密码学原语集中在 cipher 目录cbc_hmac.goAES-CBC HMAC 组合模式concat_kdf.goNIST Concat KDF供 ECDH-ES 派生密钥ecdh_es.go椭圆曲线 Diffie-Hellman 直接密钥协商key_wrap.goRFC 3394 AES Key Wrap。NewEncrypter会依据KeyAlgorithm选择对应的密钥管理实现并在构造时校验密钥尺寸不匹配时返回ErrInvalidKeySize。内容加密的核心结构体为JSONWebEncryption解密入口为Decrypt(decryptionKey)。注意ECDH-ES与dir属于“直接加密”模式一次只能作用于单个接收者因此不支持多接收者README 脚注¹。5.2 JWK 与密钥指纹jwk.go实现了 JWKJSON Web Key的解析、序列化与 JWK 指纹Thumbprint计算。JWK 允许在 JSON 中携带密钥的公开参数如 RSA 的n、eEC 的crv、x、y或对称密钥的k以及元数据kid、use、alg等使密钥可以在系统中传递并关联密钥 ID。在 distribution 的 token 认证中JWK 指纹扮演了关键角色注册中心用公钥的JWK Thumbprint依据 RFC 7638 与 RFC 8037作为可信密钥的索引键见下文第六节的调用链分析。六、仓库实战go-jose 在 distribution Token 认证中的落地distribution 的 token 认证后端位于 registry/auth/token它完整演示了 go-jose 在真实服务中的集成方式。6.1 依赖关系与认证入口registry/auth/token/token.go 导入github.com/go-jose/go-jose/v4与github.com/go-jose/go-jose/v4/jwt负责令牌解析、签名密钥校验与 claims 验证registry/auth/token/accesscontroller.go 导入github.com/go-jose/go-jose/v4负责读取配置、构建可信密钥集合、在Authorized中完成 Bearer 令牌的接收与鉴权测试与模糊测试分别在 accesscontroller_test.go、token_test.go、fuzz_test.go 中覆盖。从发布记录看distribution 还专门做过“Bump go-jose and require signing algorithms in auth”见 releases/v3.0.0-beta.1.toml的改动说明对令牌签名算法的白名单约束是安全加固的重点。6.2 签名算法白名单token.go 定义了完整的签名算法映射与默认集var signingAlgorithms map[string]jose.SignatureAlgorithm{ EdDSA: jose.EdDSA, HS256: jose.HS256, HS384: jose.HS384, HS512: jose.HS512, RS256: jose.RS256, RS384: jose.RS384, RS512: jose.RS512, ES256: jose.ES256, ES384: jose.ES384, ES512: jose.ES512, PS256: jose.PS256, PS384: jose.PS384, PS512: jose.PS512, }也就是说go-jose 支持的 13 种签名算法全部可被注册中心选为白名单成员。配置解析时checkOptions见 accesscontroller.gosigningalgorithms选项会通过getSigningAlgorithms逐一映射为jose.SignatureAlgorithm未知算法名直接报unsupported signing algorithm错误若未配置则回退到defaultSigningAlgorithms与上表完全一致以保持对既有部署的向后兼容。6.3 令牌解析与验签调用链Authorized的处理流程accesscontroller.go从Authorization: Bearer token头中提取原始令牌调用NewToken(rawToken, ac.signingAlgorithms)内部通过jwt.ParseSigned(rawToken, signingAlgs)解析——传入白名单算法后令牌若使用白名单之外的算法签名会在此直接失败构造VerifyOptionsTrustedIssuers来自配置的issuerAcceptedAudiences来自配置的serviceRoots为根证书池TrustedKeys为可信公钥映射调用token.Verify(verifyOpts)其中先经VerifySigningKey定位签名公钥优先走x5c证书链header.Certificates配合x509.VerifyOptions校验若缺少x5c头ErrMissingX5cHeader则回退到头部内嵌 JWKheader.JSONWebKey或kid查找可信密钥token.go 的VerifySigningKey再调用t.JWT.Claims(signingKey, claims)——这一步由 go-jose 的 jwt 子包完成签名验证与 claims 反序列化随后手工核对iss必须命中TrustedIssuers、aud必须命中AcceptedAudiences、exp与nbf带 60 秒Leeway时钟偏移容忍见 token.go 的Leeway 60 * time.Second最后将 claims 中的access列表与请求所需资源动作比对实现 scope 级别的细粒度授权ErrInsufficientScope。一个值得注意的实现细节VerifySigningKey只验证t.JWT.Headers[0]第一个签名头——因为 docker auth 规范并不支持多签名令牌源码注释明确说明这一点。6.4 可信密钥的来源rootcertbundle 与 jwksaccesscontroller.go 的newAccessController展示了可信密钥的两条来源rootcertbundle读取 PEM 格式的根证书 bundlegetRootCerts逐块pem.Decode解析构建x509.CertPool同时用GetJWKThumbprint(rootCert.PublicKey)计算每个根证书公钥的 JWK 指纹并放入trustedKeys映射jwks读取 JSON Web Key Set 文件getJwks通过json.Unmarshal解析为jose.JSONWebKeySet将其中每个密钥按其KeyID放入trustedKeys。若两者均未提供或 JWKS 为空启动直接报错token auth requires at least one token signing key。6.5 对应的注册中心配置在 cmd/registry/config-dev.yml 与文档 docs/content/about/configuration.md 中可以看到 token 认证的完整配置骨架auth: token: autoredirect: true realm: token-realm service: token-service issuer: registry-token-issuer rootcertbundle: /root/certs/bundle jwks: /path/to/jwks signingalgorithms: - EdDSA - HS256各参数含义整理自 docs/content/about/configuration.md参数必填说明realm是注册中心进行认证的 realmBearer 挑战头中的realmservice是被认证的服务名同时作为 token 的aud校验值issuer是令牌签发者名称必须与 token 中的issclaim 一致rootcertbundle是*根证书 bundle 的绝对路径包含用于签发认证令牌的证书公钥部分其公钥会按 JWK Thumbprint 自动加入可信密钥列表autoredirect否为true时realm动态取请求 Host 头作为域名、autoredirectpath作为路径URL 协议优先取X-Forwarded-Proto否则默认httpsautoredirectpath否autoredirect开启时的跳转路径默认/auth/token/signingalgorithms否验签算法白名单留空使用默认的 13 种算法EdDSA、HS256/384/512、RS256/384/512、ES256/384/512、PS256/384/512jwks否JWKS 文件的绝对路径文件中的密钥按kid加入可信密钥集合rootcertbundle与jwks至少须配置其一否则注册中心启动失败。源码中realm、issuer、service均要求为字符串见checkOptions缺失会直接报错。认证流程的完整规范可参考仓库文档 docs/content/spec/auth/token.md。七、在你自己项目中引入 go-jose在当前仓库中go-jose 以 vendor 方式固定在v4.1.4见 go.mod 与 go.sum。在你的独立 Go 项目中按官方方式引入即可go get github.com/go-jose/go-jose/v4v4.1.4或按 go-jose 推荐的稳定路径导入import github.com/go-jose/go-jose/v4 import github.com/go-jose/go-jose/v4/jwt注意版本前提v4 要求 Golang 1.24 及以上README 原文说明老项目若仍停留在 v3建议规划迁移到 v4因为 v3 仅接收关键安全更新。快速示例签发并验证一个 JWS以下基于 go-jose 公开 APINewSigner/JSONWebSignature.Verify的最小流程展示了签名与验签的完整闭环// 以 RSA 私钥为例构造签名者 privateKey, _ : rsa.GenerateKey(rand.Reader, 2048) signer, err : jose.NewSigner(jose.SigningKey{ Algorithm: jose.RS256, Key: privateKey, }, jose.SignerOptions{ ExtraHeaders: map[jose.HeaderKey]interface{}{ jose.HeaderType: JWT, }, }) if err ! nil { log.Fatal(err) } payload : []byte({sub:alice,scope:repository:demo:pull}) object, err : signer.Sign(payload) // 返回 *jose.JSONWebSignature if err ! nil { log.Fatal(err) } compact, err : object.CompactSerialize() // base64url(header).base64url(payload).signature if err ! nil { log.Fatal(err) } // 使用公钥验证 parsed, err : jose.ParseSigned(compact) if err ! nil { log.Fatal(err) } verified, err : parsed.Verify(privateKey.PublicKey) if err ! nil { log.Fatal(err) } fmt.Println(string(verified)) // 输出原始 payload更丰富的官方示例可参考 go-jose 的 Godoc 参考仓库内的 jwt 子包源码builder.go、jwt.go、validation.go也是理解jwt.Signed(...).Claims(...)构建、jwt.ParseSigned解析与Claims(dest)校验的绝佳参考distribution 对它的用法token.go 的NewToken/Verify则是一个可复制的生产级集成范例。八、安全注意事项与选型建议HMAC 密钥长度go-jose 要求对称密钥长度不小于对应哈希输出——HS256 至少 32 字节、HS384 至少 48 字节、HS512 至少 64 字节见 signing.go 中SigningKey与Verify的注释不满足时直接返回错误嵌入 JWK 不等于信任Verify的注释明确警告——基于消息头中嵌入的 JWK 验签时不能假定收到的密钥是可信的生产环境应通过可信的证书链x5c或预置的 JWKS / 根证书来锚定信任。distribution 正是这样做的trustedKeys只来自本地配置的 rootcertbundle 与 jwks签名算法白名单distribution 通过signingalgorithms收敛可接受的算法集合可有效避免算法混淆类攻击建议生产部署显式配置而非依赖默认全集多接收者限制ECDH-ES与dir不能用于多接收者 JWE如果业务需要多接收者请改用ECDH-ES*KW或 RSA/AES key wrap 类算法序列化格式compact 格式最省空间且适合 HTTP 场景如 Bearer token但无法承载多签名、多接收者等结构需要这些能力时应选用 JWS/JWE JSON 序列化格式。结语go-jose v4 为 Go 生态提供了覆盖面完整的 JOSE 标准实现从 JWS 的 13 种签名算法、JWE 的 6 种内容加密算法与丰富的密钥管理算法到 JWK、多接收者与两种序列化格式再到开箱即用的jwt子包。而 distribution 在 registry/auth/token 中将其打磨成了一条生产级的认证链路算法白名单约束解析、x5c 证书链 / 内嵌 JWK / kid 三路密钥解析、iss/aud/exp/nbf 多重校验与 scope 级授权。理解这一从库到应用的完整映射无论对二次开发注册中心还是在自己的系统中集成 JOSE 标准都会是一份可靠的技术参考。赞分享云原生存储【免费下载链接】distributionThe toolkit to pack, ship, store, and deliver container content项目地址https://gitcode.com/gh_mirrors/dis/distribution点击查看免费下载相关推荐Go JOSE v2 库实战指南JWE/JWS/JWT 算法支持与 KubeEdge 中的令牌认证落地Go JOSE v2 库实战指南JWE/JWS/JWT 算法支持与 KubeEdge 中的令牌认证落地 导读 本文以 KubeEdge 仓库中 vendor云原生边缘计算物联网容器编排边缘网关Azure Identity Go 模块全解析基于 TokenCredential 的 Entra ID 认证体系在 distribution 仓库中的落地实践Azure Identity Go 模块全解析基于 TokenCredential 的 Entra ID 认证体系在 distribution 仓库中的落地实云原生存储Go JOSE v4 技术全解JWE/JWS/JWT 标准实现与在 Grafana Tempo 中的实践Go JOSE v4 技术全解JWE/JWS/JWT 标准实现与在 Grafana Tempo 中的实践 本文以开源仓库 Grafana Tempo 中 ve后端可观测性链路追踪上一篇Sim 服务端协同文档转换模块markdown 与 Yjs 双向转换的工程实践下一篇GitHub Copilot 辅助 Java 21 到 Java 25 升级实战指南新语言特性、API 变迁与迁移最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
openFrameworks 第三方依赖库版本对照指南:docs/versions.md 全解读 图形学音视频 【免费下载链接】openFrameworks openFrameworks is a community-developed cross platform toolkit for creative coding in C. 项目地址: https://gitcode.com/gh_mirrors/op/openFrameworks 点击查看 免费下载 openFrameworks(下称 OF&… · 2026/9/24 17:15:08
@mcp-use/tunnel 深度指南:用 WebSocket 中继把本地 MCP 服务器暴露为公共 HTTPS 端点 后端MCP 服务MCP ClientsAI Agent人工智能 【免费下载链接】mcp-use The fullstack MCP framework to develop MCP Apps for ChatGPT / Claude & MCP Servers for AI Agents. 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-use 点击查看 免费下载 mcp-use/… · 2026/9/24 17:15:01
tamedevil 的 te.identifier():安全变量名 TE 节点的校验规则与实战 后端API网关 【免费下载链接】crystal 🔮 Graphiles Crystal Monorepo; home to Grafast, PostGraphile, pg-introspection, pg-sql2 and much more! 项目地址: https://gitcode.com/gh_mirrors/cry/crystal 点击查看 免费下载 te.identifier() 是 Grap… · 2026/9/24 17:15:01
长上下文旗舰同日登场,推理成本战改写产业算力格局|林伽一 · AI科技日报 | 2026年09月23日 今日 AI 产业出现一组相互印证的信号:阶跃星辰发布 600B 参数的 Step 5 Preview、xAI 的 Grok 4.6 上线 Amazon Bedrock、阿里巴巴发布 7B 的 Qwen-Image-2.1,同日还有 RBS-Attention 提出 20.65 倍的预填充加速方法、AWS 开源 Strands Harness 智能体框… · 2026/9/24 17:54:46
第一章-导言 1.1入门 咱们学习一门编程语言,第一个程序当然是打印"hello worlld".
#include <stdio.h>int main()
{printf("hello world\n");return 0;
} 一个C语言程序的运行必须要有main函数,他是函数的入口。printf("hello world… · 2026/9/24 17:54:46
从零开始用 Linux:文件与目录操作 先确认你在哪:看终端的提示符——fjxfjx:~$ → 已经在 Ubuntu 里,直接往下敲C:\Users\72344> → 还是 Windows 的 cmd,先敲 wsl 回车进去第一步:装 g(三条命令,依次敲)sudo —— 怎么以管理员… · 2026/9/24 17:54:46
技术碎碎念01 一、多智能体系统1.1 受控多智能体 vs 开放式多智能体开放式的多智能体稳定性太难控制,操作不可预期。受控多智能体是一种很好的解决方案,虽然会丢失一些灵活性,但从企业场景的稳定性来看,很值得考虑。先固定再谈论自由࿰… · 2026/9/24 17:54:46
数据分析最常用的9个模型,撑起80%的分析工作 做数据分析这些年,我越来越觉得,真正高频、真正能解决业务问题的分析模型,其实没有想象中那么多。刚开始做分析的时候,很容易有一种错觉:模型越高级,分析能力越强。于是很多人会去学回归、聚类、决策树、时… · 2026/9/24 17:54:40
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44