Spring高级面试题,你值得拥有

2023-11-04


这是关于Spring框架的10个高级面试问题,涵盖了IoC容器、AOP、MVC、安全、数据持久性、批处理、集成、反应式编程等各个方面。这些问题旨在帮助准备参加Spring高级面试的人更好地理解Spring框架的各个方面,并为他们的面试做好准备。

1. 什么是Spring框架以及它的优点和缺点是什么?

Spring框架是一个开源的Java应用程序框架,旨在简化企业级Java应用程序的开发。它提供了许多功能和API,使开发人员可以轻松地构建可维护、可扩展和高效的应用程序。Spring框架的主要优点包括:

  1. 松耦合:Spring框架使用依赖注入(DI)和控制反转(IoC)技术,使组件之间的耦合度降低,从而提高了应用程序的可维护性和可扩展性。
  2. 面向切面编程(AOP):Spring框架提供了AOP支持,使开发人员可以轻松地实现横切关注点,如日志记录、事务管理等。
  3. 组件重用:Spring框架提供了许多可重用的组件,如数据访问、事务管理、安全管理等,使开发人员可以轻松地将它们集成到应用程序中。
  4. 简化开发:Spring框架提供了许多工具和API,如Spring Boot、Spring MVC等,使开发人员可以更快地构建应用程序。
  5. 大量的社区支持和文档资料:Spring框架拥有庞大的社区支持和文档资料,使开发人员可以轻松地获取帮助和学习Spring框架。
    Spring框架的主要缺点包括:
  6. 学习曲线较陡峭:Spring框架的学习曲线相对较陡峭,需要一定的时间和精力来学习和掌握。
  7. 运行时性能:Spring框架的运行时性能相对较低,因为它需要进行依赖注入和AOP等处理。
  8. 复杂性:Spring框架提供了许多功能和API,使其变得相对复杂,需要开发人员有一定的经验和技能才能使用它们。

2. 请解释Spring的IoC容器和AOP的概念及其如何工作?

Spring的IoC容器和AOP是两个核心概念,非常重要。
IoC容器是Spring框架的核心,它负责管理应用程序中的对象。传统的应用程序中,对象之间的依赖关系是由对象自己创建和管理的。但是,在IoC容器中,对象的依赖关系是由容器创建和管理的。开发人员只需要定义对象之间的依赖关系,容器就会自动创建和管理对象。这种方式称为依赖注入(DI)。

AOP是一种编程范式,它允许开发人员将横切关注点(如安全性、事务管理、日志记录等)模块化为单独的组件。这些组件称为方面(Aspects),它们可以应用于应用程序中的多个对象。AOP的核心思想是将横切关注点与应用程序的主要业务逻辑分离开来。这样,横切关注点的变化不会影响主要业务逻辑。

在Spring中,IoC容器和AOP是密切相关的。IoC容器通过依赖注入技术来管理对象之间的依赖关系,而AOP则通过在运行时动态地将方面织入到对象中来实现横切关注点的模块化。这种方式称为面向切面编程(Aspect-Oriented Programming)。Spring框架提供了强大的IoC容器和AOP支持,使开发人员可以更加方便地编写可维护和可扩展的应用程序。

3. 请解释Spring MVC框架及其工作原理?

Spring MVC是一种基于Java的Web框架,用于开发Web应用程序。它是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,用于构建Web应用程序。
Spring MVC的工作原理如下:

  1. 客户端发送HTTP请求到DispatcherServlet。
  2. DispatcherServlet接收请求并将其传递给HandlerMapping。
  3. HandlerMapping将请求映射到适当的控制器。
  4. 控制器处理请求并返回一个ModelAndView对象。
  5. DispatcherServlet将ModelAndView对象传递给ViewResolver。
  6. ViewResolver将ModelAndView对象解析为一个具体的视图。
  7. 视图呈现结果并返回给DispatcherServlet。
  8. DispatcherServlet将结果返回给客户端。
    下面是一个简单的Spring MVC示例:
  9. 定义控制器类:
@Controller
public class MyController {
    @RequestMapping("/hello")
    public ModelAndView helloWorld() {
        String message = "Hello World, Spring MVC!";
        return new ModelAndView("hello", "message", message);
    }
}
  1. 配置DispatcherServlet和HandlerMapping:
<web-app>
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-config.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
  1. 配置ViewResolver:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>
  1. 创建视图:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
  <body>
    <h2>${message}</h2>
  </body>
</html>

在这个例子中,客户端请求“/hello”,DispatcherServlet将其传递给MyController处理。MyController返回一个ModelAndView对象,其中包含一个名为“message”的属性和一个视图名称“hello”。ViewResolver将视图名称解析为“/WEB-INF/views/hello.jsp”,并呈现视图。最终,客户端将看到“Hello World, Spring MVC!”的消息。

4. 请解释Spring Security框架及其用途?

Spring Security是一个基于Spring框架的安全性框架,用于保护应用程序的安全性。它提供了一套可扩展的安全性机制,用于认证和授权用户,以及保护应用程序的敏感资源。Spring Security的主要用途是为Web应用程序提供安全性保护,但它也可以用于保护非Web应用程序。
Spring Security的一些主要功能包括:

  1. 认证和授权用户
  2. 防止跨站点请求伪造(CSRF)攻击
  3. 防止会话固定攻击
  4. 防止点击劫持攻击
  5. 防止注入攻击
  6. 防止会话劫持攻击
  7. 提供基于角色的访问控制
  8. 提供基于表达式的访问控制
    下面是一个简单的Spring Security示例:
  9. 添加Spring Security依赖:
    xml
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>5.3.4.RELEASE</version>
</dependency>
 <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>5.3.4.RELEASE</version>
</dependency>
  1. 配置Spring Security:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
     @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user").password("{noop}password").roles("USER")
            .and()
            .withUser("admin").password("{noop}password").roles("USER", "ADMIN");
    }
     @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").hasRole("USER")
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }
}

在这个例子中,我们配置了两个用户(user和admin),并定义了它们的角色。我们还配置了基于角色的访问控制,以便只有具有ADMIN角色的用户才能访问“/admin/**”路径。我们还配置了基本的表单登录和HTTP基本身份验证。
Spring Security提供了许多其他的功能和配置选项,可以根据应用程序的需求进行定制。它是一个非常灵活和可扩展的安全性框架,可以为应用程序提供全面的安全性保护。

5. 请解释Spring Boot框架及其如何简化Spring应用程序的开发?

Spring Boot 是一个基于 Spring 框架的快速应用程序开发框架。它提供了一种快速、方便的方式,使开发人员可以轻松地创建、配置和部署 Spring 应用程序。Spring Boot 通过自动配置和约定优于配置的方式,简化了 Spring 应用程序的开发。
Spring Boot 的主要特点如下:

  1. 自动配置:Spring Boot 根据应用程序的依赖关系自动配置应用程序,使开发人员可以更加专注于业务逻辑的开发。
  2. 约定优于配置:Spring Boot 通过约定优于配置的方式,使开发人员可以更快地开发应用程序,而不必担心配置细节。
  3. 内嵌服务器:Spring Boot 包含了一些内嵌服务器,如 Tomcat、Jetty 和 Undertow,使开发人员可以轻松地创建和部署 Web 应用程序。
  4. 易于管理:Spring Boot 提供了一些管理工具,如 Actuator,使开发人员可以轻松地监控和管理应用程序。
    下面是一个简单的 Spring Boot 示例:
  5. 创建一个 Spring Boot 应用程序
    可以使用 Spring Initializr 创建一个 Spring Boot 应用程序,也可以手动创建。
  6. 添加依赖关系
    在 pom.xml 文件中添加所需的依赖关系,如 Spring MVC、Spring Data JPA、Thymeleaf 等。
  7. 创建控制器
    创建一个简单的控制器类,如下所示:
@RestController
public class HelloController {
     @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
  1. 运行应用程序
    使用 Maven 或 Gradle 构建应用程序,并运行应用程序。应用程序将启动一个内嵌服务器,并监听指定的端口。
  2. 测试应用程序
    在浏览器中访问 http://localhost:8080/hello ,应该能够看到 “Hello, Spring Boot!” 的消息。
    通过以上步骤,我们可以快速创建一个简单的 Spring Boot 应用程序。Spring Boot 的自动配置和约定优于配置的方式,使开发人员可以更加专注于业务逻辑的开发,而不必担心配置细节。

6. 请解释Spring Data JPA框架及其用途?

Spring Data JPA 是 Spring 框架的一个子项目,它提供了一种简化数据访问层的方法。它是基于 JPA 规范的 ORM 框架,可以与任何实现了 JPA 规范的 ORM 框架一起使用。Spring Data JPA 可以帮助开发人员快速、方便地访问数据库,并且可以通过简单的配置和注解来减少重复的代码。
Spring Data JPA 的主要用途如下:

  1. 简化数据访问层:Spring Data JPA 提供了一种简化数据访问层的方法,使开发人员可以更加专注于业务逻辑的开发,而不必担心数据访问层的实现细节。
  2. 提高代码的可读性和可维护性:Spring Data JPA 可以通过简单的配置和注解来减少重复的代码,从而提高代码的可读性和可维护性。
  3. 支持多种数据库:Spring Data JPA 支持多种数据库,如 MySQL、PostgreSQL、Oracle、SQL Server 等,可以帮助开发人员轻松地访问不同类型的数据库。
    下面是一个简单的 Spring Data JPA 示例:
  4. 添加依赖关系
    在 pom.xml 文件中添加 Spring Data JPA 的依赖关系:
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.5.4</version>
</dependency>
  1. 创建实体类
    创建一个简单的实体类,如下所示:
@Entity
@Table(name = "users")
public class User {
     @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
     @Column(name = "name")
    private String name;
     @Column(name = "email")
    private String email;
     // getters and setters
}
  1. 创建 Repository 接口
    创建一个简单的 Repository 接口,如下所示:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
     List<User> findByName(String name);
     List<User> findByEmail(String email);
}
  1. 使用 Repository
    在服务层中使用 UserRepository,如下所示:
@Service
public class UserService {
     @Autowired
    private UserRepository userRepository;
     public List<User> getUsersByName(String name) {
        return userRepository.findByName(name);
    }
     public List<User> getUsersByEmail(String email) {
        return userRepository.findByEmail(email);
    }

}
通过以上步骤,我们可以快速创建一个简单的 Spring Data JPA 应用程序。Spring Data JPA 可以帮助开发人员快速、方便地访问数据库,并且可以通过简单的配置和注解来减少重复的代码。

7. 请解释Spring Cloud框架及其用途?

Spring Cloud 是一个基于 Spring Boot 的开发工具包,它提供了一系列工具和框架,用于帮助开发人员快速构建分布式系统和微服务架构。Spring Cloud 的主要目标是简化分布式系统开发的复杂性,并提供一套标准化的解决方案,使开发人员可以更加专注于业务逻辑的开发。
Spring Cloud 的主要用途如下:

  1. 简化分布式系统开发:Spring Cloud 提供了一系列工具和框架,如服务注册与发现、负载均衡、断路器、配置中心等,使开发人员可以更加轻松地构建分布式系统。
  2. 支持多种微服务架构:Spring Cloud 支持多种微服务架构,如服务治理、API 网关、分布式配置、消息总线等,可以帮助开发人员快速构建复杂的微服务架构。
  3. 集成第三方组件:Spring Cloud 集成了多种第三方组件,如 Netflix OSS、Consul、Zookeeper 等,可以帮助开发人员更加方便地使用这些组件。
    下面是一个简单的 Spring Cloud 示例:
  4. 添加依赖关系
    在 pom.xml 文件中添加 Spring Cloud 的依赖关系:
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>2021.0.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
 <dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
</dependencies>
  1. 创建 Eureka Server
    创建一个简单的 Eureka Server,如下所示:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaServerApplication.class, args);
  }
}
  1. 创建 Eureka Client
    创建一个简单的 Eureka Client,如下所示:
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaClientApplication.class, args);
  }
}
  1. 注册服务
    在 Eureka Client 中注册服务,如下所示:
@RestController
public class ServiceController {
  @GetMapping("/hello")
  public String hello() {
    return "Hello, World!";
  }
}
  1. 发现服务
    在 Eureka Client 中发现服务,如下所示:
@RestController
public class ConsumerController {
  @Autowired
  private RestTemplate restTemplate;
  @GetMapping("/hello")
  public String hello() {
    String url = "http://eureka-client/hello";
    return restTemplate.getForObject(url, String.class);
  }
}

通过以上步骤,我们可以快速创建一个简单的 Spring Cloud 应用程序。Spring Cloud 可以帮助开发人员快速构建分布式系统和微服务架构,并提供一套标准化的解决方案,使开发人员可以更加专注于业务逻辑的开发。

8. 请解释Spring Batch框架及其用途?

Spring Batch 是一个用于批处理应用程序开发的框架,它基于 Spring 框架构建,提供了一系列工具和组件,用于帮助开发人员快速构建可靠、高效的批处理应用程序。Spring Batch 的主要目标是简化批处理应用程序的开发,提高批处理应用程序的可维护性和可测试性,同时还提供了一些高级功能,如事务管理、并发处理、错误处理等。
Spring Batch 的主要用途如下:

  1. 批量处理数据:Spring Batch 提供了一系列工具和组件,如读取器、处理器、写入器等,可以帮助开发人员快速处理大量的数据。
  2. 事务管理:Spring Batch 提供了事务管理功能,可以确保批处理任务的原子性和一致性。
  3. 错误处理:Spring Batch 提供了错误处理功能,可以在批处理任务失败时进行恢复和重试。
  4. 并发处理:Spring Batch 提供了并发处理功能,可以在多个节点上同时处理批处理任务,提高处理效率。
  5. 监控和管理:Spring Batch 提供了监控和管理功能,可以帮助开发人员实时监控批处理任务的执行情况,并进行管理。
    下面是一个简单的 Spring Batch 示例:
  6. 添加依赖关系
    在 pom.xml 文件中添加 Spring Batch 的依赖关系:
<dependency>
  <groupId>org.springframework.batch</groupId>
  <artifactId>spring-batch-core</artifactId>
  <version>4.3.3.RELEASE</version>
</dependency>
  1. 创建 Job
    创建一个简单的 Job,如下所示:
@Configuration
@EnableBatchProcessing
public class JobConfiguration {
  @Autowired
  private JobBuilderFactory jobBuilderFactory;
  @Autowired
  private StepBuilderFactory stepBuilderFactory;
  @Bean
  public Step step() {
    return stepBuilderFactory.get("step")
      .tasklet((stepContribution, chunkContext) -> {
        System.out.println("Hello, World!");
        return RepeatStatus.FINISHED;
      }).build();
  }
  @Bean
  public Job job() {
    return jobBuilderFactory.get("job")
      .start(step())
      .build();
  }
}
  1. 运行 Job
    运行 Job,如下所示:
@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

通过以上步骤,我们可以快速创建一个简单的 Spring Batch 应用程序。Spring Batch 可以帮助开发人员快速构建可靠、高效的批处理应用程序,并提供了一系列工具和组件,如读取器、处理器、写入器等,可以帮助开发人员快速处理大量的数据。

9. 请解释Spring Integration框架及其用途?

Spring Integration 是一个基于 Spring 框架构建的集成框架,用于实现不同应用程序之间的消息传递和通信。它提供了一系列工具和组件,如消息通道、消息处理器、适配器、过滤器等,可以帮助开发人员快速构建可靠、高效的集成应用程序。Spring Integration 的主要目标是简化应用程序之间的集成,提高应用程序的可维护性和可测试性,同时还提供了一些高级功能,如事务管理、错误处理、并发处理等。
Spring Integration 的主要用途如下:

  1. 消息驱动的应用程序:Spring Integration 提供了一系列工具和组件,如消息通道、消息处理器等,可以帮助开发人员构建消息驱动的应用程序,实现不同应用程序之间的消息传递和通信。
  2. 企业集成:Spring Integration 提供了一系列工具和组件,如适配器、过滤器等,可以帮助开发人员将不同的应用程序和系统集成到一起,实现企业集成。
  3. 事务管理:Spring Integration 提供了事务管理功能,可以确保消息传递的原子性和一致性。
  4. 错误处理:Spring Integration 提供了错误处理功能,可以在消息传递失败时进行恢复和重试。
  5. 并发处理:Spring Integration 提供了并发处理功能,可以在多个节点上同时处理消息,提高处理效率。
    下面是一个简单的 Spring Integration 示例:
  6. 添加依赖关系
    在 pom.xml 文件中添加 Spring Integration 的依赖关系:
<dependency>
  <groupId>org.springframework.integration</groupId>
  <artifactId>spring-integration-core</artifactId>
  <version>5.5.1</version>
</dependency>
  1. 创建消息通道和消息处理器
    创建一个简单的消息通道和消息处理器,如下所示:
@Configuration
@EnableIntegration
public class IntegrationConfiguration {
  @Bean
  public MessageChannel inputChannel() {
    return new DirectChannel();
  }
  @Bean
  public MessageHandler messageHandler() {
    return message -> {
      System.out.println(message.getPayload());
    };
  }
}
  1. 发送和接收消息
    发送和接收消息,如下所示:
@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
    MessageChannel inputChannel = context.getBean("inputChannel", MessageChannel.class);
    inputChannel.send(MessageBuilder.withPayload("Hello, World!").build());
  }
}

通过以上步骤,我们可以快速创建一个简单的 Spring Integration 应用程序。Spring Integration 可以帮助开发人员实现不同应用程序之间的消息传递和通信,提高应用程序的可维护性和可测试性,并提供了一系列工具和组件,如适配器、过滤器等,可以帮助开发人员实现企业集成。

10. 请解释Spring WebFlux框架及其用途?

Spring WebFlux 是一个基于反应式编程模型的 Web 框架,用于构建高性能、可伸缩的 Web 应用程序。它提供了一组响应式的 API,可以帮助开发人员构建非阻塞、事件驱动的 Web 应用程序,同时还提供了一些高级功能,如函数式端点、Web 安全、WebSockets 等。
Spring WebFlux 的主要用途如下:

  1. 高并发 Web 应用程序:Spring WebFlux 基于反应式编程模型,可以处理大量并发请求,提高 Web 应用程序的性能和可伸缩性。
  2. 响应式 Web 应用程序:Spring WebFlux 提供了一组响应式的 API,可以帮助开发人员构建非阻塞、事件驱动的 Web 应用程序,提高应用程序的响应能力和吞吐量。
  3. 函数式端点:Spring WebFlux 支持函数式端点,可以将请求映射到函数式处理器,简化 Web 应用程序的开发和维护。
  4. Web 安全:Spring WebFlux 提供了一些 Web 安全功能,如 CSRF 防护、基于表达式的访问控制等,可以保护 Web 应用程序的安全性。
  5. WebSockets:Spring WebFlux 支持 WebSockets,可以实现实时通信和推送功能。
    下面是一个简单的 Spring WebFlux 示例:
  6. 添加依赖关系
    在 pom.xml 文件中添加 Spring WebFlux 的依赖关系:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-webflux</artifactId>
  <version>2.5.5</version>
</dependency>
  1. 创建路由和处理器
    创建一个简单的路由和处理器,如下所示:
@Configuration
public class RouterConfiguration {
  @Bean
  public RouterFunction<ServerResponse> route(HelloHandler helloHandler) {
    return RouterFunctions.route(RequestPredicates.GET("/hello"), helloHandler::hello);
  }
}
 @Component
public class HelloHandler {
  public Mono<ServerResponse> hello(ServerRequest request) {
    return ServerResponse.ok().body(BodyInserters.fromValue("Hello, World!"));
  }
}
  1. 启动应用程序
    启动应用程序,如下所示:
@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

通过以上步骤,我们可以快速创建一个简单的 Spring WebFlux 应用程序。Spring WebFlux 可以帮助开发人员构建高性能、可伸缩的 Web 应用程序,提供了一组响应式的 API,可以帮助开发人员构建非阻塞、事件驱动的 Web 应用程序,并提供了一些高级功能,如函数式端点、Web 安全、WebSockets 等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring高级面试题,你值得拥有 的相关文章

随机推荐

  • vue开发过程中node和sass互相对应的版本

    点击查看官网node sass和node对应的版本 1 点击查看稳定版链接 2 点击查看拓展版链接 1 检查node版本 2 删除node modules 3 保留原始的package json文件 4 安装node sass 5 安装sa
  • 二维码生成+解码

    在线二维码解码器 二维码安全检测工具 如下
  • Apache Struts2漏洞复现之s2-005漏洞复现

    0x01 声明 仅供学习参考使用 请勿用作违法用途 否则后果自负 0x02 简介 Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构 它利用并延伸了Java ServletAPI 鼓励开发者采
  • Kafka零拷贝

    Kafka除了具备消息队列MQ的特性和使用场景外 它还有一个重要用途 就是做存储层 用kafka做存储层 为什么呢 一大堆可以做数据存储的 MySQL MongoDB HDFS 因为kafka数据是持久化磁盘的 还速度快 还可靠 支持分布式
  • 头文件中的ifndef/define/endif的作用

    防止该头文件被重复引用 标识的命名规则一般是头文件名全大写 前后加下划线 并把文件名中的 也变成下划线 如 stdio h define STDIO H 例子 Define CRTIMP ifndef CRTIMP ifdef DLL de
  • jdbc操作Date类型时的比较

    有些oracle数据库查出日期时得到的结果是不一样的 select from table t where t attentionTime to date 2015 09 15 yyyy mm dd 这样的查询语句在一个数据库有时是可以查到有
  • Javascript中函数的形参和函数内局部变量同名的问题

    前言上次牛客网做到这样一个题 非常有意思 陷阱非常多 当时觉得搞明白了 现在再看到 又糊涂了 发现了新的点 看一下 var foo n 1 function foo console log foo n foo n 3 var foo n 2
  • SpringBoot系列 logback-spring日志配置使用记录以及解决依赖包冲突问题

    SpringBoot推荐使用logback spring xml SpringBoot官方推荐使用logback spring xml作为logback框架的自定义日志配置文件 例如 使用logback spring xml而不是logba
  • go 进阶 三方库之 EasJson 与标准库json

    目录 一 Go 标准库 json 二 EasJson 一 Go 标准库 json Go 标准库中提供了内置的 JSON 编码和解码功能 可以用于序列化和反序列化 JSON 数据 import encoding json fmt type P
  • idea点击跳转至.class文件解决方案

    在使用Idea时 点击一些发布的包资源文件时 会跳转到 class文件中而不是正确的源码文件 原因是我们被优先定位到Maven依赖下 我们可以通过设置文件资源来控制跳转 解决方案 进入 class文件后 顶端会有一个显示条 两个选项 Dow
  • 存个档,好不容易解出来的SQL题(取得销售量排名前10的品类里面,每个品类卖的最好的前三个商品及销量(中国式排名))

    题目 取得销售量排名前10的品类里面 每个品类卖的最好的前三个商品及销量 中国式排名 1 获取每个品类内每个商品的销售量排名 SELECT ub item category ub item id COUNT ub item category
  • java Web-servlet技术-servlet基础与doGet()方法doPost()方法辨析

    servlet工作原理 创建一个简单的servlet项目 实现验证用户登录 1 创建一个Dynamic Web Project 取名为myservlet 2 创建一个myservlet的package 在package中创建一个名字为Log
  • python基础总结:4.1、虚拟环境和包

    python基础总结 4 1 虚拟环境和包 文章目录 python基础总结 4 1 虚拟环境和包 1 概述 2 创建虚拟环境 3 使用pip管理包 1 概述 Python应用程序通常会使用不在标准库内的软件包和模块 应用程序有时需要特定版本
  • 静态代码检查报告

    今天在下面刊载一篇小王同学写的静态代码检查报告 图文并茂 条理清晰 1 工具说明 FindBugs 是一个静态分析工具 它检查类或者 JAR 文件 将字节码与一组缺陷模式进行对比以发现可能的问题 有了静态分析工具 就可以在不实际运行程序的情
  • 每日面试题(day01)cookies 和session

    cookies 和session 1 cookie是什么 Cookie 客户端会话技术 将数据保存到客户端 以后 每次请求都携带Cookie数据进行访问 2 为什么要使用cookie web程序是使用HTTP协议传输的 而HTTP协议是 无
  • 安卓开源项目一1 SmartImageView

    学习的第一个开源框架 SmartImageView 在github上下载的 可以根据网络路径自动加载图片 但是从github上下载后会出现问题 以后解决了再补充
  • SearchSploit漏洞查找工具使用指南

    什么是SearchSploit searchsploit 是一个用于Exploit DB的命令行搜索工具 它还允许你随身带一份Exploit DB的副本 SearchSploit为您提供了在本地保存的存储库中执行详细的离线搜索的能力 这种能
  • DataAnalysis-Maggie-Lecture4-降维

    数据可视化和数据降维 4个主题 直方图2多维的问题3PCA4T SNE 可视化 Histograms直方图 直方图用来统计数据在不同区间出现的次数 高维数据 特征很多的数据 e g 如病人病历包含 姓名 年龄 性别 血压 血糖 等 数据量为
  • EasyExcel实现Excel文件导入导出功能

    一 EasyExcel简介 Java领域解析 生成Excel比较有名的框架有Apache poi jxl等 但他们都存在一个严重的问题就是非常的耗内存 如果你的系统并发量不大的话可能还行 但是一旦并发上来后一定会OOM或者JVM频繁的ful
  • Spring高级面试题,你值得拥有

    目录 1 什么是Spring框架以及它的优点和缺点是什么 2 请解释Spring的IoC容器和AOP的概念及其如何工作 3 请解释Spring MVC框架及其工作原理 4 请解释Spring Security框架及其用途 5 请解释Spri