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

扩展点都不知道不要说你用了Spring Boot

文章目录

  • 前言
  • 1.扩展点
    • 1.1. 应用程序生命周期扩展点
      • 1.1.1 SpringApplicationRunListener
      • 1.1.2 ApplicationEnvironmentPreparedEvent
      • 1.1.3 ApplicationPreparedEvent
      • 1.1.4 ApplicationStartedEvent
      • 1.1.5 ApplicationReadyEvent
      • 1.1.6 ApplicationFailedEvent
    • 1.2. 容器扩展点
      • 1.2.1 BeanFactoryPostProcessor
      • 1.2.2 BeanPostProcessor
      • 1.2.3 BeanDefinitionRegistryPostProcessor
    • 1.3. 自动配置扩展点
      • 1.3.1 AutoConfigurationImportSelector
      • 1.3.2 EnableAutoConfiguration
      • 1.3.3 ConditionalOnClass
      • 1.3.4 ConditionalOnBean
      • 1.3.5 ConditionalOnMissingBean
    • 1.4. Web扩展点
      • 1.4.1 WebMvcConfigurer
      • 1.4.2 HandlerInterceptor
      • 1.4.3 HandlerMethodArgumentResolver
      • 1.4.4 HandlerMethodReturnValueHandler
    • 1.5. 数据库扩展点
      • 1.5.1 DataSource
      • 1.5.2 TransactionManager
      • 1.5.3 JdbcTemplate
      • 1.5.4 JpaVendorAdapter
    • 1.6. 安全扩展点
      • 1.6.1 SecurityConfigurerAdapter
      • 1.6.2 WebSecurityConfigurerAdapter
      • 1.6.3 AuthenticationProvider
      • 1.6.4 UserDetailsService
    • 1.7. 其他扩展点
      • 1.7.1 CommandLineRunner
      • 1.7.2 ApplicationRunner
      • 1.7.3 CommandLinePropertySource
      • 1.7.4 EmbeddedServletContainerCustomizer
      • 1.7.5 HealthIndicator
      • 1.7.6 ErrorController
  • 2. 参考文档

前言

哈哈,本次有点标题党的嫌疑了,话又说回来,如果只停留在Spring Boot的基本的CRUD层面,未免也太过局限了,当需要去扩展一些功能,写一些组件的时候,就感觉无从下手了,所以本次,我们从一个标题党开始,了解一下Spring Boot 的扩展点,可以系统的了解记忆一下,此文不是八股文,希望大家能学以致用

Spring Boot是一个基于Spring框架的快速开发框架,做java开发的同学基本上都使用过,它通过提供一系列的自动配置和快速开发的特性,帮助我们快速搭建和开发高效、可扩展的应用程序。然而,为了满足不同开发需求的多样性,Spring Boot也提供了丰富的扩展点,开发人员可以通过扩展点来实现自定义的应用程序功能和行为。本文将介绍Spring Boot的扩展点分类和特点,帮助大家更好地理解和应用Spring Boot的扩展点。无论您是初学者还是有一定经验的开发人员,本文都将为您提供一些有用的信息和思路,帮助您更好地使用Spring Boot。
在这里插入图片描述

冰点出品,必属精品


1.扩展点

根据Spring Boot官方文档,可以将Spring Boot的扩展点分为以下几类:
这里面的每一类都事

1.1. 应用程序生命周期扩展点

应用程序生命周期扩展点是指在Spring Boot应用程序的生命周期中,提供了一系列的扩展点,开发人员可以通过实现这些扩展点来对应用程序的生命周期进行控制和定制。这些扩展点主要包括以下几个:
在这里插入图片描述
此图来自网络

1.1.1 SpringApplicationRunListener

它是一个监听器接口,用于在Spring应用程序的运行生命周期中监听和响应相关事件。可以通过实现该接口来自定义应用程序的启动和关闭行为。

1.1.2 ApplicationEnvironmentPreparedEvent

该事件在应用程序启动前触发,用于在环境准备阶段执行一些操作,例如:加载配置文件、设置系统属性等。

1.1.3 ApplicationPreparedEvent

该事件在应用程序上下文创建完成后触发,用于在应用程序准备阶段执行一些操作,例如:创建和初始化Bean等。

1.1.4 ApplicationStartedEvent

该事件在应用程序启动完成后触发,用于在应用程序启动后执行一些操作,例如:向日志中输出启动信息等。

1.1.5 ApplicationReadyEvent

该事件在应用程序准备就绪后触发,用于在应用程序运行期间执行一些操作,例如:启动定时任务、初始化缓存等。

1.1.6 ApplicationFailedEvent

该事件在应用程序启动失败后触发,用于在应用程序启动失败时执行一些操作,例如:记录日志、发送告警等。


1.2. 容器扩展点

我们来先看一张图,大概了解一下。Spring Boot容器扩展点主要用于自定义Spring容器的创建和配置,提供了一种灵活的方式来增强和定制Spring容器的功能,进而实现应用程序的定制化需求。
在这里插入图片描述
此图来自网络

Spring Boot的容器扩展点主要用于自定义Spring容器的创建和配置,通过这些扩展点,开发人员可以对Spring容器进行更加细粒度的控制和定制,以满足特定的应用场景和需求。具体来说,容器扩展点的作用包括:

  1. 修改Bean的定义信息
    BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor接口可以在Spring容器实例化Bean之前或之后修改Bean的定义信息,例如:修改Bean的属性值、增加或删除Bean的定义等。这些扩展点可以让开发人员在Bean实例化之前或之后对Bean的定义进行修改,以满足特定的需求。

  2. 修改Bean的属性值或执行其他操作
    BeanPostProcessor接口可以在Spring容器实例化Bean后修改Bean的属性值或执行其他操作,例如:修改Bean的属性值、添加Bean的初始化方法等。这些扩展点可以让开发人员在Bean实例化后对Bean的属性值进行修改或执行其他操作,以满足特定的需求。

  3. 自定义Bean的创建、配置、解析等
    通过实现BeanFactoryPostProcessor和BeanPostProcessor接口,开发人员可以自定义Bean的创建、配置和解析等过程,以满足特定的需求。例如,可以自定义BeanFactoryPostProcessor接口来修改Bean定义信息,自定义BeanPostProcessor接口来修改Bean的属性值或执行其他操作。

1.2.1 BeanFactoryPostProcessor

  • 用于在Spring容器实例化Bean之前修改Bean的定义信息。通过实现该接口,开发人员可以自定义Bean的配置和解析,例如:修改Bean的属性值、增加或删除Bean的定义等。这种方式可以在Spring容器实例化Bean之前对Bean的定义进行修改,从而实现更加灵活的配置和定制。

1.2.2 BeanPostProcessor

_ 用于在Spring容器实例化Bean后修改Bean的属性值或执行其他操作。通过实现该接口,开发人员可以自定义Bean的初始化逻辑,例如:修改Bean的属性值、添加Bean的初始化方法等。这种方式可以在Spring容器实例化Bean之后对Bean的属性值进行修改,从而实现更加灵活的初始化逻辑。_

1.2.3 BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,用于在Spring容器实例化Bean定义之前修改Bean定义信息。通过实现该接口,开发人员可以自定义Bean的创建和解析逻辑,例如:修改Bean的属性值、增加或删除Bean的定义等。这种方式可以在Spring容器实例化Bean定义之前对Bean定义进行修改,从而实现更加灵活的配置和定制。


1.3. 自动配置扩展点

在这里插入图片描述

Spring Boot提供了多种自动配置扩展点,通过这些扩展点可以实现自动配置类的选择、条件筛选等功能。以下是几个常用的自动配置扩展点:

1.3.1 AutoConfigurationImportSelector

AutoConfigurationImportSelector是一个接口,用于实现自动配置类的选择逻辑。在Spring Boot应用程序启动时,会自动加载AutoConfigurationImportSelector接口的实现类,实现类会根据条件进行筛选,选择符合条件的自动配置类并加载。

1.3.2 EnableAutoConfiguration

EnableAutoConfiguration是一个注解,用于开启自动配置功能。在应用程序中添加该注解后,Spring Boot会自动加载符合条件的自动配置类,实现自动配置的功能。该注解可以通过exclude属性排除一些自动配置类,也可以通过excludeName属性排除一些自动配置类的名称。

1.3.3 ConditionalOnClass

ConditionalOnClass是一个注解,用于在类路径中存在指定的类时才会加载自动配置类或Bean。可以使用该注解来检查类的可用性,如果类存在,则加载自动配置类或Bean,否则跳过。

1.3.4 ConditionalOnBean

ConditionalOnBean是一个注解,用于在容器中存在指定的Bean时才会加载自动配置类或Bean。可以使用该注解来检查Bean的可用性,如果Bean存在,则加载自动配置类或Bean,否则跳过。

1.3.5 ConditionalOnMissingBean

ConditionalOnMissingBean是一个注解,用于在容器中不存在指定的Bean时才会加载自动配置类或Bean。可以使用该注解来检查Bean的可用性,如果Bean不存在,则加载自动配置类或Bean,否则跳过。

这些自动配置扩展点可以帮助开发人员实现自动配置类的选择、条件筛选等功能,从而实现更加灵活、可扩展的应用程序。通过使用这些扩展点,开发人员可以自定义自动配置的功能和条件,以满足特定的需求。


1.4. Web扩展点

Spring Boot提供了多种扩展点用于自定义Web应用程序的配置和行为。其中,以下四个扩展点用于处理Web请求和响应相关的操作:

1.4.1 WebMvcConfigurer

WebMvcConfigurer是一个接口,用于自定义Spring MVC的配置。通过实现该接口,可以添加拦截器、消息转换器等,以满足特定的需求。例如,可以添加拦截器来验证请求的安全性,或者添加消息转换器来支持自定义的数据格式。

1.4.2 HandlerInterceptor

HandlerInterceptor是一个接口,用于自定义拦截器。拦截器可以在请求处理前或处理后执行自定义的逻辑,例如:验证用户权限、记录请求日志等。通过实现该接口,可以实现自定义的拦截器,以满足特定的需求。

1.4.3 HandlerMethodArgumentResolver

HandlerMethodArgumentResolver是一个接口,用于自定义请求参数解析器。在处理请求时,Spring会将请求中的参数解析为对应的Java对象。通过实现该接口,可以自定义请求参数解析器,以支持自定义的参数类型或数据格式。

1.4.4 HandlerMethodReturnValueHandler

HandlerMethodReturnValueHandler是一个接口,用于自定义请求返回值处理器。在处理请求时,Spring会将Java对象转换为响应结果并返回给客户端。通过实现该接口,可以自定义请求返回值处理器,以支持自定义的数据格式或响应结果。

总之,这些扩展点可以帮助开发人员自定义Web应用程序的配置和行为,以满足特定的需求。通过实现这些扩展点,可以添加拦截器、消息转换器等,实现自定义的请求参数解析器和返回值处理器,从而实现更加灵活、可扩展的Web应用程序。


1.5. 数据库扩展点

Spring Boot提供了多种数据访问相关的扩展点,以下是几个常用的扩展点:

1.5.1 DataSource

DataSource是一个接口,用于定义数据源的配置信息。数据源是应用程序与数据库之间的连接池,通过数据源可以配置数据库驱动、连接池大小等属性,与数据库建立连接。

1.5.2 TransactionManager

TransactionManager是一个接口,用于定义事务管理器的配置信息。事务管理器用于管理应用程序中的事务,例如:事务隔离级别、超时时间等。通过实现TransactionManager接口,可以自定义事务管理器的配置信息,以满足特定的需求。

1.5.3 JdbcTemplate

JdbcTemplate是Spring提供的数据访问模板,用于简化JDBC操作。通过JdbcTemplate,可以更加方便地进行数据库操作,例如:执行SQL语句、执行存储过程等。JdbcTemplate封装了大量的JDBC操作,提供了更加简单、易用的API,可以大大提高开发效率。

1.5.4 JpaVendorAdapter

JpaVendorAdapter是一个接口,用于定义JPA厂商适配器的配置信息。JPA厂商适配器用于适配不同的JPA实现,例如:Hibernate、EclipseLink等。通过实现JpaVendorAdapter接口,可以自定义JPA厂商适配器的配置信息,例如:数据库方言、JPA实现等。


1.6. 安全扩展点

Spring Boot提供了多种安全相关的扩展点 我们基本上用的很少,大家只需要了解一下。后续我会从这个里面挑选两个,写个项目真实使用的示例,供大家参考。

安全扩展点可以帮助开发人员实现更加灵活、可扩展的安全功能,从而满足特定的需求。通过使用这些扩展点,可以自定义Spring Security的配置信息、Web应用程序的安全配置信息,以及自定义用户认证方式、用户信息获取方式等,以实现更加定制化的安全功能。

1.6.1 SecurityConfigurerAdapter

SecurityConfigurerAdapter是一个类,用于定义Spring Security的配置信息。通过继承该类,可以实现用户认证和授权、添加安全过滤器等功能。SecurityConfigurerAdapter提供了一系列的方法,用于配置Spring Security的不同方面,例如:配置用户认证、授权、添加过滤器等。

1.6.2 WebSecurityConfigurerAdapter

WebSecurityConfigurerAdapter是一个类,用于定义Web应用程序的安全配置信息。通过继承该类,可以实现定义安全规则、设置用户认证和授权等功能。WebSecurityConfigurerAdapter提供了一系列的方法,用于配置Web应用程序的安全性,例如:配置HTTP安全规则、配置表单登录、配置用户认证等。

1.6.3 AuthenticationProvider

AuthenticationProvider是一个接口,用于自定义用户认证方式。通过实现该接口,可以实现自定义的用户名和密码认证方式、OAuth2认证方式等。AuthenticationProvider提供了一系列的方法,用于实现用户认证的不同方面,例如:验证用户密码、获取用户权限等。

1.6.4 UserDetailsService

UserDetailsService是一个接口,用于自定义用户信息获取方式。通过实现该接口,可以从数据库或其他数据源中获取用户信息。UserDetailsService提供了一个方法,用于根据用户名获取用户信息,开发人员可以根据实际需求进行自定义实现。


1.7. 其他扩展点

下面这些扩展点不知道怎么归类,有点杂,我们暂且归类为其他扩展点吧,但是都是比较常用的一些扩展点。可以帮助开发人员实现更加灵活、可扩展的应用程序功能,从而满足特定的需求。通过使用这些扩展点,可以自定义命令行操作、命令行参数处理方式、嵌入式Servlet容器的配置信息、健康检查指标以及异常处理方式等,以实现更加定制化的应用程序功能。

1.7.1 CommandLineRunner

CommandLineRunner是一个接口,用于在Spring Boot应用程序启动后执行一些命令行操作。例如:初始化数据、启动定时任务等。通过实现CommandLineRunner接口,可以自定义需要执行的命令行操作。

1.7.2 ApplicationRunner

ApplicationRunner是一个接口,与CommandLineRunner类似,也用于在Spring Boot应用程序启动后执行一些命令行操作。但其提供了更灵活的参数处理方式,可以接收一个ApplicationArguments对象,从而更加方便地处理命令行参数。

1.7.3 CommandLinePropertySource

CommandLinePropertySource是一个接口,用于将命令行参数转换为Spring环境中的属性值。例如:将命令行参数–server.port=8080转换为spring.server.port=8080的属性值。通过实现CommandLinePropertySource接口,可以自定义命令行参数的处理方式,以满足特定的需求。

1.7.4 EmbeddedServletContainerCustomizer

EmbeddedServletContainerCustomizer是一个接口,用于自定义嵌入式Servlet容器的配置信息。例如:自定义端口号、设置SSL证书等。通过实现EmbeddedServletContainerCustomizer接口,可以实现嵌入式Servlet容器的自定义配置。

1.7.5 HealthIndicator

HealthIndicator是一个接口,用于定义应用程序的健康检查指标。例如:检查数据库连接是否正常、检查磁盘使用情况等。通过实现HealthIndicator接口,可以自定义应用程序的健康检查指标,以便及时发现和解决应用程序的问题。

1.7.6 ErrorController

ErrorController是一个接口,用于自定义应用程序的异常处理方式。例如:自定义404页面、重定向到错误页面等。通过实现ErrorController接口,可以自定义应用程序的异常处理方式,以提高用户的体验。

2. 参考文档

  1. Spring Boot官方文档:https://spring.io/projects/spring-boot
  2. Spring Boot Reference Guide:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  3. Spring Boot官方文档相关 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-customizing-bean-definitions
  4. Spring Boot 自动配置 https://docs.spring.io/spring-boot/docs/3.1.2/reference/html/auto-configuration-classes.html#appendix.auto-configuration-classes

在这里插入图片描述

👏好了,本次的Spring Boot 的扩展点分享就到这儿,我是冰点,下次见。如果我的文章对你有所收获,可以给个赞。如果有疑问可以在评论区留言。
在这里插入图片描述

相关文章:

扩展点都不知道不要说你用了Spring Boot

文章目录 前言1.扩展点1.1. 应用程序生命周期扩展点1.1.1 SpringApplicationRunListener1.1.2 ApplicationEnvironmentPreparedEvent1.1.3 ApplicationPreparedEvent1.1.4 ApplicationStartedEvent1.1.5 ApplicationReadyEvent1.1.6 ApplicationFailedEvent 1.2. 容器扩展点1.2…...

LangChain大型语言模型(LLM)应用开发(五):评估

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…...

Angular:动态依赖注入和静态依赖注入

问题描述: 自己写的服务依赖注入到组件时候是直接在构造器内初始化的。 直到看见代码中某大哥写的 private injector: Injector 动态依赖注入和静态依赖注入 在 Angular 中,使用构造函数注入的方式将服务注入到组件中是一种静态依赖注入的方式。这种方…...

Java前后端交互long类型溢出的解决方案

问题描述: 前端根据id发起请求查找对象的时候一直返回找不到对象,然后查看了请求报文,发现前端传给后台的数据id不对,原本的id是1435421253099634623,可前端传过来的id是 1435421253099634700,后三位变成了…...

Lua学习-1 基础数据类型

文章目录 基础数据类型分类nilbooleannumberstringfunctionuserDatathreadtable 如何判断类型(type)不同类型数据常见操作nilnumberstring(字符串)function普通函数匿名函数不定参数函数 table 基础数据类型分类 nil 表示无效值 boolean 只有 true 和…...

普通的计算机专业大学生如何学习才能找到好offer

2023年已经将近8月份了,回想到开始努力提高自己的时候还是在今年1月1号。开学就要大二了。 一、目标达成情况总结: 一月份,无意间在网上刷到鹏哥的C语言课程,在鸡汤实力课程已拿到大厂offer的同学喜报 ,让我萌发了学技…...

iOS私钥证书和证书profile文件的生成攻略

在使用uniapp打包ios app的时候,要求我们提供一个私钥证书和一个证书profile文件,私钥证书可以使用mac电脑的钥匙串访问程序来生成,也可以使用香蕉云编来生成。证书profile文件可以直接在苹果开发者中心生成。 有部分刚接触ios开发的同学们&…...

前端 | ( 十二)CSS3简介及基本语法(中)| 变换、过渡与动画 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 系列笔记: 【HTML4】(一)前端简介【HTML4】(二)各种各样的常用标签【HTML4】(三)表单及HTML4收尾…...

【BOOST程序库】时间日期库

基本概念这里不再浪费时间介绍了&#xff0c;这里给出时间日期库的常见使用方法&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <boost/version.hpp> #include <boost/config.hpp>//时间库&#xff1…...

Windows 命令提示符 (cmd. exe) 命令行字符串长度限制

在Windows中&#xff0c;命令提示符 (cmd. exe) 命令行字符串是有长度限制的&#xff0c;本文帮助你了解命令行中的字符串长度限制&#xff0c;以免你的批处理脚本踩坑。 &#xff08;以下在Win10环境测试过&#xff09; 字符串长度限制 可在命令提示符处使用的字符串的最大长…...

Kafka 入门到起飞系列

Kafka 入门到起飞系列 [Kakfa 为什么牛&#xff1f; 为什么这么火&#xff1f;有什么优势呢&#xff1f;](https://blog.csdn.net/FightingITPanda/article/details/131941293)[工欲善其事&#xff0c;必先利其器 - 核心概念&#xff08;术语解释&#xff09;](https://blog.cs…...

[RabbitMQ] RabbitMQ简单概述,用法和交换机模型

MQ概述&#xff1a; Message Queue(消息队列)&#xff0c;实在消息的传输过程中保存消息的容器&#xff0c;都用于分布式系统之间进行通信 分布式系统通信的两种方式&#xff1a;直接远程调用 和 借助第三昂 完成间接通信 发送方称谓生产者&#xff0c;接收方称为消费者 MQ优…...

Oracle 多条记录根据某个字段获取相邻两条数据间的间隔天数,小于31天的记录都筛选出来

需求描述&#xff1a;在Oracle中 住院记录记录表为v_hospitalRecords&#xff0c;表中FIHDATE入院时间&#xff0c;FBIHID是住院号&#xff0c; 我想查询出每个患者在他们的所有住院记录中是否在一个月内再次入院(相邻的两条记录进行比较)&#xff0c;并且住院记录大于一的患者…...

【数据挖掘】如何修复时序分析缺少的日期

一、说明 我撰写本文的目的是通过引导您完成一个示例来帮助您了解 TVF 以及如何使用它们&#xff0c;该示例解决了时间序列分析中常见的缺失日期问题。 我们将介绍&#xff1a; 如何生成日期以填补数据中缺失的空白如何创建 TVF 和参数的使用如何呼叫 TVF我们将考虑扩展我们的日…...

CDN、P2P、PCDN的区别是什么

本篇文章为大家介绍一下与网络加速有关的几个重要概念&#xff0c;一起了解一下CDN,P2P和PCDN究竟是什么吧&#xff01; 1. CDN CDN即Content Delivery Network&#xff0c;中文全称为内容分发网络。 如果内容离用户远&#xff0c;用户可能无法获得及时的响应&#xff0c;那…...

MYSQL练习一答案

练习1答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案&#xff1a; 1、查询商品库存等于50的所有商品&#xff0c;显示商品编号&#xff0c;商 品名称&#xff0c;商品售价&#xff0c;商品库存。 SQL语句 select good_no,good…...

路由器(第二十五课)

路由器的深入学习 一、路由 1、路由 1) 什么是路由:路由就是数据包从一个网络到另外一外网络的过程 2)支持路由功能的设备:路由器、三层交换机、防火墙 3 路由器转发数据包的依据: -每一台路由器都维护着一张路由表 -路由器是依靠这张路由表来转发数据的 -这张路由表就…...

物联网网关模块可以带几台plc设备吗?可以接几个modbus设备?

随着物联网技术的快速发展&#xff0c;物联网网关模块已经成为了实现物联网应用的重要工具。很多客户在选择物联网网关模块时想了解物联网网关模块的设备接入能力&#xff0c;一个物联网网关模块可以带几台PLC设备&#xff1f;可以接几个Modbus设备&#xff1f; 物联网网关模块…...

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…...

结构化思维:高效能项目经理人的底层能力

大家好&#xff0c;我是老原。 我们经常会说「高效能」&#xff0c;那怎么成为高效能人士&#xff1f;其实除了拼体力和心力以外&#xff0c;高效能更重要的是脑力&#xff0c;这里的脑力不是指智力&#xff0c;而是结构化思维。 随着你在职场中不断成长和进阶&#xff0c;级…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...