web服务器 网站部署的架构

WEB服务器工作原理

Web

web是WWW(World Wide Web)的简称,基本原理是:请求(客户端)与响应(服务器端)原理,由遍布在互联网中的Web服务器和安装了Web浏览器的计算机组成

客户端发出请求的方式:地址栏请求、超链接请求、表单请求

Web是一种典型的分布式应用架构,从技术层面上看,Web架构的精华有三处

①使用HTML(Hypertext Markup Language)实现信息文档的表示

②使用URL(Uniform Resource Locator)实现全球信息的精确定位

③使用HTTP(HyperText Transfer Protocol)实现分布式的信息传输

什么是web服务器,应用服务器和web容器?

1. Web 服务器

Web 服务器是一种软件或硬件,旨在处理通过 HTTP 协议传送的请求。它们主要用于存储、处理和响应来自客户端(通常是浏览器)的请求,提供静态内容(如 HTML 文件、图像、CSS 文件等)和基础的动态内容。

  • 功能:接收 HTTP 请求、响应 HTTP 请求、处理静态资源和基础的动态内容等。

2. 应用服务器

应用服务器是一种服务器环境,专门用于运行应用程序并提供一些高级功能,例如业务逻辑处理和动态内容生成。与仅提供静态内容的 Web 服务器不同,应用服务器能够处理复杂的交互、连接后台数据库和管理应用程序状态。

  • 功能:业务逻辑处理、数据库连接、生成动态内容、事务管理等。
  • 示例:Java EE 应用服务器(如 JBoss、GlassFish、WebLogic)、.NET 应用服务器等。

3. Web 容器(Servlet 容器)

Web 容器,也称为 Servlet 容器,是一种运行 Java Servlet 和 JSP(JavaServer Pages)的环境。它管理 Web 应用程序的生命周期,以及处理客户端请求的相关服务。Web 容器属于应用服务器的一部分,但其主要任务是提供 Web 应用的特定功能。

  • 功能:加载和卸载 Web 应用、管理 servlets 生命周期、处理请求和响应、以及支持 JSP 等技术。
  • 示例:Apache Tomcat、Jetty。

工作原理

  1. 客户端请求

    • 用户在浏览器中输入一个 URL,或点击一个链接,浏览器会将该请求发送到指定的 Web 服务器。请求通常是一个 HTTP GET 请求,但也可以是 POST、PUT 或 DELETE 等其他类型的请求。
  2. DNS 解析

    • 请求中的域名需要转化为 IP 地址。DNS(域名系统)会将域名解析为对应的服务器的 IP 地址,帮助浏览器找到 Web 服务器的位置。
  3. 建立连接

    • 一旦浏览器获得了服务器的 IP 地址,它将通过 TCP/IP 协议与 Web 服务器建立连接。这个过程通常使用三次握手来确保连接的可靠性。
  4. 请求处理

    • Web 服务器接收到来自客户端的请求后,会解析请求信息,确定用户请求的资源。
    • Web 服务器会查找请求的文件(如 HTML 文件、图像文件)或者动态内容(如运行一个 PHP 脚本或访问数据库)并处理请求。

在这里插入图片描述

  1. 生成响应

    • 一旦请求被处理,Web 服务器将生成一个 HTTP 响应。该响应包含状态码(如 200 表示成功,404 表示找不到资源等)、响应头和响应体(请求的内容)。
    • 如果请求的是静态文件(如 HTML、CSS、JS 或图像),Web 服务器将直接返回这些文件。
    • 如果请求的是动态内容,Web 服务器可能需要与应用服务器、数据库交互,生成动态内容后再返回给客户端。
  2. 返回响应

    • Web 服务器通过 TCP 连接发送 HTTP 响应回客户端的浏览器。浏览器接收到响应后,会解析并呈现网页内容。
  3. 关闭连接

    • 根据 HTTP 协议的版本(如 HTTP/1.1 支持持久连接,而 HTTP/2 则有更先进的连接管理),浏览器和服务器可以选择保持连接活动或在响应完成后关闭连接。

正向代理(Forward Proxy)

定义:

正向代理是代理服务器位于客户端与目标服务器之间,客户端通过它向目标服务器发送请求,目标服务器无法直接知道请求源于哪个客户端。

功能:

  • 隐藏客户端信息:目标服务器只知道代理服务器的 IP 地址,而不知道客户端的真实 IP 地址。
  • 访问控制:可以用来限制客户端对某些网站或服务的访问,例如在企业或学校环境中。
  • 缓存:代理服务器可以缓存请求的内容,以提高访问速度和减少带宽消耗。
  • 绕过地理限制:允许用户访问被地理限制的网站或服务。

使用场景:

  • 企业内部网络中,控制员工访问外部网站。
  • 在互联网审查严格的地区,用户使用代理获取受限内容。

反向代理(Reverse Proxy)

定义:

反向代理是一种服务器,接收客户端的请求并将其转发到内部的一台或多台服务器。这种情况下,客户端并不知道具体哪个服务器在处理其请求。

功能:

  • 隐藏服务器信息:目标服务器的真实 IP 地址对外部用户是隐藏的。
  • 负载均衡:将客户端请求分配到多台后端服务器,以优化资源利用和提高响应速度。
  • SSL 加密:可以用于处理 SSL/TLS 加密,减轻后端服务器的负担。
  • 安全性:提供额外的安全措施,如防火墙或应用程序防护。

使用场景:

  • Web 应用程序使用反向代理来平衡流量和提高性能。
  • 需要保护私有服务器并防止直接访问。

常见的 Web 服务器软件

1. Apache HTTP Server

  • 概述:Apache 是一款开源的高性能 Web 服务器,已经被广泛使用。它在 Web 服务器市场占据着重要位置,因其灵活性和强大的功能而受到开发者和管理员的青睐。

  • 主要特点

    • 模块化设计:支持多种模块,可以根据需要进行功能扩展(如 SSL、URL 重写、反向代理等)。
    • 丰富的配置选项:允许用户通过配置文件进行深入定制,适应不同的需求。
    • 虚拟主机支持:能够在同一服务器上托管多个网站,通过虚拟主机进行区分。
    • 强大的社区支持:拥有庞大的用户基础和在线文档,易于查找解决方案。
  • 适用场景:适合各种规模的项目,从小型网站到大型企业应用,特别是需要多种功能和高度可定制的环境。

2. Nginx

  • 概述:Nginx 是一个轻量级的高性能 HTTP 服务器和反向代理服务器,以其出色的并发处理能力而闻名。最初是为了解决 C10K 问题(处理千个并发连接)而设计的。

  • 主要特点

    • 事件驱动架构:使用异步非阻塞 I/O 模式,能够同时处理大量的并发请求,节约内存资源。
    • 反向代理和负载均衡:能够将请求转发到后端服务器,进行负载均衡,提高应用的可用性和性能。
    • 高效的静态文件服务:特别擅长处理静态资源,能够快速响应用户请求。
    • 低资源消耗:在处理高并发的情况下,低内存占用使其非常受欢迎。
功能场景解释
  • 1、Http代理,反向代理:

作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
在这里插入图片描述

  • 2、负载均衡

负载均衡的基本概念

  • 请求分发:负载均衡器负责接收用户请求,然后将这些请求分发到后端服务器上,以实现负载均匀分配。
  • 故障检测:负载均衡器可以监控后端服务器的健康状态,确保只有正常工作的服务器处理请求。一旦检测到某台服务器出现问题,负载均衡器会将流量重定向到其他健康服务器。
  • 会话保持:在某些应用场景中,可能需要将来自同一用户的请求始终路由到同一台服务器,负载均衡器可以通过会话保持(又称为会话粘性)来实现这个功能。

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

在这里插入图片描述

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

在这里插入图片描述
nginx 文件结构

...              #全局块
//全局块:配置影响nginx全局的指令。
//一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

events {         #events块
   ...
   //events块:配置影响nginx服务器或与用户的网络连接。
   //有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
}

http      #http块
{
    ...   #http全局块
    //http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
    //如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
    server        #server块
    //配置虚拟主机的相关参数,一个http中可以有多个server。
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        //配置请求的路由,以及各种页面的处理情况。
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
Nginx 的常见用例:
  1. 静态文件服务器:很适合用来服务静态文件,如 HTML、CSS 和 JavaScript。

  2. 反向代理服务器:可用于将请求代理到应用服务器,增强应用的安全性和性能。

  3. 负载均衡:通过将请求分配到多个应用服务器,提升服务的可用性和响应速度。

  4. WebSocket 支持:支持 WebSocket 协议,适合实时应用。

  5. SSL/TLS 终端:可以处理 SSL 加密,减轻应用服务器的负担。

启动和管理 Nginx:
  • 安装:可以通过包管理工具(如 aptyum)安装 Nginx。
  • 启动:使用 nginx 命令启动 Nginx,用 nginx -s reload 命令重新加载配置。
  • 检查状态:使用 nginx -t 命令检查配置文件的语法。

3. Apache Tomcat

  • 概述:Tomcat 是一个开源的 Java Servlet 容器,专门用于运行 Java Web 应用,支持 Java EE 标准中的 Servlets 和 JSP(JavaServer Pages)。

  • 主要特点

    • Java 专属:专为运行 Java 应用而设计,支持标准的 Servlet API 和 JSP 规范。
    • 灵活的部署:允许将 Web 应用以 WAR 文件的形式部署,简化了应用的管理和更新。
    • Web 应用管理:提供管理界面,方便监控和管理部署的应用程序。
    • 与 Java EE 的集成:能够与其他 Java EE 技术(如 Spring、Hibernate 等)良好配合。
  • 适用场景:专门适合 Java 开发的 Web 应用,通常是需要处理复杂逻辑的动态网站。
    在这里插入图片描述
    Tomcat在技术实现上所处的位置如下
    在这里插入图片描述

Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container, 连接器Connector和容器Container是Tomcat的核心。
在这里插入图片描述

一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。

  • 1、Connector组件

Connector组件是Tomcat中的两个核心组件之一,他的主要任务是负责接收浏览器发过来的TCP连接请求,创建1个Request和Response对象分别用于和请求端交换数据。然后会产生一个线程来处理这个请求并把产生Request和Response对象传给处理这个请求的线程,处理这个请求的线程就是Container组件要做的事了。

  • 2、Container组件

Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。

Context 还可以定义在父容器 Host 中,Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

容器类型描述
Engine 容器容器比较简单,只定义了一些基本的关联关系。
Host 容器是 Engine 的子容器,代表一个虚拟主机,用于运行多个应用。它负责安装和展开应用,并标识应用以便区分它们。它的子容器通常是 Context。
Context 容器代表 Servlet 的上下文环境,具备 Servlet 运行的基本条件。它管理 Servlet 实例(以 Wrapper 形式出现)。在 Tomcat 5 以后,通过 request 来分配正确的 Servlet。
Wrapper 容器代表一个 Servlet,负责管理 Servlet 的装载、初始化、执行和资源回收。它是最底层的容器,没有子容器,调用 addChild 会报错。其实现类是 StandardWrapper,它还实现了 ServletConfig,直接与 Servlet 的各种信息打交道。
  • Tomcat目录
    |—bin Tomcat:存放启动和关闭tomcat脚本;
    |—conf Tomcat:存放不同的配置文件(server.xml和web.xml);
    |—doc:存放Tomcat文档;
    |—lib/japser/common:存放Tomcat运行需要的库文件(JARS);
    |—logs:存放Tomcat执行时的LOG文件;
    |—src:存放Tomcat的源代码;
    |—webapps:Tomcat的主要Web发布目录(包括应用程序示例);
    |—work:存放jsp编译后产生的class文件;

  • HTTP请求Tomcat内部处理过程

在这里插入图片描述

  1. 用户点击网页内容,请求被发送到本机端口8080,被在那里监听的 HTTP/1.1 Connector 获得。
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
  3. Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
  4. Engine匹配到名为 localhost 的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
  5. path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
  6. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的 doGet()或doPost().执行业务逻辑、数据存储等程序。
  7. Context把执行完之后的HttpServletResponse对象返回给Host。
  8. Host把HttpServletResponse对象返回给Engine。
  9. Engine把HttpServletResponse对象返回Connector。
  10. Connector把HttpServletResponse对象返回给客户Browser。

Tomcat与Nginx/Apache的应用架构

在这个架构中,Nginx 或 Apache 充当前端的网关,通过反向代理接受所有进入的请求。请求根据类型被智能地路由到不同的处理服务器,这种模式称为动静分离。以下是具体流程:

  1. 接收请求:客户端发起请求,首先到达 Nginx 或 Apache 服务器。

  2. 请求处理

    • 静态请求:例如,请求 CSS、JavaScript、图片等静态资源,这些请求会直接由 Nginx 或 Apache 处理,并返回静态内容。
    • 动态请求:例如,请求访问数据库、用户认证等需要应用逻辑的请求,这些请求会被转发到 Tomcat 服务器。
  3. Tomcat 处理动态逻辑:Tomcat 接收动态请求,执行相应的业务逻辑,并返回处理结果(通常是生成的 HTML 页面或 JSON 数据)。

  4. 最终响应:Nginx 或 Apache 将 Tomcat 的响应返回给客户端。

2. 优点分析
  • 性能优化:静态内容由 Nginx 或 Apache 直接处理,这可以显著减少 Tomcat 的负担,提升整体性能。
  • 高并发处理:Nginx 和 Apache 设计上能够高效处理大量并发请求,而 Tomcat 更适合处理业务逻辑。
  • 安全性:通过反向代理,可以隐藏内部服务器架构,改善安全性。
  • 灵活性:可以根据负载和请求类型调整 Nginx/Apache 和 Tomcat 的配置。

简化的架构图示

                         +---------------+
                         |   Client      |
                         +---------------+
                                 |
                                 |
                         +--------------------+
                         |    Nginx/Apache    |
                         +--------------------+
                         | 静态请求 ||  动态请求 |
                         +--------------------+
                          /                \
                         /                  \
            +----------------+        +----------------+
            | Static Content |        |    Tomcat      |
            | (Nginx/Apache) |        | (Dynamic Logic)|
            +----------------+        +----------------+

网站部署的架构

以主流的B/S架构网站为例,大型网站的部署一般分为几个部分

1、前端部分

2、后端部分

3、云计算部分

4、存储部分与第三方云计算服务部分

1、前端部分

单个前端服务器一般包含2个部分,Web服务器软件、网页资源文件

在这里插入图片描述

Web服务器软件作用是在接收到请求后,在磁盘上找到对应的网页资源文件,并将其发送给请求端

网页资源文件指的是网页的静态资源文件,包括HTML文件、CSS文件、JavaScript文件、图片文件、视频文件等

其中,一部分网页资源文件可能会存在单独的文件服务当中(如上传的头像、视频等)

对于前端服务器集群而言,前面需要增加负载均衡以分发请求

负载均衡可以是自己搭建的服务器(Nginx等)或者是购买云服务

在负载均衡前面需要增加CDN服务(缓存网页资源文件),增加CDN是为了加速网页资源文件的下载速度

2、后端部分

单个后端服务器一般包含2个部分,Web应用服务器软件、后端应用程序

在这里插入图片描述
Web应用服务器软件根据不同的开发语言有所区别,Java的话一般是Tomcat 或者Jetty

其作用是接收到请求后,调用相对应的后端应用程序,并把后端应用程序处理的结果返回请求端

后端应用程序是真正处理请求的程序,java编写的话一般是以.war结尾的文件

后端应用程序在网站系统中处于“司令塔”的位置

会调用很多第三方软件,如数据库、非关系型数据库(如Redis)、消息队列、第三方云计算服务等

而且后端应用程序还会操作共享文件,如上传头像、视频等

对于后端服务器集群而言,前面需要增加负载均衡以分发请求,负载均衡可以与前端服务共用

3、云计算部分

由于没有比较通用且流行的框架,其结构因具体实现方式而异。

在这里插入图片描述

不过云计算部分的工作原理一般是,后端应用程序向消息队列下发任务,云计算服务软件监听消息队列并执行任务

云计算服务集群一般是监听同一个消息队列,以抢占的方式获取任务的,所以不需要考虑分发任务的问题

当然,云计算服务根据具体的功能,也可能会使用第三方软件(如数据库等)或者操作共享文件

4、存储部分与第三方云计算服务部分

存储部分包括数据库、文件服务器、非关系型数据库等

在这里插入图片描述

这些软件都会提供自己的集群方式

第三方云计算服务部分一般是通过API调用的

总体的部署架构如图所示

在这里插入图片描述

补充概念

1. 集群(Cluster)

  • 定义:集群是由多台计算机(服务器)组成的系统,这些计算机通过网络连接并协同工作,通常它们提供相同的功能。集群的目标是提高服务可用性和可扩展性,降低单个服务器的负载。
  • 类型
    • 负载均衡集群:通过将请求分发到不同的服务器来处理大量流量,例如Web服务。
    • 高可用集群:通过冗余配置保证服务的持续可用性,在某个节点发生故障时,其他节点代替其提供服务。

2. 分布式系统(Distributed System)

  • 定义:分布式系统由多个独立的计算机组成,每台计算机负责系统的不同功能。这些计算机通常通过网络进行通信。分布式系统的设计旨在提高系统的可扩展性和容错能力。
  • 优势
    • 专门化:每个服务器可以专注于特定的任务,比如Web服务器、数据库服务器、缓存服务器等。
    • 灵活性:可以根据需要增加或减少服务器,提高资源利用率。

3. Docker

  • 定义:Docker 是基于 Linux 的开源容器化平台,允许开发者将应用和其所有依赖打包到一个标准的、轻量级的容器中。每个容器都是一个隔离的运行环境,但它们共享同一操作系统的内核。
  • 特点
    • 隔离性:容器彼此独立,避免了环境冲突。
    • 可移植性:容器可以在不同的环境中快速部署,确保一致性。
    • 高效性:多个容器可以在同一台物理服务器上运行,资源利用率高。

4. Kubernetes(K8S)

  • 定义:Kubernetes 是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。它可以管理由 Docker 或其他容器技术构建的容器。
  • 功能
    • 自动化部署:K8S 可以根据负载自动部署和销毁容器。
    • 服务发现和负载均衡:自动发现服务,并将流量分配到适当的容器。
    • 自我修复:控制平面监控容器状态,如果某个容器失败,K8S 会自动重启或替换它。

5. 虚拟机(Virtual Machine)

  • 定义:虚拟机是在虚拟化软件(如 VMware、VirtualBox)上运行的计算机,相当于在物理服务器上模拟出多个独立的软件环境(虚拟环境)。每个虚拟机都有自己的操作系统和资源,表现为一台完整的计算机。
  • 特点
    • 资源隔离:每个虚拟机都有自己的操作系统和资源分配,彼此独立。
    • 灵活性:可以在一台物理服务器上运行多个虚拟机,各自独立运行不同的应用。
    • 方便管理:可以对虚拟机进行快照,便于备份和恢复。

集群分布式系统 是提升系统性能和可靠性的架构理念。

Docker 提供了容器化技术,支持轻量级的应用打包和部署。

Kubernetes 是管理和编排容器的工具,可以自动化管理容器的生命周期。

虚拟机 提供了完整的虚拟化环境,允许在单台物理服务器上运行多个独立的系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速构建springboot+vue后台管理系统

项目介绍 1.需求定义:外包项目如雨后春笋,开发工期被迫压缩,为了开发人员专注开发项目业务,早点下班能陪老婆、孩子。 2.产品定位: 简约后台管理系统 3.项目特点:此项目代码清晰、界面简洁、springboot layuiadmin 构…

C语言--数据在内存中的存储

数据在内存中的存储 主要研究整型和浮点型在内存中的存储。 1. 整数在内存中的存储 在学习操作符的时候,就了解过了下面的内容: 整数的2进制表示方法有三种,即原码、反码和补码。 有符号的整数,三种表示方法均有符号位和数值…

HTB:Sauna[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…

wireshark工具简介

目录 1 wireshark介绍 2 wireshark抓包流程 2.1 选择网卡 2.2 停止抓包 2.3 保存数据 3 wireshark过滤器设置 3.1 显示过滤器的设置 3.2 抓包过滤器 4 wireshark的封包列表与封包详情 4.1 封包列表 4.2 封包详情 参考文献 1 wireshark介绍 wireshark是非常流行的网络…

2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计

题目来源:buuctf [RCTF2015]EasySQL1 目录 一、打开靶机,整理信息 二、解题思路 step 1:初步思路为二次注入,在页面进行操作 step 2:尝试二次注入 step 3:已知双引号类型的字符型注入,构造…

kong 网关和spring cloud gateway网关性能测试对比

该测试只是简单在同一台机器设备对spring cloud gateway网关和kong网关进行对比,受限于笔者所拥有的资源,此处仅做简单评测。 一、使用spring boot 的auth-service作为服务提供者 该服务提供了一个/health接口,接口返回"OK"&…

winfrom项目,引用EPPlus.dll实现将DataTable 中的数据保存到Excel文件

最近研究不安装office也可以保存Excel文件,在网上查询资料找到这个方法。 第一步:下载EPPlus.dll文件(自行去网上搜索下载) 第二步:引用到需要用的项目中,如图所示: 第三步:写代码…

框架层实现cpu高负载(cpuload)的检测方案

摘要 这是2018年在小厂的老方案了,现在看方案已经过时了也不太合理,仅供参考,上层框架开启一个5分钟定时器,检测5分钟内总cpu负载和每个线程cpu负载情况,当检测到cpu负载大于绿盟性能或功耗定义的阈值时,结…

Android BitmapShader简洁实现马赛克,Kotlin(一)

Android BitmapShader简洁实现马赛克,Kotlin(一) 这一篇, Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)-CSDN博客 基于PorterDuffXfermode实现马…

人工智能在数字化转型中的角色:从数据分析到智能决策

引言 在数字化转型浪潮中,人工智能(AI)正迅速崛起,成为推动企业创新和变革的关键力量。面对日益复杂的市场环境和激烈的行业竞争,企业亟需借助技术手段提高运营效率、优化决策过程,并增强市场竞争力。而AI…

「全网最细 + 实战源码案例」设计模式——工厂方法模式

核心思想 简单工厂模式是一种创建者模式,它通过一个工厂类负责创建不同类型的对象,根据传入的参数决定实例化的具体类,也被称为“静态工厂方法”模式,因为工厂方法通常是静态的。 结构 1. 工厂类: 提供一个静态方法…

我的图形布局 组织结构图布局

组织结构图布局,有的人也叫它树状布局,在图形中是经常用到的布局算法.形成类似如下图的图形布局方式 首先创建一个类, public class TreeLayouter {private int m_space 40;/// <summary>/// 空间间隔/// </summary>public int Space{get { return m_space; }se…

Golang:使用DuckDB查询Parquet文件数据

本文介绍DuckDB查询Parquet文件的典型应用场景&#xff0c;掌握DuckDB会让你的产品分析能力更强&#xff0c;相反系统运营成本相对较低。为了示例完整&#xff0c;我也提供了如何使用Python导出MongoDB数据。 Apache Parquet文件格式在存储和传输大型数据集方面变得非常流行。最…

Rust Actix Web 项目实战教程 mysql redis swagger:构建用户管理系统

Rust Actix Web 项目实战教程&#xff1a;构建用户管理系统 项目概述 本教程将指导你使用 Rust 和 Actix Web 构建一个完整的用户管理系统&#xff0c;包括数据库交互、Redis 缓存和 Swagger UI 文档。 技术栈 Rust 编程语言Actix Web 框架SQLx (MySQL 数据库)Redis 缓存Uto…

校园网上店铺的设计与实现(代码+数据库+LW)

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统校园店铺商品销售信息管理难度大&#xff0c;容错率低&a…

生成对抗网络(GAN)入门与编程实现

生成对抗网络&#xff08;Generative Adversarial Networks, 简称 GAN&#xff09;自 2014 年由 Ian Goodfellow 等人提出以来&#xff0c;迅速成为机器学习和深度学习领域的重要工具之一。GAN 以其在图像生成、风格转换、数据增强等领域的出色表现&#xff0c;吸引了广泛的研究…

26、正则表达式

目录 一. 匹配字符 .&#xff1a;匹配除换行符外的任意单个字符。 二. 位置锚点 ^&#xff1a;匹配输入字符串的开始位置。 $&#xff1a;匹配输入字符串的结束位置。 \b&#xff1a;匹配单词边界。 \B&#xff1a;匹配非单词边界。 三. 重复限定符 *&#xff1a;匹配…

电子应用设计方案101:智能家庭AI喝水杯系统设计

智能家庭 AI 喝水杯系统设计 一、引言 智能家庭 AI 喝水杯系统旨在为用户提供个性化的饮水提醒和健康管理服务&#xff0c;帮助用户养成良好的饮水习惯。 二、系统概述 1. 系统目标 - 精确监测饮水量和饮水频率。 - 根据用户的身体状况和活动量&#xff0c;智能制定饮水计划。…

数据表中的数据查询

文章目录 一、概述二、简单查询1.列出表中所有字段2.“*”符号表示所有字段3.查询指定字段数据4.DISTINCT查询 三、IN查询四、BETWEEN ADN查询1.符合范围的数据记录查询2.不符合范围的数据记录查询 五、LIKE模糊查询六、对查询结果排序七、简单分组查询1.统计数量2.统计计算平均…

【HarmonyOS NAPI 深度探索12】创建你的第一个 HarmonyOS NAPI 模块

【HarmonyOS NAPI 深度探索12】创建你的第一个 HarmonyOS NAPI 模块 在本篇文章中&#xff0c;我们将一步步走过如何创建一个简单的 HarmonyOS NAPI 模块。通过这个模块&#xff0c;你将能够更好地理解 NAPI 的工作原理&#xff0c;并在你的应用中开始使用 C 与 JavaScript 的…