相关概念
文章平均质量分 91
Day_Day_Up_33
一个努力认真慢慢向前的后端女程序员呐~
展开
-
【八股】Spring 基础知识点
实例化、属性赋值、初始化、销毁整个生命周期相关的方法可以分为三大类:Bean自身的方法、容器级生命周期方法、Bean级生命周期方法;什么是 BeanFactory?和 FactoryBean 的区别?BeanFactory是一个接口,位于类结构树的顶端,定义了getBean()、containsBean()等管理Bean的通用方法,Spring中有很多BeanFactory的实现类,以此来增强BeanFactory的功能;FactoryBean是一个Bean,但不仅仅是一个Bean;原创 2023-09-26 22:36:22 · 118 阅读 · 0 评论 -
【八股】MyBatis 基础知识点
MyBatis执行时会为Mapper接口生成代理对象,代理对象会拦截接口中的方法,然后去执行MappedStatement中相应的SQL语句,然后将结果返回;类型的参数,该参数是对映射信息(输入参数 or 输出结果)的封装,用于存储要映射的 SQL 语句的 id、参数等信息。在执行完 SQLSession.selectOne 语句之后,返回的是结果对象的代理对象,此时由于 orderList 开启了懒加载,所以 user.orderList 其实是为 null 的;里面的数字代表传入参数的顺序;原创 2023-09-23 16:10:23 · 86 阅读 · 0 评论 -
【八股】JVM 基础知识
各种类加载器之间的层次关系被称为类加载器的 “双亲委派模型(Parents Delegation Model)双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。不过这里类加载器之间的父子关系一般不是以继承(Inheritance)的关系来实现的,而是通常使用组合(Composition)关系来复用父加载器的代码。原创 2023-09-21 19:20:12 · 56 阅读 · 0 评论 -
设计模式?这要怎么记?理解?
在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。代理模式是做方法增强的,适配器模式是把鸡包装成鸭这种用来适配接口的,桥梁模式做到了很好的解耦,装饰模式从名字上就看得出来,适合于装饰类或者说是增强类的场景,门面模式的优点是客户端不需要关心实例化过程,只要调用需要的方法即可,组合模式用于描述具有层次结构的数据,享元模式是为了在特定的场景中缓存已经创建的对象,用于提高性能。原创 2023-08-31 19:41:24 · 42 阅读 · 0 评论 -
【Java基础】多线程编程
当多个线程同时对一共享数据进行操作时,只会有一个线程拿到锁对象,因为一个对象只有一把锁,当某线程获取该对象的锁后,其它线程就无法再获取该对象的锁了,所以只能等待某线程释放该对象的锁,其它线程才能访问,这样便是实现了对临界区的互斥访问,保证了共享数据的安全。当然这也是锁的竞争问题,也是死锁产生的条件。threadFactory创建的线程也是采用new Thread()方式,threadFactory创建的线程名都具有统一的风格:pool-m-thread-n(m为线程池的编号,n为线程池内的线程编号)。原创 2023-08-25 10:34:11 · 52 阅读 · 0 评论 -
面试_230814某某司
完全没有准备~脑补~原创 2023-08-14 23:42:20 · 32 阅读 · 0 评论 -
MyBatis_东一点西一点
缓存就是将数据暂时放在内存或者硬盘中,当查询数据时,如果缓存中有相同的数据就直接返回,而不用从数据库去读取,进而减少了应用与数据库的交互次数,这样提升了程序的执行效率。代理模式是MyBatis的核心使用的模式,正是由于代理模式,我们只需编写Mapper.java接口而不需要实现,就是由MyBatis后台帮助我们完成具体SQL的执行的。属于创建类模式,一般来说,如果一个对象的构建比较复杂,超出了构造函数所能包含的范围,就可以使用工厂模式和Builder模式,相对于。原创 2023-08-11 14:34:26 · 26 阅读 · 0 评论 -
MyBatis_基础知识
是一个基于Java的持久层框架;并且支持自定义SQL、存储过程以及高级映射;MyBatis可以通过简单的XML配置或者注解来配置和映射原始类型、接口和Java POJO为数据库中的记录;MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。Mybatis:小巧、方便、高效、简单、直接、半自动化。比喻:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。Hibernate:强大、方便、高效、复杂、间接、全自动化。原创 2023-08-10 12:07:02 · 33 阅读 · 0 评论 -
Redis_持久化
为什么需要持久化?我们知道Redis是基于内存存储的,有一个问题就是断电即失,所以Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能,从内存当中同步到硬盘上,这个过程叫做持久化过程。Redis支持两种形式的持久化,一种是RDB另一种是AOF;一般来说, 如果对数据的安全性要求非常高的话,应该同时使用两种持久化功能。如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。原创 2023-08-09 11:36:09 · 26 阅读 · 0 评论 -
Redis_常见基础面试点
给每个key维护一个时间戳,淘汰时随机采样5个key,从中淘汰掉最旧的key;在访问数据的时候,每次将最新访问的key移动到表头,即最近被访问的key在表头,最少访问的key在表尾;Redis占用内存超出最大限制(maxmemory)时,可采用内存淘汰策略让Redis淘汰一些数据,以腾出空间继续提供读写服务。Redis会把设置了过期时间的key放入一个独立的字典中,在key过期时并不会立即删除它。,就是先考虑键值对访问的次数,优先淘汰。,对于访问次数相同的键值对,再选择。进⾏淘汰,也就是LRU算法。原创 2023-08-04 20:57:06 · 29 阅读 · 0 评论 -
Redis_高并发高可用知识
脑裂(网络分区),也就是说,某个 master 所在机器突然脱离了正常的网络,跟其他 slave 机器不能连接,但是实际上 master 还运行着,此时哨兵可能就会认为 master 宕机了,然后开启选举,将其他 slave 切换成了 master 这个时候,这个过程,实现了 Redis 的主从架构下的高可用性。因此,旧 master 再次恢复的时候,会被作为一个 slave 挂到新的 master上去,自己的数据会清空,重新从新的 master 复制数据,导致写向旧 matse r的数据可能也丢失了。原创 2023-08-04 20:55:12 · 1297 阅读 · 1 评论 -
Redis_缓存验证码
所以,Redis中的LRU算法是这样实现的:首先定义一个淘汰池,这个淘汰池是一个数组(大小为16),然后触发淘汰时会根据配置的淘汰策略,先从符合条件的key中随机采样选出5(可在配置文件中配置)个key,然后将这5个key按照空闲时间排序后放到淘汰池中,每次采样之后更新这个淘汰池,让这个淘汰池里保留的总是那些随机采样出的key中空闲时间最长的那部分key。我们知道,实现LRU算法时,需要将所有的数据按照访问时间距离当前时间的长短排序放到一个双向链表中,基于这个链表实现数据的淘汰。为了后续的校验登录状态。原创 2023-08-04 20:46:23 · 760 阅读 · 1 评论 -
MySQL_索引
根据图书的目录的设计,我们可以肯定索引数据最好能按顺序排列,而对于顺序排列我们应该想到使用「二分查找法」高效定位数据。如果现在用数组来存储索引,有一个排好序的数组1.2.3.4.5.6.7.8,如果要从中找出数字 3,最简单办法就是从头依次遍历查询,这种方法的时间复杂度是 O(n),查询效率并不高。但是,因为该数组是有序的,如果我们采用二分查找法,二分查找法每次都把查询的范围减半,这样时间复杂度就降到了 O(logn),但是每次查找都需要不断计算中间位置。原创 2023-07-14 11:42:35 · 34 阅读 · 1 评论 -
MySQL_事务
事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。原创 2023-07-12 15:51:06 · 33 阅读 · 1 评论 -
MySQL_基础篇
现在最常用的存储引擎是 InnoDB,从 MySQL 5.5 版本开始, InnoDB 成为了 MySQL 的默认存储引擎。我们常说的索引数据结构,就是由存储引擎层实现的,不同的存储引擎支持的索引类型也不相同,比如 InnoDB 支持索引类型是 B+树 ,且是默认使用,也就是说在数据表中创建的主键索引和二级索引默认使用的是 B+ 树索引。现在我们对服务层和存储引擎层有了一个简单认识,接下来,就详细说一条 SQL 查询语句的执行流程,依次看看每一个功能模块的作用。存储层: 负责将数据存储于设备的文件系统中。原创 2023-07-12 10:34:41 · 35 阅读 · 1 评论 -
【数据库】优化?索引?了解一下
官方对于索引的定义是帮助 MySQL 高效获取数据的数据索引如何实现高效的查找数据呢?如何找到快速地找出一个序列中某元素的位置呢?从左至右遍历、排序…原创 2023-04-13 10:06:58 · 54 阅读 · 0 评论 -
Java基基基基础
Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。原创 2023-03-08 11:13:09 · 706 阅读 · 0 评论 -
多版本并发控制
MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过。这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。原创 2023-03-01 09:10:25 · 67 阅读 · 0 评论 -
进程间通信
也就是前提知识:每个进程都有自己的,而。因此进程之间想要进行通信,就需要通过内核来实现。原创 2023-02-27 11:16:59 · 57 阅读 · 0 评论 -
关于Java线程
当使用多个线程来访问同一个数据时,将会导致数据不准确(数据不一致),相互之间产生冲突,非常容易出现线程安全问题线程同步的真实意思其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。所以,用同步机制来解决这些问题,加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。原创 2023-02-26 12:33:17 · 48 阅读 · 2 评论