- 博客(11)
- 收藏
- 关注
原创 线程池的调用顺序
4. 如果线程池中的线程数超过了核心线程数,那么当线程处于空闲状态时,它将等待一段时间(keepAliveTime),如果在这段时间内没有新任务需要执行,那么该线程就会被终止,以便回收资源。线程池中的线程执行任务时,有两种方式:先进先出(`FIFO`)和优先级队列(`Priority`)。2. 如果当前线程数等于核心线程数,新任务被加入到工作队列中,排在先前添加的任务之后。1. 当有新任务添加到线程池中时,如果当前线程数小于核心线程数,则会创建新的线程并立即执行该任务。
2023-11-03 10:27:53
1173
原创 什么是IO流
Java提供了一系列的输入流(InputStream)和输出流(OutputStream)类以及字符输入流(Reader)和字符输出流(Writer)类,用于不同的输入/输出场景。IO流(Input/Output Stream)是Java中用于处理输入和输出的数据流。IO流提供了一种方便、统一的方式来读取和写入数据,无论是与文件、网络还是其他输入/输出源进行交互。在Java中,输入和输出被抽象为字节流(Byte Stream)和字符流(Character Stream)。3. 通过流对象读取或写入数据。
2023-11-03 10:27:09
186
原创 数组和链表的区别
综上所述,数组适用于随机访问元素和事先知道数据大小的情况,而链表适用于频繁插入和删除元素的情况。- 链表(Linked List):非连续的内存空间,元素通过指针链接在一起。- 链表:插入或删除元素只需要调整指针,时间复杂度为O(1),但是需要遍历找到插入或删除位置。可以通过索引直接访问任何元素。- 数组:在特定位置插入或删除元素时,需要移动后续元素,时间复杂度为O(n)。- 链表:需要顺序遍历链表才能访问特定位置的元素,时间复杂度为O(n)。- 数组:根据索引可以直接访问元素,时间复杂度为O(1)。
2023-11-03 10:24:56
154
原创 Reids持久化策略
1. RDB(Redis Database)持久化:RDB是将Redis的数据快照保存到磁盘上,形成一个二进制文件(默认是`dump.rdb`)。这个文件包含了将重建数据集所需的所有写操作指令。可以通过在Redis的配置文件(redis.conf)中设置`save`参数来调整RDB持久化的策略,以及`appendonly`参数来启用AOF持久化和设置同步策略。在实际应用中,可以根据业务需求和数据安全性要求选择适合的持久化策略,或者结合使用RDB和AOF持久化,以提供更可靠和高效的数据存储和恢复机制。
2023-11-03 10:23:48
255
原创 双亲委派机制
它定义了一种类加载的层次结构,使得不同的类加载器可以有规律地进行类的搜索和加载。在这个机制中,除了启动类加载器之外,其余的类加载器都有一个父类加载器,当类加载器接收到一个类加载请求时,它会先把该请求委托给父类加载器去处理,如果父类加载器无法找到对应的类,那么子类加载器才会尝试去加载。2. 如果当前类加载器没有加载过该类,则向上委托给父类加载器进行加载。3. 如果所有的父类加载器都没有加载过该类,则由当前类加载器自己加载该类。
2023-11-03 10:22:15
66
原创 MVCC的实现
MVCC通过给每个事务分配一个唯一的事务标识(Transaction ID),并在数据库中维护多个版本的数据,实现了多个事务同时读取和修改数据而不会相互干扰的机制。比如,某个数据记录可能有多个版本,其中最新的版本是由当前活动事务创建的,而旧版本则由已提交的事务创建。对于并发执行的事务,MVCC可以提供较高的并发度,允许读取最新的可见数据而不会被其他事务的修改所干扰。
2023-11-03 10:21:26
147
原创 dependencyManagement和dependencies的区别
通过在父项目的dependencyManagement中定义依赖项和版本号,子项目可以继承这些定义,并使用相同的版本号。通过在dependencies中列出依赖项,Maven将会自动解析并下载这些依赖项,并将其包含在项目的构建路径中,以供编译、测试和运行时使用。它允许您集中定义项目中使用的依赖项及其版本号。该元素的作用是声明项目所需的依赖项,但不会实际引入这些依赖项。在Maven构建工具中,dependencyManagement和dependencies是两个关键的元素,用于管理项目的依赖项。
2023-11-03 10:15:24
1853
原创 对数据库事务的了解
数据库中的事务是作为单个逻辑工作单元执行的一系列操作。(多条 SQL 语句,要么全部执行成功,要么全部执行失败。事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互进行隔离。一般的数据库,都包括以下四种隔离级别:读未提交(Read Uncommitted)读提交(Read Committed)可重复读(Repeated Read)串行化(Serializable)读未提交(Read Uncommitted)
2023-11-03 10:08:49
221
原创 Spring Boot 面试题
(2) spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate。(1) spring-boot-starter-web :提供 Spring MVC + 内嵌的 Tomcat。(3) spring-boot-starter-data-Redis :提供 Redis。(4) mybatis-spring-boot-starter :提供 MyBatis。打成jar包,使用java -jar xxx.jar运行。注解可以引入一个 XML 配置。
2023-04-05 10:25:11
154
1
原创 SpringMVC和SpringBoot——理解与区别
Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模 型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。(3)部署简化:可执行JAR部署,与传统服务的Web模式部署(打WAR包部署)相比,连安装Web容器的时间都节省了;
2023-04-05 10:00:31
2225
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人