【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接口的一些关键方法示例:
Object getBean(String name)
:根据给定的 Bean 名称获取一个 Bean 实例。
<T> T getBean(String name, Class<T> requiredType)
:根据给定的 Bean 名称和期望的类型获取一个 Bean 实例。
Object getBean(String name, Object... args)
:根据给定的 Bean 名称和构造函数参数获取一个 Bean 实例。
<T> T getBean(Class<T> requiredType)
:根据给定的类型获取一个 Bean 实例。
<T> T getBean(Class<T> requiredType, Object... args)
:根据给定的类型和构造函数参数获取一个 Bean 实例。
boolean containsBean(String name)
:检查是否包含一个具有给定名称的 Bean。
boolean isSingleton(String name)
:检查一个具有给定名称的 Bean 是否是单例作用域。
boolean isPrototype(String name)
:检查一个具有给定名称的 Bean 是否是原型作用域。
boolean isTypeMatch(String name, Class<?> targetType)
:检查一个具有给定名称的 Bean 是否是指定类型的一个匹配。
Class<?> getType(String name)
:获取一个具有给定名称的 Bean 的类型。
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>
元素属性:
id:Bean的唯一标识符。通常用于通过
getBean
方法按名称检索Bean。class:Bean的全限定类名。Spring将使用这个类名来实例化Bean。
name:为Bean提供额外的名称。可以有多个名称,它们之间用逗号、空格或分号分隔。
scope:定义Bean的作用域。常见的作用域包括singleton(单例,默认值)、prototype(原型)、request(Web应用中的请求)、session(Web应用中的会话)等。
lazy-init:指定Bean是否应该延迟初始化,直到它被首次请求时才创建。
🚦Bean元素的多个子元素
在Spring的XML配置中,
<bean>
元素可以包含多个子元素,这些子元素用于定义Bean的属性、构造函数参数、元数据以及其他配置。以下是一些常用的<bean>
子元素:
<property>
:用于设置Bean的属性。它包含一个或多个<value>
、<ref>
或<bean>
子元素,用于指定属性的值。
<constructor-arg>
:用于提供构造函数参数。可以包含<value>
、<ref>
或<bean>
子元素,或者通过index
或type
属性指定参数的位置或类型。
<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的装配可以通过以下几种方式实现:
-
setter注入(Setter Injection):这是最常见的装配方式,通过在XML文件中使用
<property>
标签来注入依赖。这种方式要求Bean类必须提供一个无参构造方法,并且需要注入的属性必须有对应的setter方法。例如:<bean id="student1" class="educoder.Student"><property name="name" value="张三" /><property name="age" value="25" /> </bean>
-
构造注入(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,并设置了作用域为单例。类中定义了三个属性:id
、username
和password
,以及它们的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
方法中调用了UserDao
的save
方法,然后打印了业务逻辑层的保存操作消息。
@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
方法中调用了UserService
的save
方法,然后打印了控制器层的保存操作消息。
//使用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
的实例。然后调用UserController
的save
方法来执行保存操作,从而测试整个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管理
🧸安清h:个人主页 🎥个人专栏:【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯Spring IOC容器 Ὢ…...

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

得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级
近日,2024中国体育文化博览会、中国体育旅游博览会(以下简称“两博会”)在苏州国际展览中心盛大开幕。本次展会汇聚了众多国内外体育文化、体育旅游领域的顶尖企业和品牌,共同展示体育产业的发展成果和最新趋势。在C展馆C21展位&a…...

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

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置
国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中,在语音对讲方面,NVR接入录像回放平台目前…...
八、Linux 系统安全:守护你的数字堡垒
Linux 系统安全:守护你的数字堡垒 在当今数字化时代,Linux 系统因其稳定性、高效性和开源性而被广泛应用于服务器、工作站以及各种嵌入式设备中。然而,随着网络攻击的日益频繁和复杂,确保 Linux 系统的安全变得至关重要。本文将深…...

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

分布式链路追踪-01初步认识SkyWalking
一 SkyWaling是什么? Skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥…...

openpnp - 底部相机视觉识别CvPipeLine的参数bug修正
文章目录 openpnp - 底部相机视觉识别的CvPipeLine的参数bug概述笔记openpnp的视觉识别参数的错误原因备注补充 - 如果要直接改默认的底部视觉要注意END openpnp - 底部相机视觉识别的CvPipeLine的参数bug 概述 底部相机抓起一个SOD323的元件,进行视觉识别。 识别…...
C#从零开始学习(接口,强制转化和is)(7)
有时根据对象能做什么来分组,而不是根据他们继承的类.这就引入了接口 让无关的类做相同的动作 接口定义一个类必须实现的方法和属性 一个类实现一个接口时,必须包含接口中列出的所有方法和属性 向下强制转化 Appliance是CoffeeMaker的基类 Appliance powerConsumer new Co…...
算法Day-8
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…...

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

C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser
本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要,及北京联高软件开发有限公司实现的 C# 版本 xodr 文件(XML) Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时,ASAM 允许不受限制地…...
玩转PyCharm:常用操作和快捷键
常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能,这也是PyCharm作为集成开发环境(IDE)的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项(macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...

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

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

iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出
效果图 不同方法: 【推荐】爱思助手 一步到位....【不推荐,会错漏很多照片】 1) 开始,打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选,“添加xx项”,选择本地...

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

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

场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合
摘要:本文深入探讨了场景化运营的重要性以及其在商业领域的广泛应用。通过分析电梯广告、视频网站和电商产品的场景化运营方式,引入关键词“定制开发链动 21 模式 S2B2C 商城小程序”,阐述了如何将场景化运营理念融入到该小程序的开发与推广中…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...