《Spring Framework实战》8:4.1.3.Bean 概述
欢迎观看《Spring Framework实战》视频教程
Spring IoC 容器管理一个或多个 bean。这些 bean 是使用 您提供给容器的配置元数据(例如,以 XML <bean/>定义的形式)。
在容器本身中,这些 bean 定义表示为BeanDefinition对象,其中包含(除其他信息外)以下元数据:
- 包限定的类名:通常是 bean 被定义。
- Bean 行为配置元素,这些元素表示 Bean 在 容器(范围、生命周期回调等)。
- 对 Bean 执行其工作所需的其他 Bean 的引用。这些 引用也称为协作者或依赖项。
- 要在新创建的对象中设置的其他配置设置 — 例如,大小 pool 的限制或要在管理 连接池。
此元数据转换为构成每个 Bean 定义的一组属性。 下表描述了这些属性:
表 1.bean 定义 | |
属性 | 解释 |
Class | 实例化 Bean |
Name | 命名 Bean |
Scope | Bean 作用域 |
Constructor arguments | 依赖关系注入 |
Properties | 依赖关系注入 |
Autowiring mode | 自动装配协作者 |
Lazy initialization mode | 延迟初始化的 Bean |
Initialization method | 初始化回调 |
Destruction method | 销毁回调 |
除了包含有关如何创建特定 bean,则实现还允许注册现有的 在容器外部创建的对象(由用户创建)。这是通过访问 ApplicationContext 的 实现。 支持 此注册通过 和 方法。但是,典型的应用程序仅使用通过常规定义的 bean Bean 定义元数据。ApplicationContextBeanFactorygetBeanFactory()DefaultListableBeanFactoryDefaultListableBeanFactoryregisterSingleton(..)registerBeanDefinition(..)
Bean 元数据和手动提供的单例实例需要注册为 early 为了让容器在自动装配期间正确地推断它们 和其他内省步骤。在覆盖现有元数据和现有 在某种程度上支持单例实例,在 运行时(与工厂的实时访问同时)不受官方支持,可能会 导致并发访问异常、Bean 容器中的状态不一致,或两者兼而有之。 |
-
-
-
- 覆盖 Bean
-
-
当使用已经 分配。虽然 bean 覆盖是可能的,但它会使配置更难阅读。
Bean 覆盖将在将来的发行版中弃用。 |
要完全禁用 bean 覆盖,可以在刷新之前将标志设置为 on。在这样的设置中, 如果使用 Bean 覆盖,则引发 Exception。allowBeanDefinitionOverridingfalseApplicationContext
默认情况下,容器会记录每次在级别覆盖 Bean 的尝试,以便 您可以相应地调整您的配置。虽然不建议这样做,但您可以静音 通过将标志设置为 .INFOallowBeanDefinitionOverridingtrue
Java 配置
如果使用 Java Configuration,则相应的方法始终以静默方式覆盖 具有相同组件名称的扫描 Bean 类,只要该方法的返回类型与该 Bean 类匹配即可。这只是意味着容器将调用 Factory 方法优先使用 Bean 类上任何预先声明的构造函数。@Bean@Bean@Bean
我们承认在测试场景中覆盖 bean 很方便,并且 从 Spring Framework 6.2 开始明确支持这一点。有关更多详细信息,请参阅此部分。 |
-
-
-
- 命名 Bean
-
-
每个 bean 都有一个或多个标识符。这些标识符在 托管 Bean 的容器。一个 bean 通常只有一个标识符。但是,如果它 需要多个,额外的可以被视为别名。
在基于 XML 的配置元数据中,您可以使用 attribute、 attribute 或 两者都用于指定 Bean 标识符。该属性允许您指定一个 。 通常,这些名称是字母数字('myBean'、'someService' 等),但它们 也可以包含特殊字符。如果要为 bean,你也可以在属性中指定它们,用逗号 () 分隔, 分号 () 或空格。尽管该属性被定义为类型,但 Bean 唯一性是由容器强制执行的,而不是由 XML 强制执行的 解析 器。idnameididname,;idxsd:stringid
您不需要为 bean 提供 a 或 an。如果未显式提供 or,则容器将为该 bean 生成唯一名称。然而 如果要按名称引用该 bean,请使用元素或 Service Locator 样式查找,您必须提供名称。 不提供名称的动机与使用内部 bean 和自动装配协作者有关。nameidnameidref
Bean 命名约定
约定是在以下情况下对实例字段名称使用标准 Java 约定 命名 bean。也就是说,Bean 名称以小写字母开头,并且是驼峰式大小写的 从那里开始。此类名称的示例包括 、 等。accountManageraccountServiceuserDaologinController
一致地命名 bean 使您的配置更易于阅读和理解。 此外,如果你使用 Spring AOP,那么在将 advice 应用于一组 bean 时,它会有很大帮助 按名称相关。
通过在 Classpath 中进行组件扫描, Spring 会为 unnamed 生成 bean 名称 组件,遵循前面描述的规则:本质上,采用简单的类名 并将其初始字符转换为小写。然而,在(不寻常的)特别 当有多个字符并且同时具有第一个和第二个字符时 为大写,则保留原始大小写。这些规则与 定义者(Spring 在此处使用)。java.beans.Introspector.decapitalize |
在 Bean 定义之外为 Bean 设置别名
在 bean 定义本身中,您可以通过使用 属性指定的最多一个名称与任意数量的其他名称的组合 names 在属性中。这些名称可以是同一 bean 的等效别名 ,并且在某些情况下很有用,例如让应用程序中的每个组件 使用特定于该组件的 Bean 名称来引用公共依赖项 本身。idname
指定实际定义 bean 的所有别名并不总是足够的, 然而。有时需要为定义的 bean 引入别名 别处。在配置拆分的大型系统中,通常会出现这种情况 在每个子系统中,每个子系统都有自己的一组对象定义。 在基于 XML 的配置元数据中,您可以使用 Element 来完成 这。以下示例显示了如何执行此操作:<alias/>
<alias name="fromName" alias="toName"/>
在这种情况下,名为 使用此别名定义后,称为 。fromNametoName
例如,子系统 A 的配置元数据可以通过 的名称。子系统 B 的配置元数据可以引用 名称为 .编写主应用程序时 使用这两个子系统,则主应用程序通过 的名称。要让所有三个名称都引用同一个对象,您可以 将以下别名定义添加到配置元数据中:subsystemA-dataSourcesubsystemB-dataSourcemyApp-dataSource
<alias name="myApp-dataSource" alias="subsystemA-dataSource"/>
<alias name="myApp-dataSource" alias="subsystemB-dataSource"/>
现在每个组件和主应用程序都可以通过名称来引用 dataSource 这是唯一的,并且保证不会与任何其他定义冲突(有效地 创建命名空间),但它们引用同一个 bean。
Java 配置
如果使用 Java 配置,则注释可用于提供别名。 有关详细信息,请参阅使用 @Bean 注释。@Bean
-
-
-
- 实例化 Bean
-
-
bean定义本质上是创建一个或多个对象的配方。当被询问时,容器会查看命名bean的配方,并使用该bean定义封装的配置元数据来创建(或获取)实际对象。
如果使用基于XML的配置元数据,则需要在<bean/>元素的class属性中指定要实例化的对象的类型(或类)。这个类属性(在内部是BeanDefinition实例上的class属性)通常是必需的。(有关例外情况,请参阅使用实例工厂方法和Bean定义继承进行实例化。)您可以通过以下两种方式之一使用Class属性:
- 通常,在容器 它本身通过反射性地调用其构造函数来直接创建 Bean 等效于带有运算符的 Java 代码。
- 要指定包含static工厂方法的实际类,即 invoked 来创建对象,在不太常见的情况下,容器在类上调用static工厂方法来创建 Bean。返回的对象类型 从static工厂方法的调用可以是同一个类,也可以是另一个类 类。
嵌套类名
如果要为嵌套类配置 bean 定义,可以使用 binary name 或嵌套类的源名称。
例如,如果您在包中有一个名为 class 的 set,并且 此类有一个名为 的嵌套类,它们可以是 用美元符号 () 或点 () 分隔。因此,在 Bean 定义将是 或 。SomeThingcom.exampleSomeThingstaticOtherThing$.classcom.example.SomeThing$OtherThingcom.example.SomeThing.OtherThing
-
-
-
-
- 使用 Constructor 进行实例化
-
-
-
当你通过构造函数方法创建一个 bean 时,所有普通类都可以被 和 与 Spring 兼容。也就是说,正在开发的类不需要实现 任何特定接口或以特定方式编码。只需指定 bean 类应该就足够了。但是,具体取决于您为该特定 bean,则可能需要一个默认的(空的)构造函数。
Spring IoC 容器几乎可以管理您希望它管理的任何类。是的 不限于管理真正的 JavaBeans。大多数 Spring 用户更喜欢带有 仅对默认 (无参数) 构造函数和适当的 setter 和 getter 进行建模 在容器中的属性之后。你也可以有更多异国情调的非 bean 样式 类。例如,如果您需要使用遗留连接池 绝对不遵守 JavaBean 规范,Spring 可以将其管理为 井。
使用基于 XML 的配置元数据,您可以按如下方式指定 Bean 类:
<bean id="exampleBean" class="examples.ExampleBean"/>
<bean name="anotherExample" class="examples.ExampleBeanTwo"/>
有关向构造函数提供参数的机制的详细信息(如果需要) 以及在构造对象后设置对象实例属性,请参阅注入依赖项。
对于构造函数参数,容器可以选择相应的 constructor 在多个重载构造函数中。也就是说,为避免歧义, 建议使构造函数签名尽可能简单明了。 |
-
-
-
-
- 使用 Static Factory Method 进行实例化
-
-
-
定义使用静态工厂方法创建的 Bean 时,使用该属性指定包含该工厂方法的类和一个属性 named 来指定工厂方法本身的名称。您应该 能够调用此方法(使用可选参数,如下所述)并返回一个实时的 object,该对象随后被视为通过构造函数创建的。 这种 bean 定义的一个用途是在遗留代码中调用工厂。classstaticfactory-methodstatic
以下 Bean 定义指定将通过调用 Factory 方法。定义没有指定返回对象的类型(类), 而是包含 Factory 方法的类。在此示例中,method 必须是 method。以下示例说明如何 指定 Factory 方法:createInstance()static
<bean id="clientService"
class="examples.ClientService"
factory-method="createInstance"/>
下面的示例展示了一个将与前面的 bean 定义一起使用的类:
Java
public class ClientService {
private static ClientService clientService = new ClientService();
private ClientService() {}
public static ClientService createInstance() {
return clientService;
}
}
有关向工厂方法提供(可选)参数的机制的详细信息 以及在从工厂返回对象后设置对象实例属性, 详见 依赖关系和配置。
在工厂方法参数的情况下,容器可以选择相应的 method 的 method。也就是说,为避免歧义, 建议使工厂方法签名尽可能简单明了。 |
工厂方法重载的一个典型问题情况是 Mockito,它有许多 方法的重载。选择最具体的 可能 变体:mockmock <bean id="clientService" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg type="java.lang.Class" value="examples.ClientService"/> <constructor-arg type="java.lang.String" value="clientService"/> </bean> |
-
-
-
-
- 使用实例工厂方法进行实例化
-
-
-
与通过 static factory method 进行实例化类似,使用实例工厂方法进行实例化会调用非 static 方法创建一个新的 bean。要使用此功能 机制中,将属性留空,并在属性 在当前 (或 parent) 容器中指定 bean 的名称,其中包含 要调用以创建对象的 instance 方法。设置 factory 方法本身具有 attribute。以下示例显示了 如何配置这样的 bean:classfactory-beanfactory-method
<!-- the factory bean, which contains a method called createClientServiceInstance() --><bean id="serviceLocator" class="examples.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean --></bean>
<!-- the bean to be created via the factory bean --><bean id="clientService"
factory-bean="serviceLocator"
factory-method="createClientServiceInstance"/>
以下示例显示了相应的类:
Java
public class DefaultServiceLocator {
private static ClientService clientService = new ClientServiceImpl();
public ClientService createClientServiceInstance() {
return clientService;
}
}
一个工厂类还可以包含多个工厂方法,如下例所示:
<bean id="serviceLocator" class="examples.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean --></bean>
<bean id="clientService"
factory-bean="serviceLocator"
factory-method="createClientServiceInstance"/>
<bean id="accountService"
factory-bean="serviceLocator"
factory-method="createAccountServiceInstance"/>
以下示例显示了相应的类:
Java
public class DefaultServiceLocator {
private static ClientService clientService = new ClientServiceImpl();
private static AccountService accountService = new AccountServiceImpl();
public ClientService createClientServiceInstance() {
return clientService;
}
public AccountService createAccountServiceInstance() {
return accountService;
}
}
这种方法表明,工厂 Bean 本身可以通过 依赖注入 (DI)。 详见 依赖关系和配置。
在 Spring 文档中,“工厂 Bean”是指在 Spring 容器,它通过实例或静态工厂方法创建对象。相比之下,(注意大写)指的是特定于 Spring 的 FactoryBean 实现类。FactoryBean |
-
-
-
-
- 确定 Bean 的运行时类型
-
-
-
确定特定 bean 的运行时类型并非易事。中指定的类 Bean 元数据定义只是一个初始类引用,可能会组合在一起 替换为声明的工厂方法,或者是一个可能导致 bean 的运行时类型不同,或者在实例级别的情况下根本不设置 Factory 方法(通过指定名称解析)。 此外,AOP 代理可以使用基于接口的代理包装 bean 实例,其中 目标 Bean 的实际类型(仅其实现的接口)的有限公开。FactoryBeanfactory-bean
了解特定 Bean 的实际运行时类型的推荐方法是 对指定 Bean 名称的调用。这需要以上所有 cases 中,并返回调用的对象类型 将返回相同的 bean 名称。BeanFactory.getTypeBeanFactory.getBean
相关文章:
《Spring Framework实战》8:4.1.3.Bean 概述
欢迎观看《Spring Framework实战》视频教程 Spring IoC 容器管理一个或多个 bean。这些 bean 是使用 您提供给容器的配置元数据(例如,以 XML <bean/>定义的形式)。 在容器本身中,这些 bean 定义表示为BeanDefinition对象&a…...
Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员…...
MyBatis面试-1
1、什么是MyBatis? MyBatis是一个半ORM框架(对象关系映射)。---》Hibernate全ORM框架 ---》基于JDBC封装的框架 专注于SQL语句,不用关心JDBC操作的其他流程 2、MyBatis有什么优点 基于SQL语句的编程,相对来说会更加的灵活和JDBC相比&#…...
GDPU Android移动应用 重点习题集
目录 程序填空 ppt摘选 题目摘选 “就这两页ppt,你还背不了吗” “。。。” 打开ppt后 “Sorry咯,还真背不了😜” 程序填空 网上摘选的大题也挺合适的,太难的帮大家过滤掉了,大家可以看一下。 ✨SharedPrefere…...
软件开发为什么要用CI/CD方法
现代化业务离不开应用。事实上,62% 的企业认为,应用对其业务至关重要,还有 36% 的企业认为,通过应用提升了竞争优势2。快速可靠的应用开发是在数字世界取得成功的关键。持续集成/持续部署(CI/ CD)方法可帮助…...
湘潭大学人机交互复习
老师没给题型也没划重点,随便看看复习了 什么是人机交互 人机交互(Human-Computer Interaction,HCI)是关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的学科。 人机交互研究内容 …...
Java高频面试之SE-10
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 equals和 的区别? 在 Java 中,equals() 方法和 运算符都是用于比较两个对象之间的相等性,但它们的工…...
Java 注解详解:RetentionPolicy 与 ElementType
文章目录 1. RetentionPolicy:注解的生命周期RetentionPolicy 的详细说明SOURCE 示例CLASS 示例RUNTIME 示例 2. ElementType:注解的应用范围ElementType 的详细说明ElementType 示例用于类用于方法用于局部变量 3. RetentionPolicy 与 ElementType 的结…...
javafx 将项目打包为 Windows 的可执行文件exe
要将 JavaFX 项目打包为 .exe 文件,你可以使用一些工具将你的应用程序封装为 Windows 可执行文件。以下是两种常用的方法: 方法 1:使用 jpackage(适用于 JDK 14 及更高版本) jpackage 是 JDK 内置的工具,…...
使用Chrome谷歌浏览器中内置翻译功能
谷歌Chrome浏览器作为全球最受欢迎的网络浏览器之一,提供了强大且便捷的内置翻译功能。这一功能帮助用户轻松跨越语言障碍,浏览试听包括音乐视频直播等网页内容了。 一、启用Chrome内置翻译功能 1、打开谷歌Chrome浏览器:确保你已经安装了最…...
Clojure语言的数据库编程
Clojure语言的数据库编程 引言 在当今社会,数据的处理和管理已经成为一个不可或缺的部分。无论是互联网应用、企业系统还是移动应用,都需要与数据库进行频繁的交互。因此,选择一种合适的编程语言和相应的库来进行数据库编程显得尤为重要。C…...
从零开始:使用VSCode搭建Python数据科学开发环境
引言 在数据科学领域,一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南,您将学会: 安装和配置VSCode,包括基本设置和快捷键配置设置Python开…...
docker minio镜像arm64架构
minio版本为RELEASE.2021-09-03T03-56-13Z 原项目信创改造,服务器资源改为了arm64架构,统信uos docker镜像库内没有对应的minio镜像,当前镜像为拉取源码后,自编译打包镜像,亲测可用。 使用方式 将tar包导入到服务器…...
arcgisPro加载CGCS2000天地图后,如何转成米单位
1、导入加载的天地图影像服务,一开始是经纬度显示的。 2、右键地图,选择需要调整的投影坐标,这里选择坐标如下: 3、点击确定后,就可以调整成米单位的了。 4、切换后结果如下: 如有需要,可调整成…...
MySQL Binlog 监听方案
如果 EmbeddedEngine 类在 debezium-connector-mysql 中不可用,原因是 Debezium 的新版本移除了 EmbeddedEngine。这是因为 Debezium 的架构变更,它现在鼓励使用 Kafka Connect 或 Debezium Server 来处理数据变更事件。 下面是几种替代方法来实现 MySQ…...
openai swarm agent框架源码详解及应用案例实战
文章目录 简介数据类型Agent类Response类Result类Swarm类run_demo_loop交互式会话 基础应用agent-handsofffunction-callingcontext_variablestriage_agent 高阶应用通用客服机器人(support bot)构建航班服务agent 参考资料 openai 在24年10月份开源了一个教育性质的多agents协…...
Qt 5.14.2 学习记录 —— 팔 QWidget 常用控件(3)
文章目录 1、cursor2、font3、toolTip4、focusPolicy5、styleSheet 1、cursor 改变鼠标光标形状。 在Qt Designer界面中,拖一个按钮过来,右边属性面用户可以自己改cursor属性。 代码方法,先拖一个按钮到界面上: #include <Q…...
Nginx (40分钟学会,快速入门)
目录 一、什么是Nginx ? 可以做什么 ? 二、正向代理和反向代理 三、负载均衡 四、动静分离 五、Nginx 常用命令 六、Nginx实战及总结 一、什么是Nginx ? 可以做什么 ? Nginx 是高性能的 HTTP 和反向代理的 web 服务器,…...
C# 中await和async的用法(一)
在 C# 中,await 关键字用于异步编程,配合 async 方法一起使用。await 允许你等待异步操作完成,而不会阻塞当前线程。简而言之,await 会暂停当前方法的执行,直到任务完成,然后继续执行。 1. await与async的关…...
前端JS中var、let、const之间的区别
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、var 二、let 三、const 四、区别 变量…...
【pyqt】(八)ui文件使用
ui文件使用 前面我们已经学过了简单的UI文件创建(利用Qt Designer)和基础控件的使用。现在我们学习如何把二者融合起来完成开发。UI文件以 XML 格式存储界面的布局和各种控件的属性,我们可以利用Qt Designer开发界面,然后利用代码…...
H2数据库在单元测试中的应用
H2数据库特征 用比较简洁的话来介绍h2数据库,就是一款轻量级的内存数据库,支持标准的SQL语法和JDBC API,工业领域中,一般会使用h2来进行单元测试。 这里贴一下h2数据库的主要特征 Very fast database engineOpen sourceWritten…...
ios越狱脚本巨魔商店安装教程
使用爱思助手安装 安装爱思助手:在电脑上安装 iTunes 和爱思助手,并使用 Apple ID 登录2。 IPA 签名:打开爱思助手,选择工具箱中的 IPA 签名。点击添加 IPA 文件,选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…...
Linux C编程——文件IO基础
文件IO基础 一、简单的文件 IO 示例二、文件描述符三、open 打开文件1. 函数原型2. 文件权限3. 宏定义文件权限4. 函数使用实例 四、write 写文件五、read 读文件六、close 关闭文件七、Iseek 绍 Linux 应用编程中最基础的知识,即文件 I/O(Input、Outout…...
【Rust自学】10.4. trait Pt.2:trait作为参数和返回类型、trait bound
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 说句题外话,写这篇的时间比写所有权还还花的久,trait是真的比较难理解的概念。 10.4.1. 把trait作为参数 继续以…...
Java 中的 getDeclaredMethod() 方法:使用与原理详解
在 Java 反射机制中,getDeclaredMethod() 是一个非常重要的方法,用于获取类中声明的特定方法(包括公共、保护、默认和私有方法)。与 getMethod() 不同,getDeclaredMethod() 可以访问类的所有方法,而不仅仅是…...
解决npm报错:sill idealTree buildDeps
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 报错信息 使用 npm 安装依赖时报错:sill idealTree buildDeps 解决方案 请按照以下步骤进行相关操作: 1、删除 C:\Users{账户}\ 文件夹中的 .npm…...
【游戏设计原理】55 - 风险评估
从本文讲述的内容来看,其实使用“游戏中的决策”作为标题更合适。 核心观点:玩家在游戏中不断进行决策,这些决策涵盖风险评估、资源分配、策略选择等多个方面,其核心是通过选择实现最大化回报或最小化损失。关键内容:…...
【AI日记】25.01.08
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI 参加:kaggle 比赛 Forecasting Sticker Sales 读书 书名:国家为什么会失败阅读原因:2024 年诺贝尔经济学奖得主的力作未删减版:https://boo…...
SAP BC 同服务器不同client之间的传输SCC1
源配置client不需要释放 登录目标client SCC1...
用Cline打造你的智能搜索助手:Tavily Search MCP集成指南
引言 本文将详细介绍如何在Cline编辑器中集成Tavily Search智能搜索功能。我们将从MCP(Model Context Protocol)协议基础开始,深入探讨Tavily Search MCP服务器的安装配置、使用方法,以及进阶的二次开发技巧。无论你是AI开发者还…...
未来商贸物流:人工智能与大数据的深度融合
未来商贸物流:人工智能与大数据的深度融合 在当今数字化浪潮汹涌澎湃的时代,商贸物流行业正站在变革的十字路口,而人工智能与大数据宛如一对闪耀的双子星,为其照亮前行的道路,深度融合之下,一个全新的未来…...
网络安全、Web安全、渗透测试之笔经面经总结(三)
本篇文章涉及的知识点有如下几方面: 1.什么是WebShell? 2.什么是网络钓鱼? 3.你获取网络安全知识途径有哪些? 4.什么是CC攻击? 5.Web服务器被入侵后,怎样进行排查? 6.dll文件是什么意思,有什么…...
BMS应用软件开发 — 3 电池系统的组成
目录 1 电池的基本拓扑 2 已经被淘汰的CTM 3 早已经普及的CTP 4 集成度更高的CTC 5 刚性更好的CTB 1 电池的基本拓扑 相比于燃油车,虽然电动车在结构空间上灵活度更高,空间利用率也更好,但现有条件下无法像燃油车一样快速补能ÿ…...
springboot 项目使用nacos注册中心配置,在windows系统下打jar包后不能启动的一个不好排查的问题
起因,一个项目使用的nacos注册中心配置,想学习运维一些知识,项目在本地idea,无论是run,debug模式,都可以正常运行。就学习如何打包,打包好后,如何运jar包,都启动不起来&a…...
Git撤销指定commit并更新远端仓库
Git撤销指定commit并更新远端仓库 一、撤销指定commit 1.首先执行git log 命令,查看git历史提交以及commit信息: 由于需要脱敏,所以截图可能看得马赛克比较多,需要关注的就是上面的commit后跟的id,以及HEAD当前指定…...
校园约拍微信小程序设计与实现ssm+论文源码调试讲解
4 系统设计 校园约拍微信小程序的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没…...
开源靶场1
我来为您介绍一些知名的开源漏洞靶场平台: DVWA (Damn Vulnerable Web Application) 最流行的 Web 漏洞靶场之一包含 SQL 注入、XSS、文件包含等常见漏洞基于 PHP MySQL适合 Web 安全入门学习 WebGoat OWASP 开源项目基于 Java包含大量 Web 安全漏洞练习提供详细的教程和解…...
iOS开发指南:保护服务器密码的安全存储与处理技巧
在iOS开发过程中,服务器密码的安全存储与处理是确保应用安全性的关键环节。不当的密码管理可能导致数据泄露、用户隐私受损,甚至引发更严重的安全问题。因此,开发者需要采取一系列措施来保护服务器密码的安全。本文将详细介绍在iOS开发中如何…...
《Spring Framework实战》9:4.1.4.依赖注入
欢迎观看《Spring Framework实战》视频教程 典型的企业应用程序不是由单个对象(或Spring术语中的bean)组成。即使是最简单的应用程序也有几个对象协同工作,以呈现最终用户所认为的连贯应用程序。下一节将解释如何从定义多个独立的bean定义到一…...
linux之自动挂载
如果想要实现自动挂载,应该挂在客户端!!!!! 客户端: [rootlocalhost ~]# yum install nfs-utils -y (下载软件) [rootlocalhost ~]# systemctl start nfs-utils.servic…...
python+fpdf:创建pdf并实现表格数据写入
目录 创建pdf文件对象 新增页 添加自定义字体 设置字体 设置文字颜色和背景色 插入内容 换行 插入图片 保存pdf 完整代码 安装:pip install fpdf 创建pdf文件对象 from fpdf import FPDF, Alignpdf = FPDF() # 创建pdf文件对象 获取边距 print(pdf.l_margin, p…...
比较procfs 、 sysctl和Netlink
procfs 文件系统和 sysctl 的使用: procfs 文件系统(/proc) procfs 文件系统是 Linux 内核向用户空间暴露内核数据结构以及配置信息的一种方式。`procfs` 的挂载点是 /proc 目录,这个目录中的文件和目录呈现内核的运行状况和配置信息。通过读写这些文件,可以查看和控制内…...
第四、五章补充:线代本质合集(B站:小崔说数)
视频1:线性空间 原视频:【线性代数的本质】向量空间、基向量的几何解释_哔哩哔哩_bilibili 很多同学在学习线性代数的时候,会遇到一个困扰,就是不知道什么是线性空间。因为中文的教材往往对线性空间的定义是非常偏数学的&#x…...
Clojure语言的函数实现
Clojure语言函数实现详解 引言 Clojure是一种基于Java虚拟机的函数式编程语言,以其简洁和强大的数据处理能力而著称。在Clojure中,函数是基本的构造块,良好的函数设计可以提高代码的可复用性和可维护性。本文将深入探讨Clojure中的函数实现…...
Windows10环境下安装RabbitMq折腾记
最近有个老项目需要迁移到windows10环境,用的是比较老的rabbitmq安装包,如下所示。经过一番折腾,死活服务起不来,最终果断放弃老版本启用新版本。现在把折腾过程记录下: 一、安装erlang 安装完成后的目录结构ÿ…...
【前端,TypeScript】TypeScript速成(九):async-await 语法糖
async-await 语法糖 可以使用 async-await 来管理 Promise,下例重写上一节使用 Promise then 的形式计算 ( 2 3 ) ( 4 5 ) (23) \times (45) (23)(45): function add(a: number, b: number): Promise<number>{return new Promise((resolve,…...
基于ADAS 与关键点特征金字塔网络融合的3D LiDAR目标检测原理与算法实现
一、概述 3D LiDAR目标检测是一种在三维空间中识别和定位感兴趣目标的技术。在自动驾驶系统和先进的空间分析中,目标检测方法的不断演进至关重要。3D LiDAR目标检测作为一种变革性的技术,在环境感知方面提供了前所未有的准确性和深度信息. 在这里&…...
STM32供电参考设计
STM32供电参考设计 在图中有VDD,VSS和VDDA,VSSA两种类型的供电引脚,其数据手册解释如下: 令我不解的是:VDDA和VSSA必须分别连接到VDD和VSS,这是什么意思?有大佬能够解答一下吗?…...
C/C++头文件uitility
在C中,<utility>头文件提供了一些通用的工具类和函数,这些工具类和函数在编写高效、可读性强的代码时非常有用。以下是<utility>头文件中一些常用函数和类的详细介绍及使用示例: std::pair:一个模板类,用于…...