直播间消息系统的核心挑战:百万并发下的实时推送、消息分类与差异化处理、礼物的可靠投递、弹幕的限流采样,以及扇出问题的分层解决方案。
从零实现一个 RPC 框架
从零实现一个 RPC 框架:协议设计、序列化、Netty 网络通信、动态代理、ZooKeeper 服务注册与发现、负载均衡、超时重试,逐层拆解 RPC 的核心设计。
分布式锁深度解析
分布式锁深度解析:从 Redis SET NX、Redlock 算法、ZooKeeper 临时顺序节点,到数据库乐观锁,逐一分析实现原理、适用场景与常见陷阱。
MySQL 深度解析
深入解析 MySQL InnoDB 存储引擎:Buffer Pool、redo/undo log、B+ Tree 索引、MVCC 多版本并发控制、主从复制原理与生产实践。
QUIC 协议深度解析
QUIC 是 Google 设计、IETF 标准化的新一代传输层协议,也是 HTTP/3 的底层基础。深入解析 0-RTT 握手、多路复用、连接迁移、拥塞控制等核心设计。
AI Agent 架构深度解析
从 ReAct、Plan-and-Execute 到多 Agent 协作,系统梳理 AI Agent 的核心架构模式、Memory 管理、可靠性设计和工程实践。
解包 Claude Code:从 13MB 的 npm 包里看到了什么
Claude Code 是 Anthropic 发布的 AI 编程助手,整个工具打包成一个 13MB 的 npm 包。本文对其解包分析,记录了验证专家 Agent、流式降级、Prompt 缓存分层等有意思的内部实现。
Spark 分布式计算原理
Spark 是当今最流行的分布式计算框架之一。本文将深入探讨 Spark 的核心架构、RDD 原理、DAG 调度、内存管理以及性能优化策略。
Kafka 深度解析
Apache Kafka是一个分布式流处理平台,以高吞吐量、低延迟、可扩展性和持久性著称,是大数据生态系统中的核心组件。
Zookeeper 深度解析
Apache Zookeeper是一个开源的分布式协调服务,为分布式应用提供一致性服务。它以简单、高效、可靠著称,是很多分布式系统的基石。
ClickHouse 深度解析
ClickHouse是一个面向列的OLAP数据库管理系统,以高性能、低延迟、高压缩比著称,是实时数据分析领域的明星产品。
分布式一致性算法
分布式一致性算法是解决分布式系统中一致性问题的核心理论,包括Paxos、Raft等经典算法,以及2PC、3PC、TCC、Saga等分布式事务方案。
Lucene 深度解析
Apache Lucene是一个高性能、全功能的文本搜索引擎库,完全用Java编写。它是ElasticSearch、Solr等搜索引擎的核心,为全文检索提供了强大的基础设施。
Rust 深度解析
Rust是一种系统级编程语言,专注于安全性、并发性和性能。它由Mozilla研究院开发,旨在提供C++级别的性能,同时保证内存安全。本文将深入解析Rust的核心概念、特性和最佳实践。
ElasticSearch 深度解析
ElasticSearch 是基于 Lucene 的分布式搜索引擎,以其强大的全文检索、实时分析和可扩展性著称。本文将深入剖析 ElasticSearch 的核心概念、查询语法、聚合分析以及集群架构。
Flink 流式计算原理
Flink 是新一代大数据流式计算引擎,以其低延迟、高吞吐、精确一次等特性著称。本文将深入剖析 Flink 的核心架构、运行时机制以及流式计算的关键技术。
Redis 深度解析
Redis 是高性能的键值存储数据库,以其丰富的数据结构、持久化机制和高可用特性著称。本文将深入剖析 Redis 的核心原理、数据结构、持久化机制以及集群架构。
MySQL 索引优化
索引是数据库优化中最重要的一环。本文将深入探讨 MySQL 索引的原理、类型、失效场景以及优化技巧,帮助你构建高效的数据库查询。
CUDA 编程入门
CUDA(Compute Unified Device Architecture)是 NVIDIA 推出的并行计算平台和编程模型。本文将介绍 CUDA 编程的基础知识,包括环境搭建、基本概念和常用编程技巧。
GPU 架构基础
GPU(Graphics Processing Unit,图形处理器)最初是为了处理图形渲染而设计的,但随着技术的发展,它已经演变成一种强大的并行计算设备。本文将介绍 GPU 的基本架构和核心概念。
GPU 并行计算原理
GPU 并行计算的核心在于其大规模并行处理能力。本文将深入探讨 GPU 并行计算的原理、模型和优化策略。
GPU 内存层次结构
GPU 的内存层次结构是其高性能的关键。理解 GPU 的内存层次结构对于编写高效的 CUDA 程序至关重要。本文将详细介绍 GPU 的内存层次结构及其优化策略。
GPU vs CPU 对比
CPU 和 GPU 的设计理念截然不同,各自擅长不同的任务类型。本文将深入对比 CPU 和 GPU 的架构差异、性能特点以及适用场景。
LeetCode 210 周赛
5535. 括号的最大嵌套深度
比较简单,不贴代码了
5536. 最大网络秩
计算每个点的边,如果两点相连,减去一条重复的边
1 | class Solution: |
5537. 分割两个字符串得到回文串
找到a b从中心开始的最长回文串,从al, ar, bl, br,然后比较a[:al] == b[ar+1:] or a[:bl] == b[br + 1] or b[:al] == a[ar+1:] or b[:bl] == a[br+1:]
1 | class Solution: |
5538. 统计子树中城市之间最大距离
状压枚举所有集合,以集合的每一个点为根顶点,bfs计算这个点为根顶点时的树的高度,最大值即为这个集合构成子树的最大距离
1 | class Solution(object): |
AcWing《LeetCode究极班》拼团优惠!https://www.acwing.com/activity/content/introduction/31/group_buy/1154/
第 36 场双周赛
5515. 设计停车系统
1 | class ParkingSystem: |
5516. 警告一小时内使用相同员工卡大于等于三次的人
1 | class Solution: |
5518. 给定行和列的和求可行矩阵
1 | class Solution: |
5517. 找到处理最多请求的服务器
1 | class Solution: |
LeetCode 209 周赛
5531. 特殊数组的特征值
1 | class Solution: |
5532. 奇偶树
1 | class Solution: |
5534. 可见点的最大数目
1 | class Solution: |
5533. 使整数变为 0 的最少操作次数
1 | class Solution: |
1 | class Solution: |
两种做法
LeetCode 208 周赛
1. 文件夹操作日志搜集器
简单模拟
1 | class Solution: |
2. 经营摩天轮的最大利润
模拟
1 | class Solution: |
3. 皇位继承顺序
树节点的设计,和dfs先序遍历
1 | class TreeNode: |
4. 最多可达成的换楼请求数目
状态压缩dp,以及了解图中任何一个节点入度与出度相等时,就满足净变化为0
1 | class Solution { |
阿里云天池 9月26日 日常周赛
1. K步编辑
描述
给出一个只含有小写字母的字符串的集合以及一个目标串(target),输出所有可以经过不多于 k 次操作得到目标字符串的字符串。
你可以对字符串进行一下的3种操作:
- 加入1个字母
- 删除1个字母
- 替换1个字母
思路:一个应用编辑距离的问题,使用python语言会超时。
1 | class Solution { |
2. 折纸
描述
折纸,每次都是将纸从右向左对折,凹痕为 0,凸痕为 1,求折 n 次后,将纸展开所得折痕组成的 01 序列。
1<=n<=20
思路:类似中序遍历,加入一个是正是反的变量,模拟折纸过程
1 | class Solution: |
3. 字符串的不同排列
描述
给出一个字符串,找到它的所有排列,注意同一个字符串不要打印两次。 请以字典序从小到大输出。 0<=n<=20
思路:提前去重,输出排序
1 | class Solution: |
4. 硬币排成线
描述
有 n 个硬币排成一条线, 第 i 枚硬币的价值为 values[i].
两个参赛者轮流从任意一边取一枚硬币, 直到没有硬币为止. 拿到硬币总价值更高的获胜.
请判定 第一个玩家 会赢还是会输.
1<=n<=2000 0<=value[i]<=1e7
思路:一个常见的dp问题
1 | class Solution: |
PS: 今天第一次答阿里云,阿里云的罚时有点多,罚时时间还没有写出来,要注意有十足的保证再提交
计算机网络学习之-TCP协议1-TCP历史及其设计哲学
又因为看国家大事睡不着了
上帝,请赐予我平静,
去接受我无法改变的。
给予我勇气,
去改变我能改变的,
赐我智慧,
分辨这两者的区别。
过好我的每一天,
享受你所赐每一刻,
把困苦当成通往平安的道路,
像主耶稣那样,接受这罪恶的世界,
按其现实本相,而非如我所愿
相信他会使一切变得美好,
只要我顺服他的旨意;
我可以在此生有合宜的欢乐,
并在永生里,与他永享至福。
阿门。
无神论者,只是汲取其中的营养
桶排序
桶排序适用于待排序数据值域较大但分布比较均匀的情况,是一个期望时间复杂度为O(n)的排序算法。
其大致思想是对值域进行分块,每块分别排序。由于每块元素不多,一般使用插入排序。如果使用稳定的内层排序,并且将元素插入桶中时不改变相对顺序,那么桶排序就是稳定的。
如果待排序数据是随机生成的,将值域平均分成n块的期望时间复杂度是O(n),证明可以参考算法导论或维基百科。
1 | const int N = 100010; |
堆排序代码实现
1 | void max_heapify(int arr[], int start, int end) { |
优秀的学习资源
数据结构与算法
- OI Wiki