置顶文章

1.9k 2 分钟

# 公告 目前本博客手机端界面还未完善,推荐使用电脑访问本博客. 评论提醒功能又出现了些状况,并且最近有些忙,评论回复可能不及时,见谅!!! 本网站大量依赖 jsDelivr , 请掌握科学上网方式以获得良好的阅读体验 # 活动 (function($){ $.fn.snow = function(options){ var $flake = $('').css({'position': 'absolute','z-index':'9999', 'top':...

精选分类

文章列表

491 1 分钟

# JAVA 继承时父子类的初始化顺序是怎样的 具体顺序如下 父类 -- 静态变量 父类 -- 静态初始化块 子类 -- 静态变量 子类 -- 静态初始化块 父类 -- 变量 父类 -- 初始化块 父类 -- 构造器 子类 -- 变量 子类 -- 初始化块 子类 -- 构造器 总结如下:静态优于非静态,父类优于子类,变量优于初始化块优于构造器 # JVM 的双亲委派模型 为什么设计,有何好处 确保安全,避免 JAVA 核心类库被修改 避免重复加载 保证类的唯一性 可以打破双亲委派模型吗?如何打破? 可以。自定义一个类加载器,重写其中的 loadClass...
845 1 分钟

# ThreadLocal 底层如何实现 ... # ThreadLocal 为什么会内存泄露 ThreadLocal 是一个类似 HashMap 的数据结构 ThreadLocal 的实现原理就是通过 set 把 value set 到线程的 threadlocals 属性中,threadlocals 是一个 Map, 其中 key 是 ThreadLocal 的 this 引用,value 是我们 set 的值 # sleep () 和 wait ()...
1.2k 1 分钟

# HashMap 底层如何实现 以上为整体类继承结构 主要特点 数据以键值 (kay-value) 对方式储存的一个集合容器 key 不重复 可以使用 null 的键和 null 的值 不保证 key-value 映射的顺序 非线程安全实现 数据结构 JDK1.7: 数组 + 链表 JDK1.8: 数组 + 链表 + 红黑树 HashMap 性能参数 q 初始容量 capacity: 创建数组的长度默认是 16, 如果太少,很容易触发扩容,如果太多,遍历数组会比较慢 负载因子 loadFactor: 一个衡量的尺度,数组长度达到多少的时候触发数组自动扩容,默认为...
533 1 分钟

# MyBatis 框架如何实现分页 分页分为两种 逻辑分页:将所有数据查出来,再在内存中进行分页处理 物理分页:直接在数据库中进行分页 具体实现: 自己写 SQL 进行分页 (物理) 使用拦截器进行分页 (物理) 使用 PageHelper 进行分页 (物理) 使用 RowBounds 进行分页 (逻辑) # MyBatis 框架里面的缓存机制 MyBatis 中有两级缓存:一级缓存,二级缓存 (都是 HashMap) 一级缓存失效的几种情况 不同的 SqlSession 对应不同的一级缓存 同一个 SqlSession 但是查询条件不同 同一个 SqlSession...
1.3k 1 分钟

# java 线程池有哪些核心参数,分别有什么作用 ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( 8,//corePoolSize 线程池中的核心线程数量 16,//maximumPoolSize 60,//keepAliveTime TimeUnit.SECONDS,//keepAlive 的时间单位 new ArrayBlockingQueue<Runnable>(1024),// 任务队列 Executors.defaultThreadFactory(),//...
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...