采用Spring配置文件管理Bean

news2025/2/28 0:11:49

文章目录

  • 采用Spring配置文件管理Bean
    • (一)创建Maven项目
    • (二)添加Spring依赖
    • (三)创建杀龙任务类
    • (四)创建勇敢骑士类
    • (五)采用传统方式让勇敢骑士完成杀龙任务
    • (六)采用Spring容器让勇敢骑士完成杀龙任务
      • 1、创建日志属性文件
      • 2、创建Spring配置文件
      • 3、在Spring配置文件里创建Bean
        • (1)创建杀龙任务Bean
        • (2)创建勇敢骑士Bean
      • 4、创建新勇敢骑士测试类
      • 5、创建两个勇敢骑士Bean
      • 6、修改新勇敢骑士测试类
    • (七)采用构造方法注入方式注入属性值
      • 1、创建救美任务类
      • 2、创建救美骑士类
      • 3、创建旧救美骑士测试类
      • 4、配置救美骑士Bean
      • 5、创建新救美骑士测试类


采用Spring配置文件管理Bean

在这里插入图片描述

Spring容器其实就是一个Bean工厂,在工厂里通过配置文件或配置类创建各种各样的Bean,然后在Spring应用程序就可以按照名称或类型获取工厂里已经配置好的Bean。下面我们就通过一个具体的案例来了解Spring容器是如何工作的。创建Spring应用程序 - 骑士完成任务。

(一)创建Maven项目

  • 创建Maven项目 - SpringDemo,设置项目位置以及组ID
    在这里插入图片描述
  • 单击【Finish】按钮,pom(project object model)对项目的版本、依赖与插件进行管理
    在这里插入图片描述
  • 修改项目的Maven配置
    在这里插入图片描述

(二)添加Spring依赖

  • Spring框架与JDK版本对应关系
Spring框架版本JDK版本
6.0.xJDK 17-21(预期)
5.3.xJDK 8-19(预期)
5.2.xJDK8-15
5.1.xJDK8-12
5.0.xJDK8-10
4.3.xJDK6-8
  • 在Maven仓库里查找Spring框架
    在这里插入图片描述
  • 查看Spring Core
    在这里插入图片描述
  • 选择5.3.x的最新版本 - 5.3.25
    在这里插入图片描述
  • 添加到pom.xml文件的<dependencies>元素里
    在这里插入图片描述
  • 同理添加其他依赖
<?xml version="1.0" encoding="UTF-8"?>
<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>4.0.0</modelVersion>

    <groupId>net.army.spring</groupId>
    <artifactId>SpringDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring实体-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring容器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring Web-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring测试-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
  • 打开Maven窗口,单击刷新按钮,就开始下载依赖包,等待插件与依赖下载完成
    在这里插入图片描述
  • 下载完成
    在这里插入图片描述
  • 可以查看本地Maven仓库里当前项目下载的有关Spring框架的依赖
    在这里插入图片描述

(三)创建杀龙任务类

  • 创建net.army.spring包,然后在包里面创建SlayDragonQuest类
    在这里插入图片描述
  • 添加如下代码
package net.army.spring;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:杀龙任务类
 */
public class SlayDragonQuest {
    public void embark() {
        System.out.println("执行杀龙任务……");
    }
}

(四)创建勇敢骑士类

  • 在net.army.spring包里创建BraveKnight类
    在这里插入图片描述
  • 添加如下代码
package net.army.spring;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:勇敢骑士类
 */
public class BraveKnight {
    private String name; // 骑士姓名
    private SlayDragonQuest slayDragonQuest; // 杀龙任务

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * 设置杀龙任务
     *
     * @param slayDragonQuest
     */
    public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
        this.slayDragonQuest = slayDragonQuest;
    }

    /**
     * 勇敢骑士执行任务
     */
    public void embarkOnQuest() {
        System.out.print("勇敢骑士[" + name + "]"); // 骑士留名
        slayDragonQuest.embark(); // 执行杀龙任务
    }
}

(五)采用传统方式让勇敢骑士完成杀龙任务

  • 在test/java里创建net.army.spring包,然后在包里面创建TestBraveKnightOld类
    在这里插入图片描述
  • 添加如下代码
import net.army.spring.BraveKnight;
import net.army.spring.SlayDragonQuest;
import org.junit.Test;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:传统方式测试勇敢骑士类
 */
public class TestBraveKnightOld {
    @Test
    public void testBraveKnight() {
        // 创建杀龙任务对象
        SlayDragonQuest slayDragonQuest = new SlayDragonQuest();
        // 创建勇敢骑士对象
        BraveKnight braveKnight = new BraveKnight();
        // 设置勇敢骑士属性
        braveKnight.setName("罗宾汉");
        braveKnight.setSlayDragonQuest(slayDragonQuest);
        // 调用勇敢骑士执行任务方法
        braveKnight.embarkOnQuest();
    }
}
  • 运行测试方法testBraveKnight(),查看程序运行结果
    在这里插入图片描述

(六)采用Spring容器让勇敢骑士完成杀龙任务

1、创建日志属性文件

  • 在resources目录里创建log4j.properties
    在这里插入图片描述
  • 添加内容如下
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

2、创建Spring配置文件

  • 在resources里创建xmlconfig目录,然后在里面创建spring-config.xml
    在这里插入图片描述
  • 单击【Configure application context】(配置应用上下文)
    在这里插入图片描述
  • 单击【Create new application context…】(创建新的应用上下文),注意应用上下文名称是可以修改的,单击【ok】按钮
    在这里插入图片描述
  • 在项目结构窗口里查看配置好的spring-config.xml
    在这里插入图片描述
    现在我们有了生产Bean的车间,下面我们就要在车间里配置产品

3、在Spring配置文件里创建Bean

(1)创建杀龙任务Bean

<!--配置杀龙任务Bean-->
<bean id="slayDragonQuest" class="net.army.spring.SlayDragonQuest"/>
  • id属性 :对应对象名,可以任取,然后在应用程序里我们可以通过这个id值从Spring容器中获取Bean对象。
  • class属性 :表明Bean对象是基于哪个类来实例化,注意一定要包含包名。

(2)创建勇敢骑士Bean

<!--配置勇敢骑士Bean-->                                                 
<bean id="braveKnight" class="net.army.spring.BraveKnight"> 
    <property name="name" value="罗宾汉"/>  <!-- RobinHood.setName("罗宾汉")-->                        
    <property name="slayDragonQuest" ref="slayDragonQuest"/>  <!--RobinHood.setSlayDragonQuest(slayDragonQuest)-->  
</bean>                                                                                                                   
  • property元素:给对象设置属性值
  • name属性:Bean对象的属性名
  • ref属性:Bean对象的属性值(引用另一个Bean对象)

勇敢骑士Bean通过元素将杀龙任务Bean注入作为其属性。注意,name属性值一定是BraveKnight类的属性名,ref属性值是已定义的杀龙任务Bean的id值。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--配置杀龙任务Bean-->
    <bean id="slayDragonQuest" class="net.army.spring.SlayDragonQuest"/>

    <!--配置勇敢骑士Bean-->
    <bean id="braveKnight" class="net.army.spring.BraveKnight">
        <property name="name" value="罗宾汉"/> <!--braveKnight.setName("罗宾汉");-->
        <property name="slayDragonQuest" ref="slayDragonQuest"/> <!--braveKnight.setSlayDragonQuest(slayDragonQuest);-->
    </bean>
</beans>

  • 通过Spring配置文件,创建了两个Bean对象,它们之间存在依赖关系,第一个Bean对象是第二个Bean对象的任务属性值
    在这里插入图片描述

4、创建新勇敢骑士测试类

  • 在test/java/net.army.spring里创建TestBraveKnightNew测试类
    在这里插入图片描述
  • 采用基于类路径的应用容器类 - ClassPathXmlApplicationContext
import net.army.spring.BraveKnight;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:采用Spring容器测试勇敢骑士类
 */
public class TestBraveKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)

    @Before // 每次测试方法执行前都要执行的代码就放在此方法里
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 提示用户
        System.out.println("Spring应用容器已创建~");
    }

    @Test
    public void testBraveKnight() {
        // 根据名称从应用容器中获取勇敢骑士对象
        BraveKnight braveKnight = (BraveKnight) context.getBean("braveKnight");
        // 勇敢骑士执行任务
        braveKnight.embarkOnQuest();
    }

    @After // 每次测试方法执行后都要执行的代码就放在此方法里
    public void destroy() {
        // 关闭应用容器
        context.close();
        // 提示用户
        System.out.println("Spring应用容器已关闭~");
    }
}
  • 代码说明:首先通过Spring配置文件创建Spring应用容器,然后就可以利用容器的getBean方法通过名称获取容器里的Bean对象,然后调用该对象的方法。

  • 运行测试方法testBraveKnightNew(),查看结果,再次运行程序,查看结果、
    在这里插入图片描述

5、创建两个勇敢骑士Bean

  • 基于一个类可以创建多个对象,因此,在spring-config.xml文件里,也可以基于同一个类创建多个Bean。

  • 基于BraveKnight类再创建两个Bean,id值分别为knight1和knight2。

  • 添加代码如下:

<bean id="knight1" class="net.army.spring.BraveKnight">
   <property name="name" value="高文"/> 
   <property name="slayDragonQuest" ref="slayDragonQuest"/>
</bean>
<bean id="knight2" class="net.army.spring.BraveKnight">
   <property name="name" value="加罗思"/> 
   <property name="slayDragonQuest" ref="slayDragonQuest"/> 
</bean>
  • 在Spring配置文件里,同一个Bean不能重复定义,也就是说不允许两个Bean有相同的id值
    在这里插入图片描述

6、修改新勇敢骑士测试类

  • 获取新建的两个勇敢骑士Bean,调用执行任务方法
    在这里插入图片描述
  • 运行testBraveKnight()测试方法,查看结果
    在这里插入图片描述
  • 勇敢骑士Bean采用属性注入方式将杀龙任务Bean注入作为其属性
    在这里插入图片描述
  • 初始化对象其实可以调用有参构造方法来设置属性的初始值,对应到Spring的Bean工厂,就还有一种注入方式,叫做构造方法注入。同样地,我们还是通过案例来演示如何通过构造方法来注入属性值。

(七)采用构造方法注入方式注入属性值

1、创建救美任务类

  • 在net.army.spring包里创建RescueDamselQuest类
    在这里插入图片描述
  • Rescue Damsel - 拯救少女
package net.army.spring;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:救美任务类
 */
public class RescueDamselQuest {
    public void embark() {
        System.out.println("执行救美任务……");
    }
}

2、创建救美骑士类

  • 在net.army.spring包里创建RescueDamselKnight类
    在这里插入图片描述

  • 添加代码如下

package net.army.spring;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:救美骑士类
 */
public class RescueDamselKnight {
    private String name; // 骑士姓名
    private RescueDamselQuest rescueDamselQuest; // 救美任务

    /**
     * 有参构造方法
     *
     * @param name
     * @param rescueDamselQuest
     */
    public RescueDamselKnight(String name, RescueDamselQuest rescueDamselQuest) {
        this.name = name;
        this.rescueDamselQuest = rescueDamselQuest;
    }

    public void embarkOnQuest() {
        System.out.print("救美骑士[" + name + "]");
        rescueDamselQuest.embark();
    }
}
  • 代码说明:通过构造方法来设置骑士的姓名与要执行的任务。

3、创建旧救美骑士测试类

  • 在test/java/net.army.spring包里创建TestRescueDamselKnightOld类
    在这里插入图片描述
  • 添加代码如下
import net.army.spring.RescueDamselKnight;
import net.army.spring.RescueDamselQuest;
import org.junit.Test;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:传统方式测试救美骑士类
 */
public class TestRescueDamselKnightOld {
    @Test
    public void testRescueDamselKnight() {
        // 创建救美任务对象
        RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
        // 创建救美骑士对象
        RescueDamselKnight rescueDamselKnight = new RescueDamselKnight("格拉海德", rescueDamselQuest);
        // 救美骑士执行任务
        rescueDamselKnight.embarkOnQuest();
    }
}
  • 运行testRescueDamselKnight()测试方法,查看结果
    在这里插入图片描述

4、配置救美骑士Bean

  • 在Spring配置文件里配置救美骑士Bean
    在这里插入图片描述
  • 添加内容如下
<!--配置救美任务Bean-->                                                        
<bean id="rescueDamselQuest" class="net.army.spring.RescueDamselQuest"/> 
                                                                         
<!--配置救美骑士Bean-->                                                        
<bean id="rescueDamselKnight" class="net.army.spring.RescueDamselKnight">
    <constructor-arg value="格拉海德"/>                                      
    <constructor-arg ref="rescueDamselQuest"/>                           
</bean>                                                                  

5、创建新救美骑士测试类

  • 在test/java/net.army.spring包里创建TestRescueDamselKnightNew类
    在这里插入图片描述
  • 添加代码如下
import net.army.spring.RescueDamselKnight;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 作者:梁辰兴
 * 日期:2023/2/15
 * 功能:Spring容器测试救美骑士类
 */
public class TestRescueDamselKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)

    @Before // 每次测试方法执行前都要执行的代码就放在此方法里
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 提示用户
        System.out.println("Spring应用容器已创建~");
    }

    @Test
    public void testRescueDamselKnight() {
        // 根据名称从应用容器中获取救美骑士对象
        RescueDamselKnight rescueDamselKnight = (RescueDamselKnight) context.getBean("rescueDamselKnight");
        // 救美骑士执行任务
        rescueDamselKnight.embarkOnQuest();
    }

    @After // 每次测试方法执行后都要执行的代码就放在此方法里
    public void destroy() {
        // 关闭应用容器
        context.close();
        // 提示用户
        System.out.println("Spring应用容器已关闭~");
    }
}
  • 运行TestRescueDamselKnight()测试方法,查看效果
    在这里插入图片描述

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

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

相关文章

2.14日报

今日修改token传参异常bug 国际化bug修复&#xff1a;code中的success只有第一次调用识别lang 没继承BaseController 异常处理的三种方式 1|0一. Controller层面上异常处理 ExceptionHandler 说明:针对可能出问题的Controller&#xff0c;新增注解方法ExceptionHandler. Con…

论文投稿指南——中文核心期刊推荐(农学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

进程调度(4.1)

进程调度 进程调度是操作系统的基本功能&#xff0c;在多道程序系统中&#xff0c;内存中有多个进程&#xff0c;每个进程交替的去使用处理机&#xff0c;而合理的调度是至关重要的。处理机的调度有三种类型&#xff0c;分别是高级调度、中级调度、低级调度&#xff0c;其中低…

dvwa靶场上的 RCE漏洞+暴力破解的简单学习

记录一下自己重新开始学习web安全之路⑦。 操作系统的一些简单基础&#xff1a; windows&#xff1a; 查询IP地址&#xff1a;ipconfig 查看完整的网卡信息&#xff1a;ipconfig/all 列出当前目录下的文件信息&#xff1a;dir 切换目录&#xff1a;cd 读取文件内容&…

PID控制算法进阶

关于PID控制算法基础概念在本文不再重复了&#xff0c;详情可参考&#xff1a;PID控制算法基础介绍 本文主要从PID算法代码实现&#xff0c;代码解析&#xff0c;理论进阶&#xff0c;PID调参等方向进行阐述。 目录位置式PID和增量式PID1.1 位置式PID1.2 增量式PID1.3 位置式和…

Spring3之基于Aspect实现AOP

简介 使用 Aspect 搭配 Spring 可轻松实现 AOP&#xff1b;本章将通过一个完整示例演示如何实现这一功能 实现步骤 修改 beans.xml 配置文件的 schema 部分&#xff1b;可以在 spring-framework-reference.html 文件通过搜索关键字 “/aop” 找到配置 schema&#xff0c;然后…

Linux安装ElasticSearch

下载地址&#xff1a;https://www.elastic.co/cn/downloads/past-releases#elasticsearch 1 版本选择 ElasticSearch 7 及以上版本都是自带的 jdk&#xff0c;假如需要配置指定的 jdk 版本的话&#xff0c;可以在 es 的 bin 目录下找到elasticsearch-env.bat 这个文件&#x…

(学习日记)2023.2.12

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

谷粒商城:订单中心概念解析

1、订单中心 电商系统涉及到 3 流&#xff0c;分别时信息流&#xff0c;资金流&#xff0c;物流&#xff0c;而订单系统作为中枢将三者有机的集 合起来。 订单模块是电商系统的枢纽&#xff0c;在订单这个环节上需求获取多个模块的数据和信息&#xff0c;同时对这 些信息进行加…

千峰jquery进阶内容

封装选项卡&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport&…

在基于全志D1s的芒果派麻雀上运行国产开源rt-smart系统

想必RT-Thread系统大家不陌生了&#xff0c;RT-Thread Smart&#xff08;简称 rt-smart&#xff09;是基于 RT-Thread 操作系统衍生的新分支&#xff0c;面向带 MMU&#xff0c;中高端应用的芯片&#xff0c;例如 ARM Cortex-A 系列芯片&#xff0c;MIPS 芯片&#xff0c;带 MM…

ELK采集MySQL慢日志实现

文章目录一、ELK采集MySQL慢日志架构二、filebeat三、logstash四、eskibana一、ELK采集MySQL慢日志架构 MySQL 服务器安装 Filebeat 作为 agent 收集 slowLogFilebeat 读取 MySQL 慢日志文件做简单过滤传给 Kafka 集群Logstash 读取 Kafka 集群数据并按字段拆分后转成 JSON 格…

春季开学即将到来!大学生活必备数码清单奉上

马上就要开学了&#xff0c;你的返校装备是否已经准备齐全了呢&#xff1f;对于高校学生来说&#xff0c;很多数码产品都属于必备装备&#xff0c;比如下面这几款产品就受到了大量年轻消费者的喜爱&#xff0c;在它们的帮助下能够让大家的学习时光变得更快乐。1、不入耳黑科技骨…

DM8:DMDSC共享存储集群搭建-配置文件准备

DM8:DMDSC共享存储集群搭建-配置文件准备1 环境介绍2 配置文件2.1 EP73 节点配置文件2.1.1 dmdcr_cfg.ini2.1.2 dmasvrmal.ini2.1.3 dmdcr.ini2.1.4 dminit.ini2.1.5 dmcssm.ini2.1.6 配置文件就绪2.2 EP74 节点配置文件2.2.1 dmdcr.ini1 环境介绍 使用裸设备搭建 2 节点 DMDS…

从零开始的数模(二十六)单因素方差分析

目录 一、概念 1.1相关概念 1.2用途 1.3数据要求&#xff1a;独立性/正态性/方差齐性 1.4步骤 ​编辑1.5专业名词 二、基于python的单因素方差分析 2.2单因素方差分析的作用 一、概念 1.1相关概念 单因素方差分析是一种常用的统计分析方法&#xff0c;它用于比较一个因…

csgo搬砖项目,门槛最低的副业就是它(内附入门知识及选品技巧)

CSGO搬砖如何选择游戏饰品(装备&#xff09;&#xff1f;相信很多朋友一定很关心这个问题&#xff0c;因为如何选品直接关系到该装备是否快速出售&#xff0c;而且也关系到账号整体盈收状况。那么今天阿阳就来好好聊聊如何选择Steam装备以及饰品的各项知识点。 Steam搬砖如何选…

Leetcode力扣秋招刷题路-0061

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 61. 旋转链表 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&…

linux另类提权之打靶归来(2019年老文)

0x00前言&#xff1a; 本次目标为渗透某安全培训学校在线靶场&#xff0c;朋友做不出来交帮忙看下。。。 不要听见靶场就关闭了此文&#xff0c;客官往下看。 0x01开端 打开此靶机各种琳琅满目的漏洞让我眼花缭乱&#xff0c;这里我选择一种直击要害的漏洞作为开端&#xff…

【入门】what is apache orc?提高hive存储效率?怎么和hive搭配使用?

文章目录一. 什么是orc二. hive集成orc三. hive表属性一. 什么是orc 官网&#xff1a;https://orc.apache.org/docs/ 1.ORC files目标为了提高hive的存储效率&#xff0c;以及减少文件大小。 Back in January 2013, we created ORC files as part of the initiative to massive…

转发一张网络工程师考试的试卷2021.5.15

网络工程师考试 单选题 &#xff08;30题&#xff0c;每题1分&#xff0c;共30分&#xff09; 1. 你在一个网络中实现DHCP服务&#xff0c;配置一些计算机成为DHCP客户端&#xff0c;由于工作需要&#xff0c;一台系统为Windows 10 的客户端要把从DHCP服务器获得的地址释放&a…