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

Spring相关面试题

文章目录

    • 请谈一下你对 spring 的理解?说一下 Spring 的核心是什么?请谈 一下你对 Spring IOC 和 和 AOP 的理解?
    • 请说一下 Spring 的 的 Bean 作用域?
    • 请谈一下Spring中bean对象的生命周期?
    • Spring中的事务是如何实现的 ?
    • 请谈一下Spring的两种事务形式?
    • Spring容器启动流程是怎样的?
    • Spring事务什么时候会失效?
    • BeanFactory 和 ApplicationContext有什么区别?
    • Spring 事务的传播行为了解吗?Spring 提供了几种事务的传播行为?
    • Spring事务的隔离级别?
    • 请谈一下 Spring 事务回滚机制 ?
    • 说一下过滤器和 Spring 拦截器的区别 ?
    • 拦截器的实现原理是什么?简单说一下拦截器用场景 ?
    • 反射机制了解吗?知道 spring 中哪些用的反射吗 ?
    • 使用@Autowired注解自动装配的过程是怎样的 ?

请谈一下你对 spring 的理解?说一下 Spring 的核心是什么?请谈 一下你对 Spring IOC 和 和 AOP 的理解?

(1)Spring 框架是一个轻量级的 JavaSE/JavaEE 应用开发框架,是构建企业级应用程序的一站式解决方案。
(2)Spring 是模块化的,并被分为大约 20 个模块(core、beans、context、web 等),允许我们只使用需要的部分,而不需
要引入其他部分。
(3)Spring 的两大核心内容是 IOC 和 AOP(控制翻转和面向切面编程);
谈一下 IOC(Inversion Of Control)
IOC 的意思是控制反转,它是一种设计思想,是一个重要的面向对象编程的法则;
在 Java 开发中,Ioc 可以让我们把设计好的对象交给容器控制,而不是在对象内部直接控制;
对于 spring 框架来说,就是由 spring 来负责控制对象的生命周期和对象间的关系;
谈一下 AOP
(1)AOP 被称为面向切面编程,是一种编程范式,是对面向对象编程(OOP)的一种完善。
(2)OOP 最大问题就是无法解耦组件进行开发,而 AOP 就是为了克服这个问题而出现的。
(3)AOP 将整个系统分为"核心业务逻辑"和"非核心的服务";
AOP 的关注点是系统中的“非核心服务”【权限;事务;安全;异常;日志等】;
Spring 将非核心服务封装成一个 AOP 组件,然后通过配置信息形成"核心业务和 AOP 组件"之间的调用关系,
当执行核心业务时,AOP 组件会在合适的时机进行调用

请说一下 Spring 的 的 Bean 作用域?

  1. singleton:在 Spring IOC 容器中仅存在一个 Bean 的实例,Bean 以单例的方式存在;
  2. prototype:每次从容器中调用 Bean 时,都返回一个新的实例,也就是每次调用 getBean()方法时,相当于执行了 new 对
    象的操作;
  3. request:每次 http 请求都会创建一个新的 Bean,该作用域仅适合 WebApplicationContext 环境;
  4. session:同一个 http session 共享一个 Bean 实例,不同 session 使用不同的 Bean 实例,该作用域仅适用
    WebApplicationContext 环境;
  5. global session:这种作用域类似于标准的 HTTP Session 作用域,不过仅仅在基于 portlet 的 web 应用中才有意义。

请谈一下Spring中bean对象的生命周期?

Spring Bean 的生命周期主要分为四个阶段,也就是:Bean 的实例化、Bean 属性赋值、初始化和 Bean 的销毁
其中前三个阶段主要实现在 AbstractAutowireCapableBeanFactory 类中 doCreateBean()方法中;
而"Bean 的销毁"则是容器关闭时;

  1. Spring 启动,查找并加载需要被 Spring 管理的 bean,进行 Bean 的实例化
  2. Bean 实例化后对将 Bean 的引入和值注入到 Bean 的属性中
  3. 如果 Bean 实现了 BeanNameAware 接口的话,Spring 将 Bean 的 Id 传递给 setBeanName()方法
  4. 如果 Bean 实现了 BeanFactoryAware 接口的话,Spring 将调用 setBeanFactory()方法,将 BeanFactory 容器实例传
  5. 如果 Bean 实现了 ApplicationContextAware 接口的话,Spring 将调用 Bean 的 setApplicationContext()方法,将
    bean 所在应用上下文引用传入进来。
  6. 如果 Bean 实现了 BeanPostProcessor 接口,Spring 就将调用他们的 postProcessBeforeInitialization()方法。
  7. 如果 Bean 实现了 InitializingBean 接口,Spring 将调用他们的 afterPropertiesSet()方法。类似的,如果 bean 使
    用 init-method 声明了初始化方法,该方法也会被调用
  8. 如果 Bean 实现了 BeanPostProcessor 接口,Spring 就将调用他们的 postProcessAfterInitialization()方法。
  9. 此时,Bean 已经准备就绪,可以被应用程序使用了。他们将一直驻留在应用上下文中,直到应用上下文被销毁。
  10. 如果 bean 实现了 DisposableBean 接口,Spring 将调用它的 destory()接口方法,同样,如果 bean 使用了 destory-
    method 声明销毁方法,该方法也会被调用。

Spring中的事务是如何实现的 ?

  1. Spring事务底层是基于数据库事务和AOP机制的
  2. ⾸先对于使⽤了@Transactional注解的Bean,Spring会创建⼀个代理对象作为Bean
  3. 当调⽤代理对象的⽅法时,会先判断该⽅法上是否加了@Transactional注解
  4. 如果加了,那么则利⽤事务管理器创建⼀个数据库连接
  5. 并且修改数据库连接的autocommit属性为false,禁⽌此连接的⾃动提交,这是实现Spring事务⾮
    常重要的⼀步
  6. 然后执⾏当前⽅法,⽅法中会执⾏sql
  7. 执⾏完当前⽅法后,如果没有出现异常就直接提交事务
  8. 如果出现了异常,并且这个异常是需要回滚的就会回滚事务,否则仍然提交事务
  9. Spring事务的隔离级别对应的就是数据库的隔离级别
  10. Spring事务的传播机制是Spring事务⾃⼰实现的,也是Spring事务中最复杂的
  11. Spring事务的传播机制是基于数据库连接来做的,⼀个数据库连接⼀个事务,如果传播机制配置为
    需要新开⼀个事务,那么实际上就是先建⽴⼀个数据库连接,在此新数据库连接上执⾏sql

请谈一下Spring的两种事务形式?

1.Spring 提供了 “编程式事务” 和 “基于 AOP 方式的声明式事务”
2.Spring 编程式事务管理高层的抽象主要包括三个接口
PlatformTransactionManager:事务管理器
TransactionDefinition:事务定义信息(包括事务的隔离、传播机制等);
TransactionStatus:事务具体运行状态;
其中 Spring 为不同的持久化框架提供了不同事务管理器 PlatformTransactionManager 的接口实现;
比如
使用 Spring JDBC 或 Mybatis 进行持久化数据时的 DataSourceTransactionManager;
使用 Hibernate 进行持久化数据时的 HibernateTransactionManager;
使用 JPA 进行持久化数据时的 JpaTransactionManager;
同时,Spring 可以使用 TransactionTemplate 进行编程式的事务控制;

Spring 基于 AOP 的声明式事务又有三种方式

  1. 基于 TransactionProxyFactoryBean 的方式
  2. 基于基于 AspectJ 的方式
  3. 基于注解方式

Spring容器启动流程是怎样的?

  1. 在创建Spring容器,也就是启动Spring时:
  2. ⾸先会进⾏扫描,扫描得到所有的BeanDefinition对象,并存在⼀个Map中
    Spring中什么时候@Transactional会失效
    Spring容器启动流程是怎样的
    25
  3. 然后筛选出⾮懒加载的单例BeanDefinition进⾏创建Bean,对于多例Bean不需要在启动过程中去进
    ⾏创建,对于多例Bean会在每次获取Bean时利⽤BeanDefinition去创建
  4. 利⽤BeanDefinition创建Bean就是Bean的创建⽣命周期,这期间包括了合并BeanDefinition、推断
    构造⽅法、实例化、属性填充、初始化前、初始化、初始化后等步骤,其中AOP就是发⽣在初始化
    后这⼀步骤中
  5. 单例Bean创建完了之后,Spring会发布⼀个容器启动事件
  6. Spring启动结束
  7. 在源码中会更复杂,⽐如源码中会提供⼀些模板⽅法,让⼦类来实现,⽐如源码中还涉及到⼀些
    BeanFactoryPostProcessor和BeanPostProcessor的注册,Spring的扫描就是通过
    BenaFactoryPostProcessor来实现的,依赖注⼊就是通过BeanPostProcessor来实现的
  8. 在Spring启动过程中还会去处理@Import等注解

Spring事务什么时候会失效?

Spring事务的原理是Aop,进行了切面的增强,那么失效的根本原因是这个AOP不起作用了!
常见的情况有如下几种
1.发生自调用,类里面使用this调用本类的方法(this通常省略),此时这个this对象不是
代理类,而是UserService对象本身!
解决方法很简单,让那个this变成UserService的代理类即可。
2.方法不是public的,@Transaction只能用于public的方法上,否则事务不会生效,如果用在public的方法上,可以开启AspectJ代理模式。
3.数据库不支持事务
4.没有被spring管理
5.异常被吃掉,事务不会回滚(或者抛出的异常没有被定义,默认为RuntimeException)

BeanFactory 和 ApplicationContext有什么区别?

BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中
ApplicationContext是BeanFactory的子接口。
依赖关系
BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean
的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。
ApplicationContext接口作为BeanFactory的派生,除了提供BeanFactory所具有的功能外,还提供了
更完整的框架功能:
继承MessageSource,因此支持国际化。
统一的资源文件访问方式。
提供在监听器中注册bean的事件。
同时加载多个配置文件。
载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web
层。
加载方式
BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才
对该Bean进行加载实例化。这样,我们就不能发现一些存在的Spring的配置问题。如果Bean的某一个
属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常。
ApplicationContext,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可
以发现Spring中存在的配置错误,这样有利于检查所依赖属性是否注入。 ApplicationContext启动后预
载入所有的单实例Bean,通过预载入单实例bean ,确保当你需要的时候,你就不用等待,因为它们已经
创建好了。
相对于基本的BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较
多时,程序启动较慢。
创建方式
BeanFactory通常以编程的方式被创建,ApplicationContext还能以声明的方式创建,如使用
ContextLoader。
注册方式
BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,
但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册。

Spring 事务的传播行为了解吗?Spring 提供了几种事务的传播行为?

  1. REQUIRED:表示如果当前存在一个事务,则加入该事务,否则将新建一个事务;
  2. REQUIRES_NEW:表示不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务;
  3. SUPPORTS:表示如果当前存在事务,就加入该事务;如果当前没有事务,那就不使用事务;
  4. NOT_SUPPORTED: 表示不使用事务;如果当前存在事务,就把当前事务暂停,以非事务方式执行;
  5. MANDATORY:表示必须在一个已有的事务中执行,如果当前没有事务,则抛出异常;
  6. NEVER:表示以非事务方式执行,如果当前存在事务,则抛出异常;
  7. NESTED:这个是嵌套事务;如果当前存在事务,则在嵌套事务内执行;如果当前不存在事务,则创建一个新的事务;
    嵌套事务使用数据库中的保存点来实现,即嵌套事务回滚不影响外部事务,但外部事务回滚将导致嵌套事务回滚;

Spring事务的隔离级别?

隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量:

  1. ISOLATION_DEFAULT:默认的
    这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是 ISOLATION_READ_COMMITTED。
  2. ISOLATION_READ_UNCOMMITTED:未提交读
    该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。
    该级别不能防止脏读、不可重复读和幻读,因此很少使用该隔离级别。
  3. ISOLATION_READ_COMMITTED:已提交读
    该隔离级别表示一个事务只能读取另一个事务已经提交的数据。
    该级别可以防止脏读,这也是大多数情况下的推荐值。
  4. ISOLATION_REPEATABLE_READ:可重复读
    该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。
    该级别可以防止脏读、不可重复读。
  5. ISOLATION_SERIALIZABLE:序列化
    所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰;
    也就是说,该级别可以防止脏读、不可重复读以及幻读。
    但是这将严重影响程序的性能。通常情况下也不会用到该级别。

请谈一下 Spring 事务回滚机制 ?

默认情况下,Spring 只有在抛出的异常是运行时异常(“非检查型”)时才回滚该事务;
也就是抛出的异常为 RuntimeException 的子类(Errors 也会导致事务回滚);
而抛出非运行时异常(检查型)则不会导致事务回滚;
但是,我们可以明确的配置抛出哪些异常时回滚事务,包括 checked 异常。也可以定义哪些异常抛出时不回滚事务。

说一下过滤器和 Spring 拦截器的区别 ?

拦截器和过滤器都是 AOP 编程思想的体现,都能实现权限检查、日志记录等。
拦截器是基于反射实现,更准确的说是通过 jdk 的动态代理实现; 过滤器是基于函数回调。
拦截器不依赖于 Servlet 容器,过滤器依赖于 Servlet 容器,它属于 Servlet 规范规定的。
拦截器只能对 Controller 请求起作用,过滤器则可以对几乎所有的请求起作用。
拦截器可以访问 controller 上下文的对象(如 service 对象、数据源等),过滤器则不可以访问.
拦截器可以深入的方法前后、异常抛出前后等,并且可以重复调用; 过滤器只在 Servlet 前后起作用,并且只在初始化
时被调用一次.

Java 中的拦截器是基于 Java 反射机制实现的,更准确的划分,应该是基于 JDK 实现的动态代理;
它依赖于具体的接口,在运行期间动态生成字节码。
使用场景:日志记录、权限检查、性能监控、通用行为

拦截器的实现原理是什么?简单说一下拦截器用场景 ?

Java 中的拦截器是基于 Java 反射机制实现的,更准确的划分,应该是基于 JDK 实现的动态代理;
它依赖于具体的接口,在运行期间动态生成字节码。
使用场景:
1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算 PV(Page View)等。
2、权限检查:比如登录检查,进入处理器之前检查是否登录,如果没有直接返回到登录页面;
3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,
在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如 apache 可以自动记录);
4、通用行为:读取 cookie 得到用户信息并将用户对象放入请求,从而方便后续流程使用;

反射机制了解吗?知道 spring 中哪些用的反射吗 ?

  1. 反射是 JAVA 语言提供一套在运行期动态获得类中信息的 API。
  2. 通过反射,可以在运行期动态的获得类中的属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私
    有的方法和属性)
    通过反射,可以在运行期动态的创建类的对象。
    通过反射,可以在运行期动态的执行类中的方法。
    Spring 通过反射创建对象,并将对象放到 spring ioc 容器中。
    Spring 的拦截器也是基于反射实现的。

使用@Autowired注解自动装配的过程是怎样的 ?

使用@Autowired注解来自动装配指定的bean。在使用@Autowired注解之前需要在Spring配置文件进
行配置,<context:annotation-config />。
在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当
容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该
对象的属性。在使用@Autowired时,首先在容器中查询对应类型的bean:
如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据;
如果查询的结果不止一个,那么@Autowired会根据名称来查找;
如果上述查找的结果为空,那么会抛出异常。解决方法时,使用required=false。

相关文章:

Spring相关面试题

文章目录请谈一下你对 spring 的理解&#xff1f;说一下 Spring 的核心是什么&#xff1f;请谈 一下你对 Spring IOC 和 和 AOP 的理解&#xff1f;请说一下 Spring 的 的 Bean 作用域&#xff1f;请谈一下Spring中bean对象的生命周期&#xff1f;Spring中的事务是如何实现的 &…...

操作符详解(上篇)

前言小伙伴们大家好&#xff0c;随着对c的不断学习今天我们将来学习操作符。在初始c语言中也介绍过操作符但也只是点到即可&#xff0c;今天我们将详细了解操作符。操作符分类&#xff1a;算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号…...

采样电路的3个组成部分

采样电路的使用实际上是电路的一个闭环控制过程&#xff0c;也可以理解为一个负反馈过程&#xff0c;采集的信号被传送到主控制芯片进行调整。今天就来为您介绍一下采样电路的三个组成部分分析&#xff01;一起来看看吧&#xff01; 这里的采样实际上分为电流采样、电压采样、…...

ffmpeg硬解码与软解码的压测对比

文章目录ffmpeg硬解码与软解码的压测一、基本知识二、压测实验1. 实验条件及工具说明2. 压测脚本3. 实验数据结果ffmpeg硬解码与软解码的压测 一、基本知识 本文基于intel集显进行压测 软解码&#xff1a;cpu对视频进行解码硬解码&#xff1a;显卡或者多媒体处理芯片对视频进…...

操作符——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;总算是要到我们的操作符啦&#xff0c;在C语言中&#xff0c;操作符是一个极为复杂的东西&#xff0c;下面&#xff0c;就让我们进入操作符的世界吧 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符…...

YSP的UI界面设计

文章目录一、准备工作二、UI设计1.QPushButton&#xff1a;三、遇到的bug一、准备工作 1.MSVC和MinGW上编译的项目&#xff0c;不能用另一个编译器进行编译 2.若要使用MSVC编译器&#xff0c;需要下载对应版本的VS 见此篇&#xff1a;https://blog.csdn.net/Copperxcx/article…...

干货 | 什么是磁传感器?最常用的磁传感器类型及应用

1、什么是磁传感器&#xff1f;磁传感器通常是指将磁场的大小和变化转换成电信号。磁场&#xff0c;以地球磁场(地磁)或磁石为例的磁场是我们熟悉但不可见的现象。将不可见的磁场转化为电信号&#xff0c;以及转化为可见效应的磁传感器一直以来都是研究的主题。从几十年前使用电…...

操作符(运算符)详解

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 &#x1f430;算数操作符&#xff1a; - * / % &#x1f430;移位操作符&#x…...

【LeetCode每日一题】【2023/2/9】1797. 设计一个验证系统

文章目录1797. 设计一个验证系统方法1&#xff1a;哈希表代码总体1797. 设计一个验证系统 LeetCode: 1797. 设计一个验证系统 中等\color{#FFB800}{中等}中等 你需要设计一个包含验证码的验证系统。每一次验证中&#xff0c;用户会收到一个新的验证码&#xff0c;这个验证码在…...

计算机图形学:改进的中点BH算法

作者&#xff1a;非妃是公主 专栏&#xff1a;《计算机图形学》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、改进缘由二、…...

【SQL开发实战技巧】系列(六):从执行计划看NOT IN、NOT EXISTS 和 LEFT JOIN效率,记住内外关联条件不要乱放

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…...

十分钟利用环信WebIM-vue3-Demo,打包上线一个即时通讯项目【含音视频通话】

这篇文章无废话&#xff0c;只教你如果接到即时通讯功能需求&#xff0c;十分钟利用环信WebIM-vue3-Demo&#xff0c;打包上线一个即时通讯项目【包含音视频通话功能】。 写这篇文章是因为&#xff0c;结合自身情况&#xff0c;以及所遇到的有同样情况的开发者在接到即时通讯&a…...

pandas——DataFrame基本操作(二)【建议收藏】

pandas——DataFrame基本操作&#xff08;二&#xff09; 文章目录pandas——DataFrame基本操作&#xff08;二&#xff09;一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.修改数据2.缺失值3.合并1.concat合并2.使用append方法合并3.使用merge进行合并4.使用…...

PostgreSQL查询引擎——General Expressions Grammar之restricted expression

General expressions语法规则定义在src/backend/parser/gram.y文件中&#xff0c;其是表达式语法的核心。有两种表达式类型&#xff1a;a_expr是不受限制的类型&#xff0c;b_expr是必须在某些地方使用的子集&#xff0c;以避免移位/减少冲突。例如&#xff0c;我们不能将BETWE…...

从某种程度上来看,产业互联网是一次对于互联网的弥补和修正

如果对当下我们正在经历的这样一个时代进行一次定义的话&#xff0c;我更加愿意将其划归到产业互联网的范畴里。可能有人会说&#xff0c;这与产业互联网并无联系&#xff0c;因为从本质上来看&#xff0c;当下我们所经历的这样一个时代&#xff0c;其实是与互联网并没有太多联…...

【C#Unity题】1.委托和事件在使用上的区别是什么?2.C#中 == 和 Equals 的区别是什么?

1.委托和事件在使用上的区别是什么&#xff1f; 委托和事件是C#中的重要概念&#xff0c;通俗来讲&#xff0c;委托是一个可以指向特定方法的指针&#xff0c;可以将委托分配给不同的脚本&#xff0c;使它们能够完成不同的任务。而事件则是一种使用委托实现的通知机制&#xff…...

FFmpeg5.0源码阅读——内存池AVBufferPool

摘要&#xff1a;FFmpeg中大多数数据存储比如AVFrame,AVPacket都是通过AVBufferRef管理的&#xff0c;而承载数据的结构为AVBuffer。本文主要通过FFmpeg源码来分析下FFmpeg中AVBuffer相关的实现。 关键字&#xff1a;AVBuffer、AVBufferPool、AVBufferPool 1. AVBufferRef 1.…...

Python学习------起步7(字符串的连接、删除、修改、查询与统计、类型判断及字符串字母大小写转换)

目录 前言&#xff1a; 1.字符串的连接 join() 函数 2.字符串的删除&取代 replace()函数 3.字符串的修改&切割 &#xff08;1&#xff09;strip() 函数 &#xff08;2&#xff09;lstrip()函数 和 rstrip()函数 &#xff08;3&#xff09;split()函数-->…...

雪花算法snowflake

snowflake中文的意思是 雪花&#xff0c;雪片&#xff0c;所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求&#xff0c;得益于twitter内部高超的技术&#xff0c;雪…...

Part 4 描述性统计分析(占比 10%)——上

文章目录【后续会持续更新CDA Level I&II备考相关内容&#xff0c;敬请期待】【考试大纲】【考试内容】【备考资料】1、统计基本概念1.1、统计学的含义及应用1.1.1、统计学的含义1.2.1、统计学的应用1.2、统计学的基本概念1.2.1、数据及数据的分类1.2.2、总体和样本1.2.3、…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...