自己做的网站怎么绑域名福州交通建设投资集团网站

news/2025/10/8 1:01:42/文章来源:
自己做的网站怎么绑域名,福州交通建设投资集团网站,国外做调查问卷的网站,营养早餐网站的设计与制作导航一、什么是服务网关二、业界常见网关组件三、Spring Cloud Gateway四、Gateway 快速入门4.1 创建 gateway 服务4.2 添加 gateway 依赖和 nacos 依赖4.3 配置路由信息4.4 测试路由转发五、Gateway 执行流程六、Gateway 断言6.1 内置路由断言工厂6.2 自定义路由断言工厂七、G… 导航一、什么是服务网关二、业界常见网关组件三、Spring Cloud Gateway四、Gateway 快速入门4.1 创建 gateway 服务4.2 添加 gateway 依赖和 nacos 依赖4.3 配置路由信息4.4 测试路由转发五、Gateway 执行流程六、Gateway 断言6.1 内置路由断言工厂6.2 自定义路由断言工厂七、Gateway 过滤器7.1 局部过滤器7.1.1 内置局部过滤器7.1.2 自定义局部过滤器7.2 全局过滤器7.2.1 内置全局过滤器7.2.2 自定义全局过滤器八、网关限流8.1 route纬度的网关限流8.2 自定义 API 分组的网关限流8.3 网关流控实现原理8.4 网关流控控制台总结一、什么是服务网关 服务网关也叫 API 网关。 所谓 API 网关就是指系统的统一入口它封装了应用程序的内部结构为客户端提供统一服务一些与业务本身功能无关的公共逻辑可以在这里实现如认证、鉴权、监控、路由转发等等。其本身也是一个可以注册到 Nacos 上的微服务 二、业界常见网关组件 Nginx lua脚本 使用 Nginx 的反向代理和负载均衡可实现对 api 服务器的负载均衡和高可用lua 是一种脚本语言可以用来编写简单的逻辑Nginx 支持 lua 脚本。Kong 基于 Nginx lua 开发性能高、稳定有多个可用插件限流、鉴权等开箱即用。 但支持 http 协议二次开发限制较大缺乏更易用的管控、配置方式。Zuul Netflix 开源的网关功能丰富使用 Java 开发易于二次开发。 但缺乏管控无法动态配置依赖组件多处理 http 请求需要依赖 web 容器性能不如 Nginx。Spring Cloud Gateway Spring 公司为了 替换 Zuul 而开发的网关组件。Spring Cloud 微服务 推荐使用的网关组件。 三、Spring Cloud Gateway Spring Cloud Gateway 是 Spring 公司基于 Spring 5.0 Spring Boot 2.0 和 Project Reactor 等技术开发的网关旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。目标是取代 Netflix Zuul 其不仅提供统一的路由方式并且基于 Filter 链的方式提供网关基本功能例如安全、监控和限流等。 优点 性能强劲是第一代网关 Zuul 的1.6 倍功能强大内置了很多实用功能如转发、监控、限流等设计优雅易扩展 缺点 依赖 Netty 和 WebFlux不是传统的 Servlet 编程模型学习成本高不能将其部署在 Tomcat 、Jetty 等 Servlet 容器中只能打 jar 包执行Spring Boot 2.0 以上才支持 四、Gateway 快速入门 使用 Spring Cloud Gateway 实现最简单的请求路由。 4.1 创建 gateway 服务 首先创建一个全新的 api-gateway 服务。 4.2 添加 gateway 依赖和 nacos 依赖 注意gateway 项目一定不要引入 web-starter 依赖因为 Gateway 本身不是基于 Servlet 实现。 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId /dependency dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-nacos-discovery/artifactId /dependencySlf4j EnableDiscoveryClient SpringBootApplication public class ApiGatewayApplication {public static void main(String[] args) {SpringApplication.run(ApiGatewayApplication.class);log.info(-------------------启动成功--------------------);} }4.3 配置路由信息 先配置一些必须元素如端口号网关微服务的服务名称以及 nacos 注册地址 server:port: 7000 spring:application:name: shop-api-gatewaynacos:discovery:server-addr: localhost:8848然后再配置路由信息 spring:cloud:nacos:discovery:server-addr: localhost:8848 # 企业应用中一般也要把网关服务注册到 nacos 上gateway:discovery:locator:enabled: true # 开启网关服务发现定位器可以令 gateway 从nacos上定位具体的微服务地址routes: # 路由数组路由就是指当请求满足什么样的条件的时候转发到哪台服务器上- id: product_route # 当前路由的标识要求唯一默认UUID# uri: http:// localhost:8081 # 请求最终要被转发的地址uri: lb://service-product # 若使用 nacos 可以写微服务名称lb-loadbalance调用服务order: 1 # 指的是路由的优先级数字小优先级高predicates: # 断言条件判断返回值 boolean转发请求要满足的条件- Path/product-serv/** # 当请求路径满足 Path 指定的规则时此路由信息才会正常转发filters: # 过滤器在请求传递过程中对请求做一些手脚- StripPrefix1 # 在请求转发之前去掉一层路径对于 routes 配置如果想简单配置可直接忽略因为 Spring Cloud Gateway 提供了默认的路由规则用户可以直接在网关ip:port 地址和具体请求路径之间加入微服务名称就可以实现路由转发例如 http://localhost:7000/service-product/product/1但是企业级应用中往往会处于灵活的考虑配置 routes 选项。 4.4 测试路由转发 启动 shop-api-gateway 和 shop-product 微服务测试路由功能 网关服务启动在 7000 端口上服务也成功注册到 Nacos 上 请求网关服务获取商品信息 可以看到网关服务从 Nacos 上获取商品微服务的 ip 信息成功并且路由成功转发并返回了商品信息。 五、Gateway 执行流程 路由route是 gateway 中最基本的组件之一表示一个具体的路由信息载体。主要定义下面几个信息 id 路由标识区别其他 routeuri 路由指向的目的 uri即客户端请求最终转发到的微服务order用于多个 route 之间的排序数值越小匹配的优先级越高predicate 断言的作用是进行条件判断只有断言都返回 true 才能真正的执行路由filter过滤器用于修改请求和响应信息 路由的执行流程 客户端向 Gateway Server 发起请求请求首先被 HttpWebHandlerAdapter 进行提取组装成网关上下文然后网关的上下文会传递到 DispatcherHandler它负责将请求分发给 RoutePredicateHandlerMappingRoutePredicateHandlerMapping 负责路由查找并根据路由断言判断路由是否可用若断言成功由FilteringWebHandler 创建过滤器链并调用请求会依次经过 PreFilter -- 微服务– PostFilter 的方法最终响应回客户端 六、Gateway 断言 Predicate 断言用于进行条件判断只有断言都返回真才会真正的执行路由。 简单的说断言就是用来判断在什么条件下才能进行路由转发。 6.1 内置路由断言工厂 1、 基于 Datetime 类型的断言工厂 此类型断言根据时间做判断主要有三个 AfterRoutePredicateFactory接收一个日期参数判断请求日期是否晚于指定日期 BeforeRoutePredicateFactory接收一个日期参数判断请求日期是否早于指定日期 BetweenRoutePredicateFactory接收两个日期参数判断请求日期是否在指定日期之间 -After2019-12-31T23:59:59.78908:00[Asia/Shanghai] 2、基于远程地址的断言工厂 RemoteAddrRoutePredicateFactory: 接收一个IP 地址判断请求主机地址是否在地址段中 -RemoteAddr192.168.1.1/24 3、基于 Cookie 的断言工厂 CookieRoutePredicateFactory接收两个参数cookie 名字和一个正则表达式判断请求 cookie 是否具有给定名称且值与正则表达式匹配 -Cookiechocolate, ch. 4、基于 Header 的断言工厂 HeaderRoutePredicateFactory 接收两个参数标题名称和正则表达式。判断请求 header 中是否具有给定名称且值与正则表达式匹配。 -HeaderX-Request-Id,\d 5、基于权重的断言工厂 WeightRoutePredicateFactory接收一个[组名, 权重]然后对于同一个组内的路由按照权重转发例如下面的例子中有两个路由规则 weight_route1和weight_route2根据 Weight 的配置信息两个路由位于 同一group3中根据权重按照 1:9 的比例转发请求。 routes: -id:weight_route1 uri:host1 predicates: -Path/product/** -Weightgroup3,1 -id:weight_route2 uri:host2 predicates: -Path/product/** -Weightgroup3,9 6、其他类型的断言工厂 篇幅有限以下是 Gateway 内置的全部断言工厂它们都继承自 AbstractRoutePredicateFactory从命名就可以大体猜出它们的使用场景 HeaderRoutePredicateFactory PathRoutePredicateFactory BeforeRoutePredicateFactory CloudFoundryRouteServiceRoutePredicateFactory QueryRoutePredicateFactory RemoteAddrRoutePredicateFactory MethodRoutePredicateFactory CookieRoutePredicateFactory WeightRoutePredicateFactory AfterRoutePredicateFactory BetweenRoutePredicateFactory HostRoutePredicateFactory ReadBodyPredicateFactory 6.2 自定义路由断言工厂 自定义一个路由断言要求实现只允许年龄在 18 ~ 60 的请求访问。 1、声明一个断言 2、自定义断言工厂 创建一个专用的 predicates 包用于存放各种断言工厂类然后创建 AgeRoutePredicateFactory Component public class AgeRoutePredicateFactory extends AbstractRoutePredicateFactoryAgeRoutePredicateFactory.Config {public AgeRoutePredicateFactory() {super(AgeRoutePredicateFactory.Config.class);}public ListString shortcutFieldOrder() {return Arrays.asList(minAge, maxAge);}public PredicateServerWebExchange apply(AgeRoutePredicateFactory.Config config) {return new PredicateServerWebExchange() {Overridepublic boolean test(ServerWebExchange serverWebExchange) {String ageStr serverWebExchange.getRequest().getQueryParams().getFirst(age);if (!StringUtils.isEmpty(ageStr)) {Integer age Integer.valueOf(ageStr);return age config.getMinAge() age config.getMaxAge();}return false;}};}DataNoArgsConstructorpublic static class Config {private int minAge;private int maxAge;} }代码逻辑基本可以参考已有的 AbstractRoutePredicateFactory 的内置实现类apply 方法是主要返回一个函数接口 Predicate可以使用Lambda表达式 ServerWebExchange 是一个可以从中取出 请求Request 的对象剩下的就是进行 Request 中的各种判断逻辑了上述代码示例中只是简单的从请求中取出 age 属性判断年龄区间是否符合配置条件。 3、测试 启动 nacos将 gateway 和 product 微服务都注册上去然后分别尝试请求 不同的 age 属性 只要在 18 ~ 60 之间的 age 属性都可以请求成功反之则路由拦截说明我们的 断言生效了。 七、Gateway 过滤器 过滤器的作用就是在请求的传递过程中对请求和响应对象做一些手脚。 在 Gateway 中过滤器的生命周期只有两个pre 和 post。 pre这种过滤器在请求被真正转发之前调用可以利用这种过滤器实现身份验证、在集群中选择请求的微服务负载均衡、记录调试信息等。 post这种过滤器在gateway 收到微服务的响应之后执行这种过滤器可用来为响应添加标准的 http header、收集统计信息和指标、将响应从微服务发送到客户端等。 Gateway 的 Filter 从作用范围可分为 GatewayFilter 和 GlobalFilter。 GatewayFilter 应用到单个路由或一个分组的路由上 GlobalFilter应用到所有路由上 7.1 局部过滤器 7.1.1 内置局部过滤器 过滤器的用法和断言类似所有的内置过滤器名称都遵循 配置 GatewayFilterFactory 这样的格式。 内置局部过滤器有很多都继承自 AbstractGatewayFilterFactory以 SetStatusGatewayFilterFactory 为例演示一下 SetStatus 过滤器的用法。 使用 SetStatus 可以修改响应码 spring:cloud:gateway:routes:- id:uri: ## 其他属性...filters: # 过滤器在请求传递过程中对请求做一些手脚- SetStatus222 # 将响应码改为 2227.1.2 自定义局部过滤器 1、添加一个日志级别过滤器 该过滤器并没有什么实质的意义只是用于演示过滤器的自定义逻辑 spring:cloud:gateway:routes:- id:uri: ## 其他属性...filters: # 过滤器在请求传递过程中对请求做一些手脚- Logtrue,false # LogconsoleLog,cacheLog 开启consoleLog不开启cacheLog2、编写过滤器工厂类 Component public class LogGatewayFilterFactory extends AbstractGatewayFilterFactoryLogGatewayFilterFactory.Config {public LogGatewayFilterFactory() {super(LogGatewayFilterFactory.Config.class);}public ListString shortcutFieldOrder() {return Arrays.asList(consoleLog, cacheLog);}public GatewayFilter apply(LogGatewayFilterFactory.Config config) {return new GatewayFilter() {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {if (config.isConsoleLog()) {System.out.println(consoleLog 开启了);} else if (config.isCacheLog()) {System.out.println(cacheLog 开启了);}// 将过滤器链传递下去return chain.filter(exchange);}};}DataNoArgsConstructorpublic static class Config {private boolean consoleLog;private boolean cacheLog;} }3、测试 请求网关路由接口后台观察日志 7.2 全局过滤器 全局过滤器作用于所有路由无需配置。通过全局过滤器可以实现对权限的统一校验安全性验证等功能。 7.2.1 内置全局过滤器 7.2.2 自定义全局过滤器 自定义全局鉴权过滤器。 如上图所示当客户端第一次访问的时候网关服务会先去授权中心请求登录授权并颁发token凭证然后客户端每次访问微服务的时候就携带 token 进行请求。那么在网关中我们就可以自定义一个全局的鉴权过滤器来完成第一次请求的鉴权工作。 这里简单实现鉴权的逻辑颁发凭证等更细节的内容不做展开。 1、自定义全局过滤器类 Component public class AuthGlobalFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {String token exchange.getRequest().getQueryParams().getFirst(token);if (!StringUtils.equals(admin, token)) {System.out.println(鉴权失败);exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}// 调用 chain.filter 继续向下执行return chain.filter(exchange);}Overridepublic int getOrder() {return 0;} }2、测试鉴权过滤 全局过滤器无需配置自动生效我们写好 AuthGlobalFilter 之后将其注册到 Spring 容器中即可。打开浏览器访问路由接口发现返回结果为 401 若添加 tokenadmin则可以访问成功 八、网关限流 官方文档网关限流 网关是所有请求的公共入口所以可以在网关进行限流本节采用 Sentinel 组件来实现网关限流。Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流网关进行限流。 从 1.6.0 版本开始Sentinel 提供了 Spring Cloud Gateway 的适配模块可以提供两种资源纬度的限流 route 纬度即在Spring 配置文件中配置路由条目资源名为对应的 routeId自定义API纬度用户可以利用 Sentinel 提供的 API 来自定义一些 API 分组 8.1 route纬度的网关限流 1、在服务网关模块加入 sentinel 的网关适配依赖 dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-spring-cloud-gateway-adapter/artifactId/dependency2、编写配置类 基于 Sentinel 的 Gateway 限流是通过其提供的 Filter 来完成的使用时只需要注入对应的 SentinelGatewayFilter 实例以及 SentinelGatewayBlockExceptionHandler 实例即可。 Configuration public class GatewayConfiguration {private final ListViewResolver viewResolvers;private final ServerCodecConfigurer serverCodecConfigurer;public GatewayConfiguration(ObjectProviderListViewResolver viewResolversProvider,ServerCodecConfigurer serverCodecConfigurer) {this.viewResolvers viewResolversProvider.getIfAvailable(Collections::emptyList);this.serverCodecConfigurer serverCodecConfigurer;}BeanOrder(Ordered.HIGHEST_PRECEDENCE)public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() {// Register the block exception handler for Spring Cloud Gateway.return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer);}BeanOrder(Ordered.HIGHEST_PRECEDENCE)public GlobalFilter sentinelGatewayFilter() {return new SentinelGatewayFilter();} } 8.2 自定义 API 分组的网关限流 官方参考文档网关限流 8.3 网关流控实现原理 当通过 GatewayRuleManager 加载网关流控规则GatewayFlowRule时无论是否针对请求属性进行限流Sentinel 底层都会将网关流控规则转化为热点参数规则ParamFlowRule存储在 GatewayRuleManager 中与正常的热点参数规则相隔离。转换时 Sentinel 会根据请求属性配置为网关流控规则设置参数索引idx并同步到生成的热点参数规则中。 外部请求进入 API Gateway 时会经过 Sentinel 实现的 filter其中会依次进行 路由/API 分组匹配、请求属性解析和参数组装。Sentinel 会根据配置的网关流控规则来解析请求属性并依照参数索引顺序组装参数数组最终传入 SphU.entry(res, args) 中。Sentinel API Gateway Adapter Common 模块向 Slot Chain 中添加了一个 GatewayFlowSlot专门用来做网关规则的检查。GatewayFlowSlot 会从 GatewayRuleManager 中提取生成的热点参数规则根据传入的参数依次进行规则检查。若某条规则不针对请求属性则会在参数最后一个位置置入预设的常量达到普通流控的效果。 8.4 网关流控控制台 Sentinel 1.6.3 引入了网关流控控制台的支持用户可以直接在 Sentinel 控制台上查看 API Gateway 实时的 route 和自定义 API 分组监控管理网关规则和 API 分组配置。 在 API Gateway 端用户只需要在原有启动参数的基础上添加如下启动参数即可标记应用为 API Gateway 类型 # 注通过 Spring Cloud Alibaba Sentinel 自动接入的 API Gateway 整合则无需此参数 -Dcsp.sentinel.app.type1添加正确的启动参数并有访问量后我们就可以在 Sentinel 上面看到对应的 API Gateway 了。我们可以查看实时的 route 和自定义 API 分组的监控和调用信息并针对其配置规则 总结 api 服务网关提供统一的服务入口通过路由、断言、过滤器可以实现诸如负载均衡、路由判定、网关限流、鉴权等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿土伯网站做产品推广咋样怎么.做网站

我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:1、直接用export命令:#export PATH$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好&a…

nodejs网站开发实例深圳系统app开发

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 公共云的采用如今持续增长,到今年年底,预计将有83%的企业工作负载都在云平台中。云计算增加的灵活性和…

个人网站名字北京做vr网站

直接回答您的问题:不,您不能将常规属性标记为只读.如果你想设置基本类型(数组除外),那将永远不会改变,你应该使用常量const QWE 666;这对于对象和数组不起作用.我看到两个(让我们说)“解决方案”>使用Getterprivate $qwe;public function getQwe() { return $th…

GCC背后的故事C程序常量变量的地址分配

1.GCC背后的故事 (一)准备工作 我们先打开Ubuntu系统,用mkdir命令创建一个新的文件夹来存放程序文件。然后通过vim命令编写一个简单的c语言程序文件helloworld.c。(二)编译过程 1.预处理 预处理过程的完整流程:字…

RenderWare 会根据摄像机距离选择合适的 LOD。

RenderWare 会根据摄像机距离选择合适的 LOD。1️⃣ 基本概念Atomic(RpAtomic):RenderWare 最小渲染单位,可以理解为一个模型实例。LOD(Level of Detail):根据距离或屏幕占比,选择不同精度的几何体渲染,优化性…

网站快速注册ui设计流程培训网站

Widget widget存储视图的配置信息,没有状态所以是不可变的,每个绘制周期(帧率),widget都不会刷新,而是会被重建。 StatelessWidget和StatefulWidget - - - 怎样判断是需要更新element,还是替换…

LOD 的概念

LOD 的概念1️⃣ LOD 的概念 LOD(Level of Detail,细节等级) 是计算机图形学中常用的一种性能优化技术,其核心思想是:根据物体与摄像机的距离、屏幕占比或视角的重要性,动态选择不同精度的模型或材质,以减少渲染…

网站模板之家免费模板大流量网站 优化

部分网站通过Http头中的User-Agent判断浏览器类型,如果是手机,显示手机版页面内容,如果是普通PC浏览器,显示电脑版网页内容。 因此谷歌Chrome浏览器,可以通过修改User-Agent和页面分辨率模拟手机浏览器访问网页。如iPh…

重庆做腋臭骑士网站做谷歌推广一个月赚10万

本文介绍的是 PointNet 作者的博士论文:3D场景理解中的点云深度学习。从上图可以看到,整个博士论文主要贡献有两块:一是点云深度学习的网络架构(PointNet 和 PointNet);二是在3D场景理解中的应用&#xff0…

龙芯是被gcc正儿八经支持的

截图来自皮卡鱼的Makefile, which应该是从著名的国际象棋引擎Stockfish改过来的:修改最底层的棋盘棋子表示,搜索和NNUE部分不用大改。 AI说:43MB的NNUE文件,其模型规模可能属于轻量级范围(约数百万参数),对应的…

python程序设计课程练习题

前言 这是一份python程序设计课程的练习答案,题目来源于https://www.dotcpp.com/team/2526 各位同学,我想对同学们说的是比起死记硬背代码,老师更希望同学们能锻炼自己的思维逻辑,开发提升智力,切记不要死记硬背代…

世界对象是 RenderWare 场景的核心

世界对象是 RenderWare 场景的核心enderWare 世界(World)模块的 API 声明,主要提供了操作场景世界(RpWorld)、扇区(RpWorldSector)、以及全局/局部光源、材质、模型等的接口。下面帮你梳理它的用途和结构:1️⃣…

北京正规网站建设单价群晖自行安装wordpress

文章目录1. 题目2. 解题1. 题目 描述 给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和。 请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个…

IEEE754浮点格式与解析

0 前言 在完成学校RM嵌入式软件组的作业时遇到了一个问题:将0x00,0x00,0x20,0x40这四个十六进制数据根据一定规则变为浮点数2.5f,我询问AI得知这与IEEE754的浮点数存储规则有关,这篇随笔就来记录一下。 1.IEEE 754简…

国庆 Day3 强基数学

复数、不等式、方程、代数恒等变形……复数 四种基本表示形式:代数、三角、向量(几何法)、指数(基本同三角)。 一个重要公式:\(|z|^2=z\cdot z(共轭)\)。Trick 1:利用 \(-1=i^2\) 进行代数变形。Eg:\(z^2-2z+2…

制作网站公司 英语网站首页目前主要的网络营销方式

文章目录 前言一、设计框图二、GT_module三、PHY_module3.1、PHY_tx模块3.2、PHY_rx_bitsync模块3.3、PHY_rx模块 四、上板测试 前言 有了对64B66B协议的认识以及我们之前设计8B10B自定义PHY的经验,本文开始对64B66B自定义PHY的设计 一、设计框图 二、GT_module …

网站页面布局模板工业互联网平台首先要提高数据的挖掘能力

[vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解 模板引擎: 负责组装数据,以另外一种形式或外观展现数据。 优点: 可维护性(后期改起来方便); 可扩展性&#…

学校建设门户网站的好处营销型网站建设一般要多少钱

常用音频接口:TDM,PDM,I2S,PCM_tdm音频_沙漠的甲壳虫的博客-CSDN博客 I2S/PCM接口及音频codec_音频pcm接口模块设计-CSDN博客 2个TDM8功放调试ing_周龙(AI湖湘学派)的博客-CSDN博客 数字音频接口时序----IIS、TDM、PCM、PDM_td…

wordpress点赞排行榜宁波seo智能优化

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

py网站开发视频教程网站开发文献资料

字典的每个键值对用冒号分割,键值对之间用逗号分隔,所有键值对包括在{}中。d {key1 : value1, key2 : value2 }键必须是唯一的,值可以不唯一。值可以取任何数据类型,但键必须是不可变对象,如字符串,数字或…