自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 后端面经记录

数据库相关问题摘要 INT类型括号长度:仅用于显示宽度(如ZEROFILL补零),不影响存储和计算,可不设置。 INT(11)与INT(5):括号数字仅控制显示格式,不影响实际存储。INT(11)显示100为"00000000100"(ZEROFILL时),INT(5)显示100000仍为原值。 日期类型选择:跨国系统推荐TIMESTAMP(自动时区转换),但需注意2038年限制;备选方案是datetime+应用层时区处理。 VARCHAR长度:最大长度受字符集影响(utf8mb4约16

2025-12-18 15:40:57 627

原创 AOP 的实现原理是动态代理,动态代理有什么缺陷呢?

文章摘要 AOP动态代理的缺陷 动态代理是Spring AOP的核心实现方式,包括JDK动态代理和CGLIB动态代理,但存在适用范围、性能开销、功能限制等固有缺陷。JDK代理要求目标类必须实现接口,而CGLIB无法代理final类或方法。动态代理的性能开销主要体现在运行时生成代理类和反射调用上,且无法代理私有方法或内部调用。调试复杂度和兼容性问题也是动态代理的短板。解决方案包括规避final修饰、拆分内部调用或改用AspectJ编译期织入。 反射的缺点 反射机制虽然灵活,但存在显著性能开销,比静态调用慢50

2025-12-17 09:41:42 417

原创 concurrent hashmap原理,扩容,扩容时怎么保证线程安全?

摘要: ConcurrentHashMap(CHM)是JUC包下的并发安全哈希表,JDK1.7采用分段锁(Segment),1.8优化为Node数组+CAS+桶级synchronized,锁粒度更细。扩容机制上,1.7为Segment内局部扩容,1.8支持多线程协助全局扩容,通过sizeCtl状态控制、ForwardingNode占位和桶级锁保障线程安全。1.8的设计在扩容时仍保持高并发读写,通过四层机制(状态标识、CAS、synchronized和转发节点)确保数据一致性,性能显著优于1.7版本。

2025-12-16 16:21:30 568

原创 redis和mysql有什么区别,以及redis和mysql都有什么缺点,以及什么地方redis不如mysql?

Redis与MySQL的核心差异源于设计定位不同:Redis作为内存型NoSQL数据库,主打高性能读写,适合缓存、高频数据存取;MySQL作为磁盘型关系数据库,侧重数据持久化、事务一致性和复杂查询。Redis的劣势包括内存成本高、数据容量受限、事务能力弱、持久化风险大、缺乏复杂查询支持等。MySQL则在强事务、海量存储、复杂分析、数据完整性等方面表现更优。两者互补而非替代,业务中通常组合使用——Redis处理热点数据,MySQL存储核心业务数据。选择时需根据场景需求权衡性能、成本与功能完备性。

2025-12-16 10:49:10 994

原创 为什么要有虚拟内存,直接访问物理内存不可以吗,怎么理解内存隔离性,还有就是为什么要划分用户态和内核态?

摘要: 虚拟内存解决了物理内存直接访问的冲突、碎片化和利用率问题,通过虚拟地址映射和页表管理实现内存隔离与安全。内存隔离性确保进程间互不干扰,是多任务运行的基础。用户态/内核态的划分通过CPU权限分级,限制用户程序直接操作内核和硬件,必须通过系统调用访问特权资源,保障系统安全稳定。三者共同支撑现代操作系统的多任务、高可用特性。例如,Java程序OOM不会影响其他进程,因其拥有独立虚拟内存空间;用户程序读写磁盘需通过系统调用陷入内核态,由内核统一处理硬件操作。

2025-12-16 10:36:16 537

原创 操作系统是怎么创建进程和线程的?

本文从底层原理角度解析了操作系统创建进程和线程的关键差异。进程创建需要分配独立资源(内存、文件描述符等),涉及PCB分配、内存空间初始化等开销较大的操作;线程创建则仅需分配TCB和独立栈空间,共享进程资源,开销显著降低。文章详细对比了两者的系统调用流程、核心数据结构和性能差异,并延伸至Java开发场景,说明Java线程与OS内核线程的对应关系及线程池的性能优化原理。理解这些底层机制有助于开发者设计高效并发系统,如合理配置线程池参数等。

2025-12-16 10:04:48 721

原创 kafka选型

本文针对秒杀项目中的Kafka选型问题,从业务需求和技术特性两方面进行结构化分析。重点对比了Kafka与RabbitMQ在高并发场景下的表现,突出Kafka在吞吐量(百万级TPS)、可靠性(多副本机制)和扩展性(分区机制)方面的优势。同时阐述了Kafka消息回溯能力对故障恢复的帮助,以及其与SpringBoot技术栈的良好兼容性。最终结论表明,Kafka的高吞吐、高可靠和易扩展特性完美契合秒杀项目需求,是更优的选型方案。

2025-12-15 10:10:55 910

原创 ConcurrentHashMap size () 流程

本文深入解析了 ConcurrentHashMap 的 size() 方法在不同JDK版本中的实现差异。JDK7采用分段锁机制,通过3次无锁尝试失败后加全局锁保证计数准确性;JDK8则基于无锁设计,使用 baseCount 和 CounterCell[] 实现分段计数,始终返回近似值以换取更高性能。文章对比了两者在并发控制、计数准确性和性能上的核心差异,并解答了常见面试问题,揭示了并发容器在计数准确性与性能之间的权衡思路。

2025-12-13 16:52:22 625

原创 kafka和其他消息队列的区别

摘要: Kafka与其他消息队列(RabbitMQ、RocketMQ等)的核心差异源于设计目标不同。Kafka定位为高吞吐分布式日志系统,侧重持久化存储与批量处理,通过分区扩展、顺序写磁盘和零拷贝实现百万级TPS,适配大数据流处理;而RabbitMQ等侧重即时消息投递,提供灵活路由、低延迟(微秒级)和事务支持,适合业务解耦。RocketMQ则平衡吞吐与可靠性,支持金融级场景。选型需权衡吞吐、延迟、功能(如事务/回溯)及生态适配(如Kafka整合Flink)。关键区别在于Kafka是“存储优先”,其他MQ是“

2025-12-13 14:58:24 891

原创 bio、nio、aio的区别以及使用场景

本文分析了Java中三种IO模型(BIO/NIO/AIO)的核心差异。BIO采用同步阻塞方式,每个连接需要单独线程处理,编程简单但并发能力差;NIO通过Selector多路复用实现同步非阻塞,单线程可处理多连接,适合高并发场景;AIO基于异步非阻塞模型,由操作系统完成IO操作后回调通知,性能最高但编程复杂。文章从原理、代码示例、优缺点等方面进行对比,指出BIO适合简单场景,NIO广泛应用于高并发网络服务(如Netty),而AIO依赖操作系统支持,适合耗时IO操作。三种模型在阻塞/非阻塞、同步/异步两个维度上

2025-12-12 19:59:48 930

原创 springai和langchain4j的区别

Spring AI与LangChain4j深度对比:架构上,Spring AI深度集成Spring生态,采用配置驱动和注解简化开发,适合企业级应用;LangChain4j则强调灵活组装,支持更丰富的LLM应用编排。功能方面,LangChain4j在RAG流程、记忆管理、工具调用等场景表现更全面,而Spring AI在配置管理和异常处理上更便捷。开发体验上,Spring AI代码更简洁,LangChain4j则提供更多底层控制。选择时需权衡:若追求开发效率与Spring整合选Spring AI,若需要复杂AI

2025-12-11 16:00:45 1069

原创 sse和websocket的区别

SSE与WebSocket是两种服务器推送技术,核心区别在于通信模式:SSE基于HTTP实现单向推送,简单轻量且内置重连机制;WebSocket则是全双工协议,支持双向实时交互但实现更复杂。SSE适合通知、监控等单向场景,开发成本低;WebSocket适用于聊天、游戏等双向交互需求。技术选型应基于实际场景需求,避免过度设计。

2025-12-11 15:59:35 907

原创 单例模式什么时候用饿汉什么时候用懒汉

单例模式中饿汉式与懒汉式的选择取决于实例初始化成本、使用频率和线程安全需求。饿汉式在类加载时初始化,适合必用、轻量且无外部依赖的场景(如日志工具)。懒汉式延迟初始化,适用于可能不用、初始化成本高或依赖动态资源的场景(如AI客户端),但需处理线程安全问题。关键区别在于初始化时机:饿汉式预加载无延迟但可能浪费资源,懒汉式按需加载更节省资源但首次调用有延迟。选择时应权衡资源占用与性能需求。

2025-12-09 15:30:31 398

原创 Mysql数据库一张表存多少数据合适

MySQL单表数据量的合理范围通常在500万~2000万行(InnoDB引擎),主要基于B+树索引的3层高度设计,可保持最优查询性能(3次磁盘IO)。影响具体数值的关键因素包括表结构复杂度、索引数量、查询模式和硬件配置。超过阈值时,性能会因B+树增高、索引维护开销增大而明显下降。解决方案包括分库分表(水平/垂直拆分)、分区表等,将数据量控制在合理范围内。核心原则是平衡查询/写入性能与维护成本,避免单表过大导致的性能问题。

2025-12-06 15:40:19 771

原创 Redis用了什么机制来保证他快,是怎么保证每个请求都耗时差不多的时间?

Redis 的高性能源于多维优化:纯内存存储避免磁盘IO瓶颈,单线程模型减少锁竞争和切换开销,定制化数据结构(如跳表、哈希表)确保O(1)/O(logN)操作效率,配合IO多路复用支撑高并发。为保持请求耗时均匀,Redis通过禁用长耗时命令(如用SCAN替代KEYS)、异步处理大键删除/持久化、严格控制命令执行时间(微秒级)以及集群分片等措施,确保单线程不被阻塞。其设计核心是"做减法"——仅保留高效操作,消除一切潜在阻塞点,从而实现亚毫秒级响应且无长尾波动的稳定性能。

2025-12-06 15:34:23 756

原创 Mysql底层的数据结构,为什么用B+树,如果在内存中,B树和B+树查询效率怎么样

MySQL选择B+树而非B树的核心原因是适配磁盘存储场景,减少IO次数。B+树非叶子节点仅存索引,使树高更低,查询IO次数更少;叶子节点链表化优化范围查询;查询效率稳定且内存缓存命中率高。在内存中,B+树在范围查询和全表扫描上仍优于B树,仅在特定等值查询时B树略优。数据结构选择取决于存储介质和查询场景,B+树是数据库场景的最优解。

2025-12-06 15:16:41 771

原创 fork函数缺点

摘要: fork函数的核心缺陷在于全量复制父进程资源的设计,导致高开销、行为不一致等问题。主要缺点包括: 极高复制开销:即使采用写时复制(COW),仍需复制页表和资源,高频fork会严重消耗CPU; COW隐性陷阱:内存碎片、性能抖动及失效场景; 资源继承问题:锁死锁、文件描述符泄漏和信号处理混乱; fork+exec冗余:复制的资源在exec时被丢弃,效率低下; 多线程不兼容:仅复制当前线程,继承锁易导致死锁。 优化方案包括:使用posix_spawn/vfork替代,进程池复用,或改用线程/协程。现代高

2025-12-05 16:08:04 575

原创 进程线程、协程和虚拟线程之间有啥区别

本文从调度方式和资源开销两个维度对比了进程、线程、协程和虚拟线程的区别。进程由内核调度,资源隔离但开销大;线程共享进程资源,内核调度开销中等;协程由用户态调度,轻量级但需非阻塞IO支持;虚拟线程由JVM调度,兼具轻量级和易用性。关键区别在于调度责任从内核逐步下放到JVM/用户态,实现开销递减而并发能力递增。虚拟线程通过M:N映射复用OS线程,既支持高并发又兼容阻塞IO,是当前Java等语言的优选方案。

2025-12-05 15:32:37 534

原创 匿名管道为什么只能在父子进程间通信,而命名管道就可以允许无亲缘关系的进程通信

摘要:匿名管道和命名管道的核心差异在于是否有文件系统级的全局标识。匿名管道通过pipe()创建,仅在内核开辟缓冲区,没有文件系统路径,只能通过进程文件描述符(fd)访问,因此仅限父子进程通信。命名管道通过mkfifo()创建,会在文件系统中生成管道文件作为全局标识,任何进程只要知道路径就能通过open()获取fd访问同一缓冲区,从而支持无亲缘关系进程通信。两者的内核缓冲区本质相同,区别在于"如何找到缓冲区"的机制不同。

2025-12-05 10:25:23 617

原创 如果线上一个接口出现了超时情况,你会怎么去排查问题?

摘要:线上接口超时排查全链路方案 本文提出结构化排查方案,分为三个核心步骤: 快速定位故障范围(5分钟内): 通过接口维度(单接口/全局)、实例维度(单实例/全实例)、时间维度(突发/渐进)缩小排查边界 利用监控工具(Prometheus/SkyWalking)分析响应时间、成功率等指标 逐层拆解排查: 应用层:检查日志链路耗时、线程池状态、JVM GC情况、连接池状态 网络层:排查网关限流、负载均衡、网络延迟和带宽问题 依赖层:分析数据库慢查询/锁、Redis性能、第三方服务状态 资源层:检查服务器CPU

2025-12-03 20:49:45 962

原创 在 MySQL 中如何快速的去复制一张表,包括表结构和数据?

MySQL复制表结构和数据的4种核心方法: CREATE TABLE...SELECT:快速复制小表,但不保留约束和索引,适合简单测试场景。 CREATE TABLE...LIKE + INSERT:完整复制结构(含约束)后再插入数据,是生产环境首选,支持分批次插入优化性能。 mysqldump工具:通过导出SQL脚本实现跨实例复制,适合超大表或备份场景,可配合参数优化导出效率。 物理文件复制:直接复制底层数据文件,效率最高但风险较大,仅适用于同版本MySQL的超大表(1亿+行)。 面试建议:优先选择方法2

2025-12-02 19:53:06 939 1

原创 http和rpc的区别

摘要: HTTP是通用的应用层协议,基于文本协议(如JSON)和标准格式,适合跨平台、对外接口等场景,但性能较低;RPC是远程调用框架,采用二进制协议和高效序列化,优化了传输效率和服务治理,适合内部微服务高频调用。核心区别在于设计目标——HTTP注重通用性,RPC追求性能与易用性。实际选型需结合场景:对外服务用HTTP(如RESTful API),内部高性能交互用RPC(如Dubbo/gRPC)。HTTP/2和gRPC等技术的出现缩小了性能差距,但RPC在服务治理和调用体验上仍有优势。

2025-12-02 19:37:02 862

原创 项目中如何排查解决慢接口问题

摘要:排查慢接口问题需结合监控工具定位瓶颈、分层分析和针对性优化。首先通过APM工具和日志埋点确定慢接口及耗时环节,检查服务器资源使用情况。然后从代码逻辑、缓存、数据库和外部依赖四层分析原因,如冗余操作、缓存未命中、慢查询或锁竞争等。优化措施包括代码逻辑简化、缓存命中率提升、SQL索引优化和异步化处理。以秒杀项目为例,通过索引优化和Redis查询简化,将接口响应时间从3s降至100ms内。核心思路是精准定位瓶颈,分层拆解问题,针对性优化后通过压测验证效果。

2025-11-29 14:47:28 639

原创 如果用户反映页面跳转得非常慢,该如何排查

页面跳转慢是典型的全链路性能问题,排查需遵循先定位范围、再分环节深挖、最后验证优化的逻辑。首先通过影响面和跳转类型快速定位问题范围(前端/网络或后端/服务)。然后分环节深度排查:前端/网络层面关注资源加载和网络延迟;Nginx层面检查连接数和缓存配置;后端服务层面分析接口执行耗时和线程池状态;数据库层面排查慢SQL和连接池问题;中间件层面检查Redis命中率和MQ队列堆积。每个环节都提供具体工具和常见原因,形成系统化的排查流程。

2025-11-29 10:43:18 767

原创 1、nginx反向代理了解吗?怎么配置nginx服务器?nginx负载均衡的算法都有哪些? 2、后端服务器宕机了,nginx服务器是怎么检查的

Nginx 反向代理通过中间层转发请求,隐藏后端服务器并实现负载均衡。核心配置包括定义 upstream 集群、设置 proxy_pass 转发规则及优化参数。Nginx 提供多种负载均衡算法:轮询(默认)、权重轮询、IP 哈希和最少连接数等,适用于不同场景。健康检查机制分为被动检查(基于请求失败次数)和主动检查(需第三方模块),通过 max_fails 和 fail_timeout 参数控制故障转移。配置完成后需执行 nginx -t 检查语法,再 reload 生效。该机制确保后端故障时自动剔除不可用节

2025-11-29 10:15:30 671

原创 先更新数据库,再删除缓存;然后从库读取数据,读取到脏数据怎么办?延迟二次删除缓存,删除时间如何确定?

本文分析了数据库主从同步与缓存更新导致的脏数据问题,核心原因是主从同步延迟大于缓存删除后的首次读取时间。提出了三种主要解决方案:1)延迟二次删除缓存(成本最低);2)读主库兜底(强一致性);3)基于binlog的缓存更新(最终一致性)。重点阐述了延迟时间T的计算方法,建议T≥主从同步峰值延迟的1.5-2倍加网络冗余。最后指出缓存过期时间作为兜底策略,并对比了不同方案的适用场景。该问题解决方案需权衡一致性与性能,实际应用中建议优先考虑延迟二次删除方案。

2025-11-27 18:51:03 313

原创 redis实现漏桶算法--https://blog.youkuaiyun.com/m0_74908430/article/details/155076710

本文介绍了基于Redis实现漏桶限流算法的方法。漏桶算法通过固定速率处理请求来平滑流量,防止系统过载。实现方案使用Redis的Hash结构存储漏桶状态(容量、速率、当前水量和最后漏水时间),并通过Lua脚本保证操作的原子性。脚本逻辑包括计算漏水量、更新状态和判断请求是否允许通过。Java示例展示了如何调用该脚本。该方案具有原子性、高性能等优点,但也需注意内存占用和时间精度问题,同时与令牌桶算法相比更适合需要严格平滑流量的场景。

2025-11-24 15:28:22 759 1

原创 redis为什么快,除了基于内存和单线程、io多路复用的原因,还有什么原因?

摘要: 缓存雪崩导致SQL宕机时,需分三阶段处理: 秒级止损:网关限流降级非核心接口,数据库设只读模式,Redis应急处理(热点key永不过期或切本地缓存); 分钟级恢复:逐步放开核心表写权限,缓存预热核心数据,灰度恢复非核心业务; 长期预防:缓存过期时间随机化、集群高可用,数据库读写分离+分库分表,架构层熔断/降级/限流。 根因多为key集中过期、缓存宕机或穿透,需通过监控告警和定期演练提前防范。核心原则:先阻断流量保护数据库,再恢复服务,最终优化架构防复发。

2025-11-24 09:40:56 227

原创 jvm中oom怎么解决

JVM OOM(OutOfMemoryError)的解决关键在于精准定位原因,主要分为堆溢出、栈溢出、元空间溢出等类型。通过分析OOM日志和堆快照(MAT工具)可识别内存泄漏点或配置不足问题。解决方案包括:调整JVM参数(-Xmx、-XX:MaxMetaspaceSize等)、优化代码(避免静态集合泄漏、及时释放资源)、合理使用线程池等。排查工具推荐jps、jstat监控运行状态,结合jmap导出堆快照分析。针对不同OOM类型需采取针对性措施,如堆溢出优先检查内存泄漏,元空间溢出则限制类加载量。

2025-11-22 10:16:13 848

原创 Redis查询很慢的话,如何排查?主要原因?

Redis查询慢的排查流程:「慢查询日志定位命令→INFO/系统工具找资源瓶颈→大key/热key排查→集群/网络确认核心原因:「大key(O(n)命令阻塞)、热key(单线程排队)、资源瓶颈(CPU/内存/IO)、分布式问题(同步延迟/网络)优化核心:「避免单线程阻塞(拆分大key、替换慢命令)、分散负载(集群分片、读写分离)、充足资源(内存/带宽)

2025-11-21 16:51:38 633

原创 Java大厂面试:谢飞机的奇幻求职之旅

方案 | 优点 | 缺点 || 定时任务 | 简单易实现 | 延迟高,DB压力大 || 延迟消息 | 精准,解耦 | 依赖MQ可靠性,需补偿 || Redis过期监听 | 高性能,低延迟 | 事件可能丢失,需兜底 |推荐组合方案:以延迟消息为主Redis过期监听为辅,并配合乐观锁+分布式锁保证数据一致性,最后通过对账系统兜底,确保万无一失。希望这个“谢飞机”的故事能帮你理清订单超时的设计思路。下次面试,别再只会说定时任务啦!

2025-10-23 09:58:04 364

原创 Java大厂面试:谢飞机的奇幻求职之旅

本文以幽默对话形式还原互联网大厂Java工程师面试现场,通过“谢飞机”这一角色展现初级开发者常见误区,并深入解析支付系统设计、分布式锁、乐观锁等核心知识点。结合真实业务场景,帮助读者理解技术选型背后的权衡。

2025-10-23 09:57:17 284

原创 Java大厂面试现场:谢飞机被问懵了,从HashMap到DDD一套带走

面试不仅考记忆,更考理解。谢飞机虽然搞笑,但你也看到了知识盲区。建议扎实掌握底层原理,别只背八股文。

2025-10-20 22:08:21 321

原创 Java大厂面试现场:面试官灵魂拷问,水货程序员刘某某的爆笑对答实录

面试不仅考知识广度,更考深度和准确性。建议系统学习JUC、JVM、MySQL底层、Redis原理、Spring源码及DDD设计思想,避免成为“刘某某”式水货程序员。本文纯属虚构,如有雷同,欢迎对号入座。

2025-10-20 21:44:10 525

原创 Java面试奇遇记:谢飞机大战面试官,笑着学完核心技术栈

核心思想:以业务领域为核心,划分限界上下文(Bounded Context)分层架构表现层应用层领域层(实体、值对象、聚合根、领域服务)基础设施层适用于复杂业务系统,避免贫血模型,提升可维护性总结:谢飞机虽然搞笑,但他提醒我们——基础要牢,细节要抠,别让“我以为”变成“我完了”。希望你在笑声中学到真知识,下次面试,不再是“等通知”,而是“发 offer”!本文纯属虚构,如有雷同,说明你也面过这种题 😄。

2025-10-20 14:49:53 366

原创 Dijkstra(反向建图)

Destination最短路建立两个点 0 和 n+1,让所有 a[i] 为偶数的点与 0 连一条价值为零的边,让所有 a[i] 为奇数的点与n+1 连一条价值为零的边。对于 i - a[i] 和 i + a[i],如果可以到达,就连一条价值为 1 的边。对于偶数点,到达 n+1 的最短路径就是答案。对于奇数点,到达 0 的最短路就是答案。最短路的dij算法是求起点到其他所有点的距离,所以需要反向建图得到其他所有点到某个点的最短了。#include <bits/stdc++.h>

2021-08-23 10:34:49 755

原创 快速乘模板

Destination#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<stack>#include<string>#include<cstdlib>#include<queue>#include<v

2021-08-23 08:42:53 221

原创 多重背包的可行性问题

题destination#include <iostream>#include <cstring>#include <algorithm>#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<string>#i

2021-08-21 13:24:52 268

原创 多源BFS模板题

D.最近的商店(比赛中叫 不会吧不会有人觉得这不是签到吧)Time limit:1 secondsMemory limit:64 megabytes​ 协会成员马上要入住算协小镇了!他们不想去一个离自己很远的商店,因此每个人都想知道离自己房子最近的商店有多远。​ 他们向你求助,希望你能帮他们做一个标有商店距离的平面图。​ 算协小镇上的房子严格按照n ∗ m n * mn∗m的点阵建造,其中分布有居民楼和商店,距离按照每个单元格进行计算(横与纵坐标差之和)。输入​ 第一行输入n nn和m mm,

2021-08-15 19:43:28 210

原创 树状数组(求逆序对及离散化)

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 2000010;typedef long long LL;int n;//t[i]表示树状数组i结点覆盖的范围和int a[N], t[N];//Lower[i]表示左边比第i个位置小的数的个数//Greater[i]表示左边比第i个位置大的数的个数int Lower[

2021-08-13 17:26:57 122

空空如也

空空如也

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

TA关注的人

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