自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Java File 如何重命名

String path = "D:\\a1.pdf"; File f = new File(path);// f.setExecutable(true);// f.setWritable(true);// f.setReadable(true); String newPath = path.replace("a1.pdf", "重命名.pdf"); File newf = new File(newPath);..

2021-09-16 07:04:22 4680

原创 并发使用MyBatis selectKey 更新update问题总结

问题业务场景:按日期累加的流水号出现大量重复流水号问题代码模拟场景: String sss = TestMapper.getMaxSerialNo("LiuShuiHaoCuoLuan"); for (int i = 0; i < 100; i++) { int finalI = i; Thread a = new Thread(() -> { String str = businessSeri

2021-09-05 10:18:36 1568

原创 面试专题:前后端分离与 Rest 规范

http 是目前互联网上使用最多的协议,没有之一。可以是 http 的创始人一直都觉得,在过去 10 几年来,所有的人都在错误的使用 Http。这句话怎么说呢?如果说你要删除一个数据,以往的做法通常是 delete/{id},如果你要更新一个数据,可能是 Post 数据放 Body,然后方法 Url 是 update/{id},或者是 artichle/{id}?method=update。这种做法让我很暴躁,我觉得这个世界不该这样的,所有的人都在误解而且在严重错误的误解 Http 的设计初衷,好比是发

2021-04-26 13:43:44 209

原创 28 | 如何使用设计模式优化并发编程?

在我们使用多线程编程时,很多时候需要根据业务场景设计一套业务功能。其实,在多线程编程中,本身就存在很多程数得功能设计模式,学好它们,用好它们,那就是如虎添翼了。今天我就带你了解几种并发编程中的常用的设计模式。线程上下文设计模式线程上下文是指贯穿线程整个生命周期的对象中的一些全局信息。例如,我们比较熟悉的 Spring 中的 ApplicationContext 就是一个关于上下文的类,它在整个系统的生命周期中保存了配置信息、用户信息以及注册的 bean 等上下文信息。这样的解释可能有点抽象,我们不妨通

2021-04-22 18:16:45 142

原创 20 |磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型

从今天开始,我将和你一起探讨 Java 虚拟机(JVM)的性能调优。JVM 算是面试中高频问题了,通常情况下总会有人问到:请你讲解下 JVM 的内存模型,JVM 的性能调优做过吗?为什么 JVM 在 Java 中如此重 要?首先你应该指导,运行一个 Java 应用程序,我们必须要先安装 JDK 或者 JRE 包。这是因为 Java 应用在编译后会变成字节码,然后通过字节码运行在 JVM中,而 JVM 是 JRE 的核心组成部分。JVM 不仅承担了 Java 字节码的分析(JIT compiler)和.

2021-04-20 07:27:55 143

原创 39 | 答疑课堂:MySQL中InnoDB的知识点串讲

模块六有关数据库调优的内容到本周也正式结束了,今天我们一起串下 MySQL 中 InnoDB 的知识点。InnoDB 存储引擎作为我们最常用到的存储引擎之一,充分熟悉它的实现和运行原理,有助于我们更好滴创建和维护数据库表。InnoDB 体系架构InnoDB 主要包括了内存池、后台线程以及存储文件。内存池又是由多个内存块组成的,主要包括缓存磁盘数据、redo log 缓冲等;后台线程则包括了Master Thread 、IO Thread 以及 Purge Thread 等;由 InnoDB 存储引擎实.

2021-04-15 13:58:23 96

原创 11 | 怎么给字符串字段加索引?

现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题。假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的:mysql> create table SUser(ID bigint unsigned primary key,email varchar(64)) engine = innodb由于要使用邮箱登录,所以业务代码中一定会出现类似于这样的语句:mysql> select f1,f2 from SUser where ema.

2021-04-14 13:05:11 115

原创 09 | 普通索引和唯一索引,应该怎么选择?

在前面的基础篇文章中,我给你介绍过索引的基本概念,相信你已经了解了唯一索引和普通索引的区别。今天我们就继续来谈谈,在不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证查姓名,就会执行类似这样的 SQL 语句:select name from CUser where id_card = '232302199912121111'所以,你一定会考虑在 id_card 字段上建

2021-04-11 21:29:28 100

原创 Java 架构师路线图

一、框架源码专题 1.1 应用框架 Spring  1.1.1 Spring IOC源码剖析    1.1.1.1 整体认知Spring体系    1.1.1.2 理解Spring IOC容器设计原理    1.1.1.3 掌握Bean的生命周期    1.1.1.4 Spring Context装载过程源码分析     1.1.1.4.1 BeanFactoryPostProcessor源码分析     1.1.1.4.2 BeanDefinitionRegistryPostProcess

2021-04-04 09:05:39 104

原创 07 | 行锁功过:怎么减少行锁对性能的影响?

在上一篇文章中,我跟你介绍了 MySQL 的全局锁和表级锁,今天我们就来讲讲 MySQL 的行锁。MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。 InnoDB 是支持行锁的,这也是 MyISAM 被 InnoDB 替代的重要原因之一。我们今天就主要来聊聊 InnoDB 的行锁,以及如何通过减少锁冲突来提升业务并发.

2021-04-01 16:45:06 92

原创 CSDN-Java 研发工程师

Java研发工程师:岗位职责:1.根据项目计划配合项目产品经理分解研发任务,组织解决研发过程中存在的技术问题2.负责系统概要设计和详细设计,编制系统设计方案,保证系统稳定;3.与产品、运营等团队紧密配合,确定产品的技术解决方案和开发时间评估;4.解决研发过程中的关键问题和技术难题;5.协同组内开发工作以及任务安排。任职要求:统招本科及以上学历,5年以上开发经验;良好的Java语言基础,熟悉Spring,SpringBoot,MyBatis等常用框架和类库;熟悉MySQL数据库的使用以及

2021-03-29 18:06:30 122

原创 06 | 全局锁和表锁:给表加个字段怎么有这么多阻碍?

今天我要跟你聊聊 MySQL 的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。**根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。**今天这篇文章,我会和你分享全局锁和表级锁。而关于行锁的内容,我会留着在下一篇文章中再和你详细介绍。这里需要说明的是,锁的设计比较复杂,这两i盘文章不会涉及锁的具体实现细节,主要介绍的是碰到锁时的现象和其背后的原理。全局锁顾名思.

2021-03-29 17:24:51 109

原创 面试专题:兴盛优选二面

JVM内存模型?老年代用的什么垃圾回收算法?说下分代算法?GC Roots包含哪些对象?Spring BeanFactory 和FactoryBean 有什么区别?BeanFactory有哪些实现类?ApplicationContext是接口还是实现类BeanFactory是哪种设计模式?设计模式的六大原则数据库的事务隔离级别? MySQL怎么实现可重复读的事务隔离级别的?B 树和B+ 树的区别?B树非叶子节点能否存储数据?如何实现接口的幂等性微服务之间是怎么通过Consul进行通信的?Con.

2021-03-22 15:58:54 1679 4

原创 04 | 深入浅出索引(上)

提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。数据库索引的内容比较多,我分成了上下两篇文章。索引是数据库系统里面重要的概念之一,所以我希望你能够耐心看完。在后面的实战文章中,我也会经常引用这两篇文章提到的知识点,加深你对数据库索引的理解。一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像的目录一样。一本 5.

2021-03-22 07:40:50 406

原创 面试专题:简述Kafka架构设计

Kafka的特性:高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。可扩展性:kafka集群支持热扩展持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)高并发:支持数千个客户端同时读写Consumer Group:消费者组,消费者组内每个消费者负责消费不

2021-03-20 09:58:29 193

原创 面试专题:简述 ZAB 协议

ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议,实现分布式数据一致性所有客户端的请求都是写入到 Leader 进程中,然后,由 Leader 同步到其它节点,称为 Follower。在集群数据同步的过程中,如果出现 Follower 节点崩溃或者 Leader 进程崩溃时,都会通过 Zab协议来保证数据一致性。也就是分布式理论的CP,不保证高可用。ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。消息广播集群中所有的事务请求都由 Leader 节点来处理

2021-03-20 09:04:07 182

原创 面试专题:简述RabbitMQ的架构设计

RabbitMQ采用的是AMQP协议,使用的是TCP协议,长连接。Broker: rabbitmq的服务节点Queue: 队列,是RabbitMQ的内部对象,用于存储消息,RabbitMQ 中消息只能存储在队列中,生产者投递消息到队列,消费者从队列中获取消息并消费,多个消费者可以订阅同一个队列,这是队列中的消息会被平均分摊(轮询)给多个消费者进行消费,而不是每个消费者都收到所有的消息进行消费。(注意:RabbitMQ不支持队列层面广播消费,如果需要广播消费,可以采用一个交换器通过路由key绑定多个队列,

2021-03-19 13:47:25 342

原创 面试专题:什么是Hystrix?简述实现机制

SpringCloud 的重要组件分布式容错框架阻止故障的连锁反应,实现熔断快速失败,实现优雅降级提供实时的监控和告警资源隔离:线程隔离、信号量隔离线程隔离:Hystrix 会给每一个Command分配一个单独的线程池,这样在进行单个服务调用的时候,就可以在独立的线程池里面进行,而不会对其它线程池造成影响信号量隔离:客户端向依赖服务发起请求时,首先要获取一个信号量才能真正发起调用,由于信号量的数量优先,当发生请求量超过信号量个数时,后续的请求都会直接拒绝,进入 fallback流程。信号

2021-03-18 13:35:45 890

原创 面试专题:苹果树(Qtrade)二面三面

如何实现

2021-03-18 05:53:48 698 2

原创 面试专题:CAP理论、BASE理论

Consistency(一致性):即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致。对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。Availablity(可用性)即服务一直可用,而且是正常的响应时间。系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。Partition Tolerance(分区容错性)即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一

2021-03-16 17:01:07 277

原创 03 | 事务隔离:为什么你改了我还看不见?

提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转100块钱,而此时你的银行卡只有 100 块钱。转账过程具体到程序里有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这100块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了吗?这时就要用到“事务”这个概念了。简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL 中,.

2021-03-16 13:23:34 104

原创 我要进大厂:01 | CopyOnWriteArrayList

现在开始做准备,年底再出发,每天努力一点,每天就离目标更近一点,加油,89老少年!直接从源码开始认识 CopyOnWriteArrayList,它是线程安全的,从 jdk1.5开始就有了。public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable CopyOnWriteArrayList 的实现接口没有 ArrayLis.

2021-03-12 18:44:22 103

原创 面试专题:Oppo复盘

面试时长:28分钟线程池运行原理?创建线程池参数的含义?ArrayBlockingQueue作用及实现原理?参考答案:ArrayBlockingQueue是一个阻塞式的队列,继承自AbstractBlockingQueue,间接的实现了Queue接口和Collection接口。底层以数组的形式保存数据(实际上可看作一个循环数组)。常用的操作包括 add,offer,put,remove,poll,take,peek。常用集合?TreeMap原理?CopyOnWriteArrayList原理

2021-03-11 20:29:34 119

原创 面试专题:开思时代复盘

面试时长:48分钟双面试官redis为什么这么快,sex有没有什么问题String的new比较,字符串的创建流程是怎么样的?在内存怎么分配空间mysql 语句的执行流程?用过哪些优化策略binlog记录的是什么内容,是否会记录查询语句?hashset是怎么做对象比较的,如何做到去重的?hashmap的使用原理redis怎么实现的,用的什么模式,同步原理是什么?提示:一万多分段多线程内存模型设计模式,spring用到哪些设计模式雪花算法怎么实现集群不同配置的,是否统一配置分配spri

2021-03-10 20:00:52 292

原创 面试专题:QTrade(苹果树)面试复盘

今天参加了苹果树的面试,整体面试难度还好,问题涉及的范围很广,顺序和内容也比较杂,可能是面试官比较年轻的原因。面试时长:35分钟CPU百分百怎么定位?这个问题频率好高,一着急,jstack命令都忘记了,linux的还要看一看热点Key瞬间1万次 I/O打穿到 Redis 怎么处理?场景分析的部分还是要仔细思考,没给出方案最可怕了。面试题指出:数据库中间件 MyCat 是否有使用过,原理?的确没用过,不能蒙非数据库类存储中间件使用过哪些?还是不知道,只答了Apache 的工具类了,底子薄状态机是

2021-03-09 18:53:25 715

原创 面试专题:分布式架构下,Sesion共享有什么方案

采用无状态服务,摒弃Session(比如使用Jwt)可以存入Cookie(因为Cookie是客户端存储,可能导致信息暴露,有安全风险)服务器之间进行Session同步,这样可以保障每台服务器都有当前的Session信息,不过当服务器比较多的时候,同步是会有延迟问题或者同步失败IP绑定策略 使用ngnix(或者其他负载均衡硬件,比如F5)中的IP 绑定策略,同一个IP只能在同一台服务器访问,但是这样做就失去了多次均衡的意义,当挂掉一台服务器的时候,会影响一批用户的使用。现在互联网都在推行..

2021-03-08 18:39:51 87 2

原创 面试专题:中间件——缓存

为什么要使用缓存(一)性能 如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL(比如业务基础数据、假期数据等),就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。题外话:忽然想聊一下这个迅速响应的标准。其实根据交互效果的不同, 这个响应时间没有固定标准。不过曾经看到过一篇文章:“在理想状态夏,我们的页面跳转需要在瞬间解决,对于页面内操作则需要在刹那间解决。另外,超过一弹指的耗时操作要有进度提示,并且可以随时中止或取消,这样才能给用户最好的体验。”那么

2021-03-08 13:10:53 173 1

原创 面试专题:谈谈你对ThreadLocal的理解

ThreadLocal 解决了什么问题?内部源码是怎么样的?作用:为每个线程创建一个副本,实现在线上的上下文传递对象例子1:证明 ThreadLocal 为每个线程创建一个副本public class ThreadLocalTest { private static final ThreadLocal<Long> threadLocal = new ThreadLocal<>(); public static void main(String[] args)

2021-03-05 13:17:46 210

原创 02 | 日志系统:一条SQL更新语句是如何执行的

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?...

2021-03-05 08:03:46 137

原创 MyBatis传参的时候 # 和 $ 有何区别,哪个可以防注入,防注入的原理是啥?jdbc是如何防sql注入的

MyBatis传参的时候 # 和 $ 有何区别1)#方式能够很大程度防止sql注入,Mybatis会把这个参数认为是一个字符串,直接转为字符串。2)$ 方式一般用于传入数据库对象,例如传入表名、字段名,$方式的参数会直接参与SQL编译,从而不能避免注入攻击,无法防止 Sql注入 。3)从安全性上考虑,能使用#尽量使用#来传参,因为这样可以有效防止SQL注入的问题。使用 # 引用参数的时候,例如传入参数是param=“WeBank”,那么在SQL(Select * from tmp where name

2021-03-02 19:07:09 511

原创 面试专题:微众面试复盘

今天参加了微众的面试,时间越长越紧张,源码细节,代码的系列不扎实的问题就逐渐暴露出来了,趁着没忘,先记下,后续补充答案,面试题无序面试时长:63分钟cpu突然彪高到100%怎么处理?我答:使用top命令查看占用比例最大的进程,用jstack查看具体的内容,jmap查看对象信息参考答案:如何做T-1天的数据表备份我答:使用分区按时分秒,面试官说不对,我说使用临时表?面试官提示用分页,然后紧接着问分页越往后越慢怎么处理?参考答案:可以使用分页,越往后面用子查询。待补充编程式 jdbc创建的事务

2021-03-01 22:39:24 370

原创 面试专题:Spring框架中使用了哪些设计模式及应用场景

当前问题主要考察开发人员是否阅读过Spring源码,如果没有读过源码的话,可能只是听说过,现在将所有设计模式用在哪些地方和使用场景整理如下:简单工厂:有一个工厂类根据传入的参数,动态决定应该创建哪一个产品类Spring中的BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。工厂方法:定义一个用于创建对象的接口,让子类绝对实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。实现了F

2021-02-27 21:13:39 1331

原创 面试专题:描述一下Spring Bean的生命周期

Spring Bean的生命周期是Spring中面试频率相当高的面试题,如果了解bean的生命周期对于Spring的扩展和运行流程可以掌握的很好,这个问题主要考察开发人员对执行的流程和以及有哪些扩展点,对我们写代码也会有很多帮助。个人整理归纳答案如下解析类得到BeanDefintion如果有当前类有多个构造方法,则要推断构造方法确定好构造方法后,进行实例化得到一个对象对对象中的加了@Autowired (@Inject @Resource等)注解的属性进行属性填充回调Aware方法,比如Bean

2021-02-27 20:07:25 1092

原创 面试专题:为什么使用线程池?线程池参数原理

为什么使用线程池?降低资源消耗:提高线程的利用率,降低线程创建和销毁的资源消耗提高响应速度:任务来了,直接有线程可用可执行,不需要先创建线程,再执行。对线程进行统一管控处理:线程是稀缺资源,使用线程池可以统一分配调优监控。线程池参数详解corePoolSize 代表核心线程数,也就是正常情况下创建工作的线程数。这些线程创建后并不会消除,而是一种常驻线程。maxinumPoolSize 代表的是最大线程数,它与核心线程数相对应,表示最大允许被创建的线程数,比如当前任务较多,将核心线程数都用完

2021-02-27 17:24:03 283

原创 面试专题:sleep()、wait()、join()、yield()的区别

1.锁池所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其它线程需要在这个锁池进行等待,当前面的线程释放同步锁侯锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。2.等待池当我们调用wait() 方法后,线程会放到等待池中,等待池的线程是不会去竞争同步锁。只有调用了notify() 或notifyAll() 后等待池的线程才会开始去竞争锁,notify() 是随机从等待池选出一个线程放到锁池,而notifyAll() 是将等待池的所有线

2021-02-26 16:10:35 212 1

原创 01 | 基础架构:一条SQL查询语句是如何执行的?

这是专栏的第一篇文章,我向来跟你聊聊MySQL的基础架构,我们经常说,看一个事儿不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高纬度理解问题。同样,对于MySQL的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时:mysql> select * from T where ID=10我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL的内部的执行过程。所以今天我想和你一起把MySQL拆解.

2021-02-22 11:11:07 158 3

原创 MySQL实战45讲

目录01 | 基础架构:一条SQL查询语句是如何执行的?02 | 日志系统:一条SQL更新语句是如何执行的?03 | 事务隔离:为什么你改了我还看不见?04 | 深入浅出索引(上)05 | 深入浅出索引(下)06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?07 | 行锁功过:怎么减少行锁对性能的影响?08 | 事务到底是隔离的还是不隔离的?09 | 普通索引和唯一索引,应该怎么选择?10 | MySQL为什么有时候会选错索引?11 | 怎么给字符串字段加索引?12 | 为什么我的MySQL会“抖”.

2021-02-16 16:52:36 263

原创 06 | Stream如何提高遍历集合效率?

上一讲中,我在讲List集合类,那我想你一定也知道集合的顶端接口Collection,在Java8中,Collection新增了两个流方法,分别时stream()和parallealStream()。 default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); } default Stream<E> parallelStream() { .

2021-02-07 09:58:48 164

原创 阿里巴巴Java性能调优实战(2021华山版)

目录一、概述01 | 如何制定性能调优标准?02 | 如何制定性能调优策略?二 、Java 编程性能调优03 | 字符串性能优化不容小觑,百M内存轻松存储几十G数据04 | 慎重使用正则表达式05 | ArrayList还是LinkedList?使用不当性能差千倍06 | Stream如何提高遍历集合效率?07 | 深入浅出HashMap的设计与优化三、多线程性能调优08 | 网络通信优化之I/O模型:如何解决高并发下I/O瓶颈?09 | 网络通信优化之序列化:避免使用Java序.

2021-02-04 08:52:28 936 2

原创 05 | ArrayList还是LinkedList?使用不当性能差千倍

集合作为一种存储数据的容器,是我们日常开发中使用最频繁的对象类型之一。JDK为开发者提供了一系列的集合类型,这些集合类型使用不同的数据结构来实现。因此,不同的集合类型,使用场景也不同。很多同学在面试的时候,进场会被问到集合的相关问题,比较常见的有ArrayList和LinkedList的区别。相信大部分同学都能回答上:“ArratList是基于数组实现,LinkedList是基于链表实现。”。而在回答使用场景的时候,我发现大部分同学的答案是:“ArrayList和LinkedList在新增、删除元素.

2021-02-03 18:58:30 313

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除