上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页
摘要: 简要回答 线程池是一种池化技术,用于预先创建并管理一组线程,避免频繁创建和销毁线程的开销,提高性能和响应速度 它几个关键的配置包括:核心线程数、最大线程数、空闲存活时间、工作队列、拒绝策略 主要工作原理如下: 当线程池里存活的线程数小于核心线程数corePoolSize时,这时对于一个新提交的任务, 阅读全文
posted @ 2025-06-09 09:00 程序员Seven 阅读(515) 评论(2) 推荐(4)
摘要: 题目描述 在⼀个⼆维数组中(每个⼀维数组的⻓度相同),每⼀⾏都按照从左到右递增的顺序排序,每⼀列都按照从上到下递增的顺序排序。请完成⼀个函数,输⼊这样的⼀个⼆维数组和⼀个整数,判断数组中是否含有该整数。 例⼦,输⼊⼀个数组: num[3][4] = [ 1 , 4 , 6 , 28 , 2 , 7 阅读全文
posted @ 2025-06-06 09:00 程序员Seven 阅读(72) 评论(0) 推荐(0)
摘要: 力扣链接 题意 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4], k = 2 输出: 阅读全文
posted @ 2025-06-05 09:00 程序员Seven 阅读(94) 评论(0) 推荐(0)
摘要: 回答重点 synchronized 实现原理依赖于JVM 的 Monitor(监视器锁)和对象头(Object Header) synchronized 修饰代码块:会在代码块的前后插入 monitorenter 和 monitorexit 指令。可以把 monitorenter理解为加锁,moni 阅读全文
posted @ 2025-06-04 09:00 程序员Seven 阅读(392) 评论(0) 推荐(2)
摘要: find命令 - 根据路径和条件搜索指定文件 ind命令的功能是根据给定的路径和条件查找相关文件或目录,其参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员必须掌握的命令之一。 find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、wh 阅读全文
posted @ 2025-06-03 09:00 程序员Seven 阅读(644) 评论(1) 推荐(2)
摘要: 多线程环境下,使用Hashmap进行put操作会造成数据覆盖,应该使用支持多线程的 ConcurrentHashMap。 HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行put操作,调用了HashMap的putVal(),具体原因: 假设两个线程A、B都在进行put操作 阅读全文
posted @ 2025-05-30 09:00 程序员Seven 阅读(373) 评论(0) 推荐(1)
摘要: 题目描述 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。 如输入{1,2,3}的链表如下图: 返回一个数组为[3,2,1] 0 <= 链表长度 <= 10000 示例1 输入: {1,2,3} 返回值: [3,2,1] 示例2 输入: {67,0,24,58} 返回值: 阅读全文
posted @ 2025-05-29 09:00 程序员Seven 阅读(67) 评论(0) 推荐(0)
摘要: cat命令 - 在终端设备上显示文件内容 cat命令来自英文词组concatenate files and print的缩写,其功能是在终端设备上显示文件内容。在Linux系统中有很多用于查看文件内容的命令,例如more、tail、head等,每个命令都有各自的特点。cat命令适合查看内容较少的纯文 阅读全文
posted @ 2025-05-27 09:00 程序员Seven 阅读(489) 评论(0) 推荐(0)
摘要: MV命令 - 移动或改名文件 mv命令来自英文单词move的缩写,中文译为“移动”,其功能与英文含义相同,能够对文件进行剪切和重命名操作。这是一个被高频使用的文件管理命令,需要留意它与复制命令的区别。cp命令是用于文件的复制操作,文件个数是增加的,而mv则为剪切操作,也就是对文件进行移动(搬家)操作 阅读全文
posted @ 2025-05-26 09:00 程序员Seven 阅读(217) 评论(0) 推荐(0)
摘要: 假设有一个 1G 大的 HashMap,此时用户请求过来刚好触发它的扩容.那么当前用户请求会被阻塞,因为 HashMap的底层是基于数组+链表(红黑树)来实现的,一旦它发生扩容,就需要新增一个比之前大2倍的数组,然后将元素copy到新的数组上 那么如何优化呢? 简要回答 此时可以借鉴 Redis 的 阅读全文
posted @ 2025-05-23 09:00 程序员Seven 阅读(131) 评论(0) 推荐(0)
摘要: 简要回答 如果刚好触发扩容,那么当前用户请求会被阻塞,因为 HashMap的底层是基于数组+链表(红黑树)来实现的,一旦它发生扩容,就需要新增一个比之前大2倍的数组,然后将元素copy到新的数组上 而 1G 的 HashMap 够大,所以扩容需要一定的时间,而扩容使用的又是当前的线程,所以用户此时会 阅读全文
posted @ 2025-05-22 09:00 程序员Seven 阅读(664) 评论(5) 推荐(0)
摘要: 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目 阅读全文
posted @ 2025-05-21 09:00 程序员Seven 阅读(338) 评论(0) 推荐(1)
摘要: 消息存储 消息存储核心类 private final MessageStoreConfig messageStoreConfig; //消息配置属性 private final CommitLog commitLog; //CommitLog文件存储的实现类 private final Concur 阅读全文
posted @ 2025-05-20 09:00 程序员Seven 阅读(292) 评论(0) 推荐(0)
摘要: NameServer 架构设计 消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送到消费者(Push模式)或者消费者主 阅读全文
posted @ 2025-05-19 09:00 程序员Seven 阅读(489) 评论(0) 推荐(0)
摘要: 关于深拷贝和浅拷贝区别,先给结论: 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。 深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。 clone 阅读全文
posted @ 2025-05-16 09:15 程序员Seven 阅读(135) 评论(0) 推荐(0)
摘要: 消息存储 分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。 消息生成者发送消息 MQ收到消息,将消息进行持久化,在存储中新增一条记录 返回ACK给生产者 MQ push 消息给对应的消费者,然后等待消费者返回ACK 如果消息消费者在指定时间内成功返回ack,那么MQ认为消息消费成功,在存储 阅读全文
posted @ 2025-05-15 09:15 程序员Seven 阅读(597) 评论(0) 推荐(1)
摘要: 前言 生产者-消费者模式是一个十分经典的多线程并发协作模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深。这也是校招常见面试手撕题 所谓的生产者-消费者,实际上包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域 阅读全文
posted @ 2025-05-14 09:15 程序员Seven 阅读(107) 评论(0) 推荐(0)
摘要: 泛型的代码只存在于编译阶段,在进入JVM之前,与泛型相关的信息会被擦除掉,称之为类型擦除。 无限制类型擦除:当在类的定义时没有进行任何限制,那么在类型擦除后将会被替换成Object,例如<T>、<?> 都会被替换成Object。 有限制类型擦除:当类定义中的参数类型存在上下限(上下界),那么在类型擦 阅读全文
posted @ 2025-05-13 09:15 程序员Seven 阅读(129) 评论(0) 推荐(0)
摘要: 概述 在支付场景中,支付成功后利用RabbitMQ通知交易服务,更新业务订单状态为已支付。但是大家思考一下,如果这里MQ通知失败,支付服务中支付流水显示支付成功,而交易服务中的订单状态却显示未支付,数据出现了不一致。此时前端发送请求查询支付状态时,肯定是查询交易服务状态,会发现业务订单未支付,而用户 阅读全文
posted @ 2025-05-12 09:15 程序员Seven 阅读(1275) 评论(0) 推荐(1)
摘要: RabbitMQ介绍 RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址: Messaging that just works — RabbitMQ 接下来,我们就学习它的基本概念和基础用法。 安装 在安装命令中有两个映射的端口: 15672:RabbitMQ提供的管理控制台的 阅读全文
posted @ 2025-05-09 19:33 程序员Seven 阅读(433) 评论(0) 推荐(1)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页