- 博客(101)
- 收藏
- 关注
原创 操作系统高频面试题
⭐️在反复复习面试题时,我发现不同资料的解释五花八门,容易造成概念混淆。尤其是很多总结性的文章和视频,要么冗长难记,要么过于简略,导致关键知识点含糊不清。⭐️为了系统梳理知识,我决定撰写一份面试指南,不只是简单汇总,而是融入个人理解,层层拆解复杂概念,构建完
2025-03-12 16:58:36
648
原创 后端面试高频笔试题(非常规LeetCode类型)
常见的五种单例模式的实现⽅式;约瑟夫环;交替打印奇偶数;交替打印 ABC;三个线程交替打印 1 到 99;实现⼀个线程安全的计数器;控制三个线程的执⾏顺序;五⼈赛跑裁判;LRU 缓存实现
2025-03-11 12:51:16
1091
原创 40亿个QQ号,限制1G内存,如何去重?
Bitmap是一种利用二进制位表示元素存在性的数据结构。每个元素只占用 1 位(bit),用0表示不存在,1表示存在。这种方式极大地节省了内存,适合处理大数据量去重问题。对于 40 亿个 QQ 号(范围512MB 小于 1GB,完全满足限制条件。是一种基于 Bitmap 的优化数据结构,由 Burton Howard Bloom 于 1970 年提出。它通过多个哈希函数将元素映射到位数组,进一步减少内存占用。
2025-03-05 18:03:10
677
原创 常用验证码登录流程设计
验证码(Verification Code)是一种常见的安全机制,通常用于验证用户输入、确认用户身份或操作请求的合法性。通过验证码,可以有效防止恶意攻击、批量操作以及非授权操作。
2025-03-05 17:25:16
761
原创 如何设计一个动态线程池?
动态线程池是一种能够在应用程序运行过程中实时调整其核心配置参数(如核心线程数、最大线程数等)而无需重启服务的线程池。它不仅支持动态修改线程池的参数,还通常内置了监控和告警功能,以帮助开发人员实时掌握线程池的状态。
2025-02-26 15:10:29
1101
原创 如何设计一个RPC框架?
设计一个RPC框架是面试中常见的问题,尤其是对于后端开发岗位。RPC(远程过程调用)框架的核心目标是让调用远程服务像调用本地方法一样简单。
2025-02-26 11:30:40
690
原创 位运算实用技巧与LeetCode实战
不过,这些技巧大多相对晦涩,并不适合每个人深入学习,更多时候它们更适合作为参考资料。真正值得掌握的是那些既有趣又实用的位运算技巧。因此,本文会从浅入深,先介绍一些有趣的但可能用处不大的位运算技巧,再总结一些在算法问题和实际开发中非常常见且实用的位运算技巧。
2025-02-22 16:44:35
712
原创 DeepSeek部署全攻略:四大方案详细解析
调用 API + DeepSeek 服务器:最简单的方式,直接调用 DeepSeek 提供的 API,适合不想折腾硬件、追求快速上手的用户。第三方平台(如秘塔搜索、硅基流动):通过第三方平台使用 DeepSeek 的能力,适合不想自己部署模型,但又需要灵活使用的场景。本地算力部署(基于 Ollama):在个人电脑或本地服务器上运行模型,适合对数据隐私要求高、愿意折腾硬件的用户。服务器部署:在企业级硬件或云服务器上部署完整版模型,适合对性能要求高、预算充足的企业用户。
2025-02-13 22:08:44
4587
原创 如何设计一个高效、稳定的秒杀系统?
秒杀系统的设计本质上是一门平衡的艺术,需要在流量洪峰与系统资源之间找到最优解。面对突发的大规模并发请求,系统既要保证核心业务的稳定运行,又要充分利用资源,提高吞吐量。优化秒杀系统的策略应遵循从核心链路逐步优化的原则,首先确保系统不崩溃,再逐步追求极致性能。初期可通过缓存、限流、异步削峰等手段减少数据库压力,随着并发量的提升,引入分布式架构、异地多活、全链路异步化,提升整体抗压能力。每一次大促都是对系统的一次严峻考验,不仅检验系统的稳定性、扩展性,也暴露潜在的瓶颈。
2025-02-10 23:49:56
942
原创 贪心与单调栈的艺术:从三道 LeetCode 题看最小字典序问题(316/402/1081)
如何构造字典序最小的字符串。它们的核心思路都是贪心 + 单调栈,通过维护一个递增的结构,在每一步选择当前最优的字符,同时确保后续字符仍然满足条件。316 和 1081的重点是去重,确保每个字符只出现一次,同时让字典序最小。402则是通过删除数字来让数值最小,虽然不需要去重,但同样需要保证每一步的选择是最优的。无论是去掉重复字符、删掉多余数字,还是优化子序列,这套方法都能帮我们高效地找到最优解。掌握了贪心 + 单调栈的思路,这类问题就能迎刃而解了!
2025-02-06 23:55:46
975
原创 归并延拓:LeetCode归并排序逆序对问题
如果您渴望探索更多精心挑选的高频LeetCode面试题,以及它们背后的巧妙解法,欢迎您访问我的博客,那里有我精心准备的一系列文章,旨在帮助技术爱好者们提升算法能力与编程技巧。👉更多高频有趣LeetCode算法题在我的博客中,每一篇文章都是我对算法世界的一次深入挖掘,不仅包含详尽的题目解析,还有我个人的心得体会、优化思路及实战经验分享。无论是准备面试还是追求技术成长,我相信这些内容都能为您提供宝贵的参考与启发。期待您的光临,让我们共同在技术之路上不断前行!
2025-01-19 21:29:55
1141
原创 算法之旅:LeetCode 拓扑排序由简入繁完全攻略
解决依赖问题,如课程安排(207,210)。处理图中状态分类的问题,如安全状态(802)。分析关键点或入度特性,如找到最小的起点集合(1557)。拓扑排序不仅是一种算法,更是一种理解图结构的思维方式。在面试中,遇到类似依赖关系的题目,尝试从有向图的角度切入往往是一个很好的突破点。
2024-11-30 11:45:19
893
原创 深度解析:掌握LeetCode高频前缀和问题的关键技巧
希望本次题目的解析能够加深您对前缀和技巧的理解,并激发您解决更多复杂问题的兴趣。如果您渴望探索更多精心挑选的高频LeetCode面试题,以及它们背后的巧妙解法,欢迎您访问我的博客,那里有我精心准备的一系列文章,旨在帮助技术爱好者们提升算法能力与编程技巧。👉更多高频有趣LeetCode算法题在我的博客中,每一篇文章都是我对算法世界的一次深入挖掘,不仅包含详尽的题目解析,还有我个人的心得体会、优化思路及实战经验分享。无论是准备面试还是追求技术成长,我相信这些内容都能为您提供宝贵的参考与启发。
2024-11-27 22:45:59
1128
原创 几道高频面试中的有趣LeetCode链表算法题(进阶版)
首先拿到这道题直观的感受就是可以将链表转换为其它类型来进行对数据排序,然后重新生成链表的方法得到结果,但是这样不够优雅,要面临一定的时间复杂度和空间复杂度的开销,有没有一种别的进阶方法能在 `O(Nlog n)` 时间复杂度和常数级空间复杂度下,对链表进行排序呢?
2024-11-20 21:28:18
1070
原创 FreeMarker模版引擎入门及实战
模板引擎是一种用于生成动态内容的库或框架,它通过将预定义的模板和特定数据结合,生成最终的输出内容。模板引擎的使用有许多优点。首先,它提供了模板文件的语法和解析功能。开发者只需按照特定格式(例如 ${参数} 的语法)编写模板文件,模板引擎就能自动将数据注入模板,生成完整的文件,而不需要手动编写解析逻辑。
2024-11-05 23:49:14
1377
原创 面试必备:RabbitMQ与Kafka核心知识点总结
在无数次的复习巩固中,我逐渐意识到一个问题:面对同样的面试题目,不同的资料来源往往给出了五花八门的解释,这不仅增加了学习的难度,还容易导致概念上的混淆。特别是当这些信息来自不同博主的文章或是视频教程时,它们之间可能存在的差异性使得原本清晰的概念变得模糊不清。更糟糕的是,许多总结性的面试经验谈要么过于繁复难以记忆,要么就是过于简略,对关键知识点一带而过,常常在提及某项技术时,又引出了更多未经解释的相关术语和实例,例如,在讨论ReentrantLock时,经常会提到这是一个可重入锁,并存在公平与非公平两种实现方
2024-10-24 11:06:36
1071
原创 面试中的JVM:结合经典书籍的深度解读
(源自《深入理解Java虚拟机》第三版 2.2.1节)1)程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器⼯作时通过改变这个计数器的值来选取下⼀条需要执⾏的字节码指令,分⽀、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。2)另外,为了线程切换后能恢复到正确的执⾏位置,每条线程都需要有⼀个独⽴的程序计数器,各线程之间计数器互不影响,独⽴存储,我们称这类内存区域为“线程私有”的内存。
2024-10-21 17:01:16
987
原创 如何一步步实现带过期时间的LRU算法?
LRU 缓存机制(Least Recently Used Cache)是力扣(LeetCode)上一道非常重要的题目,在技术面试中具有很高的出现频率。它结合了链表的插入删除操作和哈希表的快速查找特性。LRU 缓存问题是许多软件公司(小中大厂均有所涉猎)面试中的经典题目,几乎每一位软件工程师都可能在面试过程中遇到。
2024-10-16 22:51:40
776
原创 速通买卖股票的最佳时机(动态规划一网打尽)
👊虽然在处理某些股票相关的问题时,直接使用简单的方法可能看起来更直接也更容易实现,但我希望通过采用一种更为通用的方法——比如来解决问题,即便这在开始时可能会让人觉得有些复杂或繁琐。实际上,使用如等方法可能在解决这类问题时更加直观且效率更高。然而,我们的目标是通过动态规划这种更具普遍性的策略,帮助大家建立起解决这类问题的能力,使得在未来面对更多类似挑战时可以更加从容不迫,并且能够用。这样做是为了长远考虑,帮助积累解决问题的通用技巧,而不是仅仅针对单一问题寻找捷径。
2024-10-08 23:44:47
920
原创 大师级GC调优:剖析高并发系统的垃圾回收优化实战
一般的调优步骤大体上分为以下几个部分:1. 熟悉业务场景2. (发现问题)性能监控:GC 频繁、CPU load过高、OOM、内存泄漏、死锁、程序响应时间较长等。3. (排查问题)性能分析:打印GC日志,通过GCviewer或者[http://gceasy.io](http://gceasy.io)来分析日志信息;运用命令行工具,jstack,jmap,jinfo等;dump出堆文件,使用内存分析工具分析文件使用阿里Arthas,或jconsole,VisuaIVM来实时查
2024-10-03 20:08:26
861
原创 「轻盈」之旅:OOM故障重现与解决
本项目均采用 `VisualVM 2.1.10` 进行dump文件的分析。JDK1.8及之前所在目录的`bin`目录下有自带的VisualVM,JDK1.8以后需要自行手动安装下载。下载地址:[https://visualvm.github.io/download.html](https://visualvm.github.io/download.html)
2024-10-01 23:12:13
1088
原创 二刷LeetCode:“51.N皇后 & 37.解数独”题解心得(简单易懂)
🍏我第一次尝试这两道回溯算法题是在2023年的冬天。那一年,西安的冬天冷得让人直哆嗦,而在暖和得几乎让人犯困的图书馆里,这两道题却让我的心情比外面的天气还要凉快几分,简直是雪上加霜,冷到心坎里去了。之前跟着刷题时,前面几道关于子集、组合和排列的问题简直就像是小菜一碟,让我一度觉得自己又行了。结果呢?这两道‘困难’级别的题目直接给我来了个下马威。如果你第一次就能把解析从头到尾捋个差不多,那你的水平就很NB了!(反正我当时是直接懵圈,只能尴尬而不失礼貌地保持沉默)
2024-09-24 11:59:23
1157
原创 MySQL面试不翻车指南:轻松掌握数据库秘籍
在无数次的复习巩固中,我逐渐意识到一个问题:面对同样的面试题目,不同的资料来源往往给出了五花八门的解释,这不仅增加了学习的难度,还容易导致概念上的混淆。特别是当这些信息来自不同博主的文章或是视频教程时,它们之间可能存在的差异性使得原本清晰的概念变得模糊不清。更糟糕的是,许多总结性的面试经验谈要么过于繁复难以记忆,要么就是过于简略,对关键知识点一带而过,常常在提及某项技术时,又引出了更多未经解释的相关术语和实例,例如,在讨论ReentrantLock时,经常会提到这是一个可重入锁,并存在公平与非公平两种实现方
2024-09-22 10:56:33
1686
原创 Java集合必知必会:热门面试题汇编与核心源码(ArrayList、HashMap)剖析
正是基于这样的困扰与思考,我决定亲自上阵,撰写一份与众不同的面试指南。这份指南不仅仅是对现有资源的简单汇总,更重要的是,它融入了我的个人理解和解读。我力求回归技术书籍本身,以一种层层递进的方式剖析复杂的技术概念,让那些看似枯燥乏味的知识点变得生动起来,并在我的脑海中构建起一套完整的知识体系。我希望通过这种方式,不仅能帮助自己在未来的技术面试中更加从容不迫,也能为同行们提供一份有价值的参考资料,使大家都能在这个过程中有所收获。
2024-09-21 09:40:02
1394
原创 Java SE基础知识详解:源于技术书籍的深度解读
正是基于这样的困扰与思考,我决定亲自上阵,撰写一份与众不同的面试指南。这份指南不仅仅是对现有资源的简单汇总,更重要的是,它融入了我的个人理解和解读。我力求回归技术书籍本身,以一种层层递进的方式剖析复杂的技术概念,让那些看似枯燥乏味的知识点变得生动起来,并在我的脑海中构建起一套完整的知识体系。我希望通过这种方式,不仅能帮助自己在未来的技术面试中更加从容不迫,也能为同行们提供一份有价值的参考资料,使大家都能在这个过程中有所收获。
2024-09-18 22:00:17
1285
原创 Java多线程面试精讲:源于技术书籍的深度解读
正是基于这样的困扰与思考,我决定亲自上阵,撰写一份与众不同的面试指南。这份指南不仅仅是对现有资源的简单汇总,更重要的是,它融入了我的个人理解和解读。我力求`回归技术书籍本身`,以一种层层递进的方式剖析复杂的技术概念,让那些看似枯燥乏味的知识点变得生动起来,并在我的脑海中构建起一套完整的知识体系。我希望通过这种方式,不仅能帮助自己在未来的技术面试中更加从容不迫,也能为同行们提供一份有价值的参考资料,使大家都能在这个过程中有所收获。
2024-09-15 01:09:30
1473
原创 都2024年了,你还在手动敲SQL吗?试试这款开源免费的AI数据库!
就在为这些问题苦恼之际,我不禁想,是否有一款工具能够同时简化这一系列的操作,并且最好还能集成AI能力,以减轻手动编写SQL的压力?带着这样的需求,我在GitHub上搜索相关项目时,偶然发现了一个名为Chat2DB的智能数据库客户端。这款工具已经获得了接近15K的Star,并且成功跻身GitHub的开源项目TOP100榜单之中。
2024-08-24 15:30:17
2946
3
原创 从零开始掌握限流技术:计数器、滑动窗口、漏桶与令牌桶详解
随着互联网业务的发展,如`秒杀活动`、`双十一促销`等场景,系统经常会面临高并发流量的挑战。在这种情况下,如果不加以限制,系统可能会因为流量过大而崩溃。为了避免这种情况发生,就需要采取限流措施来保护系统。
2024-08-19 17:17:50
1407
原创 MongoDB & Redis 快速上手:NoSQL数据库操作精要
☘️随着大数据时代的到来,非关系型数据库因其灵活性和扩展性逐渐受到开发者的青睐。 和 作为两种非常流行的 数据库,各自拥有独特的特性和应用场景。 是一款的数据库,适用于需要存储复杂数据结构的应用;而 则以其卓越的速度和内存存储能力著称,非常适合和。✍️本文旨在为初学者提供一份简洁明了的手册,帮助大家快速掌握 和 的基本语法及常用操作。通过本指南的学习,读者将能够迅速上手这两种数据库,为实际项目开发奠定坚实的基础。🤲本文内容均基于撰写,并附带了相应的 SQL 语法链接。我希望在为大家提供正确语法规
2024-08-17 19:17:45
1321
原创 从零开始:MySQL、Oracle、PostgreSQL、SQL Server 快速上手
余撰此文,乃为导引初窥数据库之学人,俾其明了`表、视图、函数、存储过程及触发器之义理,及其于诸般平台之上`创建`、`修改`与`废弃`之法式。盖初学之人,常陷于迷雾之中,难辨东西,故须详述而明之。谨记,学者务须多览`官方文档!本文皆基于官方文档撰写,以求精准无误。盖官方文档乃权威之所出,详实可信,为学者之必备良伴。
2024-08-02 19:25:16
1318
原创 DBMotion x Chat2DB:高效迁移,优雅同步,数据腾飞不再愁
数据传输服务DBMotion是一款轻量、绿色的数据库迁移同步校验工具。支持国产化数据迁移、支持容灾演练、支持两地三中心和异地多活;源库无感知、简单易集成、丝滑高性能。助您在多云之间随心迁移、自由容灾。v1.0.0 DBMotion插件支持的对象迁移、全量数据迁移、增量同步;目前支持 5.6、5.7、8.0 三个版本的同版本迁移或向高版本迁移。目标数据库中存在相同名字的对象将会被重建,所以在迁移前请仔细检查目标数据库以避免覆盖和损坏数据。建议在非高峰时段进行数据迁移,以减少数据更新和DDL变更的影响。
2024-07-25 16:39:34
1383
原创 破解网络奥秘:一图胜千言,TCP重传、滑动窗口、流量与拥塞控制全解析
TCP 是一个且伟大的协议,它通过许多机制来确保传输的可靠性。为了实现这一目标,TCP需要处理各种问题,比如数据损坏、丢包、重复数据以及分片顺序混乱等。如果这些问题得不到解决,可靠传输就无从谈起。众所周知,TCP 是一个可靠传输的协议,那么它是如何实现这种可靠性的呢?为了实现可靠传输,需要考虑许多方面的问题,例如数据的破坏、丢包、重复传输以及分片顺序的混乱等。如果这些问题得不到解决,可靠传输就无从谈起。TCP 是通过以下机制来实现可靠传输的:序列号、确认应答、重传控制、连接管理以及窗口控制。
2024-07-24 11:38:09
873
1
原创 绕过 Accept 的秘密通道:探索建立 TCP 连接的另类法则
如果没有这个accept方法,TCP连接还能建立起来吗?其实只要在执行`accept()` 之前执行一个 `sleep(20)`,然后立刻执行客户端相关的方法,同时抓个包,就能得出结论。
2024-07-23 15:27:57
665
原创 驯龙高手:Kubernetes,那条驾驭容器云的巨龙
作为一个程序员,假设我写了一个博客应用服务,并把它部署在了云平台上。结果,没想到这个应用服务居然太受欢迎了,访问量大到让服务器直接崩溃!一开始,我只能眼睁睁看着它像多米诺骨牌一样倒下,心里崩溃程度不亚于它。于是,我赶紧祭出一些工具,自动重启那些挂掉的应用服务,简直就像给它们打了强心针。然而,这还不够,我决定将应用服务部署在好几个服务器上,让它们来个集体作战。这次总算扛住了访问量的冲击,博客应用服务终于不再频繁崩溃了。后来我增加了商城应用服务和语音应用服务,随着应用服务数量的增加,需求也变得多种多样。
2024-07-20 23:37:35
810
原创 网络世界的神奇插座:揭秘 Socket 如何让程序跨越千里对话
想象一下,互联网就像一片无边无际的海洋,而 Socket 就是那艘能够带你航行至任何角落的神奇海盗船。初次接触 Socket 的你,或许正像一位刚刚登陆神秘岛屿的探险者,面对浩瀚的数据海洋,心中充满了好奇与困惑。但在本文中,我们将一起揭开 Socket 的神秘面纱,从一个网络新手的角度出发,逐步探索 Socket 的工作原理及其在操作系统内核中的实现方式。你将学会如何驾驭这艘数据之舟,如何在互联网的波涛中自由穿梭,最终成为一名能够征服数据风暴的海盗王。准备好了吗?
2024-07-18 15:11:12
910
原创 云端之上,数据之下:CDN,塑造未来信息生态
对于开发同学来说,CDN这个词,既熟悉又陌生。平时搞开发的时候很少需要碰这个,但却总能听别人提起。我们都听过它能加速,也大概知道个原因,但是往深了问就感觉有些懵了。没关系,今天我们换个角度重新认识下CDN。
2024-07-17 22:31:06
828
原创 “快”乐使者UDP与“稳”重先生TCP:网络世界的双雄争霸
试想一下,UDP就像是数字世界里的那位自由奔放的冲浪者,他驾着数据包的“浪板”,一头扎进互联网的浩瀚海洋,追逐着速度与激情的梦。他不拘泥于规则,也不在意每一次跳跃是否会被完美捕捉——毕竟,他是那个敢于冒险、享受过程的探险家。UDP的口号是:“我传递,我自由!”他特别擅长那些对的场合,比如视频会议上的欢声笑语、在线游戏中的紧张刺激,还有那场你期待已久的现场直播。在这些时刻,UDP就是那位让欢乐无缝衔接、让心跳同步加速的幕后英雄。
2024-07-15 16:49:34
555
原创 揭秘!MySQL索引背后的秘密武器:B+树为何力压跳表,独领风骚?
如果MySQL使用跳表,那么它的性能特征会有所不同。MySQL是为大规模数据存储和复杂事务设计的。它处理的数据量可能达到TB甚至PB级别,这些数据主要存储在**磁盘**上,由于跳表主要针对内存优化,MySQL可能无法充分利用跳表的优势,反而会因为频繁的磁盘I/O而降低性能。此外,跳表的多级索引需要额外的内存空间,这在磁盘存储环境中可能会导致更大的存储开销。
2024-07-13 16:52:48
1139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人