Spring修炼之路--基础知识

news2025/1/30 16:30:36

一、核心概念

1.1软件模块化

软件模块化是一种软件开发的设计模式,它将一个大型的软件系统划分成多个独立的模块,每个模块都有自己的功能和接口,并且能够与其他模块独立地工作1. 软件模块化设计可以使软件不至于随着逐渐变大而变得不可控,最终要达到可控、可维护、可扩展的目的2

Model-View-Controller 

将软件用户界面和业务逻.辑分离

再细化 

每一层承担特定的职能,高层依赖于低层辑分离

 具体技术

分布式服务器

 模块化开发可以带来以下好处

  • 提高代码的复用性:模块化可以将代码划分成可重用的部分,降低代码的冗余和重复,提高代码的复用性。
  • 简化代码的维护和调试:当一个软件系统变得越来越复杂时,进行模块化开发可以使得每个模块都相对独立,这样就可以方便地维护和调试每个模块,而不必考虑整个系统的复杂性。
  • 提高代码的可读性:模块化可以使得代码更加结构化,清晰明了,从而提高代码的可读性和可维护性。
  • 提高开发效率:模块化开发可以使得团队成员在不同模块上并行开发,从而提高开发效率。
  • 降低项目的风险:模块化开发可以使得开发

总之,模块化开发是一种有效的软件开发模式,可以提高软件开发的质量、效率和可维护性,特别是在大型软件系统的开发中,模块化更是必不可少的。

1.2Spring技术栈

Spring技术栈提供了Servlet和反应式这两种Web技术栈,在应用层面充分向异步和非阻塞并发靠拢。Spring MVC为现有的应用程序提供了一些反应式特性。Spring Boot 2内置了反应式Web容器,默认使用的是Netty,当然也可以选择Tomcat、Jetty或Undertow,应用程序可以分别通过Spring MVC(spring-webmvc模块)和Spring WebFlux(spring-webflux模块)来使用这两个技术栈。

 1.3Servlet原理

工作机制

Servlets的作用

  • 通讯功能
  • Servlet对象的生命周期管理
  • 多线程支持
  • 安全性支持

Servlet和JSP的区别

Servlet和JSP的区别如下:Servlet在Java代码中可以通过HttpServletResponse对象动态输出HTML内容,而JSP是在静态HTML内容中嵌入Java代码,然后Java代码在被动态执行后生成HTML内容。JSP可以方便地实现页面的动态生成,可以更好地实现MVC模式,而Servlet更适合处理业务逻辑。JSP的执行过程是先编译成Servlet,再由Servlet容器进行执行。因此,JSP的执行效率比Servlet低

1.4Spring容器

Spring容器来负责创建对象并把对象关联起来提供服务。

  • 容器提供了公共服务
  • 容器依赖于配置信息

Spring框架配置

相关注解

 相关容器

Spring拥有两种类型的容器


BeanFactory
BeanFactorv负责读取bean配置信息,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的生命周期,每次获取对象时才会创建对象


ApplicationContext
ApplicationContext由BeanFactory派生而来, 同时也继承了容器的高级功能,如:MessageSource(国际化资源接口)、ResourceLoader(资源加载接口)、ApplicationEventPublisher(应用事件发布接口)等,提供了更多面向实际应用的功能。在容器启动时就会创建所有的对象

 生命周期

控制反转

控制反转是指Bean对象之间的依赖不由它们自己管理,而是由Spring容器负责管理对象之间的依赖
Spring容器采用依赖注入(DI)的方式实现控制反转

解释

控制反转和依赖注入是两个相关的软件设计原则,它们的目的是降低代码之间的耦合度,提高可维护性和可测试性。控制反转(Inversion of Control,IoC)是一种思想,它指的是将对象的创建和管理交给一个外部容器,而不是由对象自己控制。依赖注入(Dependency Injection,DI)是实现控制反转的一种常用方法,它指的是在对象创建时,由容器将对象所依赖的其他对象注入到它的属性或构造方法中。这样,对象就不需要自己创建或查找依赖的对象,而只需要声明它们的类型或名称 

举例

例如,假设有一个类A,它依赖于另一个类B。如果没有控制反转和依赖注入,类A可能会在自己的构造方法中使用new关键字来创建一个类B的实例。这样,类A就和类B紧密耦合在一起,如果类B发生了变化,类A也需要修改。而且,这样的代码很难进行单元测试,因为类A无法替换掉类B的实例。

如果使用了控制反转和依赖注入,类A就不需要自己创建类B的实例,而是将它作为一个参数传入自己的构造方法中。这样,类A就只需要知道类B的接口,而不需要关心它的具体实现。而且,这样的代码更容易进行单元测试,因为类A可以使用模拟对象(mock object)来代替类B的实例。

注解方式


@Autowired时,首先在容器中查询对应类型的bean
如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据
如果查询的结果不止一个,那么@Autowired会根据变量的名称来查找。 

 

1.5 Maven简介 

 Maven文件架构

POM文件

POM文件是Maven项目的配置文件,它用XML格式描述了项目的基本信息、依赖关系、构建设置、报告生成等内容。POM文件通常放在项目的根目录下,命名为pom.xml。POM文件的结构由一个project元素和若干子元素组成,其中最重要的三个子元素是groupId, artifactId和version,它们组成了Maven坐标,用来唯一标识一个项目或者一个构件

POM文件中还可以定义一些其他的子元素,例如:

  • packaging: 项目的打包类型,如jar, war, ear等。
  • dependencies: 项目所依赖的其他构件,可以指定依赖的范围、类型、可选性等属性。
  • parent: 项目的父项目,可以继承父项目的一些配置信息。
  • dependencyManagement: 项目的依赖管理,可以统一管理依赖的版本号等信息。
  • modules: 项目的子模块,可以将一个大型项目拆分为多个子模块,方便管理和协作。
  • properties: 项目的自定义属性,可以在POM文件中使用${name}引用。
  • build: 项目的构建设置,包括插件、目标、资源等信息。
  • reporting: 项目的报告生成设置,包括插件、输出目录等信息。
  • name, description, url等: 项目的更多信息,用于描述项目的名称、简介、网址等内容。
<!-- project元素是pom文件的根元素 -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- modelVersion元素指定了pom文件使用的Maven模型版本,固定为4.0.0 -->
    <modelVersion>4.0.0</modelVersion>

    <!-- groupId, artifactId和version元素组成了Maven坐标,用来唯一标识一个项目或者一个构件 -->
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- packaging元素指定了项目的打包类型,如jar, war, ear等 -->
    <packaging>jar</packaging>

    <!-- name, description, url等元素用于描述项目的名称、简介、网址等内容 -->
    <name>My App</name>
    <description>A simple app for demonstration</description>
    <url>http://www.example.com/my-app</url>

    <!-- parent元素指定了项目的父项目,可以继承父项目的一些配置信息 -->
    <parent>
        <groupId>com.example</groupId>
        <artifactId>my-parent</artifactId>
        <version>1.0</version>
        <!-- relativePath元素指定了父项目pom文件的相对路径,如果不指定,默认为../pom.xml -->
        <relativePath>../my-parent/pom.xml</relativePath>
    </parent>

    <!-- properties元素定义了项目的自定义属性,可以在pom文件中使用${name}引用 -->
    <properties>
        <!-- 例如,定义了Java编译器的版本为1.8 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- 也可以定义一些其他的属性,如依赖的版本号等 -->
        <junit.version>5.7.2</junit.version>
        <log4j.version>2.14.1</log4j.version>
    </properties>

    <!-- repositories元素定义了项目所使用的远程仓库,可以指定仓库的ID、名称、URL等信息 -->
    <!-- 远程仓库可以提供项目所依赖的构件,也可以用于发布项目生成的构件 -->
    <repositories>
        <!-- 例如,定义了一个名为central的远程仓库,它是Maven默认使用的仓库,提供了大量的开源构件 -->
        <repository>
            <id>central</id>
            <name>Maven Central Repository</name>
            <url>https://repo.maven.apache.org/maven2/</url>
            <!-- releases和snapshots元素指定了仓库是否支持发布或者获取正式版或者快照版的构件 -->
            <!-- enabled元素指定了是否启用该仓库,默认为true -->
            <!-- updatePolicy元素指定了更新策略,如always, never, daily等 -->
            <!-- checksumPolicy元素指定了校验和策略,如ignore, fail, warn等 -->
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
        </repository>
        <!-- 其他仓库可以按需添加 -->
    </repositories>

    <!-- dependencies元素定义了项目所依赖的其他构件,可以指定依赖的范围、类型、可选性等属性 -->
    <dependencies>
        <!-- 例如,依赖于JUnit测试框架,范围为test,表示只在测试时使用 -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- 其他依赖可以按需添加 -->
    </dependencies>

    <!-- build元素定义了项目的构建设置,包括插件、目标、资源等信息 -->
    <build>
        <!-- finalName元素定义了项目打包后的文件名,默认为${artifactId}-${version} -->
        <finalName>my-app-1.0</finalName>

        <!-- plugins元素定义了项目使用的插件,可以指定插件的版本、配置、目标等信息 -->
        <!-- 插件可以执行一些特定的任务,如编译、打包、测试、部署等 -->
        <plugins>
            <!-- 例如,使用maven-compiler-plugin插件来编译Java源代码 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- version元素指定了插件的版本号 -->
                <version>3.8.1</version>
                <!-- configuration元素指定了插件的配置信息 -->
                <configuration>
                    <!-- source和target元素指定了Java编译器的版本,也可以使用properties中定义的属性 -->
                    <!--<source>${maven.compiler.source}</source>-->
                    <!--<target>${maven.compiler.target}</target>-->
                    <!-- encoding元素指定了Java源代码的编码格式 -->
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Maven生命周期

 Maven插件

Maven插件是一些用来执行特定任务的软件组件,它们可以在Maven的生命周期阶段中被调用,也可以直接通过命令行来执行。Maven插件的工作原理是,它们接收一些配置参数,然后根据这些参数来完成一些操作,如编译、打包、测试、部署等。Maven插件通常由一个或多个目标(goal)组成,每个目标都对应一个具体的功能。

Maven插件有两种类型:构建插件(build plugins)和报告插件(reporting plugins)。构建插件在构建过程中执行,并在pom.xml的<build>元素中配置。报告插件在网站生成过程中执行,并在pom.xml的<reporting>元素中配置。

Maven提供了很多内置的插件,如maven-compiler-plugin, maven-jar-plugin, maven-war-plugin等,它们分别用于编译Java源代码,打包JAR文件,打包WAR文件等。除了内置的插件,还有很多第三方提供的插件,如maven-shade-plugin, maven-checkstyle-plugin, maven-surefire-plugin等,它们分别用于创建Uber-JAR文件,检查代码风格,运行单元测试等

二、Spring介绍

2.1Spring boot

 Spring Boot 是一个基于 Spring Framework 的项目,它可以让您更容易和更快地创建和运行简单或者基于 web 的应用程序。它是一个 Spring 模块,提供了 RAD (快速应用开发) 的特性。Spring Boot 可以根据您的类路径和配置的 bean,自动添加一些缺失的组件和设置。

 Starter功能

  • 内嵌Tomcat、Jetty或Undertow
  • 采用Starter POM简化Maven的配置
  • 提供产品级的运行监控功能

  Starter原理

 相关配置

 在POM文件中定义继承Spring-boot-starter-parent

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- Lookup parent from repository -->
</ parent>

在插件中采用SpringBoot的插件来编译打包应用

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

@SpringBootApplication是一个复合注解
        @Target(ElementType.TYPE)
        @Retention(RetentionPolicy.RUNTIME)
        @Documented
        @Inherited
        @Configuration
        @EnableAutoConfiguration
        @ComponentScan

        @interface
@Configuration 注解,实现配置文件的功能.
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }).
@ComponentScan:Spring组件扫描.

SpringBoot使用一个全局的配置文件application.properties或者application.yml(或者是yaml)
        作用是修改SpringBoot自动配置的默认值;

Actuator

Spring 的Actuator是一个用于监控和管理Spring Boot应用的模块,它提供了一系列的端点(endpoints),可以通过HTTP或JMX来访问。通过这些端点,我们可以获取应用的运行状态、健康状况、配置信息、性能指标、日志信息等。

 Actuator的使用非常简单,只需要在pom.xml中添加spring-boot-starter-actuator依赖,就可以开启Actuator的功能。默认情况下,Actuator只会暴露两个端点:/actuator/health和/actuator/info,分别用于查看应用的健康情况和基本信息。如果要暴露更多的端点,需要在application.properties中进行配置。

 2.2RESTful API

RESTful API是一种遵循REST原则的应用程序接口,REST是一种软件架构风格,它定义了网络服务之间和客户端之间应该如何通信。RESTful API使用HTTP方法,如GET, POST, PUT, 和DELETE,来对资源进行操作,资源由统一资源标识符(URI)来标识。RESTful API还支持不同的数据交换格式,如JSON, XML, 或纯文本。RESTful API的目标是简单、可扩展、无状态、和统一的。

使用RESTful API的一些好处有:

  • 它易于理解和实现,因为它使用了标准的HTTP协议和常见的数据格式。
  • 它灵活和可扩展,因为它允许开发者根据自己的需求选择最合适的工具和技术。
  • 它互操作和兼容,因为它可以与任何支持HTTP和数据格式的系统通信。
  • 它高性能和可靠,因为它可以利用HTTP的特性,如缓存、压缩、和并发。

URL构成

 RESTful操作

 HTTP五种操作

Get请求

Post请求 

Put请求 

DELETE请求

2.3Spring MVC 

Spring MVC是一个基于Java的Web框架,它遵循模型-视图-控制器(MVC)的设计模式。它实现了Spring框架的核心功能,如控制反转、依赖注入等。Spring MVC通过使用DispatcherServlet来优雅地实现MVC模式。DispatcherServlet是一个类,它接收来自客户端的请求,并将其转发给合适的处理器,如控制器、模型、视图等

 

Spring MVC中的Controller负责接收HTTP Request

  • 交给View生成HTML页面 (传统的方式)
  • 直接把数据写入到Http Response中(Restful)

RestFul Controller的注解

@RestController 是 Spring Framework 中用于创建 RESTful web services 的注解。它是一个方便的注解,将 @Controller 和 @ResponseBody 注解结合在一起,从而无需在控制器类的每个请求处理方法上使用 @ResponseBody 注解 


@RestController

  • 与@Controller标签相同,用于标注在类定义前面,使得类会被认定为Controller对象
  • 用于告知Spring容器,该类所有方法的返回值需要以JSON格式写到Response的Body内。

 2.4基于javax.validation的合法性检查

javax.validation是一套JavaBean参数校验的标准,它定义了很多常用的校验注解1。这些注解可以直接加在JavaBean的属性上,以便在需要校验的时候进行校验2。在Spring Boot中,可以使用@Valid注解来启用参数校验1。如果您需要自定义校验注解,可以使用Hibernate Validator

 

2.5跨域访问

跨源资源共享(CORS)是一种基于HTTP头的机制,它通过允许服务器标识除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源1。CORS机制允许Web应用服务器进行跨源访问控制,从而使跨源数据传输得以安全进行1。现代浏览器支持在API容器中(例如XMLHttpRequest或Fetch)使用CORS,以降低跨源HTTP请求所带来的风险,在Spring Boot中,可以使用addCorsMappings()方法来添加CORS映射

2.6 Tomcat并发原理

Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式。其中,bio(blocking I/O,阻塞式I/O操作)是表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)

nio(non-blocking I/O,非阻塞式I/O操作)是一种基于缓冲区、并能提供非阻塞I/O操作的Java API,它拥有比传统I/O操作(BIO)更好的并发运行性能. 在Tomcat中,可以使用org.apache.coyote.http11.Http11NioProtocol协议来启用NIO模式

 

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

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

相关文章

​ICCV 2023 | 图像分割全新思路:仅用文本描述实现图像分割!

论文链接&#xff1a; https://arxiv.org/pdf/2308.14575.pdf 代码链接&#xff1a; https://github.com/fawnliu/TRIS 基本概念&#xff1a;Referring Image Segmentation&#xff08;RIS&#xff09;是一种图像分割技术&#xff0c;旨在根据自然语言表达来标记图像或视频中表…

教师节 | 拓世AI这样用,教案不再费神,辅助教师教学全流程

随着科技的不断进步&#xff0c;人工智能和大数据技术所带来的新的信息技术革命在每个细分领域生根发芽&#xff0c;教育领域也不例外。这个新时代的教育充满了挑战和机遇&#xff0c;科技的发展正引领着教育走向一个全新的境界。 教育是社会进步的重要引擎&#xff0c;教师是…

Ubuntu23.10将推出全磁盘加密功能,提高系统安全性

Canonical 宣布其即将推出的 Ubuntu 23.10&#xff08;Mantic Minotaur&#xff09;将引入基于 TPM 的全磁盘加密的初步支持。这个特性将利用系统可信平台模块&#xff08;TPM&#xff09;&#xff0c;在系统级别上进行全磁盘加密&#xff0c;从而提高系统的安全性。 但需要注…

【zip密码】7z分卷压缩如何加密?

想要压缩的文件过大&#xff0c;想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置&#xff1f; 想要分卷压缩文件并加密一起操作就可以完成了&#xff0c;设置方法如下&#xff1a; 打开7-zip&#xff0c;选中需要压缩的文件&#xff0c;选择…

大数据技术之Hadoop:提交MapReduce任务到YARN执行(八)

目录 一、前言 二、示例程序 2.1 提交wordcount示例程序 2.2 提交求圆周率示例程序 三、写在最后 一、前言 我们前面提到了MapReduce&#xff0c;也说了现在几乎没有人再写MapReduce代码了&#xff0c;因为它已经过时了。然而不写代码不意味着它没用&#xff0c;当下很火…

两性养生网站源码 生活类减肥网站源码 健康网模板源码 支持QQ登录和百度主动推送

本套模板非常适合生活类&#xff0c;两性类&#xff0c;减肥类等等类型的网站&#xff0c;这类型网站比较好做流量&#xff0c;因为客户群体众多&#xff0c; 可以自行改内容为其他类型网站模板总体非常简洁漂亮&#xff0c;配色合理&#xff0c;视觉舒服&#xff0c;并且配合…

合创汽车V09纵享商务丝滑?预售价32万元起,正式宣布大规模生产

合创汽车正式宣布&#xff0c;旗下新款车型V09已于9月10日开始大规模生产&#xff0c;并预计将于10月13日正式上市。V09作为中大型纯电动MPV的代表之一&#xff0c;备受瞩目。该车型是广汽新能源和蔚来汽车共同成立的广汽蔚来改为广汽集团和珠江投管共同投资的高端品牌——合创…

C语言练习:输入日期输出该日期为当年第几天

用scanf()输入某年某月某日&#xff0c;判断这一天是这一年的第几天。以3月5日为例&#xff0c;应该先把前两个月的加起来&#xff0c;然后再加上5天即本年的第几天&#xff0c;特殊情况&#xff0c;闰年且输入月份≥3时需考虑多加一天。注&#xff1a;判断年份是否为闰年的方法…

Web server failed to start. Port 8080 was already in use.之解决方法

问题&#xff1a; Web server failed to start. Port 8080 was already in use&#xff0c;这句错误描述意思是当前程序的端口号8080被占用了&#xff0c;需要将占用该端口的程序停止掉才行&#xff1b;错误如图所示&#xff1a; 解决方法&#xff1a; 按住winr&#xff0c;输入…

AI在医疗保健领域:突破界限,救治生命

文章目录 AI在医学影像分析中的应用AI在疾病预测和早期诊断中的作用个性化治疗和药物研发医疗数据管理和隐私保护未来展望 &#x1f389;欢迎来到AIGC人工智能专栏~AI在医疗保健领域&#xff1a;突破界限&#xff0c;救治生命 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博…

第17章_瑞萨MCU零基础入门系列教程之CAN FD 模块

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

buuctf crypto 【Dangerous RSA】解题记录

1.打开文件 2.看到e非常小&#xff0c;c和n都很大&#xff0c;应该是低加密指数&#xff0c;上脚本 from gmpy2 import * from Crypto.Util.number import * n0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbec…

王道考研:作业调度、内存调度、进程调度;进程的挂起状态;进程调度的时机、闲逛进程;调度算法的评价指标;不同调度算法性能的对比分析

一、作业调度、内存调度、进程调度 有时候使用手机切换进程的时候会出现卡顿的现象&#xff0c;这就是因为中级调度的原语 二、进程调度的时机 普通的临界区就是临界资源&#xff0c;比如访问打印机 调度程序是操作系统内核的一个模块 三、调度算法的评价指标 四、不同的调度…

栅格转换为CSV数据时如何优化数据文件的大小

在一些模型运算过程中我们需要将栅格数据转换为CSV数据进行计算输入。但栅格数据转换成矢量&#xff08;CSV&#xff09;后非常非常大。这个数据通常会是GB级别的。对于我们一般电脑运算的话&#xff0c;可能会非常困难&#xff0c;而且运算越复杂你不成功的几率越大 &#xf…

RESP无法连接linux上redis问题

1.本机无法ping通虚拟机IP 没有打开服务&#xff08;这只是无法ping通虚拟机的一种原因&#xff09; 其他原因可以参考 虚拟机ping不通的几种原因及解决办法_虚拟机ping不通主机_在键盘上弹钢琴的菜菜的博客-CSDN博客 2.未关闭linux系统的防火墙导致无法连接redis 查看防火墙…

最新清理删除Mac电脑内存空间方法教程

Mac电脑使用的时间越久&#xff0c;系统的运行就会变的越卡顿&#xff0c;这是Mac os会出现的正常现象&#xff0c;卡顿的原因主要是系统缓存文件占用了较多的磁盘空间&#xff0c;或者Mac的内存空间已满。如果你的Mac运行速度变慢&#xff0c;很有可能是因为磁盘内存被过度占用…

【PHY】3GPP UE能力类别的变化

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

态、势、感、知与时空、关系

态势感知是一种通过收集、整合、分析和解释大量的时空数据&#xff0c;以获取关于特定领域、地区或事件的全面理解的过程。时空和关系在态势感知中扮演着非常重要的角色。 态&#xff1a;态指的是物体或系统所处的状态或状况。在不同的态下&#xff0c;物体或系统的性质、行为和…

C生万物之函数

前言&#xff1a; &#x1f4d5;作者简介&#xff1a;热爱编程的小七&#xff0c;致力于C、Java、Python等多编程语言&#xff0c;热爱编程和长板的运动少年&#xff01; &#x1f4d8;相关专栏Java基础语法&#xff0c;JavaEE初阶&#xff0c;数据库&#xff0c;数据结构和算法…

行人属性识别数据集PA100K介绍

本文介绍pa100k数据集&#xff0c;是从GitHub上paddleCLA工程中提供的路径下载&#xff0c;针对该数据集进行介绍&#xff1a; 01 - 图像信息 训练集 - 80000张图像验证集 - 10000张图像测试集 - 10000张图像 02 - 标签信息 属性1&#xff1a;有无帽子 - [0] 属性2&#xf…