当前位置: 首页 > news >正文

Spring Cloud——路由网关Zuul

???

哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!???

一心同学】的写作风格:喜欢用【通俗易懂】的文笔去讲解每一个知识点,而不喜欢用【高大上】的官方陈述。

一心同学】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。

如果有对【后端技术】感兴趣的【小可爱】,欢迎关注一心同学】???

感谢各位大可爱小可爱!


目录

一、什么是网关?

二、什么是Zuul?

三、Zuul 能做什么?

四、Zuul和Eureka整合

五、搭建Zuul

5.1? 建立Maven父工程

5.2 建立子工程

5.3? 配置服务中心 springcloud-eureka-7001

5.4? 配置服务生产方springcloud-provider-blog-8001

5.5? 配置路由网关springcloud-zuul

5.6? 测试

小结


一、什么是网关?

网关是一个网络整体系统中的前置门户入口,请求首先通过网关,进行路径的路由,定位到具体的服务节点上。

二、什么是Zuul

(1)Zuul是一个微服务网关,也是会在Eureka注册中心中进行服务的注册和发现,请求应该通过Zull来进行路由。

(2)Zuul网关不是必要的,是推荐使用的,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。

(3)Zuul包含了对请求的路由和过滤两个最主要功能:

  • 路由功能:负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。
  • 过滤器功能:负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。

三、Zuul 能做什么?

Zuul可以通过加载动态过滤机制,从而实现以下各项功能:

(1)验证与安全保障: 识别面向各类资源的验证要求并拒绝那些与要求不符的请求。

(2)审查与监控: 在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。

(3)动态路由: 以动态方式根据需要将请求路由至不同后端集群处。

(4)压力测试: 逐渐增加指向集群的负载流量,从而计算性能水平。

(5)负载分配: 为每一种负载类型分配对应容量,并弃用超出限定值的请求。

(6)静态响应处理: 在边缘位置直接建立部分响应,从而避免其流入内部集群。

(7)多区域弹性: 跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。

除此之外,Netflix公司还利用Zuul的功能通过金丝雀版本实现精确路由与压力测试

四、Zuul和Eureka整合

Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

五、搭建Zuul

5.1 建立Maven父工程

编写pom.xml:

<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>0.2.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--springCloud的依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR12</version><type>pom</type><scope>import</scope></dependency><!--SpringBoot--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.12.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

5.2 建立子工程

注意:同样是Maven

5.3 配置服务中心 springcloud-eureka-7001

(1)建立以下目录

(2)导入依赖

 <!--导包~--><dependencies><!--导入Eureka Server依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.4.6.RELEASE</version></dependency><!--热部署工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>

(3)编写配置文件

application.yml:

server:port: 7001# Eureka配置
eureka:instance:# Eureka服务端的实例名字hostname: localhostclient:# 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)register-with-eureka: false# fetch-registry如果为false,则表示自己为注册中心,客户端的化为 turefetch-registry: false# Eureka监控页面~service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

(4)编写启动类

package com.yixin.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServer_7001 {public static void main(String[] args) {SpringApplication.run(EurekaServer_7001.class, args);}}

5.4 配置服务生产方springcloud-provider-blog-8001

(1)建立以下目录

(2)导入依赖

  <!--导包~--><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server --><!--导入Eureka Server依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.6.RELEASE</version></dependency><!--Spring Boot--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId><version>2.5.2</version></dependency><!--热部署工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>

(3)编写配置类

server:port: 8001spring:application:name: springcloud-provider-blog# Eureka配置:配置服务注册中心地址
eureka:client:service-url:defaultZone: http://localhost:7001/eureka/instance:instance-id: springcloud-provider-dept-8001 #修改Eureka上的默认描述信息

(4)编写BlogController

package com.yixin.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class BlogController {//表示db这个数据库@Value("dbsource")private String dbsource;@GetMapping("/blog/info/{id}")public String getInfo(@PathVariable("id") Integer id){return dbsource+id;}}

(5)编写启动类

package com.yixin.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
public class BlogProvider_8001 {public static void main(String[] args) {SpringApplication.run(BlogProvider_8001.class,args);}}

5.5 配置路由网关springcloud-zuul

(1)建立以下目录

(2)导入依赖

 <dependencies><!--导入zuul依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId><version>1.4.6.RELEASE</version></dependency><!--Eureka--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.6.RELEASE</version></dependency><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>

(3)编写配置类

server:port: 9527spring:application:name: springcloud-zuul-yixineureka:client:service-url:defaultZone: http://localhost:7001/eureka/instance:instance-id: zuul9527.comprefer-ip-address: truezuul:routes:mydept.serviceId: springcloud-provider-blogmydept.path: /myblog/**ignored-services: springcloud-provider-dept # 不能再使用该路径访问# ignored-services: "*" # 隐藏全部的prefix: /yixin #公共的访问前缀

注意:经过我们的路由网关规则配置,

原来访问:http://localhost:9527/springcloud-provider-blog/blog/info/5

配置过后访问:http://localhost:9527/yixin/myblog/blog/info/5

(4)编写启动类

注意:添加注解@EnableZuulProxy开启Zuul。

package com.yixin.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@SpringBootApplication
@EnableZuulProxy  // 开启Zuul
public class ZuulApplication_9527 {public static void main(String[] args) {SpringApplication.run(ZuulApplication_9527.class,args);}}

5.6 测试

依次启动:

a、springcloud-eureka-7001:服务注册中心

b、springcloud-provider-blog-8001:服务生产方

c、springcloud-zuul:路由网关

(1)访问:http://localhost:7001/

出现以下界面,说明成功把我们的两个服务(服务生产方和路由网关)注册进来了。

(2)访问:http://localhost:9527/yixin/myblog/blog/info/6

注意:是9527端口!

我们看到,微服务名称被替换并隐藏,换成了我们自定义的微服务名称myblog,同时加上了前缀yixin,这样就做到了对路由访问的加密处理!

(3)访问:http://localhost:9527/springcloud-provider-blog/blog/info/5

由于我们在配置文件中配置了以下语句,所以这样访问是不允许的。

ignored-services: springcloud-provider-dept # 不能再使用该路径访问

(4)如果我们不配置zuul规则,那么上面的链接是可以正常访问的

application.yml

server:port: 9527spring:application:name: springcloud-zuul-yixineureka:client:service-url:defaultZone: http://localhost:7001/eureka/instance:instance-id: zuul9527.comprefer-ip-address: true

重启spring-zuul

重新访问:http://localhost:9527/springcloud-provider-blog/blog/info/5

至此,测试成功!


小结

以上就是【一心同学】对基于Spring Cloud对其组件【路由网关Zuul】的讲解,我们要记住其两个最核心的功能【路由】和【过滤】,通过对路由网关的处理,可以做到对我们的访问进行【加密处理】!

如果这篇【文章】有帮助到你,希望可以给【一心同学】点个赞??,创作不易,相比官方的陈述,我更喜欢用【**通俗易懂】**的文笔去讲解每一个知识点,如果有对【后端技术】感兴趣的小可爱,也欢迎关注【一心同学】,我将会给你带来巨大的【收获与惊喜】???!

相关文章:

Spring Cloud——路由网关Zuul

??? 哈喽&#xff01;大家好&#xff0c;我是【一心同学】&#xff0c;一位上进心十足的【Java领域博主】&#xff01;??? 【一心同学】的写作风格&#xff1a;喜欢用【通俗易懂】的文笔去讲解每一个知识点&#xff0c;而不喜欢用【高大上】的官方陈述。 【一心同学】博客…...

ShenNiusModularity项目源码学习(14:ShenNius.Infrastructure项目分析)

ShenNius.Infrastructure项目用于定义ShenNius.Admin.Mvc项目和ShenNius.Admin.API项目共用的特性类、数据操作接口实现类、上下文类、通讯类&#xff0c;主要文件的用途如下&#xff1a;   Attributes文件夹保存特性类或过滤器类定义&#xff0c;主要包括&#xff1a;   …...

【博资考4】网安学院-硕转博考试内容

【博资考4】硕转博考试内容 - 网络安全与基础理论 写在最前面一. **21年硕转博面试内容回顾**网络、逆向、操作系统、攻防、漏洞1. **网络安全常见攻击方式及其防范措施**1.1 **DDoS攻击&#xff08;分布式拒绝服务&#xff09;**1.2 **SQL注入攻击**1.3 **XSS攻击&#xff08;…...

web前端初学Angular由浅入深上手开发项目

Angular 是一个功能强大的前端框架&#xff0c;适合构建复杂的企业级应用。作为初学者&#xff0c;通过由浅入深的学习路径&#xff0c;可以快速上手并开发项目。以下是逐步学习 Angular 的指导&#xff1a; 1. 基础知识 (1) 了解 Angular Angular 是什么&#xff1f; Angul…...

5.10 P-Tuning v2:多层级提示编码的微调革新

P-Tuning v2:多层级提示编码的微调革新 一、技术架构解析 #mermaid-svg-4Wy6vkXZi67hY9PZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4Wy6vkXZi67hY9PZ .error-icon{fill:#552222;}#mermaid-svg-4Wy6vkXZi67h…...

RuntimeWarning: invalid value encountered in scalar power在进行标量的幂运算时遇到了无效值

year_profit ((profit / initial_cash) ** (1 / yy) - 1) * 100 RuntimeWarning: invalid value encountered in scalar power 这个警告表示在执行标量幂运算 ((profit / initial_cash) ** (1 / yy) - 1) * 100 时遇到了无效值。常见的引发原因及解决办法如下&#xff1a; ###…...

LabVIEW同步数据采集功能

VI通过使用数据采集&#xff08;DAQ&#xff09;硬件系统&#xff0c;进行多通道同步采集&#xff0c;实时获取模拟信号数据。它利用外部时钟信号触发数据采集&#xff0c;支持连续采样模式&#xff0c;并将采集到的数据实时显示在波形图上&#xff0c;方便用户进行数据监控和分…...

(21)从strerror到strtok:解码C语言字符函数的“生存指南2”

❤个人主页&#xff1a;折枝寄北的博客 ❤专栏位置&#xff1a;简单入手C语言专栏 目录 前言1. 错误信息报告1.1 strerror 2. 字符操作2.1 字符分类函数2.2 字符转换函数 3. 内存操作函数3.1 memcpy3.2 memmove3.2memset3.3 memcmp 感谢您的阅读 前言 当你写下strcpy(dest, s…...

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖&#xff0c;基本上绕不开一个架构“Medallion”&#xff0c; 它使得数据管理更为简单有效。ADB 通过…...

Golang——内存(内存管理、内存逃逸、垃圾回收 (GC) 机制)

大家好&#xff0c;这里是编程Cookbook。本文详细介绍Go内存相关的内容&#xff0c;包括内存管理、内存逃逸、垃圾回收 (GC) 机制的三色标记&#xff0c;写屏障。 文章目录 Go 的内存管理mspan && arenasarenasmspan mcachemcentralmheap内存分配逻辑内存回收逻辑优势内…...

关系型数据库的技术思路

一、网络协议 需要根据TCP协议设计一个客户端和服务器之间的命令响应协议。 1、服务端回复声明 2、客户端发送登录包 3、服务端返回登录结果 4、登录成功后进入命令阶段&#xff0c;否则退出。 二、每个连接用一个线程 服务器为每个客户端连接开启一个线程。 三、需要文件的随机…...

web安全——分析应用程序

文章目录 一、确定用户输入入口点二、确定服务端技术三、解析受攻击面 一、确定用户输入入口点 在检查枚举应用程序功能时生成的HTTP请求的过程中&#xff0c;用户输入入口点包括&#xff1a; URL文件路径 通常&#xff0c;在查询字符?之前的URL部分并不视为用户输入入口&am…...

数据库事务的基本要素(ACID)

数据库事务的基本要素&#xff08;ACID&#xff09; 在数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;事务&#xff08;Transaction&#xff09;是一个或多个数据库操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。事务的目标是保证数据的一…...

server.servlet.session.timeout: 12h(HTTP 会话的超时时间为 12 小时)

从你提供的配置文件&#xff08;应该是 Spring Boot 的 application.yml 或 application.properties 文件&#xff09;来看&#xff0c;以下部分与会话超时时间相关&#xff1a; server:servlet:session:timeout: 12h # timeout: 30cookie:name: VENDER_SID会话超时时间的…...

Docker数据卷容器实战

数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据&#xff0c;那么如何实现容器和容器之间的共享数据呢&#xff1f;那就是创建 创建数据卷容器。 命名的容器挂载数据卷&#xff0c;其他容器通过挂载这个&#xff08;父容器&#xff09;实现数据共享&#xff0c;挂载…...

基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南

基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南 基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南 基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南一、注册火山引擎账号二、RAG技术核心原理三、环境与工具准备1. 核心组件2. 依赖配…...

Java内存的堆(堆内、堆外)、栈含义理解笔记

一、核心概念区分 1. 内存中的堆&#xff08;Heap&#xff09;与栈&#xff08;Stack&#xff09; 栈内存 ▸ 用途&#xff1a;存储方法调用、局部变量、基本类型数据&#xff08;如 int a 1&#xff09; ▸ 特点&#xff1a; 线程私有&#xff0c;每个线程独立分配栈空间。…...

2.7 大模型RAG内容安全合规检查-大模型ACP模拟题-真题

单选题 在RAG应用中&#xff0c;输入内容合规检查的正确顺序是&#xff1f; A. 先处理模型生成&#xff0c;后检查用户输入 B. 先检查用户输入&#xff0c;后处理模型生成 ✅ C. 仅检查用户输入 D. 仅检查模型输出 解析&#xff1a;合规流程应优先过滤用户输入风险&#xff0…...

C#从入门到精通(35)—如何防止winform程序因为误操作被关闭

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发的上位机软件运行起来以后,一般在右上角都有一个关闭按钮,正常情况下点击关闭按钮就能关闭软件,但是不排除我们不想关闭软件,但是因为不…...

特斯拉 FSD 算法深度剖析:软件层面全解读

一、引言 特斯拉的 FSD&#xff08;Full Self-Driving&#xff09;系统作为自动驾驶领域的前沿成果&#xff0c;其软件层面的算法设计至关重要。本文将从软件的角度&#xff0c;深入探讨特斯拉 FSD 所采用的算法&#xff0c;包括感知、规划、控制等多个方面&#xff0c;以期为…...

中央一号文件里的三维革命:数字孪生如何重构智慧乡村生态?

2024年中央一号文件提出"建设宜居宜业和美乡村"&#xff0c;这一目标背后离不开数字技术的支撑。在浙江某数字乡村试点&#xff0c;凡拓数创通过三维建模还原整村风貌&#xff0c;路灯能耗、垃圾分类、古建保护等数据在虚拟空间中实时跳动。管理人员坦言&#xff1a;…...

DeepSeek 助力 Vue3 开发:打造丝滑的页眉(Header)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

一个原教旨的多路径 TCP

前面提到过 ECMP 和 TCP 之间的互不友好&#xff0c;pacing 收益和中断开销的互斥&#xff0c;在事实上阻碍了 packet-based LB 的部署&#xff0c;也限制了交换机&#xff0c;服务器的并发性能&#xff0c;同时潜在增加了 bufferbloat 的概率&#xff0c;而适用 packet-based …...

DDD 架构之领域驱动设计【通俗易懂】

文章目录 1. 前言2. MVC 对比 DDD3. DDD 分层架构4. 完整业务流程 1. 前言 官方回答&#xff1a;DDD是一种应对复杂业务系统的设计方法&#xff0c;通过将软件设计与业务领域紧密结合&#xff0c;帮助开发人员构建清晰、可维护的领域模型。在复杂的业务系统中&#xff0c;它能…...

蓝桥杯15届JavaB组6题

一开始用的dfs&#xff0c;但是好像是因为数据量太大&#xff0c;数据错误&#xff0c;而且会超时&#xff0c;然后使用bfs dfs的代码&#xff08;自留&#xff09;&#xff1a; import java.util.*;public class F15 {public static void main(String[] args) {Scanner sc n…...

Python 爬虫与网络安全有什么关系

Python爬虫和网络安全之间存在密切的关系。爬虫是一种用于自动化从网络上获取信息的程序&#xff0c;而网络安全是保护计算机网络和系统免受未经授权的访问、攻击和数据泄露的实践。本文将探讨Python爬虫与网络安全之间的关系以及如何在爬虫开发中注意网络安全。 爬虫的作用和…...

如何判断数据是否使用AES加密以及如何使用AES解密

在现代软件开发中&#xff0c;数据加密是保护敏感信息的重要手段。AES&#xff08;Advanced Encryption Standard&#xff09;是一种广泛使用的对称加密算法&#xff0c;因其安全性和高效性而被广泛应用。本文将介绍如何判断数据是否使用AES加密&#xff0c;并详细讲解如何使用…...

C++ Primer 泛型算法结构

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

java给钉钉邮箱发送邮件

1.开通POP和IMAP 2.引入pom <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version> </dependency>3.逻辑 String host "smtp.qiye.aliyun.com"; String port "…...

交安ABC-公路水运工程企业安全员ABC如何报名?报名要哪些条件?

交安ABC的报名方式及报名条件如下&#xff1a; 报名方式 1. 企业注册&#xff1a;企业要进入交通运输部公路水运工程施工主要负责人和安全生产管理人员信息管理系统&#xff0c;注册企业账户&#xff0c;提交企业相关信息&#xff0c;填写企业资料。 2. 发送审核&#xff…...

软件测试丨Docker与虚拟机架构对比分析

Docker 与虚拟机&#xff08;VM&#xff09;在架构上有显著区别&#xff0c;主要体现在资源利用、性能、隔离性和启动时间等方面。以下是两者的主要架构区别&#xff1a; 1. 架构层次 Docker: 主机操作系统&#xff1a;Docker 直接运行在宿主机的操作系统上。Docker 引擎&…...

Gatling介绍

Gatling&#xff1a;基于Scala的高性能负载测试工具 一、Gatling 简介 Gatling 是一个开源的 HTTP 压力测试工具&#xff0c;专为高并发场景设计&#xff0c;支持 HTTP/HTTPS、WebSocket、Kafka 等协议。其基于 Scala 的脚本语法简洁高效&#xff0c;支持实时报告生成和分布式…...

Shot Studio for macOS 发布 1.0.2

Shot Studio 是一个 macOS 的 app&#xff0c;专门为开发者设计&#xff0c;主要用于各大 app 应用商店的预览图设计。 提供了非常多的模板&#xff0c;也预设了很多尺寸。可以直接一键使用 在 1.0.2 这个版本中新增了&#xff1a; 文本渐变 图层&#xff1a;边框、颜色、圆…...

基于Spring Boot的乡村养老服务管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Harbor服务需要crt证书,而下载是nginx的证书pem,应该怎么处理

1. 明确文件用途 shgbitai.com.key&#xff1a;SSL 私钥文件&#xff08;与 Apache/Nginx 通用&#xff09;。shgbitai.com.pem&#xff1a;已合并的证书文件&#xff08;通常包含域名证书 中间证书链&#xff09;。 Nginx 的证书通常以 .pem 或 .crt 为后缀&#xff0c;而 …...

Hadoop第一课(配置linux系统)

1、让hadoop用户&#xff0c;有root权限&#xff0c;如果可以不输密码更好&#xff1a; (1)先登入root用户 (2)visudo命令进入配置文件 (3)找到 root ALL(ALL) ALL这一行&#xff0c;在该行下面增加:hadoop ALL(ALL) ALL &#xff08;&#xff1a;set nu可以显示行号&#xff…...

Java+Vue+uniapp微信小程序校园自助打印系统(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当今时代&#xff0c;网络与科学技术正以前所未有的速度迅猛发展&#xff0c;这股强大…...

QT 中的元对象系统(二):元对象实现原理QMetaObject

目录 1.元对象系统的构成 2.QObject和QMetaObject的关系 3.Qt 元对象模型QMetaObject 3.1.基本信息 3.2.类信息classinfo 3.3.类构造函数constructor 3.4.枚举信息 enumerator 3.5.类方法method 3.6.类属性peoproty 4.MOS(Meta Object System)示例 5.总结 1.元对象系…...

C++:指针函数与函数指针

文章目录 概述什么是指针函数&#xff08;Pointer Function&#xff09;什么是函数指针&#xff08;Function Pointer&#xff09;总结&#xff1a; 概述 什么是指针函数&#xff08;Pointer Function&#xff09; 指针函数是指返回类型为指针的函数。即&#xff0c;函数返回…...

用HTML5+CSS+JavaScript实现新奇挂钟动画

用HTML5+CSS+JavaScript实现新奇挂钟动画 引言 在技术博客中,如何吸引粉丝并保持他们的关注?除了干货内容,独特的视觉效果也是关键。今天,我们将通过HTML5、CSS和JavaScript实现一个新奇挂钟动画,并将其嵌入到你的网站中。这个动画不仅能让你的网站脱颖而出,还能展示你的…...

【MySQL篇】表的操作

1&#xff0c;创建表 语法&#xff1a; create table ( field1 datatype, field2 datatype, field3 datatype )charset 字符集 collate 校验规则 engine 存储引擎; 说明&#xff1a; field表示列名datatype表示列的类型charset字符集&#xff0c;如果没有指明&#xff0c;则…...

CCF-CSP历年真题大全附题解python

2023012的真题 202312-1 仓库规划 5415. 仓库规划 - AcWing题库高质量的算法题库https://www.acwing.com/problem/content/5418/ 解题思路&#xff1a; 其实就是对比&#xff08;x.y,z.....&#xff09;需要找到一个每个元素都大于这个坐标得坐标&#xff0c;本题可以直接…...

Mysql——约束与多表查询

一、约束 1.1定义 约束是对表中的数据进行限制的一套规则&#xff0c;用于防止用户向数据库中输入无效数据。它可以保证表中的数据满足特定业务规则和逻辑&#xff0c;从而维护数据的准确性和可靠性。 1.2作用 数据完整性 &#xff1a;约束可以确保数据在插入、更新或删除时符…...

如何看待 Kaiming He 最新提出的 Fractal Generative Models ?

何恺明团队提出的分形生成模型(Fractal Generative Models) 引发了广泛关注,其核心思想是通过递归调用生成模型模块构建自相似结构,类似数学中的分形概念(如雪花结构),从而高效生成高分辨率数据(如图像)。 Fractal Generative Models即分形生成模型,是一种新型的生成…...

【大模型系列篇】如何解决DeepSeek-R1结构化输出问题,使用PydanticAl和DeepSeek构建结构化Agent

今日号外&#xff1a;&#x1f525;&#x1f525;&#x1f525; DeepSeek开源周&#xff1a;炸场&#xff01;DeepSeek开源FlashMLA&#xff0c;提升GPU效率 下面我们开始今天的主题&#xff0c;deepseek官方明确表示deepseek-r1目前不支持json输出/function call&#xff0c;可…...

Metal 学习笔记五:3D变换

在上一章中&#xff0c;您通过在 vertex 函数中计算position&#xff0c;来平移顶点和在屏幕上移动对象。但是&#xff0c;在 3D 空间中&#xff0c;您还想执行更多操作&#xff0c;例如旋转和缩放对象。您还需要一个场景内摄像机&#xff0c;以便您可以在场景中移动。 要移动…...

Android-创建mipmap-anydpi-v26的Logo

利用 Android Studio 自动创建 创建新项目&#xff1a;打开 Android Studio&#xff0c;点击 “Start a new Android Studio project” 创建新项目。在创建项目的过程中&#xff0c;当设置Target SDK Version为 26 或更高版本时&#xff0c;Android Studio 会在项目的res目录下…...

DOM 事件 HTML 标签属性速查手册

以下是一份 DOM 事件 & HTML 标签属性速查手册&#xff0c;涵盖常用场景和示例&#xff0c;助你快速查阅和使用&#xff1a; 一、DOM 事件速查表 1. 鼠标事件 事件名触发时机适用元素示例代码click元素被点击任意可见元素button.addEventListener(click, () > { ... …...

差旅费控平台作用、功能、11款主流产品优劣势对比

本文将对比以下11款主流费控系统&#xff1a;合思、喜报销、泛微费控报销系统、经贝管家、每刻报销、SAP Concur、Expensify、Zoho Expense等。 随着全球化和企业跨地区运营的不断发展&#xff0c;企业差旅管理已逐渐成为许多公司面临的管理挑战之一。从差旅申请到费用报销的全…...

常用的配置文件格式对比(ini,toml,yaml,json,env,settings.py)及应用程序修改自身配置并保留注释

代码与环境配置解耦 git分支的代码应做到“环境无关”&#xff1a;代码本身不硬编码任何环境特定的配置&#xff08;如数据库连接、密钥、API地址&#xff09;&#xff0c;而是通过外部机制动态注入。 配置与代码分离&#xff1a;将配置信息存储在代码库之外&#xff08;如环…...