SpringBoot 面试题(四)

1. 如何使用SpringBoot实现定时任务?

在Spring Boot中实现定时任务,通常可以使用@Scheduled注解。以下是一个简单的例子说明如何在Spring Boot应用中创建一个定时任务:

首先,确保你的Spring Boot项目中包含了Spring Scheduler的依赖。如果你使用的是Spring Boot Starter Web,那么它应该已经包含了。

然后,你可以在你的Spring组件或配置类中定义一个方法,并使用@Scheduled注解来指定定时任务的执行计划。

以下是一个简单的例子:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledTasks {@Scheduled(fixedRate = 5000) // 每5秒执行一次public void reportCurrentTime() {System.out.println("当前时间: " + new Date());}
}

在这个例子中,reportCurrentTime方法会每5秒执行一次,因为它被@Scheduled注解的fixedRate属性设置为5000毫秒(即5秒)。

此外,@Scheduled注解还提供了其他几种执行计划选项,如:

  • fixedDelay:在上一次任务执行完成后,等待固定时间后再次执行。
  • fixedRate:在上一次任务开始时,等待固定时间后再次执行。如果任务的执行时间超过了设置的间隔,那么下一次任务的执行会立即开始,不会有等待时间。
  • cron:使用cron表达式来定义任务的执行计划。

例如,使用cron表达式来定义每天中午12点执行的任务:

@Scheduled(cron = "0 0 12 * * ?")
public void fixedTimeTask() {System.out.println("每天中午12点执行任务");
}

最后,你需要在Spring Boot的主类或配置类上添加@EnableScheduling注解来启用定时任务:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

这样,Spring Boot就会根据@Scheduled注解的配置来执行你的定时任务了。

2. SpringBoot支持哪些日志框架?如何配置日志级别?

SpringBoot支持多种日志框架,主要包括Logback、Log4j2和Java Util Logging(JUL)。其中,Logback是SpringBoot默认的日志框架,它是Log4j的继任者,提供了更好的性能和可靠性。如果你想在SpringBoot中使用Log4j2,你需要添加相应的依赖并在配置文件中指定Log4j2作为日志框架。而JUL作为Java SE的默认日志框架,虽然SpringBoot可以配置使用它,但一般不推荐使用,因为其性能和灵活性相对较差。

对于日志级别的配置,SpringBoot支持多种级别,包括OFF、ERROR、WARN、INFO、DEBUG、TRACE和ALL。你可以根据需要设置不同级别的日志输出,以便更好地进行问题追踪和调试。

在SpringBoot中配置日志级别,通常有两种方式:

  1. 在application.properties或application.yml配置文件中设置。例如,在application.properties文件中,你可以通过以下方式设置日志级别:
logging.level.root=WARN
logging.level.org.springframework.web=INFO

上述配置将root日志级别设置为WARN,而Spring框架的日志级别设置为INFO。

  1. 通过编程方式设置。你可以在Spring Boot应用的任何位置(例如在配置类或主类中)通过编程方式设置日志级别。这通常涉及到获取Logger实例并调用其setLevel方法。例如:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;@Configuration
public class LoggingConfig {@Beanpublic void configureLogging() {LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();context.getLogger("org.springframework.web").setLevel(Level.INFO);}
}

在上述代码中,我们首先获取了LoggerContext实例,然后获取了名为"org.springframework.web"的Logger实例,并将其级别设置为INFO。

请注意,具体的配置方式可能会根据你的项目结构和需求有所不同。因此,在配置日志级别时,建议参考Spring Boot的官方文档和相关日志框架的文档以获取更详细和准确的信息。

3. 请解释一下如何在SpringBoot中使用AOP(面向切面编程)?

在Spring Boot中使用AOP(面向切面编程)可以帮助你实现横切关注点(cross-cutting concerns)的模块化,例如日志记录、事务管理、安全性等。Spring框架提供了强大的AOP支持,允许你定义切面来拦截方法调用,并在方法执行前后或异常抛出时执行特定的逻辑。

下面是在Spring Boot中使用AOP的基本步骤:

  1. 添加依赖
    确保你的Spring Boot项目中包含了Spring AOP的依赖。如果你使用的是Spring Boot Starter,那么它应该已经包含了Spring AOP的依赖。如果没有,你可以在pom.xml(Maven)或build.gradle(Gradle)中添加相应的依赖。

    Maven依赖示例:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    
  2. 定义切面
    创建一个Java类,并使用@Aspect注解来标记它为一个切面。然后,你可以在这个类中定义通知(advice)和切点(pointcut)。

    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;@Aspect
    @Component
    public class LoggingAspect {// 定义一个切点,匹配所有com.example.myapp包下的所有类的所有方法@Pointcut("execution(* com.example.myapp..*(..))")public void allMethods() {}// 在方法执行前执行的通知@Before("allMethods()")public void beforeAdvice() {System.out.println("方法执行前:记录日志或执行其他逻辑");}
    }
    
  3. 启用AOP代理
    确保Spring Boot应用启用了AOP代理。这通常是通过在启动类或配置类上使用@EnableAspectJAutoProxy注解来实现的。但是,如果你使用的是Spring Boot,并且已经包含了spring-boot-starter-aop依赖,那么通常不需要显式启用AOP代理,因为Spring Boot会自动配置它。

  4. 测试AOP
    创建一些业务逻辑方法,并确保这些方法匹配你在切面中定义的切点。当你运行应用并调用这些业务逻辑方法时,你应该能看到切面的通知被正确执行。

注意:AOP的实现依赖于代理模式,因此只有通过Spring容器管理的bean上的方法调用才会被AOP拦截。如果你直接通过new关键字创建对象并调用其方法,那么AOP将不会生效。

Spring AOP还支持其他类型的通知,如@After(方法执行后)、@AfterReturning(方法正常返回后)、@AfterThrowing(方法抛出异常后)以及@Around(环绕通知,可以替代前面所有通知)。你可以根据需要选择适当的通知类型。

此外,Spring AOP主要关注于方法级别的拦截,如果你需要更细粒度的控制(例如字段级别的访问),那么可能需要考虑使用AspectJ,它提供了更强大的AOP功能,但集成到Spring Boot应用中可能会稍微复杂一些。

4. SpringBoot如何集成消息队列(如RabbitMQ, Kafka)?

Spring Boot 提供了对消息队列的集成支持,通过添加相应的依赖和配置,你可以轻松地在 Spring Boot 应用中集成 RabbitMQ 或 Kafka 等消息队列。下面我将分别介绍如何在 Spring Boot 中集成 RabbitMQ 和 Kafka。

1. 集成 RabbitMQ
1.1 添加依赖

在你的 pom.xml 文件中添加 Spring Boot 的 RabbitMQ Starter 依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
1.2 配置 RabbitMQ

application.propertiesapplication.yml 中配置 RabbitMQ 的连接信息:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
1.3 创建消息发送者和接收者

创建一个消息发送者(Producer)用于发送消息到队列:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class MessageSender {private final RabbitTemplate rabbitTemplate;@Autowiredpublic MessageSender(RabbitTemplate rabbitTemplate) {this.rabbitTemplate = rabbitTemplate;}public void send(String exchange, String routingKey, String message) {rabbitTemplate.convertAndSend(exchange, routingKey, message);}
}

创建一个消息接收者(Consumer)用于从队列接收消息:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class MessageReceiver {@RabbitListener(queues = "your.queue.name")public void receive(String message) {System.out.println("Received message: " + message);}
}
1.4 使用消息发送者发送消息

你可以在需要的地方注入 MessageSender 并调用其 send 方法来发送消息。

2. 集成 Kafka
2.1 添加依赖

在你的 pom.xml 文件中添加 Spring Boot 的 Kafka Starter 依赖:

<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId>
</dependency>
2.2 配置 Kafka

application.propertiesapplication.yml 中配置 Kafka 的连接信息:

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=my-group
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.template.default-topic=my-topic
2.3 创建 Kafka 生产者(Producer)

创建一个 Kafka 生产者用于发送消息到 Kafka 主题:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;@Component
public class KafkaProducer {private final KafkaTemplate<String, String> kafkaTemplate;@Autowiredpublic KafkaProducer(KafkaTemplate<String, String> kafkaTemplate) {this.kafkaTemplate = kafkaTemplate;}public void send(String topic, String message) {kafkaTemplate.send(topic, message);}
}
2.4 创建 Kafka 消费者(Consumer)

创建一个 Kafka 消费者用于从 Kafka 主题接收消息:

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;@Component
public class KafkaConsumer {@KafkaListener(topics = "my-topic", groupId = "my-group")public void consume(String message) {System.out.println("Received message: " + message);}
}
2.5 使用 Kafka 生产者发送消息

你可以在需要的地方注入 KafkaProducer 并调用其 send 方法来发送消息到 Kafka。

注意事项
  • 确保你的项目中已经正确安装了 RabbitMQ 或 Kafka 服务,并且服务正在运行。
  • 根据你的需求,可能还需要配置消息序列化、消息确认、重试策略等高级特性。

5. 在SpringBoot项目中如何实现国际化(i18n)?

在Spring Boot项目中实现国际化(i18n)通常涉及以下步骤:

  1. 添加依赖
    确保你的Spring Boot项目中包含了Spring Boot Web的依赖,因为它已经包含了国际化所需的基本支持。

  2. 创建消息源属性文件
    src/main/resources目录下创建消息源属性文件。通常,你会为每个支持的语言创建一个.properties文件,文件的命名遵循messages_语言代码.properties的格式。例如,对于英语,文件名为messages_en.properties;对于中文简体,文件名为messages_zh_CN.properties

在属性文件中,定义消息的键值对。例如:

messages_en.properties:

greeting=Hello

messages_zh_CN.properties:

greeting=你好
  1. 配置消息解析器
    在你的Spring Boot配置中(通常是主类或配置类),你需要配置一个MessageSource bean来解析消息。Spring Boot通常会自动配置一个MessageSource,但如果你需要自定义配置,你可以自己定义一个。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;@Configuration
public class MessageConfig {@Beanpublic ReloadableResourceBundleMessageSource messageSource() {ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();messageSource.setBasenames("classpath:messages"); // 设置基础名,即不带语言代码的文件名前缀messageSource.setDefaultEncoding("UTF-8");messageSource.setCacheSeconds(60); // 设置缓存时间,单位为秒return messageSource;}
}
  1. 使用消息
    在你的Spring MVC控制器或Thymeleaf模板中,你可以使用MessageSource来解析消息。

在Spring MVC控制器中:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class GreetingController {@Autowiredprivate MessageSource messageSource;@GetMapping("/greeting")public String greeting(Model model) {String message = messageSource.getMessage("greeting", null, LocaleContextHolder.getLocale());model.addAttribute("message", message);return "greeting";}
}

在Thymeleaf模板中:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Greeting</title>
</head>
<body><h1 th:text="${message}"></h1>
</body>
</html>
  1. 设置LocaleResolver
    为了确定用户的语言偏好并设置相应的Locale,你需要配置一个LocaleResolver。Spring Boot默认提供了一个AcceptHeaderLocaleResolver,它会根据HTTP请求的Accept-Language头来确定Locale。如果你需要自定义LocaleResolver,你可以在你的配置类中定义一个bean。

  2. 国际化URL模式
    如果你想让URL路径也支持国际化,你可能需要配置一个LocaleChangeInterceptor来拦截请求,并根据请求参数或会话信息来改变Locale。然后,你可以使用PathVariable或请求参数来指定不同的语言版本。

  3. 测试
    启动你的Spring Boot应用,并使用不同的浏览器或HTTP客户端发送带有不同Accept-Language头的请求来测试国际化是否工作正常。你也可以直接在浏览器中改变语言设置来测试。

以上就是在Spring Boot项目中实现国际化的基本步骤。根据你的具体需求,你可能还需要处理更复杂的场景,如支持动态刷新消息源、使用数据库存储消息等。

6. 如何使用SpringBoot实现前后端分离架构?

SpringBoot本身是一个用于简化Spring应用初始搭建以及开发过程的框架,它本身并不直接涉及前后端分离的问题。前后端分离主要是一种架构模式,它意味着前端(通常是Web客户端,如浏览器中的JavaScript应用)和后端(服务器端的业务逻辑和数据存储)是独立开发、测试和部署的。

使用SpringBoot实现前后端分离架构,你可以按照以下步骤进行:

一、后端(SpringBoot)部分

  1. 项目创建与依赖:首先,你需要创建一个SpringBoot项目。你可以使用Spring Initializr(https://start.spring.io/)来快速生成项目结构,并添加你需要的依赖。
  2. REST API设计:你需要设计并实现RESTful API,以便前端可以通过HTTP请求获取数据或发送数据。你可以使用Spring MVC或Spring WebFlux来实现。
  3. 数据访问:根据你的需求,你可能需要连接到数据库。SpringBoot支持多种数据库,如MySQL、PostgreSQL、MongoDB等。你可以使用Spring Data JPA或MyBatis等持久层框架来简化数据访问层的开发。
  4. 安全性:考虑使用Spring Security来为你的REST API添加安全性特性,如身份验证和授权。
  5. 测试与部署:编写单元测试和集成测试以确保你的后端代码的质量和稳定性。然后,你可以将你的应用打包为JAR或WAR文件,并部署到服务器或容器中。

二、前端部分

前端部分通常使用JavaScript框架(如React、Vue或Angular)来构建。这些框架提供了丰富的组件库和工具,可以帮助你高效地开发Web应用。

  1. 项目创建与依赖:使用你选择的JavaScript框架创建一个新的前端项目。你可以使用框架提供的CLI工具(如Create React App、Vue CLI等)来快速生成项目结构。
  2. UI设计与组件开发:根据你的应用需求,设计并开发前端组件。这些组件可以是按钮、表单、列表等基本的UI元素,也可以是包含复杂业务逻辑的复合组件。
  3. 数据交互:使用前端框架提供的HTTP客户端(如axios、fetch等)来调用后端提供的RESTful API,实现前后端的数据交互。
  4. 路由与状态管理:对于单页面应用(SPA),你需要使用路由来管理不同的页面或视图。同时,你可能还需要使用状态管理工具(如Redux、Vuex等)来管理应用的全局状态。
  5. 构建与部署:使用前端框架提供的构建工具(如Webpack)来构建你的前端应用。构建完成后,你可以将生成的静态文件部署到Web服务器或CDN上。

三、前后端联调与测试

在开发过程中,你需要不断地进行前后端的联调,确保前后端之间的接口和数据交互是正确的。你可以使用Postman等工具来测试你的RESTful API,也可以使用浏览器的开发者工具来调试前端代码。

此外,你还需要进行端到端的测试,以确保整个应用的业务流程是正确的。你可以使用Cypress、Jest等测试框架来编写自动化测试脚本。

以上就是使用SpringBoot实现前后端分离架构的基本步骤。当然,具体的实现方式可能因项目需求和技术栈的不同而有所差异。但总的来说,你需要关注后端API的设计和实现、前端组件的开发和数据交互、以及前后端的联调和测试等方面。

7. 请描述一下如何在SpringBoot项目中整合MyBatis作为ORM框架?

在Spring Boot项目中整合MyBatis作为ORM框架,你需要按照以下步骤进行操作:

步骤1:添加依赖

首先,你需要在项目的pom.xml文件中添加MyBatis的Spring Boot Starter依赖。Spring Boot提供了与MyBatis集成的starter,使得集成变得非常简单。

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>你的MyBatis版本</version>
</dependency>

步骤2:配置数据源

application.propertiesapplication.yml文件中配置你的数据库连接信息。Spring Boot会自动配置数据源。

# application.properties 示例
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

步骤3:配置MyBatis

你可以在application.propertiesapplication.yml文件中配置MyBatis的相关参数,如mapper文件的位置等。但通常情况下,Spring Boot会根据约定自动配置这些参数,因此你可能不需要手动配置。

如果你需要自定义MyBatis的配置,可以创建一个MyBatis的配置类,并使用@Configuration@MapperScan注解来指定mapper接口的位置。

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.example.myapp.mapper") // 指定mapper接口所在的包
public class MyBatisConfig {// 这里可以添加其他的MyBatis配置
}

步骤4:创建Mapper接口

在指定的包下创建Mapper接口,用于定义与数据库表对应的CRUD操作。这些接口方法将自动映射到MyBatis的XML映射文件中。

package com.example.myapp.mapper;import com.example.myapp.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface UserMapper {@Select("SELECT * FROM user")List<User> selectAllUsers();// 其他CRUD方法...
}

步骤5:使用Mapper

在Spring Boot的服务类或控制器中,你可以通过自动注入的方式使用Mapper接口。Spring Boot会自动管理Mapper的生命周期,并注入正确的实例。

import com.example.myapp.mapper.UserMapper;
import com.example.myapp.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {private final UserMapper userMapper;@Autowiredpublic UserService(UserMapper userMapper) {this.userMapper = userMapper;}public List<User> getAllUsers() {return userMapper.selectAllUsers();}// 其他业务逻辑...
}

步骤6:运行和测试

启动Spring Boot应用,并编写测试用例或使用Postman等工具测试你的API,以确保MyBatis已经成功集成到你的项目中,并且能够正确地执行数据库操作。

请注意,以上步骤是一个基本的整合流程。在实际项目中,你可能还需要处理更复杂的情况,如事务管理、分页查询、动态SQL等。对于这些高级特性,你可以查阅MyBatis的官方文档以获取更多详细信息。

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

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

相关文章

安卓Android.nfc读卡

使用安卓手机&#xff0c;通过NFC功能可以读取IC卡信息&#xff0c;。 IC卡有很多种卡标准&#xff0c;协议&#xff0c;等等&#xff0c;这些具体就不细讨论。 主要讨论&#xff0c;2种卡&#xff0c;一种是M1卡&#xff0c;另外是CPU卡。 1、 M1卡 M1卡是市面上比较常见的卡…

利用Tess4J实现图片文字识别

利用Tess4J实现图片文字识别 前言 光学字符识别&#xff08;OCR&#xff09;技术允许计算机通过扫描仪、摄像头等设备来识别并转换印刷或手写文本的图像数据为可编辑的文本格式。Tess4J是一个优秀的Java库&#xff0c;提供了与Tesseract OCR引擎的集成&#xff0c;方便进行图片…

为什么在cmd中输入jupyter notebook会出现问题

C:\Users\REBECCA329>jupyter notebook jupyter 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 这是什么意思&#xff1f;这个说明在cmd中找不到jupyter notebook&#xff0c;说明没有添加到环境变量里去&#xff0c;在配置R内核的时候找不到&#xff…

cocos creator开发中遇到的问题和解决方案

前言 总结一下使用cocos开发遇到的坑&#xff0c;不定期更新。 问题汇总 代码修改Position坐标不生效 首先要通过打log或者断点排除下是不是逻辑上的问题&#xff0c;还有是不是有动画相关把位置修改了。我遇到的问题是坐标修改被widget组件覆盖了。 纹理压缩包体变大 co…

TSINGSEE青犀AI智能分析网关V4叉车载货出入库检测算法介绍及应用

随着物流行业的快速发展&#xff0c;叉车作为物流运输的重要设备&#xff0c;其安全性和效率性越来越受到人们的关注。然而&#xff0c;在实际操作中&#xff0c;由于人为因素和操作环境的复杂性&#xff0c;叉车事故时有发生&#xff0c;给企业和个人带来了巨大的损失。为了提…

一些错误的记录

Linux使用rz命令出现乱码&#xff1f; 使用下面的命令上传&#xff1a; rz -besz filename //从linux操作系统上下载文件&#xff08;夹&#xff09;到本地云服务器上的redis连接不上&#xff0c;本地的图形化界面 1.在云服务器控制台-防火墙开放6379端口(使用命令开放端口不…

MySQL-进阶篇-一条sql更新语句是如何执行的(redo log和binlog)

上一篇&#xff1a;一条sql查询语句是如何执行的 http://t.csdnimg.cn/nV3EY 摘自&#xff1a;林晓斌MySQL实战45讲——第二篇 更新语句的执行过程与上一篇查询流程相同&#xff0c;本篇简写。 但多了两个重要的日志模块&#xff1a;redo log&#xff08;重做日志&#xff0…

Java 中什么是同步集合什么是并发集合,同步集合与并发集合有什么区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Java 中的同步集合与并发集合有什么区别 同步集合适用于简单的并发场景,其中线程对集合的访问和修改不频繁。而并发集合则更适用于高并发场景,其…

CorelDRAW2024破解注册机授权码分享

CorelDRAW是一款由加拿大Corel公司开发的平面设计软件&#xff0c;主要用于矢量图形制作、排版和编辑。它以其强大的功能和用户友好的界面而广受欢迎&#xff0c;被广泛应用于各个领域&#xff0c;包括设计、广告、出版和印刷等。 CDR2017-2024全版本下载网盘汉化版链接: http…

js可视化爬取数据生成当前热点词汇图

功能 可以爬取到很多数据&#xff0c;并且生成当前的热点词汇图&#xff0c;词越大越热门&#xff08;词云图&#xff09; 这里以b站某个评论区的数据为例&#xff0c;爬取63448条数据生成这样的图片 让我们能够更加直观的看到当前的热点 git地址 可以直接使用&#xff0c;中文…

pyqt 标题栏设置

在PyQt中&#xff0c;可以通过QWidget或其子类&#xff08;如QMainWindow或QDialog&#xff09;的setWindowTitle()方法来设置窗口的标题栏。以下是一个简单的例子&#xff0c;展示了如何为应用程序的主窗口设置标题&#xff1a; import sys from PyQt5.QtWidgets import QApp…

如何通过多媒体设计迅速为科普展厅制作提供清晰的思路?

随着数字化信息时代的迅速发展&#xff0c;各类领域的知识内容变得愈发繁杂&#xff0c;于是为了针对性地向大众普及各方面知识&#xff0c;各地域都会选择建设科普展厅的方式来实现这一目的&#xff0c;并在当中运用先进的多媒体技术&#xff0c;用以加强公众对相关知识的理解…

使用 HBuilderX自动上传Uniapp 微信小程序代码

HBuilderX内置相关环境&#xff0c;开箱即用&#xff0c;无需配置nodejs。本文只介绍发布微信小程序的步骤。 1.下载和安装 HBuilderX hbuilder首页&#xff1a;https://www.dcloud.io/hbuilderx.html 下载hbuilder编辑器,选择对应的系统,Windows和mac正式版即可,下载后免安…

java实现简易计算器

题目描述&#xff1a; 给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外)&#xff0c;计算其结果。 表达式仅包含非负整数&#xff0c;&#xff0c; - &#xff0c;*&#xff0c;/ 四种运算符和空格 。 整数除法仅保留整数部分。 示例 1: 输入: "…

FNP preptool has not been run on this executable

pycharm导入arcgis pro的python运行程序后提示 我也看了很多解决方法&#xff0c;也重新安装过一遍&#xff0c;终于看到一个说法是你的arcgis pro是学习版所以才会有这个提示&#xff0c;不会影响输入 测试代码 import arcpy print(arcpy.GetInstallInfo()[Version])输出结果…

海康4G摄像机国标注册失败,接入国标28181视频监控平台失败的问题分析、排查、解决

目录 一、问题现象 &#xff08;一&#xff09;背景 &#xff08;二&#xff09;在平台端&#xff0c;设备显示在线&#xff0c;通道不能传到平台端 &#xff08;二&#xff09;直接把通道接入进来&#xff0c;查看是否&#xff0c;显示请求超时 二、问题分析 &#xff0…

【b站李同学的Lee】NodeJS+Gulp基础入门+实战

课程地址&#xff1a;【NodeJSGulp基础入门实战】 https://www.bilibili.com/video/BV1aE411n737/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1 Node 开发概述 1.1 为什么要学习服务器端开发基础 1.2 服务器端开发要做的事情 1.3 为什么…

【计算机毕业设计】企业销售人员培训——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

vue3中axios添加请求和响应的拦截器

本章主要是以记录为主。 在src创建一个utils文件夹&#xff0c;并在utils中创建一个request.js文件。 // 引入axios import axios from "axios"; // import qs from "qs"; // 创建axios实例 const instance axios.create(); // 请求拦截器 instance.int…

Windows下使用PanguVip实现浮动IP

在某些高可用场景下&#xff0c;我们往往需要使用浮动IP来进行实际访问的切换&#xff0c;比如为了保证Web应用的高可用&#xff0c;当主节点宕机后&#xff0c;我们将浮动IP切换到备节点&#xff0c;那么备节点就继续可以提供服务&#xff0c;在linux下我们可以使用keepalived…