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

spring总结

目录

什么是Spring?

Spring的优缺点?

优点:

缺点:

Spring IOC的理解

Spring AOP的理解

事务的边界为什么放在service层?

Spring Bean的生命周期

什么是单例池?作用是什么?

单例Bean的优势

BeanFactory的作用

BeanDefinition的作用

BeanFactory和ApplicationContext有什么区别?

配置Bean有哪几种方式?

Spring实例化Bean方式的几种方式

什么是Bean的自动装配?

自动装配需要注意

Spring自动装配Bean有哪些方式

通过XML文件

通过注解

Spring如何解决循环依赖问题?

什么是循环依赖

Spring是如何解决循环依赖的

是否只要是构造方法注入的Bean所产生的的循环依赖都是无法解决的?

Spring Bean是不是线程安全的?

如何解决单例bean线程安全问题?

Spring中的事务

事务的四大特征(ACID)

Spring支持的事务管理类型

实现声明式事务的两种方式

Spring事务的传播行为


什么是Spring?

Spring是轻量级的开源的框架,它是一个容器框架,用来封装javaBean对象,并维护对象之间的关系,是一个整合其他框架的框架,可以让我们更加快速,更加简洁的开发。

Spring的核心是IOC(控制反转)和AOP(面向切面)。

IOC是指将对象的创建权交给Spring容器。在Spring之前对象的创建都是需要程序员自己通过new关键字创建的,而使用Spring之后,对象的创建交由Spring创建。对象之间的依赖关系也是交由Spring处理,降低耦合度。

AOP面向切面编程,可以在不修改原有代码的基础上添加非业务功能,将主业务功能与非业务功能分离,可以让编程人员全身心投入到主业务代码中。

Spring的优缺点?

优点:

  1. 通过Spring提供的IOC容器,我们可以将对象之间的依赖关系交由Spring进行控制,降低耦合。

  2. 通过AOP功能,方便进行面向切面编程,在不修改代码的情况下可以对业务代码进行增强,减少代码,提高开发效率维护方便。

  3. 对主流框架提供了很好地支持,例如Mybatis等。

  4. 低入侵式设计。

  5. 提供了事务管理,只需要一个注解@Transaction。

  6. 方便程序的测试,spring实现测试,使我们结合Junit非常方便测试。

缺点:

使用大量的反射机制,占用内存,影响效率。

Spring IOC的理解

三方面:IOC是什么?(容器)、控制反转的理解、依赖注入

IOC容器:实际上就是一个Map,里面存的是各种对象(在xml里配置的bean节点,@Repository、@Service、@Controller、@Component等),在项目启动的时候会读取配置文件里面的bean节点,根据全限定类名使用反射创建对象放到map里面,扫描注解的类还是用反射创建对象并放到map中。

这个时候map里就有各种对象了,接下来我们在代码里需要用到里面的对象时,在通过DI注入(@Autowired、@Resource等注解,xml中bean节点里的ref属性,项目启动的时候会读取xml节点ref属性根据id注入)

控制反转:在没有引入控制反转之前,对象A依赖于对象B,对象A在初始化或者运行到某个点的时候就需要主动的创建对象B或者是使用已经创建的对象B,无论是已经创建的还是主动创建的对象B,控制权都在程序员自己手中(也就是说B对象什么时候创建,都有A对象决定)。

引入IOC之后,A对象和B对象都依赖于IOC容器,而A和B对象之间没有联系,当对象A运行到需要对象B的时候,IOC容器会主动创建(或者对象时单例的话就直接调用)对象B注入到对象A需要的地方。

通过前后的对比,不难看出来:对象A获得依赖对象B的过程,由主动变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名词的由来。

依赖注入:控制被反转之后,获得依赖对象的过程由自身管理变成了由IOC容器主动注入。依赖注入是实现IOC的方法,就是由IOC容器在运行期间,动态的将某种依赖关系注入到对象之中。

控制反转的作用主要是降低代码之间的耦合度,Spring IOC除了减低代码的耦合度外,还会管理对象的创建和依赖关系的维护。

Spring AOP的理解

AOP,面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。

能够将那些与业务代码无关,却又被业务模块所使用的功能(例如日志管理,事务管理等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的扩展和维护。

SpringAOP是基于动态代理的,如果要代理的对象实现了某个接口,就会使用jdk动态代理去创建代理对象;如果没有实现接口的对象,使用CGLIB动态代理生成一个被代理对象的子类作为代理。

事务的边界为什么放在service层?

事务通常可能会涉及到多张表的操作,也就意味着,在service层涉及到多个dao的操作,假设一个dao调用成功并且已经提交事务了,而另一个dao执行失败了,而我们的事务的边界在service层,在同一个地方里可以进行回滚;但是如果我们把事务放在各个dao层里面的话,第一个成功了,第二个即使失败了也无法控制第一个dao的回滚,所以我们的事务的边界要放在service层。

Spring Bean的生命周期

  1. 解析类得到BeanDefinition

  2. 如果有多个构造方法,则要推断构造方法

  3. 确定好构造方法之后,进行实例化得到对象

  4. 对对象中添加了@Autowired的属性进行属性填充

  5. 回调Aware方法,比如BeanNameAware,BeanFactoryAware

  6. 调用BeanPostProcessor的初始化前的方法

  7. 调用初始化方法

  8. 调用BeanPostProcessor的初始化后的方法,在这里会进行AOP

  9. 如果当前创建的Bean是单例的则会放入到单例池中

  10. 使用Bean

  11. Spring容器关闭时调用DisposableBean中destory()方法

什么是单例池?作用是什么?

如果Bean对象是singleton单例Bean时,在Spring在创建Bean的时候会有将Bean对象存入一个Map集合中,在集合中以Bean的名称为key,在后续程序中有使用到该bean的时候直接从集合中获取,以达到单例bean的效果。

单例Bean的优势

  1. 减少了新生成实例的消耗新生成实例消耗包括两个方面:①Spring通过反射来创建Bean对象;②对象内存分配。

  2. 减少jvm垃圾回收。由于不会每次都重写创建Bean对象,自然就会减少垃圾回收。

  3. 可以快速获取到bean。

BeanFactory的作用

BeanFactory是Spring中非常核心的一个顶层接口;

是Bean的“工厂”、它的主要职责是生产Bean;

它实现了简单工厂的设计模式,通过调用getBean传入标识生产一个Bean;

它有非常多的实现类,每个工厂都有不同的职责功能,最强大的工厂是:DefaultListableBeanFactory ,Spring底层就是用该实现工厂生产Bean的

BeanDefinition的作用

它主要存储Bean的定义信息:决定Bean的生产方式。

<bean class="com.exp.User" id="user" scope="singleton" lazy="false" ></bean>

BeanFactory会根据Bean的这些信息生产Bean:比如实例化,可以通过class进行反射进而得到实例对象;比如lazy ,则不会在IOC加载是创建Bean

BeanFactory和ApplicationContext有什么区别?

BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。它们之间的关系,ApplicationContext是BeanFactory的子接口。

二者区别:

作用

BeanFactory接口作用:是Spring里面最底层的接口,包含了各种Bean的定义,读取Bean配置文件,管理BeanDefinition加载,实例化,控制Bean的生命周期,维护Bean之间的依赖关系。BeanFactory简单粗暴,可以理解为就是一个HashMap,Key是BeanName,Value是Bean实例。通常只提供put和get功能,可以称之为“低级容器”。

配置Bean有哪几种方式?

  1. xml:<bean class="com.exp.User" id="user">

  2. 注解@Component等,前提是需要配置扫描包<component-scan>,反射调用构造方法

  3. javaConfig:@Bean 可以自己控制实例化过程

  4. import

Spring实例化Bean方式的几种方式

  1. 构造方法(反射)

  2. 静态工厂方式;factory-method

  3. 实例工厂方式(@Bean);factory-bean+factory-method

  4. FactoryBean方式

什么是Bean的自动装配?

Bean的配置是将Bean组装在一起,前提是需要知道Bean的依赖关系。

在Spring框架中,在配置文件中设定Bean的依赖关系是一个很好地机制,Spring容器能够自动配置相互合作的Bean,这意味着容器不需要手动配置,能通过Bean工厂处理Bean之间的协作。

自动装配需要注意

  • 一定要声明set方法

  • 仍然可以使用<constructor-arg>和<property>配置来定义依赖,这些配置将始终覆盖自动注入

  • 不能自动装配简单数据类型的属性

Spring自动装配Bean有哪些方式

Spring中实现自动装配Bean主要有两种方式:通过xml文件、通过注解。

通过XML文件

xml文件中bean标签有一个指定自动装配类型的属性Autowired,Autowired有4中装配类型。

  • byName,根据名称自动装配。

  • byType,根据类型自动装配。

  • constructor,Spring容器会尝试找到那些类型与构造函数相匹配的Bean。

<bean id="student5" class="com.www.spring.modle.Student" autowire="byName"><property name="name" value="张其"/><property name="id" value="7"/><property name="num" value="1007"/><!--在这里可以不用写<property name="admin" ref="admin"/> 因为autowire="byName"就表示通过实体类中set方法的名称在容器中找到相同id值的bean然后赋值--></bean>

通过注解

主要是通过@Autowired等注解完成,前面提到了将类声明为bean的几个注解,通过@Component将类声明为Bean,通过@Value将某个常量值注入到变量中,通过@Autowired将Bean装配到属性中。

Spring如何解决循环依赖问题?

什么是循环依赖

循环依赖的定义其实就是,A依赖与B,B也依赖于A,或者是A自身依赖。

Spring是如何解决循环依赖的

Spring是通过三级缓存来解决循环依赖的。

在DefaultSingletonBeanRegistry类中提供了三个缓存,其实就是三个map集合。

一级缓存singletonObjects,用于保存实例化、注入、初始化完成的Bean对象;

二级缓存earlySingletonObject,用户保存实例化完成的Bean实例,提前暴露对象。

三级缓存singletonFactories,用于保存创建bean的工厂。

spring在创建对象A时先将A对象的工厂对象放入到三级缓存中去,然后实例化A,到属性注入时需要B对象,此时容器中没有B对象,又转而创建B对象,同样将B对象的工厂对象存入三级缓存中,实例化B对象,属性注入时需要A对象,从三级缓存中获取到A对象的工厂对象,对象B属性注入完成之后将其放入到二级缓存中,同时从三级缓存中删除B工厂,接下来初始化B对象,初始化完成后将B对象放入到一级缓存中,并且从二级缓存中删除B,B对象创建结束;返回创建A,完成属性b的注入,后续步骤与B对象属性注入完成后的步骤相同。

创建对象和属性注入时都会执行getBean()方法,来获取对象,在获取对象时最重要的是执行getSingleton方法:

由源码可知,在该方法中,先从一级缓存中获取对象,如果没有就去二级缓存中找,二级没有就去三级中找,三级中如果找到,就将该对象放入到二级缓存中,并且删除三级缓存,如果三级还没有就表明该对象还没有被创建过。

是否只要是构造方法注入的Bean所产生的的循环依赖都是无法解决的?

不是的,两个Bean都是通过构造方法注入的是无法解决的,但是一个是属性注入一个是构造注入时就可能会解决,如果先创建的Bean是构造方法注入,那么开始就无法提供半成品Bean,这时是无法解决的;但是如果先创建的是通过属性注入方式的Bean,那么是可以解决的。

依赖注入方式是否可以解决
两个都是构造方法注入
两个都是属性注入
A中的注入方式是构造方法注入,B中注入方式是属性注入
A中的注入方式是属性注入,B中注入方式是构造方法注入

Spring Bean是不是线程安全的?

这个要看Bean的作用域scope,如果是原型Bean的话,每次多会创建一个新的对象,线程之间不会存在共享,自然不存在线程安全问题;如果是单例Bean,全局只有一个对象,存在资源竞争。

Bean又分为:①有状态Bean(有数据存储功能,包含成员变量),会对这个Bean的成员变量进行写操作,线程不安全;②无状态Bean(不会保存数据,例如controller,service等)线程安全的。

如何解决单例bean线程安全问题?

  1. Bean找那个尽量不定义成员变量

  1. 将Bean定义为多例Bean

Spring中的事务

事务的四大特征(ACID)

  • 原子性:原子性是指事务包含的所有操作要么全部执行,要么全部不执行。

  • 一致性:是指事务必须使得数据库从一个一致性状态转换到另一个一致性状态,也就是说一个事务执行之前和之后都必须处于一致性状态。例如转账:AB两个用户一共有10000元,无论两个人如何转账,始终都是10000元不变

  • 隔离性:是指当多个用户并发访问数据库时,比如操作同一张表,数据库为每个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

  • 持久性:是指事务一旦被提交,数据将永久性保存。

Spring支持的事务管理类型

Spring支持两种事务类型:

编程式事务管理:这意味着将通过编程的方式管理事务,会带来极大的灵活,但是难维护。

声明式事务管理:意味着你可以将业务代码和事务管理分离,只需要通过注解和XML配置来管理事务。

实现声明式事务的两种方式

  1. 基于<tx>和<aop>命名空间的声明式事务管理:其最大特点是与Spring结合紧密,可以充分利用切点表达式的强大支持,使得事务管理更加灵活。

  2. 基于@Transactional的全注解方式:将声明式事务管理简化到了极致。开发人员只需要在配置文件中加入一行启用相关后处理Bean的配置,然后在需要实施事务管理的方法或者类上使用@Transaction指定事务规则可实现事务管理,而且功能也不比其他方式逊色。

Spring事务的传播行为

事务的传播特性指的是当一个事务方法被另一个事务方法调用时,这个方法应该如何进行。

PROPAGATION_REQUIRED:如果当前没有事务

事务传播行为类型外部不存在事务外部存在事务使用方式
REQUIED开启新的事务融合到外部事务中@Transaction(propagation=Propagation.REQUIRED) 适合增删改查
SUPPORTS不开启新的事务融合到外部事务中@Transaction(propagation=Propagation.SUPPORTS) 适合查询
REQUIEDS_NEW开启新的事务不用外部事物,创建新的事务@Transaction(propagation=Propagation.REQUIEDS_NEW) 适合内部事务和外部事务不存在业务关系情况,如日志
NOT_SUPPORTED不开启新的事务不用外部事物@Transaction(propagation=Propagation.NOT_SUPPORTED) 不常用
NEVER不开启新的事务抛异常@Transaction(propagation=Propagation.NEVER) 不常用
MANDATORY抛出异常融合到外部事务中@Transaction(propagation=Propagation.MANDATORY) 不常用
NESTED开启新的事务融合到外部事务中,SavePoint机制,外层印象内层,内层不会影响外层@Transaction(propagation=Propagation.NESTED) 不常用

相关文章:

spring总结

目录 什么是Spring? Spring的优缺点&#xff1f; 优点&#xff1a; 缺点&#xff1a; Spring IOC的理解 Spring AOP的理解 事务的边界为什么放在service层&#xff1f; Spring Bean的生命周期 什么是单例池&#xff1f;作用是什么&#xff1f; 单例Bean的优势 Bean…...

记录--说一说css的font-size: 0

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 平常我们说的font-size&#xff1a;0&#xff1b;就是设置字体大小为0对吧&#xff0c;但是它的用处不仅仅如此哦&#xff0c;它还可以消除子行内元素间额外多余的空白&#xff01; 问题描述&#xff…...

Matlab实现支持向量机算法(附上多个完整仿真源码)

支持向量机是一种常见的机器学习算法&#xff0c;它可以用于分类和回归问题。在Matlab中使用支持向量机&#xff0c;可以方便地构建和训练模型&#xff0c;并进行预测和评估。本文将介绍Matlab支持向量机的基本原理以及一个简单的分类案例。 文章目录 1. 支持向量机的基本原理2…...

AIGC大模型ChatGLM2-6B:国产版chatgpt本地部署及体验

1 ChatGLM2-6B介绍 ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练&#xff0c;它具备多领域知识、代码能力、常识推理及运用能力&#xff1b;支持与用户通过自然语言对话进行交互&#xff0c;处理多种自然语言任务…...

[国产MCU]-BL602开发实例-开发环境搭建

开发环境搭建 文章目录 开发环境搭建1、BL602介绍2、软件准备3、源码编译3.1 编译内置工程3.2 自定义工程、自定义组件添加与编译4、固件下载BL602 是一款Wi-Fi + BLE组合的芯片组,用于低功耗和高性能应用开发。无线子系统包含2.4G无线电,Wi-Fi 802.11b/g/n和BLE 5.0 基带/MA…...

春秋云镜 CVE-2020-26048

春秋云镜 CVE-2020-26048 CuppaCMS 任意文件上传 靶标介绍 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自…...

使用Golang实现一套流程可配置,适用于广告、推荐系统的业务性框架——简单应用

在诸如广告、推荐等系统中&#xff0c;我们往往会涉及过滤、召回和排序等过程。随着系统业务变得复杂&#xff0c;代码的耦合和交错会让项目跌入难以维护的深渊。于是模块化设计是复杂系统的必备基础。这篇文章介绍的业务框架脱胎于线上多人协作开发、高并发的竞价广告系统&…...

一个.NET开发的Web版Redis管理工具

今天给大家推荐一款web 版的Redis可视化工具WebRedisManager&#xff0c;即可以作为单机的web 版的Redis可视化工具来使用&#xff0c;也可以挂在服务器上多人管理使用的web 版的Redis可视化工具。 WebRedisManager基于SAEA.Socket通信框架中的SAEA.RedisSocket、SAEA.WebApi两…...

javaAPI(四):jdk8中的日期时间API

新日期时间API出现的背景 jdk8之前时间日期API 如果我们可以跟别人说&#xff1a;“我们在1502653933071见面&#xff0c;别晚了&#xff01;”那么就再简单不过了。但是我们希望时间与昼夜和四季有关&#xff0c;于是事情就变复杂了。jdk 1.0中包含了一个java.util.Date类&am…...

解决在mybatis中出现的org.apache.ibatis.exceptions.PersistenceException~

我在使用mybatis中的注解对数据库中的信息进行操作时&#xff0c;出现了下述错误 我在mapper接口中定义了该方法&#xff0c;并且使用注解绑定了对应的SQL语句 //增加用户信息 Insert("insert into user values(#{id},#{name},#{password})") int addUser(user user…...

Vue + ElementUI 实现可编辑表格及校验

效果 完整代码见文末 实现思路 使用两个表单分别用于实现修改和新增处理。 通过一个editIndex变量判断是否是编辑状态来决定是否展示输入框&#xff0c;当点击指定行的修改后进行设置即可&#xff1a; <el-table-columnv-for"(column, index) in columns":key&qu…...

中介者模式——协调多个对象之间的交互

1、简介 1.1、概述 如果在一个系统中对象之间的联系呈现为网状结构&#xff0c;如下图所示&#xff1a; 对象之间存在大量的多对多联系&#xff0c;将导致系统非常复杂&#xff0c;这些对象既会影响别的对象&#xff0c;也会被别的对象所影响&#xff0c;这些对象称为同事对…...

启动Flink显示初始化状态怎么解决?

启动Flink显示初始化状态怎么解决&#xff1f; Flink On Yarn模式 问题 flnk任务在跑的过程中&#xff0c; 有时候任务停掉了 &#xff0c;不过我有 定时任务&#xff0c;可以把失败的flink任务拉起来&#xff0c;但是因为最新的checkpoint做失败了&#xff0c;导致脚本无法拉…...

VB+SQL采购管理系统设计与实现

摘 要 本系统是基于为轴承企业采购部门开发的系统。课题主要采用自上而下的结构化程序设计方法与面向对象方法相结合的方法,致力于达到标准的现代化物流管理要求。帮助轴承企业采购部门全面实现电子化、自动化、标准化的现代化先进管理模式。 该系统使用Visualbasic.net编程…...

TBB库中实现协程(coroutine)的源码说明

源码请见: https://github.com/oneapi-src/oneTBB/blob/master/src/tbb/co_context.h 在windows系统&#xff0c;TBB(也就是intel 的 oneTBB库)&#xff0c;通过windwos fiber(纤程)来实现协程(coroutine)。 创建一个协程,代码很简洁: inline void create_coroutine(corouti…...

【CSS弹性盒模型 display:flex;常用参数及常见的布局】

CSS弹性盒模型 display:flex;常用参数flex-directionjustify-contentalign-itemsflex-wrapflex-flowalign-contentorderflex-growflex-shrinkflex-basis 常见的布局1. 水平居中2. 垂直居中3. 水平垂直居中4. 等分布局5. 响应式布局6. 网格布局 常见的布局封装 display:flex;常用…...

golang函数传参——值传递理解

做了五年的go开发&#xff0c;却并没有什么成长&#xff0c;都停留在了业务层面了。一直以为golang中函数传参&#xff0c;如果传的是引用类型&#xff0c;则是以引用传递&#xff0c;造成这样的误解&#xff0c;实在也不能怪我。我们来看一个例子&#xff0c;众所周知&#xf…...

Liunx环境下git的详细使用(gitee版)

Liunx环境下git的详细使用&#xff08;gitee版&#xff09; 1.git是什么2.git操作2.1在gitee创建一个仓库2.2.gitignore2.3.git 3.git三板斧3.1add3.2 commit3.3push 4.git其他命令4.1查看当前仓库状态4.2查看提交日志4.3修改git里面文件名称4.4删除文件4.5修改远端仓库内容 1.…...

exoplayer的使用-2,与flutter相互通信

上一次解决的问题是ac3这些exoplayer本身不支持音频,添加了ffmpeg扩展实现软解码. 另一个问题是flutter端的内置字幕显示不了,也不打算再继续探讨了,换成native实现播放器.由于主项目是flutter的,所以涉及到了相互通信. 当前文章主要涉及到flutter与native相互通信功能 通信有…...

【基础类】—类型转换

一、数据类型 原始类型 Boolean、Null、Undefined、Number、String、Symbol 对象 Object 二、显示类型转换 Number函数&#xff0c; Number&#xff08;param&#xff09; 1-1. param 是 原始类型 时 数值&#xff1a;转换后还是原来的值 字符串&#xff1a;如果可以被解析…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...