- 博客(205)
- 收藏
- 关注
原创 面试 Java 基础八股文十问十答第二十九期
Java 的集合类是用于存储和操作对象的数据结构。它们提供了一种更加灵活、高效的方式来管理数据集合,相比传统的数组,集合类具有更多的功能和操作。Java 中常见的集合类包括 List、Set、Map 等,它们都位于java.util包中。允许存储重复元素,并且有序。常见的实现类有 ArrayList、LinkedList、Vector 等。不允许存储重复元素,通常用于存储不重复的对象集合。常见的实现类有 HashSet、LinkedHashSet、TreeSet 等。存储键值对,键是唯一的,值可以重复。
2024-10-24 09:40:05 807 1
原创 面试操作系统八股文十问十答第三期
用户态(User Mode):指操作系统中进程执行时的一种权限级别。在用户态下,进程只能访问受限资源和执行受限指令集,不能直接访问操作系统核心或硬件资源。这种限制是为了保护系统的稳定性和安全性。内核态(Kernel Mode):是操作系统的最高权限级别。在内核态下,进程可以直接访问操作系统核心功能和所有硬件资源。内核态允许操作系统执行特权指令,控制整个系统的运行状态。切换用户态和内核态需要通过系统调用(System Call),这是从用户态进入内核态的唯一方式。
2024-06-20 13:37:28 424 1
原创 面试 Redis 八股文十问十答第五期
渐进式 rehash 是 Redis 在进行哈希表扩容或者收缩时采取的一种策略。当哈希表的负载因子超过一定阈值或者下降到一定程度时,Redis 会触发 rehash 操作,即对哈希表进行扩容或者收缩,以保证哈希表的性能和空间利用率。而渐进式 rehash 则是指 Redis 在进行 rehash 操作时,将整个操作分解成多个小步骤逐步进行,而不是一次性完成。
2024-06-09 18:34:44 928
原创 面试 Redis 八股文十问十答第四期
缓存击穿是指一个存在的key在缓存失效的时刻,同时有大量的并发请求访问这个key,这些请求会击穿缓存直接访问数据库,导致数据库压力过大。缓存穿透是指查询一个不存在的数据,由于缓存没有命中,导致请求直接访问数据库。这种情况通常是因为恶意攻击或者错误的业务逻辑导致的。缓存雪崩是指在某个时间段,大量的缓存数据同时失效,导致大量的请求直接访问数据库,造成数据库压力过大,甚至宕机的现象。这些问题在缓存系统设计中都是需要考虑和预防的。
2024-06-07 09:13:41 1207
原创 5 分钟快速上手图形验证码,防止接口被恶意刷量!
大家好,我是程序员小白条,今天来给大家介绍一个快速实现图形验证码的优秀框架 AJ-Captcha。
2024-05-28 19:20:13 1238
原创 面试数据库八股文十问十答第七期
MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于实现数据库的并发控制的技术。在 MVCC 中,每个事务在读取数据时会看到一个固定版本的数据,并且事务之间的修改操作不会互相影响。MVCC 的主要思想是为每个事务创建一个可见性视图,该视图定义了事务可以看到哪些数据版本。当事务开始时,MVCC 会为该事务创建一个时间戳,并在事务执行过程中使用该时间戳来确定事务可以看到的数据版本。当事务提交或者回滚时,MVCC 会更新事务的时间戳,并清理过期的数据版本。
2024-05-27 09:27:46 558
原创 面试数据库八股文十问十答第六期
回表指的是当通过索引查询获取到了行的主键或聚簇索引,但是需要进一步到数据页中查找其他的列数据时的操作。如果一个查询不能完全通过索引满足,需要通过主键或聚簇索引再去数据页中查询数据,这个过程就称为回表。回表会增加额外的IO操作,影响查询性能,因此在设计索引时需要考虑覆盖索引等优化手段来避免回表操作。最左匹配原则是指,在多列索引中,如果查询条件涉及到了多个列,并且使用了联合索引,那么查询时只能使用索引中的最左边连续的列。也就是说,如果查询条件中使用了索引的前缀列,索引可以被用到;
2024-05-26 12:03:54 602
原创 面试 Java 框架八股文十问十答第七期
循环依赖指的是在对象之间形成了循环的依赖关系,导致无法完成对象的初始化。例如,类 A 依赖类 B,而类 B 又依赖类 A,这样就形成了循环依赖。在 Spring 容器中,循环依赖通常指的是单例 Bean 之间的循环依赖,因为 Spring 默认情况下会尽可能地创建单例 Bean,并且在创建 Bean 的过程中解决循环依赖是比较复杂的。Spring 通过提前暴露尚未完全初始化的 Bean 实例来解决循环依赖问题,但是如果循环依赖链过长或者存在复杂的构造函数依赖关系,可能会导致循环依赖无法解决而抛出异常。
2024-05-22 08:28:59 734
原创 面试 Java 框架八股文十问十答第六期
IOC(Inversion of Control,控制反转)是一种软件设计原则,它将对象的创建和管理权利从应用程序代码转移到了外部容器中。在传统的编程模型中,应用程序类通常会负责自己的依赖项的创建和管理,而在 IOC 容器中,这些依赖项的创建和管理由容器来完成。这意味着应用程序类不再负责创建它们所依赖的对象,而是通过外部容器来注入它们。DI(Dependency Injection,依赖注入)是一种实现 IOC 的方式,它是通过外部容器来注入一个对象的依赖关系,而不是在对象内部创建或查找依赖关系。
2024-05-21 13:25:50 930
原创 面试 JVM 八股文十问十答第八期
当CMS垃圾收集器发生concurrent mode failure时,它会触发一次Full GC以尝试解决老年代空间不足的问题。稳定性和可控性:在Java虚拟机中,Full GC通常会导致较长的停顿时间,因此采用单线程执行可以更好地控制和管理这个过程,避免出现并发问题或竞态条件。简化实现:使用单线程执行Full GC可以简化实现,减少并发情况下的复杂性。这样可以降低出错的可能性,并且更容易保证Full GC的正确性和稳定性。保证可达性分析的准确性。
2024-05-19 15:59:41 745
原创 面试 Java 并发编程八股文十问十答第十五期
在多线程编程中,当一个线程试图获取一个被其他线程持有的锁时,它可能会发生阻塞,等待锁被释放。在一些情况下,等待锁的时间很短,此时采用自旋等待可能更有效率。自旋等待是指线程在尝试获取锁时不会立即进入阻塞状态,而是会反复检查锁是否可用,这样可以减少线程从用户态到内核态的切换开销。自适应自旋是一种锁优化技术,它根据锁的历史获取情况动态地调整自旋等待的策略。如果锁的获取频率较低,那么自旋等待的时间可以适当延长,以减少线程阻塞和唤醒的开销;
2024-05-11 20:44:23 1106
原创 面试 Java 基础八股文十问十答第二十九期
Java 的集合类是用于存储和操作对象的数据结构。它们提供了一种更加灵活、高效的方式来管理数据集合,相比传统的数组,集合类具有更多的功能和操作。Java 中常见的集合类包括 List、Set、Map 等,它们都位于java.util包中。允许存储重复元素,并且有序。常见的实现类有 ArrayList、LinkedList、Vector 等。不允许存储重复元素,通常用于存储不重复的对象集合。常见的实现类有 HashSet、LinkedHashSet、TreeSet 等。存储键值对,键是唯一的,值可以重复。
2024-05-05 18:23:35 1008
原创 面试 Java 基础八股文十问十答第二十七期
内部类是定义在其他类内部的类,可以访问外部类的成员变量和方法。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类:定义在外部类的成员位置,可以直接访问外部类的成员,常用于实现某个功能的辅助类或者某个类的辅助类。局部内部类:定义在方法内部的类,作用域仅限于该方法内部,常用于解决一些局部性的问题。匿名内部类:没有类名的内部类,通常用于创建临时性的、一次性的类实例。
2024-04-30 09:58:01 810 2
原创 面试 Java 基础八股文十问十答第二十六期
序列化是指将对象转换为字节序列的过程,以便将其保存到文件、数据库或者通过网络进行传输。在 Java 中,通过实现接口,可以将对象序列化为字节流,然后可以通过反序列化将字节流还原为对象。反序列化是指将字节序列转换为对象的过程,从而可以从文件、数据库或者网络中恢复对象。在 Java 中,通过读取字节流并使用类的方法,可以将字节流反序列化为对象。反序列化的对象与序列化之前的对象相同,包括其状态和数据。不可变类(Immutable Class)是指一旦创建一个对象后,该对象的状态(即属性值)将不能被修改。
2024-04-29 20:18:28 963 1
原创 面试 Python 基础八股文十问十答第七期
Tkinter是Python的标准图形用户界面(GUI)工具包,它提供了创建桌面应用程序的基本组件和功能。Tkinter是Python内置的库,因此不需要额外安装即可使用。Tkinter基于Tk GUI工具包,Tk是用于构建跨平台GUI应用程序的工具包,它最初是为Tcl编程语言设计的,但后来也被Python所采用。Tkinter提供了诸如按钮、标签、文本框、滚动条等常见的GUI组件,开发者可以使用这些组件构建用户友好的应用程序界面。
2024-04-26 08:27:03 1226 1
原创 面试 Python 基础八股文十问十答第七期
在Python中,连接(concatenation)是指将两个或多个字符串合并成一个新的字符串的过程。你可以使用运算符来连接字符串。print(s3) # 输出:Hello world除了使用运算符外,你还可以使用str.join()方法来连接字符串。这种方法更加高效,尤其是当你需要连接大量字符串时。print(s3) # 输出:Hello world在编程中,函数是一段可重复使用的代码块,用于执行特定任务或计算,并且可以接受输入参数和返回输出结果。
2024-04-25 21:22:53 869 1
原创 面试 Python 基础八股文十问十答第六期
在 Python 中,切片是一种用于从序列(如列表、元组、字符串等)中获取子序列的方法。start表示起始索引(包含在切片中)。stop表示结束索引(不包含在切片中)。step表示步长(可选参数,默认为1)。切片操作返回一个新的序列,包含原始序列中指定范围内的元素。切片可以用于列表、元组、字符串等任何序列类型。# 获取索引 1 到索引 3 的子列表(不包括索引 3)# 获取从索引 0 开始的奇数位置元素namedtuple是 Python 标准库中。
2024-04-24 08:29:40 733 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人