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

【Spring篇】Spring中的Bean管理

  

      🧸安清h:个人主页

   🎥个人专栏:【计算机网络】【Mybatis篇】

🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 


目录

🎯Spring IOC容器

🚦BeanFactory接口

🚦ApplicationContext接口

🎯Bean的配置

🚦Bean元素的多个属性

🚦Bean元素的多个子元素

🎯Bean的实例化

🚦构造方法实例

✨pom.xml文件

 ✨创建Bean1类

✨编写applicationContext.xml文件

✨编写测试类

🚦静态工厂实例化

✨创建Bean2类

✨创建MyBean2Factory类

✨编写applicationContext.xml文件

✨编写测试类

🚦实例工厂实例化

✨创建Bean3类

✨创建MyBean3Factory类

✨编写applicationContext.xml文件

✨编写测试类

🎯Bean的作用域

🎯Bean的装配方式

🚦基于Xml的装配

🎯基于注解的装配 

🚦导入依赖

🚦创建XML配置文件

🚦定义实体类

🚦定义DAO层

🚦实现DAO层

🚦定义Service层

🚦实现Service层

🚦定义Controller层

🚦定义测试类


🎯Spring IOC容器

Spring框架的主要功能是通过Spring容器实现的,Spring容器可以管理人们开发的各种Bean。Spring提供了相应API来管理Bean,在Spring容器的API里,最常用的是BeanFactory和ApplicationContext这两个接口。

🚦BeanFactory接口

BeanFactory 是 Spring 框架中的一个核心接口,它定义了 Spring IoC 容器的基本功能。BeanFactory 提供了配置应用程序组件的方式,并且负责这些组件的生命周期和依赖关系的管理。它是 Spring 框架中最原始的 IoC 容器的表现形式。BeanFactory 通常由 ApplicationContext 接口实现。

BeanFactory接口的一些关键方法示例:

  1. Object getBean(String name):根据给定的 Bean 名称获取一个 Bean 实例。

  2. <T> T getBean(String name, Class<T> requiredType):根据给定的 Bean 名称和期望的类型获取一个 Bean 实例。

  3. Object getBean(String name, Object... args):根据给定的 Bean 名称和构造函数参数获取一个 Bean 实例。

  4. <T> T getBean(Class<T> requiredType):根据给定的类型获取一个 Bean 实例。

  5. <T> T getBean(Class<T> requiredType, Object... args):根据给定的类型和构造函数参数获取一个 Bean 实例。

  6. boolean containsBean(String name):检查是否包含一个具有给定名称的 Bean。

  7. boolean isSingleton(String name):检查一个具有给定名称的 Bean 是否是单例作用域。

  8. boolean isPrototype(String name):检查一个具有给定名称的 Bean 是否是原型作用域。

  9. boolean isTypeMatch(String name, Class<?> targetType):检查一个具有给定名称的 Bean 是否是指定类型的一个匹配。

  10. Class<?> getType(String name):获取一个具有给定名称的 Bean 的类型。

  11. String[] getAliases(String name):获取一个具有给定名称的 Bean 的所有别名。

🚦ApplicationContext接口

ApplicationContext 接口是 Spring 框架中 BeanFactory 的一个扩展,它提供了更多的高级功能和特性,以支持企业级应用开发。ApplicationContext 包含了 BeanFactory 的所有功能。

ApplicationContext 接口的一些关键实现包括:

  • ClassPathXmlApplicationContext:从类路径下的 XML 配置文件中加载上下文定义。
  • FileSystemXmlApplicationContext:从文件系统下的 XML 配置文件中加载上下文定义。
  • AnnotationConfigApplicationContext:从注解配置类中加载上下文定义。
  • WebApplicationContext:用于 Web 应用程序,如 ServletContext 或 PortletContext。

🎯Bean的配置

在Spring框架中,Bean的配置是将类定义为Spring容器管理的对象的过程。Spring支持多种方式来配置Bean,包括XML配置、注解和Java配置类。

🚦Bean元素的多个属性

在Spring的XML配置中,<bean>元素具有多个属性,用于定义和管理Bean的创建和行为。以下是一些常用的<bean>元素属性:

  1. id:Bean的唯一标识符。通常用于通过getBean方法按名称检索Bean。

  2. class:Bean的全限定类名。Spring将使用这个类名来实例化Bean。

  3. name:为Bean提供额外的名称。可以有多个名称,它们之间用逗号、空格或分号分隔。

  4. scope:定义Bean的作用域。常见的作用域包括singleton(单例,默认值)、prototype(原型)、request(Web应用中的请求)、session(Web应用中的会话)等。

  5. lazy-init:指定Bean是否应该延迟初始化,直到它被首次请求时才创建。

🚦Bean元素的多个子元素

在Spring的XML配置中,<bean>元素可以包含多个子元素,这些子元素用于定义Bean的属性、构造函数参数、元数据以及其他配置。以下是一些常用的<bean>子元素:

  1. <property>:用于设置Bean的属性。它包含一个或多个<value><ref><bean>子元素,用于指定属性的值。

  2. <constructor-arg>:用于提供构造函数参数。可以包含<value><ref><bean>子元素,或者通过indextype属性指定参数的位置或类型。

  3. <property>的集合:可以定义多个<property>子元素来设置Bean的多个属性。

🎯Bean的实例化

在Spring框架中,Bean的实例化是指创建Bean实例的过程。Spring提供了多种方式来实例化Bean,这些方式可以通过配置来指定。以下是Spring中常见的Bean实例化方式:

🚦构造方法实例

在Spring中,构造方法实例化是通过调用类的构造方法来创建Bean实例的一种方式。这种方式适用于需要通过构造参数来初始化Bean的情况。以下是如何在Spring中使用构造方法实例化Bean的步骤:

✨pom.xml文件

 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency></dependencies>

 ✨创建Bean1类

public class Bean1 {public Bean1(){System.out.println("Bean1");}
}

✨编写applicationContext.xml文件

 <bean id="bean1" class="com.han.Bean1"></bean>

✨编写测试类

public class Bean1Test {public static void main(String[]args){ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Bean1 bean= (Bean1) applicationContext.getBean("bean1");System.out.println(bean);}
}

🚦静态工厂实例化

静态工厂实例化是指使用类的静态方法来创建Bean实例的方式。在Spring中,可以通过配置XML文件来指定使用哪个类的静态方法来创建Bean。这种方式特别适用于那些没有构造函数参数或者需要通过特定工厂方法来创建实例的情况。

✨创建Bean2类

public class Bean2 {public Bean2(){System.out.println("Bean2");}
}

✨创建MyBean2Factory类

public class Bean2Factory {public static Bean2 createBean(){return new Bean2();}
}

✨编写applicationContext.xml文件

 <bean id="bean2" class="com.han.Bean2Factory" factory-method="createBean"></bean>

✨编写测试类

public class Bean2Test {public static void main(String[]args){ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Bean2 bean2= (Bean2) applicationContext.getBean("bean2");System.out.println(bean2);}
}

🚦实例工厂实例化

在Spring中,实例工厂实例化是一种创建Bean实例的方法,它允许你通过工厂方法来创建Bean,而不是通过构造函数或静态工厂方法。这种方式提供了更高的灵活性,因为你可以在工厂方法中执行复杂的逻辑来决定哪个Bean的实例应该被创建 

✨创建Bean3类

public class Bean3 {public Bean3(){System.out.println("Bean3");}
}

✨创建MyBean3Factory类

public class MyBean3Factory {public MyBean3Factory(){System.out.println("bean3工厂实例化中");}public Bean3 createBean(){return new Bean3();}
}

✨编写applicationContext.xml文件

    <bean id="mybean3" class="com.han.MyBean3Factory"/><bean id="bean3" factory-bean="mybean3" factory-method="createBean"/>

✨编写测试类

public class Bean3Test {public static void main(String[]args){ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Bean3 bean3= (Bean3) applicationContext.getBean("bean3");System.out.println(bean3);}
}

🎯Bean的作用域

在bean标签中可以通过scope属性指定对象的作用域

scope="singleton"表示当前bean是单例模式(默认饿汉模式,Spring容器初始化阶段就会完成此对象的创建,在bean标签中设置lazy-init="true"时变为懒汉模式)

scope="prototype"表示当前bean为非单例模式,每次通过Spring容器获取此bean的对象时都会创建一个新的对象。

单例

<bean id="book2Spring" class="com.haust.pojo.Book" scope="singleton" lazy-init="true"></bean>

非单例

<bean id="book1Spring" class="com.haust.pojo.Book" scope="prototype"></bean>

bean的声明周期方法

在bean标签中通过init-method属性指定当前bean的初始化方法,初始化方法在构造器执行之后执行。

在bean标签中通过destory-method属性指定当前bean的销毁方法,销毁方法在对象销毁之前执行。

🎯Bean的装配方式

🚦基于Xml的装配

基于XML的装配是Spring框架中的一种配置方式,它允许开发者通过XML文件来定义和管理Bean的创建和依赖关系。这种方式在早期的Spring应用中非常常见,尽管现在注解和Java配置逐渐成为主流,但XML配置仍然是一种重要的配置手段,特别是在需要配置大量复杂Bean关系时。

在XML配置中,Bean的装配可以通过以下几种方式实现:

  1. setter注入(Setter Injection):这是最常见的装配方式,通过在XML文件中使用<property>标签来注入依赖。这种方式要求Bean类必须提供一个无参构造方法,并且需要注入的属性必须有对应的setter方法。例如:

    <bean id="student1" class="educoder.Student"><property name="name" value="张三" /><property name="age" value="25" />
    </bean>
  2. 构造注入(Constructor Injection):通过构造器注入的方式装配Bean,需要在XML配置文件中使用<constructor-arg>标签来定义构造方法的参数。这种方式适用于需要通过构造器传递依赖的场景。例如:

    <bean id="student2" class="educoder.Student"><constructor-arg index="0" value="李四" /><constructor-arg index="1" value="24" />
    </bean>

🎯基于注解的装配 

基于注解的装配是Spring框架中的一种依赖注入方式,它通过在代码中使用特定的注解来实现Bean的自动装配,从而减少了XML配置的复杂性。这种方式使得配置更加简洁,代码与配置的耦合度更低,提高了开发效率。以下是Spring中常用的几种注解装配方式:

  • @Component@Service@Repository@Controller:这些注解用于声明一个类作为Spring容器管理的Bean。@Component是通用的,而其他注解提供了额外的语义信息。
  • @Value:用于注入外部配置的值,如properties文件中的值。
  • @Resource:这是Java标准的一部分,可以通过名称来自动装配Bean,如果Bean的名称与字段名或setter方法名相同,Spring容器会自动装配。
  • @Autowired:这是最常见的自动装配注解,Spring容器会通过类型来自动装配Bean。如果存在多个相同类型的Bean,可以通过@Qualifier注解来指定具体的Bean。

下面通过一个案例来演示用注解装配Bean,具体步骤及代码如下:

🚦导入依赖

<dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.2.8.RELEASE</version></dependency>

🚦创建XML配置文件

在appicationContext.xml文件中添加如下代码:

<context:component-scan base-package="com.han"/>

代码中指定要扫描的包为com.han,这个包下的注解就会生效。 

🚦定义实体类

实体类User是一个简单的Java类,使用@Component注解标记为Spring管理的Bean,并设置了作用域为单例。类中定义了三个属性:idusernamepassword,以及它们的getter和setter方法。@Value注解用于注入配置文件中的值。toString方法被覆盖以提供类的字符串表示。

@Component("user")
@Scope("singleton")
public class User {@Value("1")private int id;@Value("haha")private String username;@Value("789")private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +'}';}
}

🚦定义DAO层

DAO层定义了一个接口UserDao,其中包含一个save方法。这个接口代表了与数据库交互的数据访问对象,save方法用于表示保存数据的操作。

public interface UserDao {public void save();
}

🚦实现DAO层

UserDaoImpl类实现了UserDao接口,并使用@Repository注解标记为Spring的Repository Bean。它的save方法中通过Spring的ApplicationContext获取了User Bean的实例,并打印了用户信息和保存操作的消息。

//使用Repository将UserDaoImpl类标识为Spring中的Bean
@Repository("userDao")
public class UserDaoImpl implements UserDao{@Overridepublic void save() {ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");User user= (User) applicationContext.getBean("user");System.out.println(user);System.out.println("执行UserDaoImpl.save()");}
}

🚦定义Service层

Service层定义了一个接口UserService,其中包含一个save方法。这个接口代表了业务逻辑层,save方法用于表示执行保存操作的业务逻辑。

public interface UserService {public void save();
}

🚦实现Service层

UserServiceImpl类实现了UserService接口,并使用@Repository注解标记为Spring的Service Bean。它通过@Resource注解注入了UserDao,并在save方法中调用了UserDaosave方法,然后打印了业务逻辑层的保存操作消息。

@Repository("userService")
public class UserServiceImpl implements UserService{//使用Resource注解注入UserDao@Resource(name="userDao")private UserDao userDao;@Overridepublic void save() {this.userDao.save();System.out.println("执行UserServiceImpl.save()");}
}

🚦定义Controller层

Controller层定义了一个UserController类,使用@Controller注解标记为Spring的Controller Bean。它通过@Resource注解注入了UserService,并在save方法中调用了UserServicesave方法,然后打印了控制器层的保存操作消息。

//使用Controller注解将UserController类标识为Bean
@Controller
public class UserController {@Resource(name="userService")private UserService userService;public void save(){this.userService.save();System.out.println("执行UserController.save()");}
}

🚦定义测试类

测试类AnnotationTest包含了一个main方法,用于初始化Spring的ApplicationContext并获取UserController的实例。然后调用UserControllersave方法来执行保存操作,从而测试整个Spring应用的流程是否正确。

public class AnnotationTest {public static void main(String[]args){ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");UserController userController= (UserController) applicationContext.getBean("userController");userController.save();}
}

以上就是今天要讲的内容了,主要介绍了Bean的配置,实例化,作用域以及装配方式等相关内容,如果您感兴趣的话,可以订阅我的相关专栏。非常感谢您的阅读,如果这篇文章对您有帮助,那将是我的荣幸。我们下期再见啦🧸!

相关文章:

【Spring篇】Spring中的Bean管理

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;Spring IOC容器 &#x1f6a…...

UV灯 VS LED灯,LED美甲灯是紫外线灯吗?

美甲灯是使甲油胶固化的重要工具&#xff0c;目前最常用的美甲灯一般是UV灯、LED灯以及CCFL灯。 一、不同的灯之间到底有什么区别呢&#xff1f;这次让我们好好看一下 UV灯&#xff1a; UV灯是紫外线灯管的简称。UV灯属于热阴极荧光灯&#xff0c;发出UVA&#xff08;长波紫…...

得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级

近日&#xff0c;2024中国体育文化博览会、中国体育旅游博览会&#xff08;以下简称“两博会”&#xff09;在苏州国际展览中心盛大开幕。本次展会汇聚了众多国内外体育文化、体育旅游领域的顶尖企业和品牌&#xff0c;共同展示体育产业的发展成果和最新趋势。在C展馆C21展位&a…...

rancher安装并快速部署k8s 管理集群工具

主机准备 准备4台主机 3台用于k8s集群 &#xff0c;1台用于rancher 每台服务器新增配置文件 vi etc/sysctl.confnet.ipv4.ip_forward 1 刷新生效 sysctl –p 安装docker 安装的时候可以去github上检索rancher看看最新版本适配那个版本的docker&#xff0c;这里安装23.0.1…...

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置

国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活&#xff0c;平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中&#xff0c;在语音对讲方面&#xff0c;NVR接入录像回放平台目前…...

八、Linux 系统安全:守护你的数字堡垒

Linux 系统安全&#xff1a;守护你的数字堡垒 在当今数字化时代&#xff0c;Linux 系统因其稳定性、高效性和开源性而被广泛应用于服务器、工作站以及各种嵌入式设备中。然而&#xff0c;随着网络攻击的日益频繁和复杂&#xff0c;确保 Linux 系统的安全变得至关重要。本文将深…...

PTA数据库编程练习合集

10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句&#xff0c; 检索出product表中所有符合40 < Weight < 65的记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名…...

分布式链路追踪-01初步认识SkyWalking

一 SkyWaling是什么&#xff1f; Skywalking是分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Docker、K8s、Mesos&#xff09;架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统&#xff0c;提供分布式追踪、服务网格遥…...

openpnp - 底部相机视觉识别CvPipeLine的参数bug修正

文章目录 openpnp - 底部相机视觉识别的CvPipeLine的参数bug概述笔记openpnp的视觉识别参数的错误原因备注补充 - 如果要直接改默认的底部视觉要注意END openpnp - 底部相机视觉识别的CvPipeLine的参数bug 概述 底部相机抓起一个SOD323的元件&#xff0c;进行视觉识别。 识别…...

C#从零开始学习(接口,强制转化和is)(7)

有时根据对象能做什么来分组,而不是根据他们继承的类.这就引入了接口 让无关的类做相同的动作 接口定义一个类必须实现的方法和属性 一个类实现一个接口时,必须包含接口中列出的所有方法和属性 向下强制转化 Appliance是CoffeeMaker的基类 Appliance powerConsumer new Co…...

算法Day-8

15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元…...

屏蔽小米电视广告的方法

小米电视那个广告&#xff0c;太多&#xff0c;时间太长&#xff0c;影响观看感受&#xff0c;经过处理&#xff0c;成功屏蔽了小米电视的广告&#xff0c;提升了观影体验。 手动添加AD域名到 hosts 列表 小米(红米)电视关闭开机AD屏蔽hosts方法。 在路由器的hosts中配置。 …...

C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser

本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要&#xff0c;及北京联高软件开发有限公司实现的 C# 版本 xodr 文件&#xff08;XML&#xff09; Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时&#xff0c;ASAM 允许不受限制地…...

玩转PyCharm:常用操作和快捷键

常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能&#xff0c;这也是PyCharm作为集成开发环境&#xff08;IDE&#xff09;的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项&#xff08;macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...

HeterGCL 论文写作分析

HeterGCL 论文写作分析 这篇文章&#xff0c;由于理论证明较少&#xff0c;因此写作风格了polygcl是两种风格的。polygcl偏向理论的写作风格&#xff0c;而hetergcl就是实践派的风格 首先看标题&#xff0c;其的重点是Graph contrastive learning Framework。其重点是framewo…...

简单的windows java -jar 无法启动jar包解决方法

简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心&#xff0c;我们本地使用idea 进行服务配置以及启动发现没有问题&#xff0c;然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题&#xff0c;但是我…...

iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出

效果图 不同方法&#xff1a; 【推荐】爱思助手 一步到位....【不推荐&#xff0c;会错漏很多照片】 1) 开始&#xff0c;打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选&#xff0c;“添加xx项”&#xff0c;选择本地...

ctfshow-文件上传-151-161

CTFshow文件上传 PHP文件上传&#xff1a;1、代码思路 黑名单是设置不能通过的用户&#xff0c;黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行&#xff0c;且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…...

【Windows】Microsoft Office 的 .docx .xlsx .pptx 等文件图标消失,变成空白图标

问题描述 在重新安装 Microsoft Office 后&#xff0c;发现 .docx、.xlsx、.pptx 等文件的图标消失&#xff0c;变成一个空白的图标。 原因分析 可能是由于Office组件的快捷方式和图标的注册表损坏所导致的。注册表是Windows操作系统中用来存储系统和应用程序配置信息的一个重…...

场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合

摘要&#xff1a;本文深入探讨了场景化运营的重要性以及其在商业领域的广泛应用。通过分析电梯广告、视频网站和电商产品的场景化运营方式&#xff0c;引入关键词“定制开发链动 21 模式 S2B2C 商城小程序”&#xff0c;阐述了如何将场景化运营理念融入到该小程序的开发与推广中…...

Axure中继器实现时间读取和修改

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器实现时间读取和修改 主要内容&#xff1a;中继器内不同时间格式的向外读取&#xff0c;和向内赋值&#xff0c;实现中继器时间的修改 应用场…...

数据库聚合函数

数据库聚合函数 聚合函数 sum ,avg,max,min,count 1总分 SELECT SUM(student_result) FROM result; SELECT student_no,SUM(studet_result) FROM result WHERE student_no62平均分 avg SELECT AVG(studet_result) FROM result;3最大值 max 最小值 min SELECT MAX(studet_r…...

DevOps的文化观与工具

一、DevOps的文化 DevOps的核心文化是推动开发&#xff08;Development&#xff09;和运维或需求&#xff08;Operations&#xff09;团队之间的协作与沟通&#xff0c;以实现更快速、更可靠的软件交付。以下是DevOps核心文化的几个关键方面&#xff1a; 协作与沟通&#xff1…...

create-vite my-vite-uniapp-project

搭建一个使用 Vue 3、TypeScript、Vite、uni-app、uView UI库和Element Plus的项目&#xff0c;你可以遵循以下步骤&#xff1a; 安装 Node.js 和 npm。 使用以下命令全局安装 Vue CLI&#xff1a; npm install -g vue/cli创建一个新的 Vue 3项目&#xff0c;并选择 TypeScr…...

DC系列靶机-DC8

一&#xff0c;环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-8.zip 二&#xff0c;攻略 首先nmap一通扫&#xff1b; 扫描主机IP和端口&#xff1b; 靶机的地址…...

重构复杂简单变量之用对象替换数据值

对象替换数据值用于将简单的数据值替换为具有行为和逻辑的对象。这种优化的目的在于提高代码的可读性、灵活性和可维护性&#xff0c;尤其是在数据开始承载更多含义或行为的时候。 一、什么时候使用 当我们在代码中使用简单的数据值&#xff08;如字符串、整数&#xff09;表…...

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天&#xff0c;操作系统作为数字世界的基石&#xff0c;其重要性不言而喻。近日&#xff0c;华为公司在深圳隆重举行了原生鸿蒙操作系统发布会&#xff0c;向全球宣告了我国首个自主可控的移动…...

Spring Boot技术栈在论坛网站开发中的应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

Fast-LLM:加速大型语言模型训练的开源库

在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;的训练是一个计算密集型的任务&#xff0c;需要高效的工具来加速这一过程。Fast-LLM就是这样一个开源库&#xff0c;它旨在帮助研究人员和开发者快速、灵活地训练大型语言模型。 Fast-LLM简介 Fast-LLM是一…...

物理安全(Physical Security)

物理安全&#xff08;Physical Security&#xff09;是指为保护人员、建筑、设备以及其他物理资产免受物理威胁&#xff08;如盗窃、破坏、间谍活动、自然灾害等&#xff09;的一系列措施和技术。物理安全通常涉及三个主要方面&#xff1a;预防、检测和响应。以下是一些关键的物…...

中学生设计的网站/注册网站流程

1、借助于iframe首先&#xff0c;最容易想到的应该是使用iframe,虽然html5废除了frame,但是依旧保留了iframe,我们仍可以继续使用&#xff0c;iframe有一个frameboder属性&#xff0c;设置属性值为0或者为no,去除iframe的边框。然后将scrolling设为no。这是完全可行的&#xff…...

wordpress.怎么备份/东莞网络推广代运营

Mycat问题总结 一丶自增主键设置 Mycat提供了几种设置自增主键的方式 本地文件方式数据库方式服务器时间戳方式分布式ZK-ID生成器 第一种和第二种只适合单点设置&#xff0c;对于集群不适用。第四种方式适用&#xff0c;但是需要增加zk服务器&#xff0c;维护成本较高&#xff…...

瑞金市网站建设/百度手机助手下载2022官方正版

点击上方蓝色字体&#xff0c;选择“标星公众号”优质文章&#xff0c;第一时间送达99套Java企业级实战项目4000G架构师资料作者&#xff1a;乐傻驴链接&#xff1a;jianshu.com/u/d5950a6af4cd概述对于 Spring和 SpringBoot到底有什么区别&#xff0c;我听到了很多答案&#x…...

潍坊网站制作公司/营销伎巧第一季

2019独角兽企业重金招聘Python工程师标准>>> 硬件支持层 硬件支持层&#xff08;Hardware support layer&#xff09;&#xff0c;介于操作系统与硬件之间。为什么要有硬件支持层&#xff1f;是为了隔离不同的硬件架构&#xff0c;并且是操作系统能够移植方便。 在v…...

北京企业做网站/百度推广课程

华商网讯 据陕视新闻 11月4日消息&#xff0c;陕西省教育厅关于10月29日印发《陕西省初中学业水平体育与健康考试工作方案》的通知&#xff0c;自2021 年1 月1 日起执行&#xff0c;2025 年12 月31 日自行废止。其中有两处明显变化&#xff1a;1、考试项目中增加了游泳200米的自…...

做家教网站要多少钱/什么是新媒体营销

有些人常常把“职业敬业”等词挂在嘴上&#xff0c;但是从他的实际行动中你又看不出什么名堂&#xff0c;那么实际上这些人做的还是不够好或者离真正的职业还是有差距的&#xff0c;真正的职业精神是什么&#xff1f;让我们看看NBA的著名球星KG&#xff08;凯文加内特&#xff…...