尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Spring Cloud 升级篇:GateWay 网关、Config 配置中心与 Bus 总线实践指南
Spring Cloud 玩到第十章这个阶段其实已经不是入门了。前面的注册中心、服务调用、负载均衡、熔断降级这些基础组件都通了之后真正让人头疼的是两件事一是所有微服务的流量入口太散每个服务都要单独管鉴权、限流、跨域二是配置散落在各个服务里改一个参数要逐个改、逐个重启线上环境动一下就提心吊胆。这一章讲的 GateWay、Config、Bus恰好就是冲着这两个痛点去的常被叫做升级篇意思是这套东西不是非有不可但微服务规模一旦上来没有它们架构就撑不住。这次的升级篇适合两类人一类是已经跑通注册中心和服务间调用、准备把系统做得更规范的同学另一类是正在被“改配置要重启三十个服务”折磨的运维和开发。我会把三个组件的原理、配置、实操和踩坑一起讲清楚全程用我实际调试过的配置和场景来说。1. 升级篇的定位为什么把网关、配置、总线放在一起讲先不急着贴配置聊聊这三个组件为什么总被放在一起讲。它们各自解决一个问题但组合起来才是一个完整的升级链路。1.1 这套组合拳解决的核心痛点传统微服务架构很容易出现两个失控场面。第一个场面是流量入口失控。服务A、服务B、服务C都直接暴露给前端权限校验每个服务各写一套IP白名单各配一份限流逻辑也是各写各的。等到对接第三方系统或者做统一安全审计时你会发现根本没法管理只能靠人肉协调这是典型的“没有网关”的病。另一个更隐蔽的问题是前端要记一堆服务地址服务一旦拆分变细客户端那边就先崩了。第二个场面是配置管理失控。假设你有三十个微服务每个服务都有各自的数据库连接、业务开关、线程池参数。这些配置在早期都写在每个服务的配置文件里看起来简洁改起来却跟拆炸弹一样。某个配置项需要调整时你得先记住哪些服务用到了它然后逐个改、逐个发布中间要是漏了一个排查半天还找不到原因。升级篇的核心思路就是用 GateWay 把所有的外部请求收敛到一个统一的入口上用 Config 把散落的配置集中到同一个地方统一管理再用 Bus 把配置变更的消息在微服务之间传播开来。三者首尾相接请求走网关配置管服务总线负责通知配成一套之后日常运维里的很多重复劳动都能消掉。1.2 适合谁看需要什么基础这套东西并不是零基础就能直接学的。动手之前建议已经具备几个基础条件注册中心能正常注册和发现服务微服务之间的 OpenFeign 或 RestTemplate 调用已经跑通对 YAML 配置结构不陌生。如果这些点都还不太熟建议先把前面的章节过一遍再来看升级篇否则网关路由写出来不生效会很难判断是网关配置的问题还是服务注册的问题。另外需要说明的是本文里的示例是基于比较主流的 Spring Cloud 技术栈写法配置的骨架可以直接参考。版本不同会有细节差异比如旧项目用 bootstrap.yml新项目用 spring.config.import我在后面遇到的地方都会专门标注出来。2. 服务网关 GateWay互联网流量的统一入口微服务架构里的网关说直白点就是所有请求的“总闸门”。前端、移动端、第三方系统的所有请求都先打到网关再由网关根据规则转发到后面的具体服务。这样一来鉴权、限流、日志、跨域这些通用逻辑就不需要每个服务各写一套了。2.1 为什么选 GateWay 而不是 Zuul这里有个经典的选型问题也是我经常被问到的。早年的 Spring Cloud 生态里网关默认是 Zuul但它有两代Zuul 1 是基于 Servlet 的阻塞模型换一个请求线程被占用一个在高并发场景下很容易把线程池打满Zuul 2 好一些但 Spring Cloud 集成它的过程相当曲折。GateWay 不一样它基于 Spring WebFlux底层是 Netty走的是非阻塞异步模型性能上更贴合微服务场景。用生活化的话类比Zuul 1 像人工窗口一人办完一个业务才能叫下一位GateWay 则像一个双通道超市收银台扫码、收钱、装袋可以并行处理吞吐量自然上去了。我实际测试过同样的模拟并发场景GateWay 的响应耗时曲线比 Zuul 1 平缓很多。这也是新项目选型的普遍共识除非你维护的是一个老得不能动的项目否则新写网关基本都是 GateWay。2.2 三个核心概念路由、断言、过滤器GateWay 的使用模型可以浓缩成一句话给请求找到匹配的路由通过过滤器链处理后转发到目标服务。三个核心概念正好对应这个过程Route路由一条路由就是一条转发规则包含唯一ID、目标地址和一组断言与过滤器。Predicate断言用来判断请求是否符合这条路由的条件。符合就执行转发不符合就继续匹配下一条。Filter过滤器在请求通过路由前后对请求或响应做处理比如加请求头、改路径、做鉴权。这三个概念在实际配置里的关系需要捋清楚。一条路由至少得有一个断言否则所有请求都会命中它路由顺序就完全乱了。而过滤器是可以叠加的GateWay 内置了很多现成过滤器比如 StripPrefix 用来去掉路径前缀AddRequestHeader 用来往请求头里塞信息也可以自己写一个 GlobalFilter 做全局逻辑。2.3 落地一个路由配置假设我有一个用户服务注册中心里的服务名是 user-service对外的调用路径要求是 /api/user/但实际服务的接口路径是 /user/。网关要做的就是把外部路径去掉 /api 前缀再转发给用户服务。配置如下spring: cloud: gateway: routes: - id: user-service-route uri: lb://user-service predicates: - Path/api/user/** filters: - StripPrefix2这里需要注意几个关键点。uri 我写的是 lb://user-service这个 lb 前缀很关键它表示让网关通过注册中心去发现 user-service 的真实实例地址然后在多个实例之间负载均衡。如果没有这个前缀而是直接写 http://localhost:8080那网关就不会走服务发现相当于把负载均衡绕过去了服务实例一变多就出问题。StripPrefix2 的含义是去掉路径中的前两段。外部请求 /api/user/info前两段是 /api 和 /user去掉后变成 /info正好是用户服务上的实际路径。这里的段数取值要和承载的路径层级严格对齐我曾经遇到过有人配成 StripPrefix1导致请求被转发到 /user/info然后用户服务找不到这个接口排查了半天才意识到是前缀截断得不够。 请求进来之后先经过路由匹配再经过整体过滤链。每条路由内部可以有自己的局部过滤器但像日志、鉴权这类全局逻辑更适合写在全局过滤器里避免每条路由重复定义。2.4 过滤器里最容易翻车的点用过滤器实现全局鉴权是最常见的需求但也是问题最多的地方。最容易翻车的有几个点我都遇到过列出来帮各位避坑。第一写全局过滤器时容易忘记设置执行顺序。GateWay 里多个全局过滤器同时存在时需要实现 Ordered 接口用 getOrder() 决定先后顺序。鉴权过滤器必须排在很前面否则请求都已经往后端转发了你才想起来没校验身份那这个过滤器基本等于摆设。建议 order 值设成一个较小的值负数也行越小优先级越高。第二过滤器里对响应要做统一包装时要特别注意响应对象是否已经被写过。有一次我在过滤器里给响应加统一返回格式结果发现页面返回的是乱码后来定位到是过滤器拿到响应对象后先写了部分内容再交给后端导致响应头里的 Content-Length 对不上。规范的写法是把响应包装成一个装饰类在真正返回之前统一提交。第三跨域过滤器很容易被忽略。微服务接网关之后前端请求的域名变成了网关地址跨域策略如果只在后端服务里配置那浏览器发预检请求时会在网关这一层就被拦下来。更合理的做法是在网关层配置全局 CORS 过滤器各服务内部就不需要再处理跨域了。我见过的一个场景是前端调用接口抛跨域错误开发改了半天后端代码没效果最后发现网关层根本就没开跨域。提示GateWay 底层是 WebFlux如果项目里不小心引入了 spring-boot-starter-web 的 MVC 依赖启动时可能会出现类型冲突导致网关服务起不来。写网关工程时要把依赖范围理清楚。3. 服务配置 Config把散落在各服务的配置收拢起来服务多了以后配置管理是绕不开的坎。Config 组件做的事情很简单单独提供一个配置中心服务把原来每个服务里的配置文件统一托管到一个配置仓库常见的是 Git 仓库也可以用本地目录其他服务启动时从配置中心拉取配置。3.1 配置私有化带来的痛苦配置私有化的痛苦我举个例子。刚接手某套系统时发现每个服务里都有一份 datasource 配置和一份 Redis 配置DBA 通知数据库密码要轮换时我要登录十一台服务器改几十个文件再重新发布全部搞定已经过去了大半天。第二天通知说有一台漏了系统连着数据库报错整个人都是懵的。用 Config 之后数据库连接、Redis、业务开关这些共用配置全部收拢到一个地方一次修改全局生效这才算把配置管理这笔账还回来。3.2 搭建 Config Server 和 ClientConfig Server 本身的工程非常简单创建一个 Spring Boot 项目加上依赖后在启动类上标注开启配置中心的注解即可。SpringBootApplication EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }配置文件里指定配置来源于哪个 Git 仓库spring: application: name: config-server cloud: config: server: git: uri: https://your-git-repo/config-repo default-label: main server: port: 8888这里有个日常叫法容易混淆的点。Config Server 的“配置文件”和“被管理的业务配置”不是一回事。上面的 application.yml 是 Config Server 自身的启动配置而被管理的那些服务配置文件是放在 Git 仓库里的比如 order-service.yml、common.yml。Config Server 负责读取 Git 仓库里的这些文件而业务服务作为 Config Client 去 Config Server 上拉取。业务服务接入时传统写法是在 bootstrap.yml 里配置 Config Server 地址spring: application: name: order-service cloud: config: uri: http://config-server:8888 profile: dev这里 spring.application.name 对应配置仓库里的文件名前缀profile 对应环境标识。比如 order-service.yml 配置了一个自定义参数 order.timeout业务代码里用 Value(${order.timeout}) 就能拿到。需要提醒的是新版 Spring Cloud 已经不建议使用 bootstrap.yml 这种引导机制改为在 application.yml 里通过 spring.config.import 导入配置中心。但老项目短期内还是会遇到 bootstrap 写法的两种都要认识。判断标准很简单项目里有没有 spring-cloud-starter-bootstrap 的依赖有就是旧写法没有就用 spring.config.import。spring: config: import: optional:configserver:http://config-server:8888optional 前缀的意思是即使配置中心暂时连不上服务也能先用本地配置启动这在本地开发调试时很有用。但生产环境我通常不建议加 optional因为配置拉不到还强行启动后面跑起来大概率会出诡异问题不如启动时直接失败早暴露早解决。3.3 配置加密的实操配置集中到一个仓库后新的问题来了数据库密码、密钥这些敏感信息全都明文放在 Git 仓库里了。正常做法是让 Config Server 支持对称加密在 Config Server 的配置里配一个密钥然后需要加密的配置项用密文存储。操作分两步。第一步在 Config Server 加入加密相关能力第二步调用接口生成密文再填入配置仓库。encrypt: key: your-secret-key然后用 POST 请求调用 Config Server 的加密接口curl -X POST http://config-server:8888/encrypt -d plain-password返回一串密文把这串密文以 {cipher} 开头填入 Git 仓库的配置文件里。业务服务拿到配置后Config Server 会自动解密。需要提醒的是encrypt.key 本身也是敏感信息生产环境不要明文写死在配置里可以用环境变量注入。这个点看起来不起眼但确实有人把密钥提交到了同一个仓库里加密等于没做。3.4 动态刷新和它的限制配置集中管理之后最直接的好处是修改全局参数方便了。但这里还有一个隐藏问题Config Client 服务启动时拉取一次配置之后配置仓库再修改运行中的服务不会感知。于是需要引入“刷新”的概念。Spring Cloud 提供了一个刷新机制Config Client 暴露一个/actuator/refresh 端点调用它会重新从配置中心拉取配置并刷新 Spring 上下文里带有 ConfigurationProperties 或 RefreshScope 的 Bean。注意这里有两个关键点一个是 RefreshScope没有标注的 Bean 即使刷新也不会更新另一个是 /actuator/refresh 只刷新当前这个服务实例对于多个实例的服务你得挨个调用。这就是为什么社区里会有那句吐槽“配置是统一了但刷新还是得人肉。”也正是因为刷新这件事本身具备广播需求才引出了 Spring Cloud Bus 存在的意义两者结合起来才是完整的动态配置方案。4. 服务总线 Bus让配置变更消息跑起来Bus 这个组件本质上是一个消息总线。它本身不做业务它的职责是把一条消息通过消息中间件广播给所有订阅的微服务让它们执行相同的动作。4.1 为什么刷新还需要一条总线手动逐个刷新服务实例的痛只有做过的人才知道。一个 order-service 启动了三个实例要刷配置得敲三次 curl。如果一次改了五个服务的配置那就是十几二十个请求。更难受的是你很难保证手速快、路径对敲错一个实例忘了刷新线上行为就会不一致。Bus 解决这个问题的思路非常直接把“调用刷新端点”这个消息发送到消息中间件所有监听在同一个消息通道上的服务实例都会收到通知然后各自执行配置刷新。这样一来几十个服务的配置刷新一条命令就搞定了。4.2 引入 Bus 并绑定消息中间件引入 Bus 之后架构发生了变化。Config Server、注册中心、各个业务服务、消息中间件四者之间形成联动。常见形态是配置仓库变更、调用 Config Server 的刷新端点或者直接调用任意一个服务的刷新端点、Bus 把刷新事件发到消息中间件、所有监听该话题的服务收到事件并刷新配置。要搭建这套机制需要做几件事。第一确保消息中间件可用所有服务和 Config Server 都能连上。第二给 Config Server 和各个业务服务引入 Bus 相关依赖。第三在它们的配置里补上消息中间件的连接信息。spring: cloud: bus: enabled: true rabbitmq: host: your-mq-host port: 5672 username: your-username password: your-password依赖引入后前端负责通知的端点是 /actuator/bus-refresh。用 POST 请求调用其中一个服务的这个端点Bus 会把刷新事件发到消息中间件其他服务实例收到后去 Config Server 拉取最新配置。这里有个很容易误解的技术点我需要展开讲一下。Bus 的事件传播路径是“服务实例 → 消息中间件 → 其他服务实例”而不是“Config Server → 其他服务实例”。Config Server 只负责提供配置内容的存储和读取不负责主动推送。很多人以为配了 Config 就能自动刷新其实中间还隔着一层 Bus 的播报。只有 Config 没有 Bus配置是能改但不能自动刷新只有 Bus 没有 Config广播谁去拉取配置就不明确。两个组件配合使用动态刷新链路才算闭合。4.3 三种刷新模式的选择实际操作中刷新配置有以下三种方式我会根据场景选择第一种是逐实例刷新。直接调用某个服务实例的 /actuator/refresh只影响当前实例。这种模式适合灰度验证新配置是否正常先在单个实例上验证再扩散到全量。好处是风险可控缺点是效率低适合配置刚开始改、心里没底的时候。第二种是全部广播刷新。调用任意一个实例的 /actuator/bus-refresh所有监听总线的实例都会刷新。这是日常最常用的方式适合配置变更已经测试过、需要全量生效的场景。第三种是定向刷新。如果只想刷新某一个服务比如只想刷新 order-service不想动 user-service可以带上目标服务的路径调用类似 /actuator/bus-refresh/order-service。这种精确到服务的刷新方式在多服务共享一条总线时非常实用避免一次广播把无关服务的线程池参数也刷了。三种模式分别对应不同的发布场景没有哪一个绝对最好我的习惯是先定向再灰度单个实例最后广播或定向扩散。4.4 总线联调时的常见断点Bus 链路涉及服务、消息中间件、配置中心三方排查起来比普通接口要复杂一点。我遇到过的几个典型问题给各位打打底。第一调用 bus-refresh 没反应也没有报错。最常见的原因是消息中间件的连接配置写在了某个服务的 application.yml 里但引入 Bus 后配置中心优先从远端拉取配置本地配置里的连接信息根本没被真实生效。排查时先去配置中心看有没有可用的 MQ 连接配置而不是盯着本地文件改半天。第二事件被消费了但配置没有变。这个问题多数出在配置没有被 RefreshScope 标注或者业务代码里的配置是静态类加载的。刷新端点只负责触发 Bean 的重新创建如果你的 Bean 生命周期没有被 Spring 容器管理刷多少次都不管用。第三总线端点返回 401。这是安全配置拦截了总线相关的 actuator 端点。Bus 刷新端点是 POST 请求如果项目里接了安全框架需要在配置里把这个端点放开否则服务端直接拒绝。提示Bus 依赖消息中间件如果消息中间件出现抖动Bus 刷新的消息可能会晚到甚至丢失。不过 Config 刷新跟普通消息不太一样服务重启后还会重新拉取配置所以短时间的消息延迟不太会造成数据不一致但依赖 Bus 做配置发布时还是要盯一下消息中间件的健康状态。5. 把它们串起来一次完整的配置变更发布演练讲了这么多原理和单点配置很多同学应该已经等着一套完整的“发布流程演示”了。下面我用一个真实常见的场景把 GateWay、Config、Bus 串起来完整走一遍。5.1 目标架构与请求链路假设我有一个订单中心系统包括 user-service、order-service、gateway-service、config-server还接了一个消息中间件做总线。业务上需要把订单超时时间从 30 分钟改成 10 分钟并且网关要对某个新接口开通匿名访问。整体请求链路是这样的客户端请求打到 gateway-service网关根据路由断言匹配到 user-service 或 order-service转发前经过全局过滤器做鉴权order-service 启动时从 config-server 拉取配置运行时通过 Bus 监听配置刷新事件config-server 的配置内容放在 Git 仓库里。在这个架构里改配置不再需要登录任何业务服务器只需要改 Git 仓库、触发一次刷新事件剩下的交给链路自己跑完。5.2 实际操作步骤第一步修改配置仓库中的 order-service.ymlorder: timeout: 10同步到 Git 仓库的主分支。第二步调用 Config Server 的监控接口确认配置已可读取curl http://config-server:8888/order-service/dev返回结果里应该能看到 order.timeout 已经是 10。这一步千万不要省它能提前确认配置仓库的拉取链路是否正常如果这里都读不到新值后面刷多少个服务都没用。第三步先做定向刷新只刷新 order-service避免影响其他服务。调用 order-service 某个实例的总线刷新端口curl -X POST http://order-service:8082/actuator/bus-refresh/order-service第四步验证刷新结果。找一个会返回 order.timeout 值的接口连续调用两次观察返回值是否变成 10。如果接口没有直接暴露这个配置可以临时加个调试接口或者看日志里配置加载时的输出。第五步全量确认后再处理网关侧的匿名访问需求。在 gateway-service 的配置里修改路由给目标接口补充一条匹配规则并调整全局过滤器跳过对该路径的鉴权。网关自身的配置如果也走了 Config同样可以用 Bus 一条命令刷新如果网关配置是本地文件改完重启网关即可。5.3 出问题时的排查顺序速查表这套链路跑起来之后问题定位是门手艺。我习惯按“链路从上到下”排查范围逐级缩小效率比瞎猜高很多。现象排查顺序常用检查点配置刷新后没生效Config Server 是否能读到新值 → 服务是否收到刷新事件 → Bean 是否有 RefreshScope配置文件命名、分支、拉取地址总线刷新无反应MQ 连接是否正常 → 是否误用 refresh 而不是 bus-refresh → 服务是否引入总线依赖连接配置、依赖、端点路径网关路由 404注册中心里服务是否存在 → GateWay 断言是否精确 → StripPrefix 段数服务注册、路由断言、前缀截断服务重启后配置是旧的Git 仓库默认分支是否正确 → Config Client 是否从正确环境拉取default-label、profile这张表基本覆盖了我日常缠斗最多的问题。每次看到“刷新没生效”这种话术我第一反应不是去服务里打日志而是先把 Config Server 的读值验证做掉这一招能过滤掉大量的配置仓库问题。如果已经按这个顺序排查完还是找不到原因我会再检查一个隐蔽点服务实例是否真的注册在了正确的注册中心命名空间下。总线事件是按服务名广播的注册中心的 namespace 或者服务名跟前缀对不上bus-refresh/order-service 这种定向刷新就不会命中任何实例。6. 升级路上的经验沉淀与避坑清单文章最后这部分我不打算再重复讲配置细节而是把这些年实施 GateWay、Config、Bus 升级时攒下来的几条思考做个沉淀。这些经验不一定写在哪本官方文档里但在真实项目里遇到过太多次了。6.1 我在多次升级中总结的几条原则第一配置变更永远遵循“单实例验证 → 定向刷新 → 全量广播”的顺序。我见过有人图省事改完配置直接一条 bus-refresh 广播出去结果有个服务因为配置从字符串变成了数字消费方直接启动失败网上系统瞬间告警。升级篇教你的不只是怎么用工具更重要的是怎么控制风险面。第二网关的断言规则宁可写细一点也不要图省事写宽。Path/api/user/** 这种精确匹配比直板地写 Path/** 靠谱得多。路由写宽了之后新加的服务很容易被旧路由截胡请求转发到了错误的服务日志还看不出明显异常这种问题最难查。第三配置中心里的敏感信息必须加密。不用我多说配置一集中所有密码一起暴露风险面是集中放大的。加密配置不要写死在配置文件里用环境变量注入密钥这份谨慎能帮你躲过很多安全事故。第四总线事件依赖消息中间件消息中间件的可用性必须纳入监控。总线虽然只管配置刷新真出故障时影响面却是全链路的。建议把消息中间件的连接状态、队列堆积情况一起接进监控大盘。6.2 最后一个实用小技巧最后分享一个小技巧网关的路由配置变化其实不一定要重启网关。如果网关自身也接入了 Config 和 Bus修改路由配置并广播刷新时GateWay 会自动重载路由定义。这个特性我用了很久改动路由不需要发布网关应用发布窗口压缩到了秒级。但这里有一个坑必须提醒路由配置频繁变更会让网关的路由信息版本飘忽不定建议把路由定义和业务参数分文件管理路由文件提交变更时保留 Git 历史方便快速回滚。我的习惯是每次路由变更都带上清晰的 commit message比如“add anonymous path for user-info”回滚时直接看历史记录点过去就行。这套习惯配合 Bus 的定向刷新实际用起来是非常顺手的。升级篇这三个组件单个看都是工具连起来才是一套完整的治理方案。网关管住入口配置管住状态总线管住变更传播再加上注册中心、服务调用和监控一套微服务的骨架才算真正立了起来。希望这篇内容能帮你少踩几个我当年蹚过的坑升级路上更稳一点。
RELATED

相关推荐

Win10远程桌面连不上Server 2016?CredSSP加密Oracle修正解决指南

Win10远程桌面连不上Server 2016?CredSSP加密Oracle修正解决指南

简介:这份PDF资料聚焦Windows 10远程桌面连接中常见的CredSSP加密Oracle修正报错,面向运维人员、系统管理员及遇到RDP连接失败的普通用户。内容围绕微软2018年修复CVE-2018-0886漏洞后引发的“身份验证错误,远程计算机要求的函数不受支持”问…

📅 2026/10/16 15:05:25
基于airllm的分层推理:8GB显存跑13B大模型的工程实践

基于airllm的分层推理:8GB显存跑13B大模型的工程实践

先问一句:你手头是不是也有一张显存“刚好不够用”的显卡?我最近在折腾本地跑 LLM,手里的卡就只有 8GB 显存,但想跑的模型光权重就是 13B 甚至 70B 的量级。刚开始满怀期待地把模型文件塞进代码里,结果一执行&#xff…

📅 2026/10/16 15:05:25
PyTorch实战全解析:从动态图原理到模型部署的工程实践

PyTorch实战全解析:从动态图原理到模型部署的工程实践

先说结论:PyTorch 早已不只是“一个深度学习框架”这么简单。它是眼下绝大多数研究项目、工业落地原型、比赛方案、课程作业背后的那套基础设施。无论你是刚接触深度学习的学生,还是已经在业务里踩过不少坑的工程师,围绕 PyTorch 展开的这套工…

📅 2026/10/16 15:05:25
MORE NEWS

更多资讯

📰

CXL 2.0深度解析:内存所有权重构与缓存一致性设计

简介:CXL 2.0协议规范中文版是一份面向数据中心高性能互连设计的技术文档,由开放标准组织CXL联盟推动,并得到Intel、AMD、NVIDIA、IBM等厂商支持,可供处理器/加速器架构师、FPGA开发者及从事内存扩展和缓存一致性研究的工程师参考…

📰

云Stack方案深度拆解:政企本地化部署的架构设计与落地实践

简介:这是华为云计算HCIE-Cloud Computing V3.0认证对应的官方培训教材,面向备考HCIE云计算方向的工程师、运维人员与解决方案架构师,内容以华为云Stack解决方案为主线,串联云计算发展背景、政企数字化转型关键需求以及基础设施云…

📰

深度聚类:无监督视觉特征学习的原理与工业实践

1. 这不是“聚类”,而是让机器自己学会“看懂图像”的底层能力重构你有没有试过把一堆没标签的手机照片扔给电脑,让它自动分出“家人合影”“旅行风景”“工作截图”“美食特写”?传统做法得先人工打上几百个标签,再喂给模型训练—…

📰

企业级LLM大模型落地实战:从微调对齐到生产安全

简介:这是一份面向AI工程师、机器学习工程师、数据科学家及科研人员的《企业级生成式人工智能LLM大模型技术、算法及案例实战》PDF电子书。内容以2024年7月线上高级实训班为骨架,系统覆盖Generative AI原理本质、工业级Prompting、Llama 2/3模型深度解密…

📰

飞机性能计算Matlab代码:从飞行数据反解气动系数实现

简介:这是一份由Jon Borman在长期学术与职业实践中整理的开源编码样本合集,内容涵盖飞机性能计算、空气动力学、数据处理等方向,适合航空工程学习者、CFD初学者以及Matlab、Fortran、Python开发者参考。压缩包共包含59个文件,整体…

📰

NeRF-SLAM复现指南:从Droid-SLAM追踪到Instant-NGP稠密建图

简介:这份文档面向希望深入理解或复现NeRF-SLAM的研究者与工程实践者,聚焦神经辐射场与SLAM结合的三维重建方案。内容围绕Tracking与Mapping两大阶段展开:Tracking部分讲解基于Droid SLAM与RAFT光流估计的稠密单目SLAM框架,剖析DB…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬