- 博客(13)
- 收藏
- 关注
原创 【面试准备】设计模式
当产品可以分为多个产品族的时候,可以使用抽象工厂使结构更清晰。当一个产品族中需要被设计在一起工作时,通过抽象工厂模式,能够保证客户端始终只使用同一个产品族中的对象。在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展维护。的设计模式,将对象的创建与使用代码分离,提供一种统一的接口来创建不同类型的对象。抽象工厂中也有四个角色:抽象工厂、具体工厂、抽象产品(族)、具体产品(族)。举例:服装品牌A和品牌B都有T恤和牛仔裤卖,在搭配时需要是同品牌的。,但可能会浪费内存,加载了不需要的类的实例。
2023-07-10 22:49:58 42
原创 【面试准备】Java并发编程
synchronized是对象锁,是互斥的,在同一时间最多有一个线程持有这个锁,其他线程想获取时会阻塞住。当一个线程抛出OOM异常后,它所占据的内存资源会全部被释放掉,从而不会影响其他线程的运行。底层是一个Monitor,由JVM提供,C++实现的。Java并发的特性:原子性、内存可见性、有序性。
2023-06-13 00:45:55 55
原创 【面试准备】JVM
程序计时器是每个线程私有的,每个线程一个,保存的是字节码的行号。用来记录当前执行的字节码指令的地址。当这个线程获取到CPU时间片时从这个地址开始。JVM只能执行二进制文件,类加载器是将字节码文件加载进JVM的,从而使Java程序得以执行。加载一个类时,会先委托它上一级的类加载器进行加载,如果上一级的类加载器还有上级,就继续向上委托。如果上级的类加载器无法加载这个类,子加载器就会尝试加载这个类。如果上级的类加载器可以加载这个类,那么会直接返回这个类。
2023-06-11 21:05:31 119
原创 【面试准备】Java集合
HashEntry和HashMap结构类似,是一种数组和链表的结构,一个Segment包含一个HashEntry数组,HashEntry的元素是一个链表。通过对链表或红黑树的头节点进行加锁来保证线程安全,相比分段锁的粒度更小,只要没有哈希冲突就不会有并发问题。JDK 1.7扩容迁移时,使用的是头插法,原本链表为 A -> B,迁移后会变成 B -> A,如果有多个线程同时执行迁移,就有可能出现 B -> A -> B 的情况。未扩容,只声明了容量为10,在第一次添加数据时才会生成数组。
2023-06-10 15:04:36 42
原创 【面试准备】MyBatis
基于PerpetualCache的HashMap本地缓存,存储作用域为Session,当Session进行flush或close后,对应的所有Cache就会被清空。当某一个作用域进行了新增、修改、删除之后,默认该作用域下的所有select中的缓存将被清除。作用域可以是一级缓存Session或二级缓存Namespaces。基于namespace和mapper的作用域起作用的,不依赖于SQL Session,默认采用PerpetualCache的HashMap。MyBatis支持延迟加载,但默认没有开启。
2023-06-09 00:46:30 104
原创 【面试准备】MySQL
聚簇索引是数据与索引放在一起,B+树的叶子节点中保存了整行的数据,有且只有一个。非聚簇索引(二级索引)是数据与索引分开存储,B+树的叶子节点只保存了对应的主键,可以有多个,一般我们额外加的就是非聚簇索引。聚簇索引一般是主键索引,无主键则是一个唯一索引,两个都没有的话InnoDB会自动生成一个rowid作为聚簇索引。覆盖索引是查询时使用了索引,并且这个索引可以满足所有需要返回的列,是不需要回表的情况。回表是通过非聚簇索引查询到对应的主键值,用主键值在聚簇索引中查询整行数据的过程。
2023-06-04 21:35:42 126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人