Spring复习更新中

Spring复习更新中

  • Bean的生命周期
  • Spring
    • Ioc(Inversion of Control)
    • 注解
  • SpringBoot
  • SpringMVC
  • SpringCloud

更新中ing
JVM/GC复习已更新完

Bean的生命周期

在这里插入图片描述五步

  • 第一步:实例化Bean
  • 第二步:Bean属性赋值
  • 第三步:初始化Bean
  • 第四步:使用Bean
  • 第五步:销毁Bean
    在这里插入图片描述
    七步
  • 第一步:实例化Bean
  • 第二步:Bean属性赋值
  • 第三步:执行“Bean后处理器”的before方法
  • 第四步:初始化Bean
  • 第五步:执行“Bean后处理器”的after方法
  • 第六步:使用Bean
  • 第七步:销毁Bean
    在这里插入图片描述

十步

  • 第一步:实例化Bean
  • 第二步:Bean属性赋值
  • 第三步:检查bean是否实现Aware的相关接口,并且设置依赖
  • 第四步:执行“Bean后处理器”的before方法
  • 第五步:检查Bean是否实现InitializingBean接口,并调用接口的方法
  • 第六步:初始化Bean
  • 第七步:执行“Bean后处理器”的after方法
  • 第八步:使用Bean
  • 第九步:检查Bean是否实现了DisposableBean接口,并且调用接口的方法
  • 第十步:销毁Bean

举例:

//(1)在“Bean后处理器”before方法之前干了什么事儿?
//检查Bean是否实现了Aware相关的接口,如果实现了接口则调用这些接口中的方法;调用这些方法的目的是为了给你传递一些数据,让你更加方便使用。
//(2)在“Bean后处理器”before方法之后干了什么事儿?
//检查Bean是否实现了InitializingBean接口,如果实现了,则调用接口中的方法。
//(3)使用Bean之后,或者说销毁Bean之前干了什么事儿?
//检查Bean是否实现了DisposableBean接口,如果实现了,则调用接口中的方法。
//总结:添加的这三个点位的特点,都是在检查你这个Bean是否实现了某些特定的接口,如果实现了这些接口,则Spring容器会调用这个接口中的方法!
//Aware相关的接口包括:BeanNameAware、BeanClassLoaderAware、BeanFactoryAware
//①当Bean实现了BeanNameAware,Spring会将Bean的名字传递给Bean。
//②当Bean实现了BeanClassLoaderAware,Spring会将加载该Bean的类加载器传递给Bean。
//③当Bean实现了BeanFactoryAware,Spring会将Bean工厂对象传递给Bean。
//测试以上10步,可以让User类实现5个接口,并实现所有方法:
//①BeanNameAware
//②BeanClassLoaderAware
//③BeanFactoryAware
//④InitializingBean
//⑤DisposableBean
package com.bjpowernode.spring.bean;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;public class User implementsBeanNameAware, BeanClassLoaderAware, BeanFactoryAware,InitializingBean, DisposableBean{private String username;public void setUsername(String username) {System.out.println("第二步:给对象的属性赋值");this.username = username;}public User() {System.out.println("第一步:实例化Bean,无参数构造方法执行了");}// 初始化Bean,需要自己写,自己配,方法名随意public void initBean(){System.out.println("第四步:初始化Bean");}// 销毁Bean,需要自己写,自己配,方法名随意public void destroyBean(){System.out.println("第七步:销毁Bean");}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +'}';}@Overridepublic void setBeanClassLoader(ClassLoader classLoader) {System.out.println("类加载器:" + classLoader);}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("Bean工厂:" + beanFactory);}@Overridepublic void setBeanName(String name) {System.out.println("Bean的名字:" + name);}@Overridepublic void destroy() throws Exception {System.out.println("DisposableBean destroy方法执行了");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("InitializingBean afterPropertiesSet方法执行了");}
}

打印结果
在这里插入图片描述

注解√指的是归属谁的注解

注解名称位置作用SpringSpringBootSpringCloudjava
@Value属性/方法定义上方设置对应属性的值或者对方法进行传参---
@Component方法定义上方设置该类为spring管理的bean---
@Controller方法定义上方设置该类为spring管理的bean---
@Service方法定义上方设置该类为spring管理的bean---
@Repository方法定义上方设置该类为spring管理的bean---
@Scope类定义上方设置该类作为bean对应的scope属性里面的value定义作用域---
@PostConstruct方法定义上方设置该类的对应bean的生命周期方法---
@PreDestory方法定义上方设置该类的对应bean的生命周期方法---
@Bean方法定义上方设置该方法的返回值作为spring管理的bean---
@Autowired@Qualifier属性/方法定义上方设置对应属性的对象或对方法进行引用类型传参@Autowired默认按类型装配,指定@Qualifier后可以指定自动装配的bean的id---
@Resource方法定义上方相当于@Autowired+@Qualifier,按照名称进行注入. JDK8以后的版本不支持---
@Primary类定义上方设置类对应的bean按类型装配时优先装配---
@PropertySource类定义上方加载properties文件中的属性值---
@Configuration、@ComponentScan类定义上方设置当前类为spring核心配置加载类---
@Import类定义上方导入第三方bean作为spring控制的资源---
@DependsOnbean定义的位置(类上或方法上)控制bean的加载顺序,使其在指定bean加载完毕后再加载---
@Order配置类定义的位置(类上)控制配置类的加载顺序---
@Lazybean定义的位置(类上或方法上)控制bean的加载时机,使其延迟加载---
@ComponentScan类定义上方设置spring配置加载类扫描规则---
@Transactional类/方法定义上方用于标识需要进行事务管理的方法或类---
@Async方法定义上方此注解使用在方法上,声明此方法会在一个单独的线程中执行。不同于Scheduled注解,此注解可以接受参数---
@RestController-类似于@Controller+@ResponseBody---
@ServletComponentScan-Servlet/Filter/Listener可以直接通过@WebServlet/@WebFilter/@WebListener注解自动注册,无需其他代码---
@RequiredArgsConstructor-写在类上可以代替@Autowired注解,需要注意的是在注入时需要用final定义,或者使用@notnull注解---
@EnableAutoConfiguration类上告诉Spring Boot自动基于当前包添加Bean、对bean的属性进行设置等---
@SpringBootApplication-注解用在Spring Boot项目的应用主类上(此类需要在base package中)。使用了此注解的类首先会让Spring Boot启动对base package以及其sub-pacakage下的类进行component scan。---
其他的注解占时不一一列举了后期补充太多了上方的注解是比较常用的注解REST的注解就不说了

上面的bean周期是通俗的说明此处是专业说明,后期待补充 TODO

bean的生命周期解释说明
实例化(Instantiation)当容器加载并解析Bean定义时,会创建Bean的实例对象。这一过程可以通过构造函数实例化,或者通过工厂方法实例化。
属性赋值(Property assignment)当实例化完成后,容器会为Bean的属性赋值。这可以通过使用setter方法进行属性注入,或者通过自动装配等方式进行属性赋值。
初始化(Initialization)在属性赋值完成后,容器会调用Bean的初始化方法,对Bean进行一些初始化操作。初始化方法可以通过实现InitializingBean接口的afterPropertiesSet()方法,或者使用@Bean注解的initMethod属性指定。
后处理(Post-processing)在初始化完成后,容器会对Bean进行一些后处理操作。这可以通过实现BeanPostProcessor接口来实现,例如对Bean进行代理等操作。
销毁(Destruction)当容器关闭或者销毁Bean时,会调用Bean的销毁方法来进行一些清理操作。销毁方法可以通过实现DisposableBean接口的destroy()方法,或者使用@Bean注解的destroyMethod属性指定。
容器回调(Container callback)在Bean的生命周期中,容器也会进行一些回调操作,例如Aware接口的回调,例如对BeanFactory、ApplicationContext等进行回调操作。
实例化(Instantiation)当容器加载并解析Bean定义时,会创建Bean的实例对象。这一过程可以通过构造函数实例化,或者通过工厂方法实例化。
错误处理(Exception handling)在Bean的生命周期中,如果发生错误,容器能够用适当的错误处理策略进行处理。这可以包括抛出异常、返回特定的错误结果等。

Spring

Ioc(Inversion of Control)

这个是一个非常重要的概念的设计思想,又叫控制反转
在java开发中,将你设计好的对象交给容器进行控制,而不是显示地用代码进行对象的创建
把创建和查找依赖对象的控制权交给 IoC 容器,由 IoC 容器进行注入、组合对象。这样对象与对象之间是松耦合、便于测试、功能可复用(减少对象的创建和内存消耗),使得程序的整个体系结构可维护性、灵活性、扩展性变高。


DI(Dependency Injection)实际上就是ioc的一种表示形式,又叫依赖注入,是IoC容器装配,注入对象的一种方式
通过依赖注入机制,简单的配置即可注入需要的资源,完成自身的业务逻辑,不需要关心资源的出处和具体实现。

好处
资源集中管理,实现资源的可配置和易管理
降低了资源的依赖程度,即松耦合
便于测试
功能可复用(减少对象的创建和内存消耗)
使得程序的整个体系结构可维护性、灵活性、扩展性变高

注入方式有:
set注入
构造器注入
集合类型数据注入

注解

1.@Component@Controller/@Service/@Repository
实例化bean
举例:

@Component
public class ClassName{}

相关属性:
value:定义bean的访问id


2.@Scope
标注Bean的作用范围

举例:

@Scope
public class ClassName{}

相关属性:
value:
定义bean的作用域,默认为singleton


@Value
注入基本数据类型和 String 类型数据的
举例:

@Value("${jdbc.username}")
private String username;

value(默认):定义对应的属性值或参数值
1.value值仅支持非引用类型数据,赋值时对方法的所有参数全部赋值
2.value值支持读取properties文件中的属性值,通过类属性将properties中数据传入类中
3.value值支持SpEL
4.@value注解如果添加在属性上方,可以省略set方法(set方法的目的是为属性赋值)


@PostConstruct
使用在方法上标注该方法是Bean的初始化方法,设置该类作为bean对应的生命周期方法
举例:

@PostConstruct
public void init() { System.out.println("init..."); }

1.被 @PostConstruct 修饰的方法会在服务器加载 Servlet 的时候运行,并且只会被服务器执行一次,并且在构造函数之后执行,init() 方法之前执行
2.该注解的方法在整个 Bean 初始化中的执行顺序:Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)-> init()方法
3.如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,为此,可以使用 @PostConstruct 注解的方法来完成初始化,@PostConstruct 注解的方法将会在依赖注入完成后被自动调用。


@PreDestory
该类作为bean对应的生命周期方法
举例:

    @PreDestroypublic void preDestroy() {System.out.println("Cat的preDestroy()方法。。。");}
  1. 该注解被用来修饰一个非静态的 void() 方法。被 @PreDestroy 修饰的方法会在服务器卸载 Servlet 的时候运行,并且只会被服务器执行一次。
    2.执行顺序:构造方法 -> @PostConstruct -> init()方法 -> @PreDestroy -> destroy() 方法 -> bean 销毁

@Bean
设置该方法的返回值作为spring管理的bean

@Bean("dataSource")
public DruidDataSource createDataSource() {return ……;   }

1.因为第三方bean无法在其源码上进行修改,使用@Bean解决第三方bean的引入问题
2.该注解用于替代XML配置中的静态工厂与实例工厂创建bean,不区分方法是否为静态或非静态
3.@Bean所在的类必须被spring扫描加载,否则该注解无法生效
4.value(默认):定义bean的访问id


@Autowired@Qualifier
设置对应属性的对象或对方法进行引用类型传参
举例:

@Autowired(required = false)
@Qualifier("userDao")
private UserDao userDao;

1.@Autowired默认按类型装配,指定@Qualifier后可以指定自动装配的bean的id
2.required:定义该属性是否允许为null
3.spring的注解,一个属性,默认的注入方式为byType(根据类型进行匹配),type无法分辨时,可以根据name分辨,变量名称要与Bean名称一致,也可以通过@Qualifier 注解来显式指定Bean名称。


@Resource
类似@Autowired@Qualifier组合使用的作用
举例:

    @Resource(name = "a")private EmployeeService employeeService;

1.属性较多,默认的注入方式为byName(根据名称进行匹配),type无法分辨时,可以根据name分辨,通过name属性来显式指定Bean名称。


@Primary
设置类对应的bean按类型装配时优先装配
实例:

@Primary
public class ClassName{}

@Autowired默认按类型装配,当出现相同类型的bean,使用@Primary提高按类型自动装配的优先级,多个@Primary会导致优先级设置无效


@PropertySource
加载properties文件,加载properties文件中的属性值
举例:

@PropertySource(value = "classpath:filename.properties")
public class ClassName {@Value("${propertiesAttributeName}")private String attributeName;
}

1.不支持*通配格式,一旦加载,所有spring控制的bean中均可使用对应属性值
2.value(默认):设置加载的properties文件名
3.ignoreResourceNotFound:如果资源未找到,是否忽略,默认为false


@Configuration、@ComponentScan
@Configuration将想要的组件添加到容器中
使用注解@Configuration,告诉Spring Boot这是一个配置类。

@Configuration
@ComponentScan("scanPackageName")
public class SpringConfigClassName{
}

1.bean扫描工作使用注解@ComponentScan替代
2.@Configuration不可以是final类型;
3.@Configuration不可以是匿名类;
4.嵌套的configuration必须是静态类。
5.@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)
6.@Configuration启动容器+@Bean注册Bean,@Bean下管理bean的生命周期,@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的,作用为:注册bean对象
用@Configuration加载spring
1.@Configuration配置spring并启动spring容器
2.@Configuration启动容器+@Bean注册Bean
3.@Configuration启动容器+@Component注册Bean
4.使用 AnnotationConfigApplicationContext 注册 AppContext 类的两种方法
5.配置Web应用程序(web.xml中配置AnnotationConfigApplicationContext)
组合多个配置类
1.在@configuration中引入spring的xml配置文件
2.在@configuration中引入其它注解配置
3.@configuration嵌套(嵌套的Configuration必须是静态类)
1.@ComponentScan 的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中
2.spring会把指定路径下带有指定注解的类自动装配到bean容器里,会被自动装配的注解包括@Controller、@Service、@Component、@Repository等等。与ComponentScan注解相对应的XML配置就是context:component-scan/, 根据指定的配置自动扫描package,将符合条件的组件加入到IOC容器中
3.basePackages和value:指定要扫描的路径(package),如果为空则以@ComponentScan注解的类所在的包为基本的扫描路径
4.basePackageClasses:指定具体扫描的类
5.includeFilters:指定满足Filter条件的类。
6.excludeFilters:指定排除Filter条件的类。
7.seDefaultFilters=true/false:指定是否需要使用Spring默认的扫描规则:被@Component, @Repository, @Service, @Controller或者已经声明过@Component自定义注解标记的组件;
在过滤规则Filter中(指定过滤规则):
1.ANNOTATION:按照注解规则,过滤被指定注解标记的类(默认);
2.ASSIGNABLE_TYPE:按照给定的类型;
3.ASPECTJ:按照ASPECTJ表达式;
4.REGEX:按照正则表达式;
5.CUSTOM:自定义规则,自定义的Filter需要实现TypeFilter接口;
实例:

@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}
)
 1. 扫描指定类文件@ComponentScan(basePackageClasses = Person.class)2. 扫描指定包,使用默认扫描规则,即被@Component, @Repository, @Service, @Controller或者已经声明过@Component自定义注解标记的组件;@ComponentScan(value = "com.example")3. 扫描指定包,加载被@Component注解标记的组件和默认规则的扫描(因为useDefaultFilters默认为true@ComponentScan(value = "com.example", includeFilters = { @Filter(type = FilterType.ANNOTATION, value = Component.class) })4. 扫描指定包,只加载Person类型的组件@ComponentScan(value = "com.example", includeFilters = { @Filter(type = FilterType.ASSIGNABLE_TYPE, value = Person.class) }, useDefaultFilters = false)5. 扫描指定包,过滤掉被@Component标记的组件@ComponentScan(value = "com.example", excludeFilters = { @Filter(type = FilterType.ANNOTATION, value = Component.class) })6. 扫描指定包,自定义过滤规则@ComponentScan(value = "com.example", includeFilters = { @Filter(type = FilterType.CUSTOM, value = MtyTypeFilter.class) }, useDefaultFilters = true)

@Import
导入第三方bean作为spring控制的资源
举例:

@Configuration
@Import(OtherClassName.class)
public class ClassName {
}

1.@Import注解在同一个类上,仅允许添加一次,如果需要导入多个,使用数组的形式进行设定
2.在被导入的类中可以继续使用@Import导入其他资源
3.@Bean所在的类可以使用导入的形式进入spring容器,无需声明为bean


@DependsOn
控制bean的加载顺序,使其在指定bean加载完毕后再加载
举例:

@DependsOn("beanId")
public class ClassName {
}

1.配置在方法上,使@DependsOn指定的bean优先于@Bean配置的bean进行加载
2.配置在类上,使@DependsOn指定的bean优先于当前类中所有@Bean配置的bean进行加载
3.配置在类上,使@DependsOn指定的bean优先于@Component等配置的bean进行加载
3.value(默认):设置当前bean所依赖的bean的id
4.微信订阅号,发布消息和订阅消息的bean的加载顺序控制
5.双11活动期间,零点前是结算策略A,零点后是结算策略B,策略B操作的数据为促销数据。策略B加载顺序与促销数据的加载顺序


@Order
控制配置类的加载顺序
举例:

@Order(1)
public class SpringConfigClassName {
}

1.多个种类的配置出现后,优先加载系统级的,然后加载业务级的,避免细粒度的加载控制


@Lazy
控制bean的加载时机,使其延迟加载
举例:

@Lazy
public class ClassName {
}

1.程序灾难出现后对应的应急预案处理是启动容器时加载时机


SpringBoot

自动装配:Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是SpringBoot自动完成的。


起步依赖:起步依赖本质上是一个Maven项目对象模型,定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。


辅助功能:提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。

SpringMVC

SpringCloud

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

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

相关文章

H.264与H.265的主要差异

H.265仍然采用混合编解码,编解码结构域H.264基本一致, H.265与H.264的主要不同 编码块划分结构:采用CU (CodingUnit)、PU(PredictionUnit)和TU(TransformUnit)的递归结构。 并行工具:增加了Tile以及WPP等并行工具集以提高编码速…

【图形学】贝塞尔曲线理论与实践

贝塞尔曲线(Bezier Curve)在计算机图形领域应用非常广泛,比如我们 CSS 动画、 Canvas 以及 Photoshop 等都可以看到贝塞尔曲线的身影。 贝塞尔曲线类型 贝塞尔曲线根据_控制点_的数量分为: 一阶贝塞尔曲线(2 个控制点…

SpringCloud-Knife4j文档聚合

在微服务架构下,如果给每个微服务都配置文档,那么每个微服务的接口文档都有自己独立的访问地址,这样要一个个打开每个微服务的文档非常麻烦。一般我们会采用聚合的办法,将所有微服务的接口整合到一个文档中,具体做法有…

DDColor:AI图像着色工具,优秀的黑白图像上色模型,支持双解码器!

前言 在数字图像处理领域,图像上色 一直是一个重要的课题。传统的图像上色方法通常需要人工干预,耗时且效果有限。 然而,随着深度学习技术的发展,自动图像上色模型逐渐成为了研究热点。 其中,DDColor 图像上色模型以…

vue3+elementPlus pc和小程序ai聊天文生图

websocket封装可以看上一篇文章 //pc端 <template><div class"common-layout theme-white"><el-container><el-aside><div class"title-box"><span>AI Chat</span></div><div class"chat-list&…

iOS推送通知

文章目录 一、推送通知的介绍1. 简介2. 通知的分类 二、本地通知1. 本地通知的介绍2. 实现本地通知3. 监听本地通知的点击 三、远程通知1. 什么是远程通知2. 为什么需要远程通知3. 远程通知的原理4. 如何做远程通知5. 远程通知证书配置6. 获取远程推送要用的 DeviceToken7. 测试…

代码随想录算法训练营第30天 | 回溯总结 + 3道Hard题目

今日任务 332.重新安排行程 51. N皇后 37. 解数独 总结 总结 回溯总结&#xff1a;代码随想录 回溯是递归的副产品&#xff0c;只要有递归就会有回溯&#xff0c;所以回溯法也经常和二叉树遍历&#xff0c;深度优先搜索混在一起&#xff0c;因为这两种方式都是用了递归。 …

《WebKit 技术内幕》学习之十三(1):移动WebKit

1 触控和手势事件 1.1 HTML5规范 随着电容屏幕的流行&#xff0c;触控操作变得前所未有的流行起来。时至今日&#xff0c;带有多点触控功能已经成为了移动设备的标准配置&#xff0c;基于触控的手势识别技术也获得巨大的发展&#xff0c;如使用两个手指来缩放应用的大小等。…

DAY11_(简易版)VUEElement综合案例

目录 1 VUE1.1 概述1.1.1 Vue js文件下载 1.2 快速入门1.3 Vue 指令1.3.1 v-bind & v-model 指令1.3.2 v-on 指令1.3.3 条件判断指令1.3.4 v-for 指令 1.4 生命周期1.5 案例1.5.1 需求1.5.2 查询所有功能1.5.3 添加功能 2 Element2.0 element-ui js和css和字体图标下载2.1 …

Vulnhub靶场DC-6

攻击机192.168.223.128 靶机192.168.223.134 主机发现:nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.134 开启了22 80端口&#xff0c;80是apache 2.4.25 先进入web界面看一下 用ip进不去&#xff0c;应该被重定向到wordy.com vim /etc/hosts 加上 19…

亚信安慧AntDB构建未来数据库典范

亚信安慧AntDB是一款数据库管理系统&#xff0c;它采用全球影响力大、社区繁荣、开放度高、生态增长迅速的PG内核。这款系统具有卓越的性能和稳定性&#xff0c;在全球范围内备受用户青睐。 与此同时&#xff0c;AntDB的社区也是充满活力的&#xff0c;用户可以在社区中交流经…

Vue中使用TypeScript:全面指南和最佳实践

🚀 欢迎来到我的专栏!专注于Vue3的实战总结和开发实践分享,让你轻松驾驭Vue3的奇妙世界! 🌈✨在这里,我将为你呈现最新的Vue3技术趋势,分享独家实用教程,并为你解析开发中的难题。让我们一起深入Vue3的魅力,助力你成为Vue大师! 👨‍💻💡不再徘徊,快来关注…

WebSocket服务端数据推送及心跳机制(Spring Boot + VUE):

文章目录 一、WebSocket简介&#xff1a;二、WebSocket通信原理及机制&#xff1a;三、WebSocket特点和优点&#xff1a;四、WebSocket心跳机制&#xff1a;五、在后端Spring Boot 和前端VUE中如何建立通信&#xff1a;【1】在Spring Boot 中 pom.xml中添加 websocket依赖【2】…

都学Python了,C++难道真的用不着了吗?

都学Python了&#xff0c;C难道真的用不着了吗&#xff1f; 在开始前我分享下我的经历&#xff0c;刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;两年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些【C 】学习方法和资料&#xff0c;让我不断提升自己…

单片机介绍

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

关于axios给后端发送数据的问题

这里需要用的插件&#xff1a;qs.js&#xff0c;是前端给后端发送的数组&#xff0c;需要序列化所以要用到这个插件&#xff0c;这里就提取连接在这里&#xff0c;需要的自提&#xff0c;需要导如进来&#xff0c;别忘记了 链接&#xff1a;https://pan.baidu.com/s/1qyD8v9wfd…

拓展全球市场:静态代理IP成为跨境电商战略的关键工具

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

EIGRP实验

实验大纲 一、基本配置 1.构建网络拓扑结构图 2.路由器基本配置 3.配置PC 4.测试连通性 5.保存配置文件 二、配置EIGRP 1.查看路由表 2.配置EIGRP动态路由 3.查看路由器路由表 4.测试网络连通性 5.查看所有路由器的路由协议 6.保存配置文件 三、配置OSPF 1.配置…

SpringMVC-对静态资源的访问

1.工程中加入静态资源 在webapp下创建static文件夹&#xff0c;此文件夹专门放入静态资源 2.使项目可以处理静态资源的请求 在SpringMVC配置文件中添加以下语句 1.引入命名空间 xmlns:mvc"http://www.springframework.org/schema/mvc" xsi:schemaLocation“http…

Influxdb系列(二)influx Cli工具操作influxdb

一、安装并使用 influx CLI 客户端下载地址&#xff1a;https://docs.influxdata.com/influxdb/v2/tools/influx-cli/ [root192 bin]# tar -xvzf influxdb2-client-2.7.3-linux-amd64.tar.gz [root192 bin]# cp influx /usr/local/bin/二、客户端方式创建用户 相关的官网地址…