学习永无止境
基于 SpringBoot 搭建社区问答论坛1.使用 SpringBoot 搭建后端服务的基础架构,实现了用户提问、回复等核心业务逻辑SpringBoot 程序的核心注解是什么?有哪些子注解?SpringBoot 程序的核心注解是 @SpringBootApplication,它是一个组合注解,整合了多个常用注解的功能,能够让开发者以最少的配置来启动 SpringBoot 应用程序。它包含以下三个重要的子注解:
@Configuration:将类标记为配置类,允许在类中使用 @Bean 注解定义 Bean,就像传统 Spring 里的 XML 配置文件一样。
@EnableAutoConfiguration:依据项目的依赖自动为应用程序进行合理的默认配置,减少手动配置的工作量。
@ComponentScan:让 Spring 去指定包及其子包中扫描带有 @Component、@Service、@Repository、@Controller 等注解的类,并将它们注册为 Bean。
@Service、@Controller 等都是 @Component 的衍生注解。
在高并发场景下 ...
超级八股
Java 基础 - 集合接口和接口之间是什么关系?是继承关系,而非实现关系。(其实很好想,如果接口实现了接口,那为什么方法仍然只有方法体?)
interface A { void methodA();}interface B { void methodB();}interface C extends A, B { void methodC();}
Java 并发 - JVMMySqlRedis消息队列计算机网络-操作系统其他(JWT,Spring,SpringBoot,SpringSecurity,ES搜索引擎,设计模式等)介绍一下 JWTJWT 是 JSON Web Token 的缩写,它是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用之间安全地传递信息。1.结构JWT 由头部,载荷和签名组成。
头部:通常包含两部分信息,一是令牌的类型,即 JWT;二是所使用的签名算法,如 HMAC SHA256 或 RSA 等。例如:{“alg”:”HS256”,”typ”:”JWT”}。-载荷:是 ...
超级手撕
hot 1001.两数之和-简单题-哈希表的初级应用力扣题目链接给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
使用哈希表,每遍历一个元素,先在哈希 Map 中查找是否存在 target - nums[i],若存在,则返回由二者下标组成的数组;若不存在,则将 nums[i] 与 i 加入哈希 Map,继续探测下一个元素。
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(target - nums[i])) { int j = map.get(targe ...
超级场景
问答论坛项目怎么存储热门标签?有什么问题?怎么改进?使用本地 arraylist 存储热门标签(优先级最高的 10 个标签),可以改进为 copyonwritearraylist (保证多线程的安全性)。
为什么缓存热门标签不使用成熟的缓存框架?热门标签数量较少,引入专门的缓存框架还需要配置和管理,使用 arraylist 简单又便捷。
如何更新热门标签列表?优先级怎么计算?使用 @scheduled 注解定义定时任务(fixedRate 指定每隔 3 小时),从数据库中分页查询(避免一次性查询大量数据,减少数据库压力)所有问题,对每个问题的标签列表进行拆分,统计每个标签的优先级(优先级计算方式为“该问题的评论数”),计算完成后更新热门标签缓存。
项目中还缓存了哪些内容?是怎么缓存的?利用 Google Guava 缓存库对置顶问题列表进行缓存,提升系统响应速度。包括缓存的最大容量(100 条),当缓存条目超过 100 条时,会按照一定策略移除某些条目;规定缓存项在写入后的 10 分钟后过期;设置移除监听器,当缓存项被移除时记录日志信息。如果缓存中存在键为 sticky 的置顶问题列表 ...
SpringBoot问答论坛社区
拆解src/main/java/核心源码advice包CustomizeExceptionHandler-全局异常处理1.类的定义与注解
@ControllerAdvice@Slf4jpublic class CustomizeExceptionHandler { // ...}
@ControllerAdvice:这是一个 Spring 框架的注解,它的作用是定义一个全局的异常处理器。该处理器能够捕获所有控制器类抛出的异常。@Slf4j:这是 Lombok 库的注解,它会自动为这个类添加一个日志记录器 log,便于记录日志信息。2.异常处理方法handle
@ExceptionHandler(Exception.class)ModelAndView handle(Throwable e, Model model, HttpServletRequest request, HttpServletResponse response) { // ...}
**@ExceptionHandler(Exceptio ...