微服务SpringCloud开弓之Gateway新一代网关「九」

【Gateway】Gateway网关路由有两种配置方式: 文章目录1.yml配置2.编写配置类(代码中注入RouteLocator的Bean) 1.yml配置 spring: application: name: cloud-gateway cloud: gateway: discovery: locator: enabled: true #开启从注册中心动态创建路由的功能,利用微服务名进行路由 routes: - id: payment_routh #paymen 阅读详情

Gateway新一代网关

1、概述简介

在这里插入图片描述

2、我们为什么选择Gateway?

  • 1.netflix不太靠谱,zuul2.0一直跳票,迟迟不发布

  • SpringCloud Gateway具有如下特性

    • 基于Spring Framework 5, Project Reactor和Spring Boot 2.0进行构建;
    • 动态路由:能够匹配任何请求属性;
    • 可以对路由指定Predicate (断言)和Filter (过滤器) ;
    • 集成Hystrix的断路器功能;
    • 集成Spring Cloud服务发现功能;
    • 易于编写的Predicate (断言)和Filter (过滤器) ;
    • 请求限流功能;
    • 支持路径重写。
  • SpringCloud Gateway与Zuul的区别
    在这里插入图片描述

  • Gateway模型

    1、WebFlux是什么

    地址

在这里插入图片描述
在这里插入图片描述

  • 什么是Gateway网关?

    1、Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和Project Reactor等技术。

    2、Gateway旨在提供一种简单而有效的方式来对API进行路由,提供一些强大的过滤器功能,例如:熔断、限流、重试等

    3、SpringCloud Gateway是Spring Cloud的一个全新项目,纡Spring 5.0+ Spring Boot 2.0和Project Reactor等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一 的API路由管理方式。

    4、SpringCloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty

    5、SpringCloud Gateway的目标提供统一的路由方式且基 于Filter链的方式提供了网关基本的功能,例如:安全,监控/指标, 和限流。

  • 官网源码设置

在这里插入图片描述

  • 概括

​ SpringCloud Gateway使用的是Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架

  • 作用

    1、反向代理

    2、鉴权

    3、流量控制

    4、熔断

    5、日志监控

    6、…

  • 微服务架构中网关在哪里
    在这里插入图片描述

2、三大核心概念

  • Route(路由)

    路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如断言为true则匹配该路由

  • Predicate(断言)

    参考的是Java8的java.util.function.Predicate
    开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

  • Filter(过滤)

    指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改.

在这里插入图片描述

3、Gateway工作流程

  • 官网总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 核心逻辑

    路由转发+执行过滤器链

4、入门配置

  • 新建Module

    cloud-gateway-gateway9527

  • POM

    <dependencies>
        <!--gateway-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--eureka client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--引入自定义的api通用包,可使用Payment支付Entity-->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--一般基础配置类-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    

    注意去点配置的依赖

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
  • YML

    server:
      port: 9527
    
    spring:
      application:
        name: cloud-gateway
      cloud:
        gateway:
          routes:
            - id: payment_routh #payment_routh    #路由的ID,没有固定规则但要求唯一,简易配合服务名
              uri: http://localhost:8001         #匹配后提供服务的路由地址
              predicates:
                - Path=/payment/get/**          #断言,路径相匹配的进行路由
    
            - id: payment_routh2 #payment_routh   #路由的ID,没有固定规则但要求唯一,简易配合服务名
              uri: http://localhost:8001          #匹配后提供服务的路由地址
              predicates:
                - Path=/payment/lb/**             #断言,路径相匹配的进行路由
    
    
    eureka:
      instance:
        hostname: cloud-gateway-service
      client:
        fetch-registry: true
        register-with-eureka: true
        service-url:
          #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
          #      defaultZone: http://eureka7002.com:7002/eureka/
          #      单机版eureka
            defaultZone: http://eureka7001.com:7001/eureka/
    
  • 主启动类

    @SpringBootApplication
    @EnableEurekaClient
    public class GatewayMain9527 {
        public static void main(String[] args) {
            SpringApplication.run(GatewayMain9527.class,args);
        }
    }
    
  • 9527网关如何做路由映射呢???

    1、cloud-provider-payment8001看看controller的访问地址

    http://localhost:8001/payment/get/31

    http://localhost:8001/payment/lb

​ 2、我们目前不想暴露8001端口,希望在8001外面套一层9527

  • 配置yaml网关

    如上图yml配置所示;

  • 测试

    1、启动7001

    2、启动8001 cloud-provider-payment8001

    3、启动9527

    访问说明
    在这里插入图片描述

    添加网关前

    http://localhost:8001/payment/get/31

    添加网关后

    http://localhost:9527/payment/get/31

  • Gateway网关路由有两种配置方式:

    1、如上图yml配置文件

    2、代码中注入RouteLocator的Bean

    • 官网案例
      在这里插入图片描述

    • 个人案例

      • 通过9527网关访问到外网的百度新闻网址

      • 编码cloud-gateway-gateway9527

      • 增加配置类

      @Configuration
      public class GateWayConfig {
      
          @Bean
          public RouteLocator customRouteLocator(RouteLocatorBuilder routeLocatorBuilder) {
      
              RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
              routes.route("path_route_atguigu",
                      r -> r.path("/guoji")
                              .uri("https://news.baidu.com/guoji"))
                      .route("path_route_atguigu1",
                              r -> r.path("/guonei")
                                      .uri("https://news.baidu.com/guonei")).build();
              return routes.build();
          }
      }
      
      • 测试

在这里插入图片描述
在这里插入图片描述

5、通过服务名实现动态

默认情况下Gatway会根据注册中心注册的服务列表, 以注册中心上微服务名为路径创建动态路由进行转发,从而实现动态路由的功能

  • 启动:

    一个eureka7001+两个服务提供者8001/8002

  • POM

     <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
  • yml

在这里插入图片描述

需要注意的是uri的协议lb,表示启用Gateway的负载均衡功能.

lb://serverName是spring cloud gatway在微服务中自动为我们创建的负载均衡uri

  • 测试

    http://localhost:9527/payment/lb

在这里插入图片描述

在这里插入图片描述

6、Predicate

  • 是什么

在这里插入图片描述

  • 常用的Route Predicate

在这里插入图片描述

1.After Route Predicate

2.Before Route Predicate

3.Between Route Predicate

 public class zoneTime {

    public static void main(String[] args) { 
        ZonedDateTime now = ZonedDateTime.now();
        System.out.println(now);
    }
}

在这里插入图片描述

4.Cookie Route Predicate

  predicates:
            - Path=/payment/lb/**             #断言,路径相匹配的进行路由
            - After=2020-04-15T18:23:00.156+08:00[Asia/Shanghai]
            - Cookie=username,clq

测试
在这里插入图片描述
在这里插入图片描述
5.Header Route Predicate

 - Header=X-Request-Id, \d+ 
 #请求头需要有X-Request-Id属性名,值为整数正则表达式

 - id: payment_routh2 #payment_routh   #路由的ID,没有固定规则但要求唯一,简易配合服务名
          uri: lb://cloud-provider-service
#          uri: http://localhost:8001          #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/lb/**             #断言,路径相匹配的进行路由
#            - After=2020-04-15T18:23:00.156+08:00[Asia/Shanghai]
#            - Cookie=username,clq
            - Header=X-Request-Id, \d+

在这里插入图片描述
6.Host Route Predicate

 predicates:
            - Path=/payment/lb/**             #断言,路径相匹配的进行路由
#            - After=2020-04-15T18:23:00.156+08:00[Asia/Shanghai]
#            - Cookie=username,clq
#            - Header=X-Request-Id, \d+
            - Host=**.atguigu.com

在这里插入图片描述
7.Method Route Predicate

  - id: payment_routh2 #payment_routh   #路由的ID,没有固定规则但要求唯一,简易配合服务名
          uri: lb://cloud-provider-service
#          uri: http://localhost:8001          #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/lb/**             #断言,路径相匹配的进行路由
#            - After=2020-04-15T18:23:00.156+08:00[Asia/Shanghai]
#            - Cookie=username,clq
#            - Header=X-Request-Id, \d+
            - Host=**.atguigu.com
            - Method=GET

8.Path Route Predicate

9.Query Route Predicate

  - Host=**.atguigu.com
            - Method=GET
            - Query=username

10.RemoteAddr Route Predicat

11.Weight Route Predicate

小总结

Predicate就是为了实现一组匹配规则, 让请求过来找到对应的Route进行处理

7、Filter的使用

  • 是什么

在这里插入图片描述

  • Spring Cloud Gateway的filter

    1、生命周期,Only Two

    pre ,post

    2、种类,Only Two

    • GatewayFilter

      https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gatewayfilter-factories

    • GlobalFilter

      https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#global-filters

  • 常用的GatewayFilter

    AddRequestParameter

     - id: payment_routh2 #payment_routh   #路由的ID,没有固定规则但要求唯一,简易配合服务名
              uri: lb://cloud-provider-service
    #          uri: http://localhost:8001          #匹配后提供服务的路由地址
              -filters:
                - AddRequestParameter=X-Request-Id,1024
              
              predicates:
                - Path=/payment/lb/**             #断言,路径相匹配的进行路由
    #            - After=2020-04-15T18:23:00.156+08:00[Asia/Shanghai]
    #            - Cookie=username,clq
    #            - Header=X-Request-Id, \d+
    #            - Host=**.atguigu.com
              - Method=GET,POST
                - Query=username
    
  • 自定义过滤器

    自定义全局GlobalFilter

    1、两个主要接口介绍

    implments GlobalFilter,OrderId

    2、作用

    • 全局日志记录

    • 统一网关鉴权

    3、案例代码

    • 代码

      @Component
      @Slf4j
      @Order(0)
      public class MyLogGateWayFilter  implements GlobalFilter{
      
          @Override
          public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
              log.info("**********************come in MyLogGateWayFilter"+new Date());
      
              String uname = exchange.getRequest().getQueryParams().getFirst("uname");
              if(uname==null){
                  log.info("%%%%%%%%%%%%%%%%用户名为null,非法用户");
                  exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
                  return exchange.getResponse().setComplete();
              }
              return  chain.filter(exchange);
      
          }
      
      }
      
    • 测试

      启动

在这里插入图片描述
正确

http://localhost:9527/payment/lb?uname=z3

在这里插入图片描述
错误

地址无法访问
ChatGPT and Claude国内使用站点 这篇博客介绍了不同的AI聊天平台和定价信息,主要对比了ChatGPT和Claude两款产品。文章列出了多个提供聊天服务的AI平台,包括RawChat、ChatGPTPlus、ChatOpens、Wildcard和2233.ai等,并提供了每个平台的网页链接和定价详情。特别关注了Claude平台,介绍了其普通账号与会员账号的不同,以及相关的定价信息。此外,还提到了一些虚拟卡定价和服务细节,为用户选择合适的AI服务提供了多种参考。 阅读详情

相关推荐

AI办公Agent技术:文档与表格智能处理实践

办公自动化技术正从规则驱动转向语义理解,大语言模型(LLM)为办公Agent赋予了智能决策能力。这类系统通过五层架构整合自然语言处理、工具API调用和任务规划引擎,能自动完成文档分类、表格分析等高重复性工作。关键技术包括基于TF-IDF和BERT的特征提取、Excel公式自动生成等,在财务报告、法律审查等场景可实现90%以上的效率提升。随着多模态能力和领域专业化发展,办公Agent正在重塑企业文档处理流程,成为数字化转型的核心基础设施。

weixin_30263277的博客 519

python注册nacos微服并使用gateway网关

python注册nacos微服并使用gateway网关

m0_45213287的博客 2180

接口调试必看:status显示canceled的3种常见原因及修复方法

本文深度解析了接口调试中status显示canceled的三种核心原因:网络层中断(如请求超时)、应用层逻辑主动取消(如请求竞态、组件卸载)以及用户交互与浏览器行为。文章提供了从诊断到修复的系统性方案,包括分析Network Timing、使用Axios CancelToken、优化请求策略与性能,帮助开发者从根本上解决这一常见问题。

bb456的博客 935

SpringCloud集成Python-web服务

SpringCloud集成Python-web服务 对于springcloud集成python的web服务刚开始也没头绪,于是就翻官方文档,当然官网文档说的是相当笼统,具体链接奉上: 19.Polyglot support with Sidecar ,看19小节即可,看完后就决定自己摸一下喽,没想到可以实现,哈哈。好了不废话了直接说整体,我们公司需求就是讲python的web服务集成到spri...

试验ing 3411

Python | 集合(set)运算之intersection()

简介 在做力扣题的时候,有一个思路是要求解两个字符串的交集。 一般来说,求解交集的思路是遍历两个字符串,判断有无相等,有相等则添加到交集中,直到循环结束。 但是这样做,会增加很多的不必要的遍历:比如说,当一个字符串中有多个相同的元素时,该元素会被遍历多次。 因此,在求解时,我们可以先将字符串转换为set集合类型。集合中存储的元素没有顺序,且互异(即元素不可重复)。 算例 求字符串m“abcdaaa” 与 字符串n“bcddses”是否存在交集 首先将字符串转换为set类型: m = set(m) n

lovetaozibaby的博客 1万+

YOLOv11半监督学习深度解析:基于FixMatch改进的先进目标检测框架

本文探讨了半监督学习与YOLOv11结合的创新方法。针对目标检测中半监督学习面临的伪标签质量不稳定、特征一致性难保证等挑战,研究提出改进版FixMatch框架。通过分析YOLOv11架构特性(如多尺度特征提取、双标签分配策略等)与半监督学习的适配性,设计了三项关键技术改进:空间感知阈值策略、多任务解耦处理和记忆增强机制。该方法在少量标注数据下可实现接近全监督的性能,显著降低工业检测等场景的数据标注成本。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2081

记一次:Python的学习笔记四(Gatway网关配置python服务)

后端整合Java的springcloud中的网关组件和Python项目 一般使用gatway请求地址没有结尾的“/”,urls.py设置路径的时候有“/”所以匹配不上,这里要注意一下。前言:如果我后台是spring cloud,单独一个模块是Python写的服务如何集成进来呢?但是访问还是拒绝了,一开始以为防火墙的问题,后来排查发现是django服务启动设置问题。2.2、启动gatway网关服务-略。Urls.py设置的地址:如下图。

敬业小码哥的博客 1501

OpenHarmony WiFi子系统全解析:从架构到代码实现(大合集)

头文件路径[相对路径][相对路径][相对路径][相对路径]// 网络配置结构 (wifi_device_config.h)// SSID字符串// 预共享密钥// 安全类型// 网络ID// 优先级// 是否隐藏网络// 扫描信息结构 (wifi_scan_info.h)// SSID// BSSID (MAC地址)// 安全类型int rssi;// 信号强度// 频率// 信道宽度// 时间戳// 连接信息结构 (wifi_linked_info.h)

m0_67505153的博客 1057

SpringCloud Gateway报500 Invalid host: lb://xxx

问题 今天SpringCloud整合Gateway,然后在nacos中看到网关对应服务和业务对应服务已经是注册成功的,但是去调用一直报以下错误。 java.lang.IllegalStateException: Invalid host: lb://sandbox_manager at org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter.filter(RouteToRequestUrlFilter.java:86) ~[s

a_lllk的博客 7239

QGis软件 —— 5、QGis增加线,并对线进行绘制、旋转、缩放、移动等基本操作

QGis软件 —— 5、QGis增加线,并对线进行绘制、旋转、缩放、移动等基本操作

8239

利用Dify平台打造大学生专属AI模拟面试助手:从零到精通的完整指南

在这个充满竞争的就业市场中,拥有一个24小时在线的AI面试教练无疑是大学生求职路上的秘密武器。通过本文的指导,你已经掌握了使用Dify平台构建专业级模拟面试助手的全套技能。从环境部署、模型选择,到Prompt设计、知识库集成,再到高级功能开发和效果优化,我们一步步打造了一个能够适应不同岗位、提供专业反馈的智能面试系统。无论是技术岗的算法问答,还是咨询业的案例分析,或是外企的英语面试,你的定制助手都能提供针对性训练。更重要的是,这个方案具有极强的可扩展性。

专注于编程、AI、人工智能等多个领域内容研究和分析 2789

Spring Cloud Gateway 使用

简介 Spring Cloud Gateway 是 Spring Cloud 官方推出的网关框架,网关作为流量入口,在微服务系统中有着十分重要的作用,常用功能包括:鉴权、路由转发、熔断、限流等。 Spring Cloud Gateway 是通过 Spring WebFlux 的 HandlerMapping 做为底层支持来匹配到转发路由,使用时不要引入 SpringMVC,否则初始化时会出错;Sp...

Python小二 1977

openbmc 支持mctp over pcie(三)(支持作为endpoint)

本文介绍了在Intel BHS平台上支持MCTP over PCIe端点开发的调试方法。开发基于CodeConstruct和AspeedTech-BMC的开源项目,将内核驱动改为模块形式以便调试。内容包括DTS配置、驱动模块设置步骤,以及如何将BMC配置为端点设备。调试过程涉及内核模块加载、MCTPD启动、参数设置等关键命令,并展示了路由表、地址和邻居信息的测试结果。该方案仅为实验性工作,需注意停止其他使用/dev/aspeed-mctp0接口的应用。

wit_yuan的专栏 1553

SpringCloud Alibaba 搭建与测试时遇到的小坑

1.在给Nacos微服务配置GateWay路由器时,报:"java.lang.IllegalStateException: Invalid host: lb://nocas_csii_provider" 配置文件: server: port: 4001 spring: application: name: csii_gateway cloud: nacos: discovery: server-addr: 192.168.32.200:8090

qq_36250202的博客 649

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!

最近发现了一个很好的微服务权限解决方案,可以通过认证服务进行统一认证,然后通过网关来统一校验认证和鉴权。此方案为目前最新方案,仅支持Spring Boot 2.2.0、Spring Cl...

macrozheng的专栏 4万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java发送soap报文_Java根据WSDL生成request的SOAP报文模板

importgroovy.xml.MarkupBuilder;importorg.junit.Test;import com.predic8.wsdl.*;importcom.predic8.wstool.creator.RequestTemplateCreator;importcom.predic8.wstool.creator.SOARequestCreator;@Testpublic voi...

weixin_39629269的博客 1349

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SpringCloud——网关 Gateway

| SpringCloud Gateway是Spring Cloud的一个全新项目,基于Spring 5.0+ Spring Boot 2.0和Project Reactor等技术开发的网关,它旨在为 | 微服务架构提供-种简单有效的统- -的API路由管理方式。 SpringCloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上 最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Re

时光·漫步的博客 1257

SpringCloud Gateway网关的路由、断言、过滤配置

Route(路由) 1、构架pom文件,这里面需要将web包去掉,因为Gateway的底层是webflux,而webflux和web是冲突的,只能有一个,需要注意! <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:...

TOP__ONE的博客 3225

添加依赖到本地库

1.导入依赖到本地仓库 mvn install:install-file -DgroupId=com.beagledata.ai -DartifactId=model-predict -Dversion=gd-spark1.6 -Dpackaging=jar -Dfile=ModelPredict-gd-spark1.6.jar cd Desktop 是jar包现在的路径 2.项目添加依赖 (上...

weixin_43812065的博客 559

SpringCloud——中级(二)服务网关Gateway

Gateway新一代网关 一、概述简介 1、官网 上一代zuul 1.X官网 当前的gateway 2、是什么 gateway是原zuul1.x版的替代版 Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。 SpringCloud Gateway使用的Webflux中的reactor-netty响应式编程组件,底层使用了Nett...

qq_41307492的博客 767

SpringCloudGateway路由失效

SpringCloudGateway 整合 nacos 路由失效的问题 报错如下 java.lang.IllegalStateException: Invalid host: lb://mall_admin_service 负载均衡配置的没有问题,对应的服务名称也没有问题,断点跟踪了一下,在这个RouteToRequestUrlFilter类中报错,代码很简单 if ("lb".equal...

小左的博客 8645

Spring Cloud Gateway 简介及使用

Gateway是什么 Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。 特性 基于Spring 5,Reactor(模式) 和 SpringBoot 2.0 能够在任何请求属性上匹配路由 断言和过滤器是特定于路由的 Hystrix断路器集成...

weixin_44100455的博客 1万+

Spring Cloud Gateway服务网关

Spring Cloud Gateway服务网关一、 概述1.1 Gateway是什么1.2 Gateway网关能做什么1.3 我们为什么选择Gatway1.4 SpringCloud Gateway 具有如下特性1.5 SpringCloud Gateway与Zuul的区别1.6 Zuul 1 模型1.7 WebFlux是什么?二、 三大核心概念2.1 Route (路由)2.2 Predicate(断言)2.3 Filter (过滤)2.4 总体三、Gateway 工作流程四、 Spring Clou

志想汇 2996

工作纪实_26-SpringCloud网关代理服务配置负载出现gateway IllegalStateException: Invalid host lb://xxxxx

SpringCloudGateway网关配置: spring: cloud: gateway: #开启基于注册中心的路由表且支持实例名小写 discovery: ## 是否可以通过其他服务的serviceId来转发到具体的服务实例。默认为false locator: enabled: false # 是否支持serviceId小写模式 lower-case-service-id:

~单人舞~的博客 1267

Spring Cloud Gateway:新一代API网关服务

Spring Cloud Gateway 为 SpringBoot 应用提供了API网关支持,具有强大的智能路由与过滤器功能,本文将对其用法进行详细介绍。Gateway ...

macrozheng的专栏 3379

解决No instances available for CLOUD-PAYMENT-SERVICEpayment问题

No instances available for CLOUD-PAYMENT-SERVICEpayment问题 跟着周阳老师学习Spring Cloud,在订单模块通过Eureka服务与注册中心调用支付模块报错No instances available for CLOUD-PAYMENT-SERVICEpayment,显示无法在Eureka中找到支付服务的实例,百度了很多,没有解决,最后发现还是自己粗心了。 payment前面我没有加 / ,导致URL错误无法找到注册到Eureka中的

luoyi-的博客 8571
上一篇: 微服务SpringCloud开弓之Hystrix熔断器「八」
下一篇: 微服务SpringCloud开弓之SpringCloud config分布式配置中心「十」
漂吧
博客等级 码龄8年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值