springboot依赖管理和自动配置

依赖管理和自动配置

  • 依赖管理和自动配置
    • 依赖管理
      • 什么是依赖管理
      • 修改自动仲裁/默认版本号
    • starter场景启动器
      • starter场景启动器基本介绍
      • 官方提供的starter
      • 第三方starter
    • 自动配置
      • 自动配置基本介绍
      • SpringBoot自动配置了哪些?
      • 如何修改默认配置
        • 如何修改默认扫描包结构
        • resources\application.properties配置大全
        • resources\application.properties修改配置
        • resources\application.properties常用配置
        • resources\application.properties自定义配置
      • SpringBoot在哪配置读取application.properties
      • 自动配置遵守按需加载原则
        • 基本说明
        • 实例演示

在这里插入图片描述

依赖管理和自动配置

依赖管理

什么是依赖管理

1.spring-boot-starter-parent 还有父项目, 声明了开发中常用的版本号.

2.并且进行 自动版本仲裁, 即如果程序员没有指定某个依赖 jar 的版本, 则以父项目指定的版本为准.在这里插入图片描述
在这里插入图片描述

修改自动仲裁/默认版本号

1.需求说明: 将SpringBoot mysql驱动修改成 5.1.49

在这里插入图片描述

2.查看spring-boot-dependencies.pom里面规定的当前依赖 的版本 的对应的 key, 这里是 mysql.version在这里插入图片描述

3.修改quickstart/pom.xml, 重写配置, 当更新Maven时, 就依赖到新的mysql驱动. 一句话: 父项目不能动, 两种方案均是修改本项目的pom文件.

在这里插入图片描述

两种方案

方式1

<dependencies><!--我们自己指定mysql/驱动版本, 即修改版本仲裁1.方式1: 显示地导入mysql依赖, 并明确地指定version2.方式2: 在自己的pom.xml文件, 在<properties> 中指定mysql的key形如:<properties><mysql.version>5.1.49</mysql.version></properties>3.为什么可以达到修改版本仲裁: 根据依赖就近优先原则.--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency>
</dependencies>

方式2 在自己的pom.xml文件, 在<properties> 节点中指定mysql的key

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--这里我们可以指定mysql.version--><mysql.version>5.1.49</mysql.version>
</properties><dependencies><!--我们自己指定mysql/驱动版本, 即修改版本仲裁1.方式1: 显示地导入mysql依赖, 并明确地指定version2.方式2: 在自己的pom.xml文件, 在<properties> 中指定mysql的key形如:<properties><mysql.version>5.1.49</mysql.version></properties>3.为什么可以达到修改版本仲裁: 根据依赖就近优先原则.--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>

starter场景启动器

starter场景启动器基本介绍

1.开发中我们引入相关场景的starter, 这个场景中所有的相关依赖都引入进来了, 比如我们做web开发引入了spring-boot-starter-web, 该starter将导入与web开发相关的所有包.

在这里插入图片描述
在这里插入图片描述

2.依赖树: 可以看到 spring-boot-starter-web, 帮我们导入了spring-web, spring-webmvc开发模块, 还导入了tomcat的场景启动器spring-boot-starter-tomcat, spring-boot-starter-json场景, 这些场景下面又引出了一大堆相关的包, 这些依赖项可以快速启动和运行一个项目, 提高开发效率.

在这里插入图片描述在这里插入图片描述

3.所有场景启动器最基本的依赖就是spring-boot-starter, 前面的依赖树分析可以看到, 这个依赖也就是SpringBoot自动配置的核心依赖在这里插入图片描述

官方提供的starter

地址: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters

介绍:
1.在开发中我们经常会用到spring-boot-starter-xxx, 比如spring-boot-starter-web, 该场景是用作web开发, 也就是说xxx是某种开发场景.

2.我们只需要引入starter, 这个场景的所有常规需要的依赖我们都自动引入.

3.SpringBoot2支持的所有场景如下:
在这里插入图片描述

第三方starter

1.SpringBoot也支持第三方starter

2.第三方starter不会从spring-boot开始, 因为这是官方spring-boot保留的命名方式. 第三方启动程序通常以项目名称开头. 例如, 名为 thirdpartyproject 的第三方启动程序项目通常被命名为 thirdpartyproject-spring-boot-starter.

3.也就是说: xxx-spring-boot-starter是第三方为我们提供的简化开发的场景启动器.

自动配置

自动配置基本介绍

1.小伙伴还记得否, 前面学习SSM整合时, 需要配置Tomcat, 配置SpringMVC, 配置如何扫描包, 配置字符过滤器, 配置视图解析器, 文件上传等, 非常麻烦[如图]. 而在SpringBoot中, 存在自动配置机制, 提高开发效率.

2.简单回顾以前SSM整合的配置.
在这里插入图片描述

SpringBoot自动配置了哪些?

1.自动配置Tomcat
在这里插入图片描述

2.自动配置SpringMVC
在这里插入图片描述

3.自动配置Web常用功能: 比如字符过滤器. 提示: 通过获取ioc容器, 查看容器创建的组件来验证
修改D:\idea_project\zzw_springboot\quickstart\src\main\java\com\zzw\springboot\MainApp.java

/*** @SpringBootApplication: 表示这是一个springboot引用/项目*/
@SpringBootApplication
public class MainApp {public static void main(String[] args) {//启动springboot应用程序/项目ApplicationContext ioc = SpringApplication.run(MainApp.class, args);//如何查看容器中注入的组件//① 打断点//② 写代码String[] beanDefinitionNames = ioc.getBeanDefinitionNames();for (String beanDefinitionName : beanDefinitionNames) {System.out.println("beanDefinitionName=" + beanDefinitionName);}}
}

beanDefinitionName=org.springframework.context.annotation.internalConfigurationAnnotationProcessor
beanDefinitionName=org.springframework.context.annotation.internalAutowiredAnnotationProcessor
beanDefinitionName=org.springframework.context.annotation.internalCommonAnnotationProcessor
beanDefinitionName=org.springframework.context.event.internalEventListenerProcessor
beanDefinitionName=org.springframework.context.event.internalEventListenerFactory
beanDefinitionName=mainApp
beanDefinitionName=org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory
beanDefinitionName=helloController 控制器
beanDefinitionName=org.springframework.boot.autoconfigure.AutoConfigurationPackages
beanDefinitionName=org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
beanDefinitionName=propertySourcesPlaceholderConfigurer
beanDefinitionName=org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration
beanDefinitionName=websocketServletWebServerCustomizer
beanDefinitionName=org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat
beanDefinitionName=tomcatServletWebServerFactory
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration
beanDefinitionName=servletWebServerFactoryCustomizer
beanDefinitionName=tomcatServletWebServerFactoryCustomizer
beanDefinitionName=org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor
beanDefinitionName=org.springframework.boot.context.internalConfigurationPropertiesBinderFactory
beanDefinitionName=org.springframework.boot.context.internalConfigurationPropertiesBinder
beanDefinitionName=org.springframework.boot.context.properties.BoundConfigurationProperties
beanDefinitionName=org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter
beanDefinitionName=server-org.springframework.boot.autoconfigure.web.ServerProperties
beanDefinitionName=webServerFactoryCustomizerBeanPostProcessor
beanDefinitionName=errorPageRegistrarBeanPostProcessor
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration
beanDefinitionName=dispatcherServlet 前端控制器
beanDefinitionName=spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration
beanDefinitionName=dispatcherServletRegistration
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration
beanDefinitionName=taskExecutorBuilder
beanDefinitionName=applicationTaskExecutor
beanDefinitionName=spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration
beanDefinitionName=error
beanDefinitionName=beanNameViewResolver 自定义视图解析器
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration
beanDefinitionName=conventionErrorViewResolver
beanDefinitionName=spring.resources-org.springframework.boot.autoconfigure.web.ResourceProperties
beanDefinitionName=spring.web-org.springframework.boot.autoconfigure.web.WebProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
beanDefinitionName=errorAttributes
beanDefinitionName=basicErrorController
beanDefinitionName=errorPageCustomizer
beanDefinitionName=preserveErrorControllerTargetClassPostProcessor
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration
beanDefinitionName=requestMappingHandlerAdapter
beanDefinitionName=requestMappingHandlerMapping
beanDefinitionName=welcomePageHandlerMapping
beanDefinitionName=localeResolver
beanDefinitionName=themeResolver
beanDefinitionName=flashMapManager
beanDefinitionName=mvcConversionService
beanDefinitionName=mvcValidator
beanDefinitionName=mvcContentNegotiationManager
beanDefinitionName=mvcPatternParser
beanDefinitionName=mvcUrlPathHelper
beanDefinitionName=mvcPathMatcher
beanDefinitionName=viewControllerHandlerMapping
beanDefinitionName=beanNameHandlerMapping
beanDefinitionName=routerFunctionMapping
beanDefinitionName=resourceHandlerMapping
beanDefinitionName=mvcResourceUrlProvider
beanDefinitionName=defaultServletHandlerMapping
beanDefinitionName=handlerFunctionAdapter
beanDefinitionName=mvcUriComponentsContributor
beanDefinitionName=httpRequestHandlerAdapter
beanDefinitionName=simpleControllerHandlerAdapter
beanDefinitionName=handlerExceptionResolver
beanDefinitionName=mvcViewResolver
beanDefinitionName=mvcHandlerMappingIntrospector
beanDefinitionName=viewNameTranslator
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter
beanDefinitionName=defaultViewResolver
beanDefinitionName=viewResolver
beanDefinitionName=requestContextFilter
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
beanDefinitionName=formContentFilter
beanDefinitionName=org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration
beanDefinitionName=mbeanExporter
beanDefinitionName=objectNamingStrategy
beanDefinitionName=mbeanServer
beanDefinitionName=org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration
beanDefinitionName=springApplicationAdminRegistrar
beanDefinitionName=org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration
beanDefinitionName=forceAutoProxyCreatorToUseClassProxying
beanDefinitionName=org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration
beanDefinitionName=applicationAvailability
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration
beanDefinitionName=standardJacksonObjectMapperBuilderCustomizer
beanDefinitionName=spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration
beanDefinitionName=jacksonObjectMapperBuilder
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration
beanDefinitionName=parameterNamesModule
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration
beanDefinitionName=jacksonObjectMapper
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
beanDefinitionName=jsonComponentModule
beanDefinitionName=org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration
beanDefinitionName=lifecycleProcessor
beanDefinitionName=spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties
beanDefinitionName=org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration
beanDefinitionName=stringHttpMessageConverter SpringMVC处理JSON
beanDefinitionName=org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration
beanDefinitionName=mappingJackson2HttpMessageConverter
beanDefinitionName=org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration
beanDefinitionName=messageConverters
beanDefinitionName=org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
beanDefinitionName=spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
beanDefinitionName=org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration
beanDefinitionName=spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties
beanDefinitionName=org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor
beanDefinitionName=org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration
beanDefinitionName=scheduledBeanLazyInitializationExcludeFilter
beanDefinitionName=taskSchedulerBuilder
beanDefinitionName=spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
beanDefinitionName=restTemplateBuilderConfigurer
beanDefinitionName=restTemplateBuilder
beanDefinitionName=org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration
beanDefinitionName=tomcatWebServerFactoryCustomizer
beanDefinitionName=org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration
beanDefinitionName=characterEncodingFilter SpringMVC处理中文的过滤器
beanDefinitionName=localeCharsetMappingsCustomizer
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
beanDefinitionName=multipartConfigElement
beanDefinitionName=multipartResolver SpringMVC处理文件上传
beanDefinitionName=spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties
beanDefinitionName=org.springframework.aop.config.internalAutoProxyCreator

在这里插入图片描述

4.自动配置: 默认扫描包结构.
官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.structuring-your-code.using-the-default-package
在这里插入图片描述

如何修改默认配置

如何修改默认扫描包结构

1.需求: 要求能扫描 com.zzw 包下的 HiController.java, 应该如何处理?

2.创建: D:\idea_project\zzw_springboot\quickstart\src\main\java\com\zzw\HiController.java, 并测试, 这时是访问不到的

@Controller
public class HiController {//返回hi,world@RequestMapping("/hi")@ResponseBodypublic String hello() {return "hi, world";}
}

3.修改MainApp.java, 增加扫描的包, 并完成测试.

/*** @SpringBootApplication: 表示这是一个springboot引用/项目* @SpringBootApplication(scanBasePackages = "com.zzw")* 解读: scanBasePackages = "com.zzw" 指定SpringBoot要扫描的包和子包* 如果有多个包, 可以这样指定: 用数组 scanBasePackages = {"com.zzw","xxx.yyy.zzz"}*/
@SpringBootApplication(scanBasePackages = "com.zzw")
public class MainApp {}

在这里插入图片描述
在这里插入图片描述

resources\application.properties配置大全

1.SpringBoot项目最重要也是最核心的配置文件就是application.properties, 所有的框架配置都可以在这个配置文件中说明.

2.地址: https://blog.csdn.net/pbrlovejava/article/details/82659702

resources\application.properties修改配置

各种配置都有默认, 可以在 resources\application.properties 修改, application.properties 文件我们 可以手动创建

手动输入如果没有提示, 安装插件
在这里插入图片描述

#修改server的监听端口
server.port=8081
#修改单个文件上传的大小. 默认是1MB, 修改成10MB
#让我们解读一下这个配置是在哪里读取的!
#multipart.max-file-size 属性可以指定springboot上传文件的大小限制-体现约定优于配置
#默认配置最终都是映射到某个类, 比如multipart.max-file-size 会映射/关联到 MultipartProperties 类
#把光标放在该属性, 输入ctrl+b, 就可以定位这个属性是关联到哪个类(属性类)
spring.servlet.multipart.max-file-size=10MB

在这里插入图片描述

在这里插入图片描述

resources\application.properties常用配置

●常用配置一览

#端口号
server.port=10000
#应用的上下文路径(项目路径)
server.servlet.context-path=/allModel#指定POJO扫描包来让mybatis自动扫描到自定义的POJO
mybatis.type-aliases-package=com.cxs.allmodel.model#指定mapper.xml的路径
#(application上配置了@MapperScan(扫面mapper类的路径)和pom.xml中放行了mapper.xml后,
#配置mapper-locations没有意义。如果mapper类和mapper.xml不在同一个路径下时,mapper-locations就有用
了)
mybatis.mapper-locations=classpath:com/cxs/allmodel/mapper#session失效时间(单位s)
spring.session.timeout=18000#数据库连接配置
#mysql数据库url
mysql.one.jdbc-url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/shanghai&usessL=false
#mysql数据库用户名
mysql.one.username
#数据库密码
mysql.one.password=
#线程池允许的最大连接数
mysgl.one.maximum-pool-size=15#日志打印:日志级别 trace<debug<info<warn<error<fatal默认级别为info,即默认打印info及其以上级别的日志
#logging.evel设置日志级别,后面跟生效的区域,比如root表示整个项目,也可以设置为某个包下,也可以具体到某个类名(日志级别的值不区分大小写)
logging.level.com.cxs.allmodel.=debug
logging.level.com.cxs.allmodel.mapper=debug
logging.level.org.springframework.web=info
logging.level.org.springframeworktransaction=info
logging.level.org.apache.lbatis=info
logging.level.org:mybatis=info
logging.level.com.github.pagehelper = info
logging.level.root=info
#日志输出路径
logging.file=/tmp/api/allmodel.log#配置pagehelper分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql#jackson时间格式化
spring.jackson.serialization.fail-on-empty-beans=false
#指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定日期格式化时区,比如America/Los_Angeles或各GMT+10
spring.jackson.time-zone=GMT+8#设置统一字符集
spring.http.encoding.charset=utf8#redis连接配置
#redis所在主机ip地址
spring.redis.host=
#redis服务器密码
spring.redis.password=
#redis服务器端口号
spring.redis.port=
#redis数据库的索引编号(0到15)
spring.redis.database=14
##连接池的最大活动连接数量,使用负值无限制
#spring.redis.pool.max-active=8
#
##连接池的最大空闲连接数量,使用负值表示无限数量的空闲连接
#spring.redis.pool.max-idle=8
#
##连接池最大阻塞等待时间,使用负值表示没有限制
#spring.redis.pool.max-wait=-1ms
#
##最小空闲连接数量,使用正值才有效果
#spring.redis.pool.min-idle=0
#
## 是否启用SSL连接.
##spring.redis.ssl=false
#
##连接超时,毫秒为单位
#spring.redis.timeout= 18000ms
#
## 集群模式下,集群最大转发的数量
#spring.redis.cluster.max-redirects=
#
## 集群模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.cluster.nodes=
#
## 哨兵模式下,Redis主服务器地址
#spring.redis.sentinel.master=
#
## 哨兵模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.sentinel.nodes= 127.0.0.1:5050,127.0.0.1:5060
resources\application.properties自定义配置

●还可以在properties文件中自定义配置, 通过 @Value(“${}”) 获取对应属性值.

#自定义配置属性
my.webSite=https://www.baidu.com
@Controller
public class HiController {//需求: webSite 属性值从 application.properties 的k-v获取//当HiController作为一个bean被创建时, webSite属性值被赋值@Value("${my.webSite}")private String webSite;//返回hi,world@RequestMapping("/hi")@ResponseBodypublic String hello() {System.out.println("webSite = " + webSite);return "hi, world";}
}

SpringBoot在哪配置读取application.properties

1.打开 ConfigFileApplicationListener.java, 看一下源码

file:./config/*/ ⇒ 表示 项目根目录/config/a目录下

在这里插入图片描述

自动配置遵守按需加载原则

基本说明

1.自动配置遵守按需加载原则: 也就是说, 引入了哪个场景starter就会加载该场景关联的jar包, 没有引入的starter, 则不会加载其关联jar
在这里插入图片描述

2.SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面
在这里插入图片描述

3.在SpringBoot的自动配置包, 一般是XxxAutoConfiguration.java, 对应XxxProperties.java, 如图
XxxAutoConfiguration.java 包含 XxxProperties.java
在这里插入图片描述

实例演示

1.以 application.properties, MultipartProperties 和 MultipartAutoConfiguration 来说明. SpringBoot在创建MultipartProperties bean时,会去读取application.properties文件, 将数据封装,这个Bean会被注入关联的MultipartAutoConfiguration Bean里面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Vue路由守卫的使用

示例如下&#xff1a;&#xff08;第一张图&#xff09;当你点击车1的时候你写了路由守卫就点不开出现无权访问 &#xff08;第二张图&#xff0c;就是可以访问后的图&#xff09;有路由守卫点不开的情况下当你在本地存储中写了你在路由守卫中写的东西就可以进入了 你需要在r…

飞书API 2-1:如何通过 API 创建文件夹?

本文探讨如何通过飞书的 API 来创建文件夹。通过 API 创建的文件夹&#xff0c;一般是放在共享空间&#xff0c;如果要放在个人空间&#xff0c;建议手动创建。 查看 API 文档 API 路径&#xff0c;可在飞书开放平台的服务端 API&#xff0c;依次查找云文档>云空间>文件…

Iptables深入浅出

1、iptables的基本概念 众所周知iptables是Linux系统下自带免费的包过滤防火墙。其实不然&#xff0c;iptables其实不是真正的防火墙&#xff0c;我们可以把它理解成一个客户端代理&#xff0c;用户通过iptables这个代理&#xff0c;将用户的安全设定执行到对应的”安全框架”…

05-5.3.1_1 二叉树的先中后序遍历

&#x1f44b; Hi, I’m Beast Cheng&#x1f440; I’m interested in photography, hiking, landscape…&#x1f331; I’m currently learning python, javascript, kotlin…&#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

大家来决定:python-office运行时的提示信息,要不要删除?

​ 大家好&#xff0c;这里是程序员晚枫&#xff0c;今天想请大家投票决定一下&#xff1a;运行python-office时的下面这种中文提示信息&#xff0c;要不要全部都取消了&#xff1f;&#x1f447; 为什么加这个提示&#xff1f; 我是在2022年发布的这个开源项目&#xff0c;并…

算法排序之冒泡排序及优化

public class Bubbling {public static void main(String[] args) {// 定义需要排序的数组int[] arr {0,1,21,2,31,12,5,8};// 冒泡排序方法bubbleSort(arr);bubbleOptSort(arr);}/*** 冒泡排序* param arr 数组*/public static void bubbleSort(int[] arr){// i0&#xff0c;…

Python编程环境搭建

简介&#xff1a; Python环境安装比较简单&#xff0c;无需安装其它依赖环境&#xff0c;主要步骤为&#xff1a; 1. 下载并安装Python对应版本解释器 2. 下载并安装一个ide编码工具 一、下载并安装Python解释器 1.1 下载 官网地址&#xff1a;Welcome to Python.org 选择…

Java云HIS医院管理系统源码 B/S架构 一体化电子病历系统源码 基于云端SaaS平台源码,采用B/S(Browser/Server)架构

“云”指系统采用云计算的技术和建设模式&#xff0c;具有可扩展、易共享、区域化、易协同、低成本、易维护、体验好的优势。“H”是医疗卫生&#xff0c;由原来医院 (Hospital)到现在的医疗卫生 (Healthcare)&#xff0c;拓展了 H的内涵与外延。云 HIS 重新定义了医院信息系统…

【笔记】为什么不同硬件的1T实际硬盘容量硬盘是954GB或者931GB?

问题描述 不管是电脑还是移动硬盘&#xff0c;厂家描述的1T硬盘容量都不是计算机知识领域内真正的1T大小&#xff0c;硬盘容量实际是小于1TB的。 另外还发现对于1TB的不同厂家设备有着实际不同的磁盘容量&#xff0c;比如为什么有的1T电脑硬盘是954GB&#xff0c;而移动硬盘是…

用Python分析《三国演义》中的人物关系网

用Python分析《三国演义》中的人物关系网 三国演义获取文本文本预处理分词与词频统计引入停用词后进行词频统计构建人物关系网完整代码 三国演义 《三国演义》是中国古代四大名著之一&#xff0c;它以东汉末年到晋朝统一之间的历史为背景&#xff0c;讲述了魏、蜀、吴三国之间…

zabbix自定义监控mysql状态和延迟

zabbix自定义监控mysql状态和延迟 文章目录 zabbix自定义监控mysql状态和延迟zabbix自定义监控mysql状态配置主从配置自定义监控添加监控项添加触发器模拟测试异常 zabbix自定义监控mysql延迟配置自定义监控添加监控项添加触发器测试 zabbix自定义监控mysql状态 配置主从 1.安…

FreeRTOS简单内核实现5 阻塞延时

文章目录 0、思考与回答0.1、思考一0.2、思考二0.3、思考三 1、创建空闲任务2、实现阻塞延时3、修改任务调度策略4、提供延时时基4.1、SysTick4.2、xPortSysTickHandler( )4.3、xTaskIncrementTick( ) 5、实验5.1、测试5.2、待改进 0、思考与回答 0.1、思考一 为什么 FreeRTO…

hbuilderx如何创建html模板

需求&#xff1a;想要将34.html文件的内容作为一个模板&#xff0c;以便后续直接能创建类似内容的html文件 1 首先ctrlc复制模板文件 2 在顶部菜单栏点击 文件 -> 新建 或者使用快捷键 CtrlN 3 在弹出的对话框中选择【自定义模板】 4 将第一步复制的模板文件复制到弹出的文件…

Android Studio项目升级报错:Namespace not specified

原项目升级AGP到8.0时报错&#xff1a; Namespace not specified. Specify a namespace in the modules build file: C:\Users\Administrator\Desktop\MyJetpack\app\build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about…

IT人的拖延——这个任务太复杂,太难了怎么办?

随着科技的发展&#xff0c;IT人需要不断地运用新技术来解决更多传统方式难以解决的问题&#xff0c;有些问题真的不是不想解决&#xff0c;而是真的太复杂&#xff0c;太难了&#xff0c;根本不知道从何开始&#xff0c;也没有什么前辈的经验可以借鉴。我们这些对事情难度的认…

软链接和硬链接的详解 (Linux系统下)

文章目录 硬链接的引入软链接和硬链接的形成软链接硬链接 软硬链接区别的探究硬链接数结语 硬链接的引入 当我们在命令行中输入ll时会出现很多行信息&#xff0c;详情请看下面的图 ~~~~εεε(&#xffe3;▽&#xffe3;) 我在之前的几篇Linux的文章也讲过哦 (o&#xff9f;v…

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中&#xff0c;有效的电池管…

buuctf-findKey

exe文件 运行发现这个窗口,没有任何消息 32位 进入字符串就发现了flag{ 左边红色代表没有F5成功 我们再编译一下(选中红色的全部按p) LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) {int v5; // eaxsize_t v6; // eaxDWORD v7; /…

【python基础语法1】注释,变量与运算符

这里写自定义目录标题 一、注释分类注意 二、变量变量的声明变量的命名注意 变量的交换常量 三、数据类型分类六大标准数据类型Number 数字类型 分类&#xff1a;2个内置方法 type 和 id自动类型转换强制类型转换容器类型分类&#xff1a;五个字符串类型 str列表类型 list内置函…

【Numpy】一文向您详细介绍 np.round()

【Numpy】一文向您详细介绍 np.round() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;…