1.3k 1 分钟

# Spring 的 Bean 是线程安全的吗 不是 Spring 容器中的 Bean 默认是 singleton 单例的,所有线程共享一个单例 Bean, 因此是存在资源竞争的; 但在实际开发中,单例 Bean 一般都是以无状态的方式来使用,即线程之间的操作不会对 Bean 的成员执行除查询以外的操作,所以这个 Bean 又可以说是线程安全的。比如:Controller,Service,Dao 等这些 Bean 大多数是无状态的,我们不会对这些 Bean 中的属性进行修改操作,只需要关注方法本身即可; # 如何保证 Spring 容器中 Bean 是线程安全的 把默认的 singleton...
2.2k 2 分钟

# Redis 应用场景 缓存:热点数据 (经常查询,但不修改或删除数据) 首选 Redis 缓存,性能优秀 分布式锁:多个 tomcat 通过 Redis 获取锁后才能访问 MySQL 数据库 实现方式:Jedis,Lettuce,RedisTemplete,Redisson (更加方便,无需额外写代码) 具体实现 获取锁:setnx key value 设置锁过期时间:expire key 30 执行业务代码 释放锁: del key Redisson 实现分布式锁 获取锁:redisson.getLock...
4.8k 4 分钟

# SpringBoot 自动装配原理 @SpringBootApplication (main 方法上的注解) @EnableAutoConfiguration (自动装配核心注解) 导入 AutoConfigurationImportSelector 组件 通过 SpringFactoriesLoader 类读取 META-INF/spring.factories org.springframework.boot.autoconfigure.AutoConfiguration.imports 条件注解进行过滤 (只有导入了相关 jar 包才会进行配置) ImportSelector...
460 1 分钟

# MYSQL 关系型数据库 默认引擎 InnoDB, 通过 JDBC 连接 支持事务,分布式事务,savepoint undo,redo,binlog # 数据库优化方式 服务器硬件:cpu, 内存,磁盘 io, 网卡流量 服务器操作系统配置 存储引擎选择 数据库自身配置参数 数据库表结构的设计和 SQL 语句的执行效率 (慢查询,不合理的数据库表结构设计,不合理索引) 数据库架构:高并发下读写分离,分库分表,多级缓存,搜索引擎 # 如何定位慢查询 业务驱动 测试驱动 系统跟踪驱动 (Prometheus,SkyWalking) 慢查询日志 #...
1.1k 1 分钟

# 题 1 54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 提示: m == matrix.length n == matrix[i].length 1 <= m, n <= 10 -100...
837 1 分钟

73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2: 输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 提示: m == matrix.length n == matrix[0].length 1 <= m, n...
4.5k 4 分钟

3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出:...
2k 2 分钟

392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 进阶: 如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码? 致谢: 特别感谢 @pbrother...
2.3k 2 分钟

58. 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大 子字符串 。 示例 1: 输入:s = "Hello World" 输出:5 解释:最后一个单词是“World”,长度为5。 示例 2: 输入:s = " fly me to the moon " 输出:4 解释:最后一个单词是“moon”,长度为4。 示例 3: 输入:s = "luffy is still...
2.2k 2 分钟

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height = [4,2,0,3,2,5] 输出:9 提示: n == height.length 1 <= n <= 2 * 104 0 <= height[i]...