SpringCloud Alibaba微服务网关防护三重加固实战
1. 项目概述为什么“禁止跳过网关直接访问后端服务”是微服务落地的生死线在某公司实际推进SpringCloud Alibaba 2021版本微服务架构升级过程中我参与了一个中型电商平台的重构项目。系统拆分为商品中心、订单中心、用户中心、库存服务等十余个独立部署的微服务模块全部基于Nacos作为注册中心Sentinel做流量控制Seata管理分布式事务。但上线前压测阶段测试团队绕过统一API网关直接用Postman调用订单服务的内网IP端口如http://10.20.30.40:8082/api/order/create结果发现订单创建接口响应时间从平均120ms骤降至35msTPS翻了近三倍——表面看是性能提升实则埋下了巨大隐患。更严重的是当某次突发大促流量涌入时未走网关的直连请求绕过了所有限流熔断规则导致库存服务CPU持续100%最终引发雪崩式级联故障。这件事让我彻底意识到“禁止跳过网关直接访问后端服务”不是一句安全口号而是微服务架构能否稳定运行的底层契约。它直接关系到权限校验是否失效、全链路日志是否断裂、流量治理是否形同虚设、灰度发布是否失控。本文聚焦SpringCloud Alibaba 2021生态不讲抽象理论只说具体怎么做——如何从网络层、应用层、运维层三重加固让后端服务真正“只认网关不认人”。适合正在落地微服务、已部署网关但尚未做访问隔离的开发与运维同学尤其适合那些被“临时调试直连”坑过的团队。2. 整体防护设计思路三层拦截体系的逻辑闭环2.1 为什么单靠网关白名单远远不够很多团队的第一反应是“我在Spring Cloud Gateway里配个allowedOrigins不就完了”——这是典型误区。网关白名单如spring.cloud.gateway.globalcors.allowed-origins仅控制浏览器跨域请求对Postman、curl、内部服务间调用完全无效。更关键的是网关本身只是流量入口它无法阻止其他服务通过内网IP直连你的订单服务。我见过最危险的配置是网关开放了http://*而订单服务的application.yml里还写着server.port8082且未做任何访问限制。这种组合相当于给银行装了智能门禁却把金库大门钥匙挂在门把手上。2.2 三层拦截体系的构建逻辑我们最终采用“网络层防火墙 应用层认证 运维层审计”的三层防御模型每层解决不同维度的问题形成逻辑闭环网络层基础设施层由K8s NetworkPolicy或云厂商安全组实现强制所有流量必须经过网关Pod的IP后端服务Pod的端口对外部包括集群内其他命名空间完全不可达。这是最硬的防线成本低、效果强但缺乏业务语义。应用层微服务层在每个后端服务启动时主动向Nacos注册一个“网关可信标识”并在所有Controller方法前增加PreAuthorize(hasHeader(X-Gateway-Verified))注解。网关在转发请求时注入该Header后端服务通过Spring Security拦截器校验其存在性与签名。这层带业务逻辑可精确到接口级控制。运维层可观测层通过PrometheusGrafana监控后端服务的http_server_requests_seconds_count{uri!~/actuator.*}指标设置告警规则若某服务在5分钟内出现非/actuator/health路径的直连请求即remote_addr非网关Pod IP段立即触发企业微信告警。这层不阻断流量但确保任何绕行行为100%可追溯。提示三层中网络层是基石应用层是核心运维层是兜底。缺任何一层防护体系都存在致命缺口。我们曾因忽略运维层监控在一次CI/CD流水线异常时自动化脚本误将测试环境网关配置回滚导致直连请求激增幸亏有告警及时发现。2.3 SpringCloud Alibaba 2021的特殊适配点SpringCloud Alibaba 2021对应Spring Boot 2.6.x引入了spring-cloud-starter-alibaba-sentinel-gateway其默认集成方式与旧版有本质差异网关不再依赖sentinel-spring-cloud-gateway-filter手动配置而是通过SentinelGatewayFilter自动注入。这意味着如果你在网关中配置了spring.cloud.sentinel.filter.enabledtrueSentinel会自动为所有路由添加流控过滤器——但这个过滤器只作用于网关接收的请求对直连后端的请求毫无感知。因此必须在后端服务中单独引入spring-cloud-starter-alibaba-sentinel并配置spring.cloud.sentinel.transport.dashboard指向同一Sentinel控制台否则后端服务的QPS、线程数等指标将无法上报流量治理失去数据基础。这是2021版本最容易被忽略的兼容性陷阱。3. 核心细节解析与实操要点从代码到配置的完整链路3.1 网络层K8s NetworkPolicy精准封禁内网直连在K8s集群中NetworkPolicy是实现网络层隔离的黄金标准。我们为订单服务order-service编写了如下策略apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: order-service-deny-direct-access namespace: prod spec: podSelector: matchLabels: app: order-service policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: name: gateway-namespace # 网关所在命名空间 podSelector: matchLabels: app: spring-cloud-gateway ports: - protocol: TCP port: 8082 - from: - namespaceSelector: matchLabels: name: monitoring-namespace # 监控命名空间允许Prometheus抓取指标 podSelector: matchLabels: app: prometheus-server ports: - protocol: TCP port: 8082这段配置的核心逻辑是只允许来自gateway-namespace命名空间中标签为app: spring-cloud-gateway的Pod访问order-service的8082端口同时允许monitoring-namespace中的Prometheus访问指标端点。其他所有来源包括同命名空间的其他服务、测试Pod、甚至管理员的kubectl exec均被拒绝。实测效果当测试人员尝试kubectl exec -it test-pod -- curl http://order-service:8082/api/order/test时返回Connection refused而通过网关调用curl http://gateway/api/order/test则正常响应。注意NetworkPolicy需配合CNI插件如Calico、Cilium生效。若使用Flannel等不支持NetworkPolicy的插件需改用云厂商安全组——例如阿里云ACK集群中在VPC安全组中设置入方向规则源地址为网关节点私有IP段端口8082其他端口全部拒绝。切勿在安全组中开放0.0.0.0/0这是生产环境大忌。3.2 应用层基于JWT Header的网关可信标识验证单纯检查Header是否存在易被伪造我们采用JWT签名增强安全性。网关Spring Cloud Gateway在GlobalFilter中注入签名HeaderComponent public class GatewayAuthFilter implements GlobalFilter, Ordered { private static final String GATEWAY_HEADER X-Gateway-Verified; private static final String SECRET_KEY your-256-bit-secret-key-here; // 生产环境应从Vault获取 Override public MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request exchange.getRequest(); String uri request.getURI().getPath(); // 仅对业务路径签名排除健康检查、静态资源等 if (uri.startsWith(/api/) || uri.startsWith(/v1/)) { String payload String.format(%s|%s|%d, request.getMethod(), uri, System.currentTimeMillis() / 1000); String signature Jwts.builder() .setSubject(payload) .signWith(SignatureAlgorithm.HS256, SECRET_KEY.getBytes()) .compact(); ServerHttpRequest newRequest request.mutate() .header(GATEWAY_HEADER, signature) .build(); exchange exchange.mutate().request(newRequest).build(); } return chain.filter(exchange); } Override public int getOrder() { return -1; // 保证在路由前执行 } }后端服务订单服务通过自定义OncePerRequestFilter校验Component public class GatewayVerificationFilter extends OncePerRequestFilter { private static final String GATEWAY_HEADER X-Gateway-Verified; private static final String SECRET_KEY your-256-bit-secret-key-here; Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String signature request.getHeader(GATEWAY_HEADER); if (signature null || signature.trim().isEmpty()) { response.sendError(HttpServletResponse.SC_FORBIDDEN, Direct access forbidden: missing X-Gateway-Verified header); return; } try { JwsClaims claimsJws Jwts.parser() .setSigningKey(SECRET_KEY.getBytes()) .parseClaimsJws(signature); String payload claimsJws.getBody().getSubject(); // 验证时间戳防止重放攻击有效期5分钟 long timestamp Long.parseLong(payload.split(\\|)[2]); if (System.currentTimeMillis() / 1000 - timestamp 300) { response.sendError(HttpServletResponse.SC_FORBIDDEN, Direct access forbidden: signature expired); return; } } catch (Exception e) { response.sendError(HttpServletResponse.SC_FORBIDDEN, Direct access forbidden: invalid signature); return; } filterChain.doFilter(request, response); } }实操心得JWT密钥必须严格保密切勿硬编码。我们采用Spring Cloud Config Server Vault集成方案密钥在服务启动时动态拉取。另外时间戳校验是防重放的关键——没有它攻击者截获一次合法签名即可无限次重放。我们实测发现若不加时间戳校验压测工具JMeter只需录制一次网关请求修改Header后反复发送即可绕过所有防护。3.3 运维层Prometheus指标驱动的实时告警在订单服务的application.yml中启用Actuator端点并暴露指标management: endpoints: web: exposure: include: health,info,metrics,prometheus endpoint: prometheus: scrape-interval: 15sPrometheus配置文件prometheus.yml中添加抓取任务- job_name: order-service static_configs: - targets: [order-service:8082]关键告警规则alert_rules.ymlgroups: - name: order-service-direct-access-alerts rules: - alert: OrderServiceDirectAccessDetected expr: sum by (instance, job) (rate(http_server_requests_seconds_count{joborder-service, uri!~/actuator.*}[5m])) 0 and on(instance, job) (sum by (instance, job) (rate(http_server_requests_seconds_count{joborder-service, uri~/actuator/health}[5m])) 0) for: 1m labels: severity: critical annotations: summary: Order service direct access detected description: Instance {{ $labels.instance }} received non-health requests without going through gateway这条规则的精妙之处在于它不仅检测是否有非健康检查的请求uri!~/actuator.*还排除了健康检查请求本身rate(.../actuator/health...) 0。因为K8s liveness probe会定期调用/actuator/health若不加此条件告警会频繁误报。我们上线后首次触发告警是因某开发在本地IDEA中调试时误将application-dev.yml的spring.cloud.nacos.discovery.server-addr指向了测试环境Nacos导致本地服务注册到测试集群并被测试网关错误路由——这恰恰证明了告警机制的价值它不仅能发现恶意直连更能暴露配置错误。4. 实操过程与核心环节实现从零搭建可验证的防护体系4.1 环境准备与依赖版本锁定SpringCloud Alibaba 2021版本对依赖版本极其敏感稍有不慎就会出现NoSuchMethodError。我们严格锁定以下组合组件版本说明Spring Boot2.6.132021.0.x系列基线避免2.7.x的WebMvcConfigurationSupport变更Spring Cloud2021.0.5对应Alibaba 2021.0.5.0注意不是2021.1Spring Cloud Alibaba2021.0.5.0官方推荐与Spring Cloud 2021.0.5匹配Nacos Client2.0.4必须≥2.0.3否则Nacos 2.0集群模式下服务发现失败Sentinel1.8.52021.0.5.0默认集成避免手动降级Maven父POM中声明properties spring-boot.version2.6.13/spring-boot.version spring-cloud.version2021.0.5/spring-cloud.version spring-cloud-alibaba.version2021.0.5.0/spring-cloud-alibaba.version /properties dependencyManagement dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-dependencies/artifactId version${spring-boot.version}/version typepom/type scopeimport/scope /dependency dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring-cloud.version}/version typepom/type scopeimport/scope /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement提示务必删除spring-cloud-starter-alibaba-nacos-discovery的显式版本声明否则Maven会覆盖BOM中的版本导致Nacos客户端降级到1.x引发NoClassDefFoundError: com/alibaba/nacos/api/naming/NamingMaintainService。我们曾因此排查了两天最终发现是某子模块pom.xml中多写了一行version2.2.9.RELEASE/version。4.2 网关服务注入签名Header并配置路由网关application.yml核心配置spring: cloud: gateway: routes: - id: order-service-route uri: lb://order-service predicates: - Path/api/order/** filters: - StripPrefix1 - name: RequestRateLimiter args: redis-rate-limiter.replenishRate: 100 redis-rate-limiter.burstCapacity: 200 globalcors: cors-configurations: [/**]: allowed-origins: https://www.yourdomain.com allowed-methods: GET,POST,PUT,DELETE,PATCH sentinel: filter: enabled: true # 启用Sentinel网关流控 transport: dashboard: sentinel-dashboard-prod:8080 port: 8719 redis: host: redis-prod port: 6379 database: 0关键点lb://order-service表示通过Nacos负载均衡调用而非直连IP。StripPrefix1确保/api/order/create转发到后端时变为/order/create与后端Controller路径匹配。我们曾因忘记配置StripPrefix导致后端收到/api/order/create请求而Controller只监听/order/create返回404浪费大量调试时间。4.3 后端服务注册网关标识并启用防护订单服务application.yml中配置spring: cloud: nacos: discovery: server-addr: nacos-prod:8848 # 关键注册时携带网关标识供运维层审计 metadata: gateway-verified: true sentinel: transport: dashboard: sentinel-dashboard-prod:8080 port: 8719 datasource: ds1: nacos: server-addr: nacos-prod:8848 ># 步骤1直连订单服务应失败 curl -v http://order-service:8082/api/order/test # 返回HTTP/1.1 403 Forbidden Direct access forbidden # 步骤2通过网关调用应成功 curl -v http://spring-cloud-gateway/api/order/test # 返回HTTP/1.1 200 OK 正常响应体 # 步骤3篡改Header直连应失败 curl -v -H X-Gateway-Verified: fake-signature http://order-service:8082/api/order/test # 返回HTTP/1.1 403 Forbidden invalid signature运维层验证登录Grafana查看OrderServiceDirectAccessDetected告警面板确认无激活状态手动触发一次直连请求观察1分钟内是否出现告警。混沌工程验证使用Chaos Mesh注入网络故障模拟网关Pod宕机验证后端服务是否仍能被直连此时应仍被NetworkPolicy阻挡证明网络层防护独立有效。实操心得验证必须覆盖“正常-异常-边界”三种场景。我们曾遗漏步骤3的篡改Header测试上线后被安全团队渗透测试发现攻击者通过Burp Suite修改Header即可绕过——这直接推动我们升级为JWT签名方案。记住验证不是为了证明能行而是为了证明不能不行。5. 常见问题与排查技巧实录踩过的坑比文档更值钱5.1 典型问题速查表问题现象可能原因排查命令/方法解决方案直连请求仍能访问返回200NetworkPolicy未生效kubectl get networkpolicy -n prod确认策略存在kubectl describe networkpolicy order-service-deny-direct-access -n prod检查事件检查CNI插件是否支持NetworkPolicy确认Pod标签与podSelector完全匹配大小写、连字符网关调用后端返回403Header校验失败JWT密钥不一致在网关和后端服务中分别打印SECRET_KEY.hashCode()确保密钥字符串完全相同包括空格、换行使用String.valueOf(System.getenv(GATEWAY_SECRET))从环境变量读取Prometheus无法抓取指标Actuator端点未暴露curl http://order-service:8082/actuator/metrics检查management.endpoints.web.exposure.include是否包含prometheus确认management.endpoint.prometheus.scrape-interval单位为秒Sentinel控制台看不到后端服务QPSSentinel客户端未初始化curl http://order-service:8082/actuator/sentinel检查spring-cloud-starter-alibaba-sentinel是否引入确认spring.cloud.sentinel.transport.dashboard指向正确地址且网络可达K8s liveness probe失败导致Pod重启/actuator/health被网关Header校验拦截kubectl logs -f order-service-pod查看日志在GatewayVerificationFilter中添加uri.startsWith(/actuator/)判断直接放行所有Actuator端点5.2 独家避坑技巧技巧1用K8s Init Container预检网络策略在订单服务Deployment中添加Init Container启动时自动验证网络隔离initContainers: - name: network-check image: busybox:1.35 command: [sh, -c, until nc -z order-service 8082; do echo Waiting for order-service...; sleep 2; done; echo order-service is NOT accessible (expected); exit 0]如果该容器成功退出说明nc -z order-service 8082返回失败即连接被拒证明NetworkPolicy生效。这是CI/CD流水线中自动化的质量门禁。技巧2网关Header注入的“双保险”时机GlobalFilter的执行顺序很关键。我们曾将GatewayAuthFilter的getOrder()设为-100结果发现某些路由Predicate如Path在Header注入前已执行导致路由失败。正确做法是将getOrder()设为-1最高优先级但确保在NettyWriteResponseFilter之后。通过Order(Ordered.HIGHEST_PRECEDENCE 1)实现既早于路由决策又晚于必要前置处理。技巧3后端服务优雅降级方案当网关因故障无法注入Header时后端服务不能全盘拒绝。我们在GatewayVerificationFilter中加入降级开关// 从Nacos配置中心动态读取 String fallbackMode configService.getConfig(gateway.fallback.mode, prod, 3000); if (open.equals(fallbackMode)) { // 开放模式记录日志但放行 log.warn(Gateway verification bypassed in fallback mode for {}, request.getRequestURL()); } else { // 严格模式执行校验 validateSignature(request); }这样当网关大规模故障时运维可一键切换至开放模式保障业务连续性再逐步修复。技巧4直连请求的“蜜罐”式审计在GatewayVerificationFilter的拒绝分支中不直接返回403而是记录详细上下文log.warn(DIRECT ACCESS ATTEMPT - Method:{}, URI:{}, RemoteAddr:{}, UserAgent:{}, Headers:{}, request.getMethod(), request.getRequestURL(), request.getRemoteAddr(), request.getHeader(User-Agent), Collections.list(request.getHeaderNames()).stream() .collect(Collectors.toMap(h - h, request::getHeader)));这些日志被Filebeat采集到ELK我们创建Kibana仪表盘按RemoteAddr聚合发现某次告警源于一个长期未清理的测试Pod IP——这直接推动我们建立了Pod生命周期自动清理机制。最后分享一个小技巧在团队Wiki中建立《直连访问黑名单》页面每次发现新的绕行方式如某开发用kubectl port-forward映射端口就记录下来并更新防护方案。这个页面已成为我们微服务安全的活文档比任何PDF手册都管用。毕竟攻防对抗的本质就是把对手的每一次尝试变成自己防御体系的一次进化。

相关新闻

Jev-Style-0.8B-Decision-v3-mlx-8bit质量保证揭秘:G5 Parity验证与top-1 100%一致的奥秘

Jev-Style-0.8B-Decision-v3-mlx-8bit质量保证揭秘:G5 Parity验证与top-1 100%一致的奥秘

人工智能大模型本地部署模型量化模型推理服务 【免费下载链接】Jev-Style-0.8B-Decision-v3-mlx-8bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Jev-Style-0.8B-Decision-v3-mlx-8bit 点击查看 免费下载 Jev-Style-0.8B-Decision-v3-mlx-8bit 是…

2026/10/19 7:14:17 阅读更多 →
Go零基础实战第8期:REST API分层

Go零基础实战第8期:REST API分层

文章目录 引言:REST API分层 一、本篇学习目标与准备 二、核心概念与实现思路 1. 一次请求会经过哪些层 2. Handler 层做什么 解析 JSON `DisallowUnknownFields` 限制请求体大小 3. Service 层做什么 4. Repository 接口是什么 5. 依赖注入是什么 6. 为什么用 HTTP 201 7. `e…

2026/10/19 7:14:58 阅读更多 →
带计量证书的频率计数器:射频、微波测试数据可信的基础

带计量证书的频率计数器:射频、微波测试数据可信的基础

摘要:数字频率计数器(射频、微波频率计)是射频微波领域重要的高精度通用计数器,计量证书是保障其量值溯源、数据可信的核心凭证。本文结合国产SYN5636、SYN5637系列设备,讲解计量检定与校准证书的区别、实际应用价值&a…

2026/10/19 7:14:21 阅读更多 →

最新新闻

库卡配商科焊机走Profinet:GSD导入、组态与KRL编程实战

库卡配商科焊机走Profinet:GSD导入、组态与KRL编程实战

简介:这份课程资源面向工业自动化工程师、机器人调试人员及焊接产线集成学习者,聚焦库卡机器人与商科焊机通过Profinet建立通信的配置方法,解决设备互联、GSD文件导入与焊接参数协同等实际问题。资源包共4个文件,压缩后约3.51MB&a…

2026/10/19 17:15:42 阅读更多 →
C#原生调用FFmpeg API实现低延迟RTMP拉流与渲染

C#原生调用FFmpeg API实现低延迟RTMP拉流与渲染

简介:本资源是一份面向C#开发者学习FFmpeg底层API调用的实战型工程示例,重点解决C#生态中FFmpeg原生接口调用资料稀缺的问题。项目完整实现了通过ffmpeg.autogen库拉取RTMP流并本地解码播放的核心流程,代码可直接复用,仅需在C/C风…

2026/10/19 17:15:42 阅读更多 →
科技中介如何以专业性与流程化管理提升转化效率

科技中介如何以专业性与流程化管理提升转化效率

科技中介这个行业很有意思,表面上做的是“对接”,实际上干的是“翻译”和“信任”的活儿。客户带着一句“我要做个系统”,技术团队那边等着对方给一份需求文档,中间隔着天堑。很多科技中介做着做着就变成了纯粹拉皮条——拿到需求…

2026/10/19 17:15:42 阅读更多 →
The Agency实战:用AI专家团队告别平庸回答

The Agency实战:用AI专家团队告别平庸回答

你有没有过这种经历:把一个问题认真丢给AI,等了半天,它给你回了一篇工整、流畅、挑不出毛病的答案,但读完之后你想说的话只有一句——“这也太水了吧。”这种“水”不是错,甚至不是逻辑不通,而是所有句子都…

2026/10/19 17:15:42 阅读更多 →
推理时加载LoRA:动态挂载适配器的工程实践与踩坑指南

推理时加载LoRA:动态挂载适配器的工程实践与踩坑指南

以前我训练完LoRA,习惯直接合并到底座模型上,再保存一份完整的权重文件,推理时按普通模型加载。直到有一次,同一个底座要同时服务“写作文风、代码补全、翻译”三种能力,我才发现这条路子有多笨:为什么要为…

2026/10/19 17:15:42 阅读更多 →
XSS跨站脚本攻击全解析:从漏洞原理到防护实战

XSS跨站脚本攻击全解析:从漏洞原理到防护实战

1. 场景&#xff1a;XSS 最容易藏身的业务角落很多人对 XSS&#xff08;Cross-Site Scripting&#xff0c;跨站脚本攻击&#xff09;的第一印象&#xff0c;还停留在“给输入框塞一段<script>alert(1)</script>&#xff0c;然后页面弹了个框”这种入门演示上。但实…

2026/10/19 17:14:40 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介&#xff1a;本资源为电源技术方向的学术研究文档&#xff0c;聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略&#xff0c;面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集&#xff0c;共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →