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

[架构之路-239]:目标系统 - 纵向分层 - 中间件middleware

目录

前言:

一、中间件概述

1.1 中间件在软件层次中的位置

1.2 什么是中间件

1.3 为什么需要中间件

1.4 中间件应用场合(应用程序不用的底层需求:计算、存储、通信)

1.5 中间件分类 - 按内容分

二、嵌入式系统的中间件

2.1 概述

2.2 案例

三、分布式系统的中间件

3.1 概述

3.2 案例

四、云平台中间件

4.1 概述

4.2 案例


前言:

计算机就干三件事:计算、存储、通信。

中间件基本上就是围着着这三件事展开的,使得应用程序可以方便、高效地完成上述三件事。

一、中间件概述

1.1 中间件在软件层次中的位置

中间件与数据库、云计算平台处于相同的位置,位于行业应用程序与操作系统之间。

当然,也有专门的数据库中间件,这时候,中间件就在数据库之上了。

1.2 什么是中间件

中间件(middleware)是指位于应用程序操作系统之间的一层软件组件或服务。它是软件系统中的一种抽象层,用于处理应用程序底层系统之间的交互。中间件可以提供诸如请求转发、身份验证、日志记录、缓存、错误处理等功能。

在软件开发中,中间件常用于构建和管理、复杂的系统架构。它可以用于连接不同的应用程序、服务和组件,实现数据传输、消息传递和功能扩展等操作。中间件的设计目标是提高系统的可扩展性、灵活性和可维护性,同时减少不同组件之间的耦合度。常见的中间件包括Web服务器中的HTTP中间件和消息队列中的消息中间件。

1.3 为什么需要中间件

中间件的存在有以下几个主要原因:

  1. 抽象底层细节:中间件可以为开发人员提供一个抽象的接口,隐藏底层系统的复杂性。它允许开发人员专注于业务(应用程序)逻辑的实现,而不必关心底层的具体实现细节。

  2. 实现功能扩展:中间件可以添加额外的功能和特性,对应用程序进行扩展。通过引入中间件,开发人员可以在不修改核心代码的情况下,为应用程序添加新的功能模块,如安全认证、日志记录、缓存等。

  3. 提供可重用性和模块化:中间件的设计追求可重用性和模块化,可以在不同的应用程序中共享和复用。这样可以减少重复开发的工作量,提高开发效率。

  4. 简化系统集成:中间件可以作为应用程序和系统之间的桥梁,帮助不同的组件和服务进行集成。它提供一种通用的方式来处理数据传输、消息传递和协议转换等,简化了系统之间的交互和集成工作。

  5. 方便应用程序的移植:

    中间件可以帮助方便应用程序的移植。通过使用中间件,开发人员可以将应用程序与底层系统之间的交互和依赖进行解耦,从而使得应用程序更具可移植性。

    中间件提供了一个统一的接口层,将应用程序与特定的底层系统或硬件解耦。这使得应用程序可以在不同的平台、操作系统或硬件环境中进行移植,而不需要对核心业务逻辑进行重写或修改。

    通过使用中间件,开发人员可以在不同的系统中共享和复用代码。中间件提供了抽象的功能和服务,使得应用程序的开发人员可以专注于业务逻辑的实现,而不需要关注底层系统的差异。这样,当应用程序需要在不同的环境中进行移植时,只需要修改中间件的配置或适配层,而不需要对应用程序本身进行大规模的修改。

    因此,中间件在应用程序移植方面起到了桥梁的作用,降低了移植的难度和工作量,提高了应用程序的可移植性和可扩展性。

        综上所述,中间件的存在使得应用程序开发更加高效和灵活,同时提供了模块化和可扩展的架构设计,促进了系统的可维护性和可重用性。

1.4 中间件应用场合(应用程序不用的底层需求:计算、存储、通信)

中间件在软件开发中有广泛的应用场景,不同的应用程序,不同的场景,如下所示:

  1. Web应用程序开发:在Web应用开发中,中间件常用于处理HTTP请求和响应,实现请求的路由、身份验证、会话管理、日志记录等功能。使得Web应用程序员只需要关注Web的业务逻辑部分,不需要关注HTTP协议通信。

  2. 应用程序数据缓存管理:中间件在应用层数据的缓存管理中扮演着关键角色,用于实现应用层缓存数据的存储、读取和更新,提高系统性能和响应速度。

  3. 应用程序消息队列(通信):中间件在消息队列系统中起着重要的作用,用于处理消息的发送、接收和传递。它可以提供可靠的消息传递、消息队列管理、消息过滤和路由等功能。

  4. 应用程序数据库访问:中间件可用于数据库访问的抽象层,封装底层数据库的细节,提供统一的接口和功能,简化数据库访问和操作。

  5. 应用程序微服务治理:中间件在微服务架构中的服务治理中扮演重要角色,负责服务注册、发现、负载均衡和容错机制的实现。即为微服务应用程序建立一套微服务的平台。

  6. 安全性和身份验证:中间件可以用于实现安全性和身份验证相关的功能,包括访问控制、用户认证、权限管理等。

  7. 日志和监测:中间件常用于日志记录和系统监测,帮助开发人员跟踪和分析应用程序的运行状态和性能。

总的来说,中间件可以在需要处理请求、处理消息、管理数据、提供抽象层、实现安全性和日志记录等方面发挥作用。它们在软件开发中的应用场景非常广泛,可以提供各种功能和服务,帮助开发人员构建可扩展、灵活和可维护的系统架构。

1.5 中间件分类 - 按内容分

按照内容的分类,中间件可以分为以下几种类型:

  1. HTTP中间件:用于处理Web应用程序中的HTTP请求和响应。它可以用于路由请求、实现身份验证、处理错误、日志记录等功能。常见的HTTP中间件如Express、Koa等。

  2. 消息中间件:用于处理消息传递和消息队列。它可以负责消息的发送、接收和传递,并提供消息的可靠性保证和消息过滤、路由等功能。常见的消息中间件包括RabbitMQ、Apache Kafka等。

  3. 数据库中间件:用于封装数据库的访问和操作。它提供了统一的接口和功能,简化了数据库访问的操作,并可以实现数据库的连接池管理、数据缓存等功能。常见的数据库中间件如Sequelize、Hibernate等。

  4. 缓存中间件:用于处理缓存数据的存储和读取。它可以将数据缓存到内存中,以提高数据的读取速度和系统的性能。常见的缓存中间件包括Redis、Memcached等。

  5. 认证和授权中间件:用于实现安全性和身份验证相关的功能。它可以处理用户认证、访问控制、权限管理等,确保只有授权用户可以访问受保护的资源。常见的认证和授权中间件如Passport、JWT(JSON Web Tokens)等。

  6. 日志中间件:用于记录应用程序的日志信息。它可以记录应用程序的运行状态、错误信息、请求/响应日志等,帮助开发人员进行故障排查和系统监测。常见的日志中间件如Winston、log4j等。

这些都是按照中间件的内容进行分类的常见类型,每种类型的中间件都有其特定的功能和应用场景。根据实际需求,开发人员可以选择适合的中间件来满足系统的需求。

二、嵌入式系统的中间件

2.1 概述

嵌入式系统中的中间件提供了多种功能,用于简化和增强嵌入式系统的开发和运行。

以下是一些常见的嵌入式系统中间件功能的描述:

  1. 实时调度:嵌入式系统通常需要处理实时任务,实时调度功能可以管理和调度多个任务,并确保任务按时执行。它提供了任务优先级、任务调度算法、任务间通信等功能,以满足实时要求。

  2. 设备驱动支持:嵌入式系统需要与底层硬件设备进行交互,设备驱动支持功能提供了访问和控制硬件设备的接口。它包括设备初始化、读写寄存器、处理中断等功能。

  3. 文件系统:嵌入式系统中的文件系统用于管理和操作存储介质上的数据,如闪存、SD卡等。文件系统提供了读写文件、目录管理、文件权限等功能,以方便应用程序对数据进行管理。

  4. 网络通信:嵌入式系统中需要与其他设备或网络进行通信,网络通信功能提供了各种协议的支持,如TCP/IP、UDP、HTTP等。它允许嵌入式系统连接到互联网,实现数据传输和远程控制。

  5. 图形用户界面:对于有GUI需求的嵌入式系统,GUI中间件提供了界面元素的创建、显示和事件处理功能。它可以实现图形界面的交互,向用户展示信息和接收用户输入。

  6. 数据库支持:某些嵌入式应用需要对数据进行存储和管理,数据库支持功能提供了轻量级、嵌入式的数据库管理系统。它可以提供数据的持久化存储和高效的数据访问。

  7. 安全支持:安全是嵌入式系统的重要考虑因素,安全支持功能提供了数据加密、身份验证、访问控制等安全相关的功能。它可以保护系统和数据的安全性,防止未经授权的访问和数据泄露。

  8. 系统监测与调试:嵌入式系统的调试和监测是开发和维护的重要环节,此类功能提供了系统状态的监测、日志记录和错误调试等工具,帮助开发人员定位和解决问题。

        这些功能是嵌入式系统中间件的常见特征,不同的中间件提供不同的功能组合,开发人员可以根据具体需求选择适合的中间件来提高开发效率和系统性能。

2.2 案例

嵌入式中间件是在嵌入式系统中提供的软件解决方案,用于支持嵌入式设备的功能和应用程序。以下是一些常见的嵌入式中间件案例:

  1. MQTT (Message Queuing Telemetry Transport):MQTT 是一种轻量级的通信协议,用于在物联网中传输小型数据包。它提供了可靠的消息传递和发布-订阅机制,适用于低带宽、高延迟和不稳定网络环境

  2. FreeRTOS:FreeRTOS 是一种开源的实时操作系统 (RTOS),专门设计用于嵌入式系统。它提供了轻量级的任务调度、内存管理、通信和同步机制,适用于资源有限的嵌入式设备。

  3. uC/OS:uC/OS (Microcontroller Operating System) 是一种商业的实时操作系统,也是一个常用的嵌入式中间件。它提供了丰富的操作系统服务和通信机制,适用于多种硬件平台和应用场景。

  4. SQLite:SQLite 是一个轻量级的关系型数据库引擎,用于在嵌入式系统中存储和管理数据。它提供了标准的 SQL 查询和事务支持,适用于嵌入式设备的数据存储和处理需求。

  5. lwIP (lightweight IP):lwIP 是一个轻量级的 TCP/IP 协议栈,用于在嵌入式系统中提供网络通信功能。它具有较低的资源消耗,适用于资源有限的嵌入式设备。

  6. embOS:embOS 是一种商业的实时操作系统,专门设计用于嵌入式系统的实时任务调度和资源管理。它提供了高效的任务切换和中断处理机制,适用于实时性要求较高的嵌入式应用程序。

  7. Mbed OS:Mbed OS 是一种开源的嵌入式操作系统,用于支持广泛的嵌入式设备和物联网应用。它提供了丰富的接口和库,简化了嵌入式开发的过程,适用于快速构建和部署嵌入式系统。

这些嵌入式中间件案例涵盖了嵌入式系统中的通信、操作系统、数据库和网络功能等多个方面,帮助开发人员轻松构建和管理嵌入式设备和应用程序。根据具体的需求和嵌入式设备的特点,选择适合的嵌入式中间件可以提高开发效率、降低系统资源消耗,并增强嵌入式系统的功能和性能。

三、分布式系统的中间件

3.1 概述

在分布式系统中,中间件起着连接、通信和协调不同节点之间的作用。以下是一些常见的分布式系统中间件:

  1. 消息中间件:用于在分布式系统中进行异步通信和消息传递。它提供了可靠的消息传递机制,支持发布-订阅模式和点对点模式。常见的消息中间件包括Apache Kafka、RabbitMQ、ActiveMQ等。

  2. 分布式缓存中间件:用于跨节点共享和管理数据缓存。它可以将数据存储在分布式的内存中,加速数据的读写访问,并减轻后端数据库的压力。常见的分布式缓存中间件有Redis、Memcached、Hazelcast等。

  3. 分布式数据库中间件:用于在分布式环境下存储和访问数据。它提供了分布式数据存储、数据复制、负载均衡等功能,以实现高可用性和可伸缩性。常见的分布式数据库中间件包括MySQL Cluster、Citus、TiDB等。

  4. 分布式文件系统中间件:用于在分布式系统中管理文件和存储。它提供了分布式文件存储、文件共享、数据复制和数据冗余等功能。常见的分布式文件系统中间件包括HDFS、GlusterFS、Ceph等。

  5. 服务注册与发现中间件用于在分布式系统中进行服务的注册和发现。它提供了服务的注册、注销和查询功能,以便让不同的服务能够相互发现和通信。常见的服务注册与发现中间件有Netflix Eureka、Consul、etcd等。

  6. 分布式事务中间件:用于管理分布式系统中的事务处理。它可以确保多个节点之间的一致性和隔离性,并提供分布式事务的提交和回滚机制。常见的分布式事务中间件包括Atomikos、Bitronix、Seata等。

  7. 分布式任务调度中间件:用于在分布式环境下管理和调度任务。它可以将任务分配给不同的节点,并监控任务的执行情况,以实现任务的并行化和负载均衡。常见的分布式任务调度中间件有Apache Mesos、Kubernetes、Celery等。

这些中间件可以帮助构建分布式系统,提供通信、数据管理和协调等关键功能,以实现分布式系统的可扩展性、可靠性和高性能。开发人员可以根据具体的需求选择适合的中间件来构建和管理分布式系统。

3.2 案例

分布式系统中的中间件在实际应用中起着重要的作用。以下是一些分布式系统中间件的案例:

  1. Apache KafkaKafka是一个高吞吐量的分布式消息中间件,并广泛应用于实时数据流处理、日志收集和消息队列等场景。它可以处理大规模的消息流,提供可靠的消息传递和持久化存储。

  2. Redis:Redis是一个开源的分布式缓存中间件,它提供了高性能的键值存储,并支持多种数据结构和实时数据处理。Redis被广泛应用于缓存加速、会话管理、实时分析和排行榜等场景。

  3. MySQL Cluster:MySQL Cluster是MySQL数据库的分布式版本,它提供高可用性、可伸缩性和实时性能。MySQL Cluster使用分布式架构,将数据划分为多个节点,并支持复制和故障转移,从而提供了高可靠性和数据一致性。

  4. Hadoop Distributed File System (HDFS):HDFS是Apache Hadoop的分布式文件系统,用于存储和处理大规模数据。HDFS可以跨多个节点存储数据,并通过数据切块和复制机制提供容错和高可用性。

  5. Netflix Eureka:Eureka是Netflix开源的服务注册与发现中间件,用于构建容错和可伸缩的分布式系统。Eureka允许服务在分布式环境中注册和发现,并提供负载均衡和故障转移等功能。

  6. Apache Mesos:Mesos是一个分布式系统的资源管理和作业调度平台。它可以将集群中的资源按需分配给各个任务,并实现任务的高效调度和执行。Mesos被广泛用于大规模的数据处理和容器化部署。

  7. Seata:Seata是一个开源的分布式事务中间件,用于保证分布式系统中多个数据库操作的一致性。Seata使用基于资源的事务管理模式,支持多种数据库和分布式事务模型,如TCC、SAGA和AT模式。

这些中间件在各个行业和应用领域都有广泛的应用,帮助构建高性能、可靠和可扩展的分布式系统。它们有助于解决分布式环境下的通信、数据管理、协调和一致性等挑战,提升了分布式系统的可用性和性能。

四、云平台中间件

4.1 概述

云平台中间件是在云计算环境中提供的一系列服务和工具,用于支持云应用的开发、部署和运行。以下是一些常见的云平台中间件:

  1. 虚拟化管理:云平台中间件提供虚拟机管理和容器管理服务,如虚拟机管理器(如VMware ESXi、KVM)、容器编排工具(如Docker、Kubernetes),用于管理和调度云上的虚拟资源。

  2. 弹性伸缩:云平台中间件提供自动伸缩功能,根据应用负载自动增加或减少资源数量。它可以根据需求调整计算、存储和网络资源,实现应用的弹性扩展和优化成本效益

  3. 负载均衡:云平台中间件提供负载均衡服务,将流量均匀分发到多个应用实例或服务器上,以提高系统的可用性和性能。常见的负载均衡服务有Elastic Load Balancer(ELB)、NGINX等。

  4. 数据存储:云平台中间件提供多种数据存储服务,如云数据库(如Amazon RDS、Azure SQL Database)、云存储(如Amazon S3、Google Cloud Storage)和分布式存储系统(如Hadoop HDFS、Ceph)等,用于实现数据的持久化和高可用性。

  5. 缓存服务:云平台中间件提供分布式缓存服务,如云缓存(如Amazon ElastiCache、Azure Cache for Redis)和内存数据库(如Redis、Memcached),用于提供高速的数据访问和缓存请求。

  6. 消息队列:云平台中间件提供消息队列服务,如Amazon SQS、Azure Service Bus和RabbitMQ等,用于实现异步通信和解耦系统组件,支持分布式消息传递。

  7. 日志和监控:云平台中间件提供监控和日志管理服务,如Amazon CloudWatch、Azure Monitor和ELK(Elasticsearch, Logstash, Kibana)堆栈等,用于跟踪系统性能、故障诊断和日志分析。

  8. API管理:云平台中间件提供API管理服务,如Amazon API Gateway、Apigee和Azure API Management等,用于管理和发布API,实现API的安全授权、性能管理和分析。

这些云平台中间件提供了丰富的功能和服务,帮助开发人员和企业快速构建、部署和管理云上应用。它们通过提供高度抽象和自动化的方式,简化了云应用的开发和运维过程,提高了开发效率和系统可靠性。

4.2 案例

以下是一些常见的云平台中间件案例:

  1. AWS Elastic Beanstalk:AWS Elastic Beanstalk 是一种简化部署和管理应用程序的服务,支持多种编程语言和开发框架。它提供了自动化的应用程序部署、负载均衡和自动伸缩功能,用户可以轻松地将应用程序部署到 AWS 云平台上。

  2. Azure App Service:Azure App Service 是微软 Azure 云平台上的一种托管服务,用于快速构建、部署和扩展 Web 应用程序和 API。它支持多种编程语言和开发框架,提供自动扩展、负载均衡和持续集成等功能。

  3. Google Cloud Run:Google Cloud Run 是谷歌云平台上的一种完全托管的服务器运行时环境,支持容器化的应用程序部署。它提供了自动扩展、负载均衡和安全性等功能,用户可以将容器化的应用程序轻松地部署到 Google Cloud 上。

  4. Kubernetes:Kubernetes 是一种开源的容器编排系统,用于自动化部署、扩展和管理容器化的应用程序。它提供了负载均衡、服务发现、自动伸缩等功能,可以在多个云平台上部署和管理容器化的应用程序。

  5. OpenShift:OpenShift 是由 Red Hat 提供的一种开源的容器化平台,基于 Kubernetes 构建。它提供了完整的容器编排和应用生命周期管理功能,包括应用程序部署、自动扩展和持续集成等。

  6. Apache Kafka:Apache Kafka 是一种分布式的消息队列和流式处理平台,广泛应用于实时数据流处理和消息传递场景。它提供高吞吐量、可持久化存储和数据流处理等功能,可以在云平台上构建可靠的实时数据处理系统。

  7. Redis:Redis 是一种开源的内存数据库和缓存系统,被广泛应用于分布式系统中的实时数据处理和缓存加速场景。它提供了高性能、高可用性和多种数据结构支持,可以在云平台上部署和管理 Redis 实例。

这些云平台中间件案例覆盖了云计算中的应用部署、容器编排、消息传递、数据存储等多个方面,帮助用户实现应用程序的快速部署和弹性伸缩,提高系统的可用性和性能。它们提供了丰富的功能和服务,帮助开发人员和企业轻松构建和管理云上的应用程序和服务。

相关文章:

[架构之路-239]:目标系统 - 纵向分层 - 中间件middleware

目录 前言: 一、中间件概述 1.1 中间件在软件层次中的位置 1.2 什么是中间件 1.3 为什么需要中间件 1.4 中间件应用场合(应用程序不用的底层需求:计算、存储、通信) 1.5 中间件分类 - 按内容分 二、嵌入式系统的中间件 2…...

javascript利用xhr对象实现http流的comet轮循,主要是利用readyState等于3的特点

//此文件 为前端获取http流 <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml" lang"UTF-8"></html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"/&g…...

【Mybatis源码】XPathParser解析器

XPathParser是Mybatis中定义的进行解析XML文件的类,此类用于读取XML文件中的节点文本与属性;本篇我们主要介绍XPathParser解析XML的原理。 一、XPathParser构造方法 这里我们介绍主要的构造方法 public XPathParser(InputStream inputStream, boolean validation, Propert…...

辉视智慧酒店解决方案助力传统酒店通过智能升级焕发新生

辉视智慧酒店解决方案基于强大的物联网平台&#xff0c;将酒店客控、网络覆盖、客房智能化控制、酒店服务交互等完美融合&#xff0c;打造出全方位的酒店智慧化产品。利用最新的信息化技术&#xff0c;我们推动酒店智慧化转型&#xff0c;综合运用前沿的信息科学和技术、消费方…...

文件和命令的查找与处理

1.命令查找 which which 接命令 2.文件查找 find 按文件名字查找 准确查找 find / -name "hosts" 粗略查找 find / -name "ho*ts" 扩展名查找 find / -name "*.txt" 按文件类型查找 find / -type f 文件查找 find / -ty…...

第七章:最新版零基础学习 PYTHON 教程—Python 列表(第三节 -Python程序访问列表中的索引和值)

有多种方法可以访问列表的元素,但有时我们可能需要访问元素及其所在的索引。让我们看看访问列表中的索引和值的所有不同方法。 目录 使用Naive 方法访问列表中的索引和值 使用列表理解访问列表中的索引和值...

接口测试面试题整理​​​​​​​

HTTP, HTTPS协议 什么是DNSHTTP协议怎么抓取HTTPS协议说出请求接口中常见的返回状态码http协议请求方式HTTP和HTTPS协议区别HTTP和HTTPS实现机有什么不同POST和GET的区别HTTP请求报文与响应报文格式什么是Http协议无状态协议?怎么解决HTTP协议无状态协议常见的POST提交数据方…...

【保姆级教程】ChatGPT/GPT4科研技术应用与AI绘图

查看原文>>>https://mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247663763&idx1&snbaeb113ffe0e9ebf2b81602b7ccfa0c6&chksm9bed5f83ac9ad6955d78e4a696949ca02e1e531186464847ea9c25a95ba322f817c1fc7d4e86&token1656039588&langzh_CN#rd…...

凉鞋的 Godot 笔记 202. 变量概述与简介

202. 变量概述与简介 想要用好变量不是一件简单的事情&#xff0c;因为变量需要命名。 我们可以从两个角度去看待一个变量&#xff0c;第一个角度是变量的功能&#xff0c;第二个是变量的可读性。 变量的功能其实非常简单&#xff0c;变量可以存储一个值&#xff0c;这个值是…...

HTML 常用标签及练习

常用标签 <head>中的标签 概述 head中的内容不显示到页面上 标签说明<title>定义网页的标题<meta>定义网页的基本信息&#xff08;供搜索引擎&#xff09;<style>定义CSS样式<link>链接外部CSS文件或脚本文件<script>定义脚本语言<…...

Python 编程基础 | 第六章-包与模块管理 | 1、包与模块简介

一、模块 在程序开发过程中&#xff0c;文件代码越来越长&#xff0c;维护越来越不容易。可以把很多不同的功能编写成函数&#xff0c;放到不同的文件里&#xff0c;方便管理和调用。在Python中&#xff0c;一个.py文件就称之为一个模块&#xff08;Module&#xff09;。 1、简…...

为中小企业的网络推广策略解析:扩大品牌知名度和曝光度

目前网络推广已经成为企业获取潜在客户和提升品牌知名度的重要手段。对于中小企业而言&#xff0c;网络推广是一个具有巨大潜力和可行性的营销策略。在本文中&#xff0c;我们将探讨中小企业为什么有必要进行网络推广&#xff0c;并分享一些实用的网络推广策略。 一、扩大品牌知…...

资源受限MCU Flash空间占用优化

资源受限MCU Flash空间占用优化步骤&#xff1a; 避免重复功能&#xff0c;排查软件工程中&#xff0c;重复功能的代码片段&#xff0c;抽象出来&#xff0c;重新进行封装&#xff1b;减少内联函数inline&#xff0c;内联函数过大且过多的调用无疑会增加代码量&#xff0c;占用…...

冰蝎默认加密的流量解密

破解冰蝎的默认加密 流量包分析 上传的冰蝎流量包 POST /web-zh/DVWA/vulnerabilities/upload/ HTTP/1.1 Host: 192.168.197.111 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0 Accept: text/html,application/xhtmlxml,a…...

C#字符串操作:拼接、截取、分割等高效处理方法

目录 1.前言2. 字符串拼接 (String Concatenation)3. 字符串截取 (String Substring)4. 字符串分割 (String Split)5. 字符串替换 (String Replace)6. 字符串大小写转换 (String Case Conversion)7. 结论 1.前言 在C#编程中&#xff0c;字符串操作是不可避免的一部分。无论是拼…...

垃圾邮件(短信)分类算法实现 机器学习 深度学习 计算机竞赛

文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 垃圾邮件(短信)分类算…...

每日一题 1726. 同积元组(中等,计数)

直接统计数组中的数字两两组合可以得到的乘积求将相同乘积的组合再两两组合的数量最后由于abcd的值可以互换&#xff0c;每一个组合通过呼唤位置可以得到8种不同的组合&#xff0c;所以最后乘以8 class Solution:def tupleSameProduct(self, nums: List[int]) -> int:d de…...

LeetCode 2894. 分类求和并作差【数学,容斥原理】1140

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

100天掌握网络安全知识点!

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…...

【ArcGIS绘图系列1】在ArcGIS中制作柱状图与饼状图

成图展示 图形出处&#xff1a;J2023-Assessment of agricultural drought based on multi-source remote sensing data in a major grain producing area of Northwest China 实现步骤 第一步 查看数据信息 数据输入到ArcGIS中&#xff1a;包含数据表和shp文件 1、shp文件…...

【c++】跟webrtc学std array 1: 混音的多维数组

对于固定大小的数组,非常适合用std的array 实现。静态赋初值 static constexpr std::array<int, 5> kInputValues = {0, 1, 2, 1, 0}...

App出海起量难?传参安装打开获客增长新途径

近年来&#xff0c;在App出海潮越发热烈的背景下&#xff0c;如何适应海外市场并实现“用户增长”与“提高转化”&#xff0c;已成为出海团队需要面临的重大挑战之一。 如何在海外市场短时间内快速起量&#xff1f;这个问题难倒了不少出海创业者&#xff0c;毕竟目前互联网环境…...

当AI遇上3D建模:一场创意与技术的完美碰撞!

在这个充满无限可能的时代&#xff0c;科技的发展日新月异&#xff0c;让我们见证了一场创意与技术的完美碰撞——AI与3D建模的结合。这种结合为我们开辟了一个全新的领域&#xff0c;让我们在虚拟世界中自由挥洒创意&#xff0c;为现实世界创造更多的可能性。 3D建模AI生成是…...

工作中的有效沟通

工作中的有效沟通 发现问题并解决问题发现问题解决问题 发现问题并解决问题 发现问题 清楚问题痛点。 注意与三方沟通时&#xff0c;一方沟通不明确时&#xff0c;则更需要想办法. 引导或者特别注意语句限制词汇&#xff0c;弄清楚意思。比如&#xff1a; 信息科要求5分钟无…...

1.集合框架

一、JDK版本之间的关系 1.1、Oracle JDK与OpenJDK的区别 1.Oracle JDK是基于OpenJDK源代码构建的&#xff0c;因此Oracle JDK和OpenJDK之间没有重大的技术差异。 2.Oracle JDK将更多地关注稳定性&#xff0c;它重视更多的企业级用户&#xff0c;而OpenJDK经常发布以支持其他性能…...

2023年下半年软考考试重磅消息

重磅消息一&#xff1a;科目连考&#xff0c;分批考试 2023年下半年软考考试&#xff0c;采取科目连考、分批次考试的方式。 什么是科目连考&#xff1f; 连考就是第一个科目作答结束交卷完成后&#xff0c;自动进入第二个科目的考试&#xff0c;第一个科目剩余的时长可为第二…...

Spring Boot如何优雅实现动态灵活可配置的高性能数据脱敏功能

1.背景 在当下互联网高速发展的时代下&#xff0c;涉及到用户的隐私数据安全越发重要&#xff0c;一旦泄露将造成不可估量的后果。所以现在的业务系统开发中都会对用户隐私数据加密之后存储落库&#xff0c;同时还要求后端返回数据给前台之前进行数据脱敏。所谓脱敏处理其实就…...

九月 Web3 游戏报告:数量增长,巨头入场,用户获取和留存仍存挑战

作者: stellafootprint.network 9 月份&#xff0c;比特币价格窄幅波动&#xff0c;小幅上涨 3.7%。Web3 游戏行业正在增长&#xff0c;但月活跃用户超过 1,000 人的游戏仍不足 10%。不同公链上的游戏分布相对稳定&#xff0c;其中 BNB 以 30.9% 的份额领先。 随着 Web3 游戏…...

Scala语言入门

学习了这么久让我们来回顾一下之前的内容吧 Hadoop生态体系知识串讲 Scala编程语言 一、概述 http://scala-lang.org 专门为计算而生的语言&#xff0c;Scala将(Java后者C)面向对象设计和函数式编程结合在一起的简洁的高级编程语言。而函数式编程强调的是通过传递算子&…...

MyBatisPlus-02

一 查询条件的三种 1.按条件查询 //方式一&#xff1a;按条件查询QueryWrapper qw new QueryWrapper();qw.lt("age",18);List<User> userList userDao.selectList(qw);System.out.println(userList); 2.lambda格式按条件查询 //方式二&#xff1a;lambda格…...