- 博客(95)
- 资源 (1)
- 收藏
- 关注
原创 C++ 对象模型:虚函数表的底层结构与多态实现
多态作为面向对象三大核心特性(封装、继承、多态)之一,其可以分为静态多态(模板,重载,重定义)和动态多态。理解动态多态的底层实现原理对于掌握C++对象模型有重要意义。本文将从虚函数表、内存布局、调用的汇编代码等底层结构出发,深入解析动态多态的实现机制。
2025-08-01 09:25:14
687
原创 Linux 进程深度解析(3):进程调度策略和应用
在前面的文章中介绍了进程的基本概念以及进程的创建销毁,本文将介绍进程的调度运行(也就是进程在操作系统中如何调度)。主要包含基本的调度策略原理(像CFS、FIFO等)以及部分源码解析,同时也会介绍这些策略对应的实际应用场景和其设计上带给我们的思考(Linux 5.10内核为例)。
2025-08-01 09:10:42
754
原创 C++性能优化:分支预测
在现代的CPU架构中,影响性能的两大很关键的要素就是cache和分支预测(指令级并行),cache相关在前面文章介绍过,分支预测将在本文进行说明。主要从分支预测的概念,原理,优化技巧和实际案例等方面进行分析。
2025-07-25 09:34:20
1113
原创 Linux进程深度解析(2):fork/exec写时拷贝性能优化与exit资源回收机制(进程创建和销毁)
在第一篇文章中我们描述了进程的静态结构,本文将分析进程的动态结构,主要从原理角度去说明每个函数的核心思想以及对于我们的借鉴意义,同时也会附带部分的源码解读(基于Linux 5.10)。
2025-07-25 09:24:28
1057
原创 Linux进程深度解析(1):进程结构、内存布局与资源管理
进程是系统执行的核心单元,理解进程是我们诊断性能问题、开发高并发程序的基础。Linux进程深度解析系列将会从原理角度对进程进行深入分析,帮助读者系统的理解其设计的思路,让读者在理解原理的基础上同时能对自己的设计有借鉴意义。整体系列规划如下(从基础到核心机制再到实战),可能会增加或减少。
2025-07-18 09:43:29
526
原创 C++11:unique_ptr的设计哲学(转移而不拷贝)
unique_ptr是C++11引入的一种独占所有权的智能指针,其提供了自动管理内存的能力,同时保持有和裸指针相近的性能开销。本文将原理,源码和使用来进行介绍。
2025-07-18 09:05:01
370
原创 权限控制的核心模型:八类常见系统对比与应用场景
在数字化时代,权限控制是保障数据安全和防止越权操作的核心机制。为帮助读者系统理解权限控制的核心模型,本文将介绍八种常见的权限控制模型的基本原理、适用场景以及优缺点的对比。
2025-07-11 09:26:48
537
原创 C++11:weak_ptr的设计哲学(观察而不拥有)
循环引用是开发中的常见问题,特别是在使用引用计数(shared_ptr)时尤为突出,为了解决这种问题,C++引入weak_ptr,其通过“观察而非拥有”的思想,来解决循环引用的问题。本文将对weak_ptr进行原理和源码解读、带给我们的设计启示以及如何与shared_ptr进行协作等方面进行介绍。
2025-07-11 09:20:48
626
原创 MySQL技术内幕6:InnoDB索引技术
本文主要介绍MySQL InnoDB存储引擎的索引技术,包含其支持的类型,语法,查看方式,优化方式以及对于其中B+ Tree索引的原理和代码进行详细的解读。
2025-07-11 09:18:09
591
原创 C++11:shared_ptr的设计哲学(原理+源码):内存安全和性能的架构权衡
在C++编程世界中,内存管理是一把双刃剑,手动管理带来了极致的内存控制能力,但也带来了像内存泄漏,野指针等问题;自动垃圾回收虽然安全,但却会带来一定的性能损耗。本文将介绍C++11引入shared_ptr,通过对其原理和源码的解析,来了解其对于内存安全和性能的权衡。
2025-07-04 09:05:34
685
原创 MySQL技术内幕5:InnoDB存储引擎从磁盘到内存的读取
前面文章介绍了InnoDB的内存管理,本文将对InnoDB存储引擎从磁盘到内存的管理结构做相应分析,包括其核心实现机制和一些设计思想(像预读,双写等)。
2025-07-04 08:59:56
275
原创 CPU缓存行(Cache Line)详解:从原理到优化实践
在现代的计算机体系结构中,CPU的计算速度是远远高于内存访问速度的,因此,对于缓存(Cache)对于系统性能来说至关重要。Cache Line是缓存关联的最小单位,本文将对Cache Line的概念,命中和未命中缓存的影响以及如何优化数据布局以提高缓存利用率。
2025-06-27 09:11:48
521
原创 MySQL技术内幕4:InnoDB存储引擎内存管理
了解完MySQL的物理存储,本篇介绍MySQL的内存管理,主要包含基础的内存分配结构、算法以及缓存池的实现细节,同时对自适应哈希索引以及日志buffer进行介绍。本篇介绍完内存管理后,下一篇介绍物理存储到内存的转换过程。
2025-06-27 09:06:14
1016
原创 C++可调用对象的统一:深入解析invoke的原理
在C++编程中,可调用对象的种类有很多(比如普通函数、函数指针、成员函数指针等),在C++17之前,调用这些可调用对象需要使用各自特定的语法,为了解决这个问题,C++17引入了invoke函数模板,通过一种统一方式调用各种可调用对象,让开发者无需关心可调用对象的具体类型,从而简化代码,提高代码通用性。本文将从invoke的原理,源码实现,使用三个方面进行深入解读。
2025-06-20 09:12:18
516
原创 MySQL技术内幕3:MySQL逻辑存储层级和物理存储结构
MySQL 的逻辑存储层级和物理存储结构是其高效数据管理的核心设计。逻辑存储层级从用户角度组织数据,包括数据库、表、行、列等;物理存储结构则从系统角度管理数据在磁盘上的存储方式,包括表空间、段、区、页等。本文将从逻辑存储以及物理存储两个方面来读MySQL来进行解读。
2025-06-20 09:02:36
697
原创 现代C++ :使用SIMD 指令集实现高性能计算
提升效率的两种常见方式,一个是增大并发,一个是增大扇入扇出。在前面文章中介绍了多线程并发相关的内容,也就是增大并发常用的内容;本文将介绍的SIMD就和增大扇入扇出相关了,也就是一次处理更多的数据,增加数据级的并行。本文将从SIMD的概念,原理和使用方式对其进行介绍。
2025-06-13 09:24:53
1160
原创 MySQL技术内幕2:从架构五视图角度来看MySQL结构
本文通过对MySQL的逻辑架构、开发架构、运行架构、物理架构以及数据架构的分析来建立一个对应MySQL架构整体的认识。
2025-06-13 09:16:31
1006
原创 MySQL技术内幕1:内容介绍+MySQL编译使用介绍
MySQL技术系列文章将从MySQL下载编译,使用到MySQL各组件使用原理+源码分析,采用自底向上,从整体到局部的方式来进行详细分析(从MySQL系统概述到存储管理,再到索引,查询编译,事务,并发,安全,复制和分布式相关内容)。本篇为第一篇,也就是环境准备篇,以此环境为基础来进行后续的介绍。
2025-06-06 09:02:42
462
原创 C++11:原子操作与内存顺序:从理论到实践的无锁并发实现
在并发编程中,原子性、可见性和有序性是确保程序正确执行的三大特性。常见的保证这三个特性的操作是通过加锁来限制资源的访问,但这种方式会带来性能的降低,所以无锁编程变的日益常见,本文将对原子性、可见性和有序性进行介绍,同时介绍原子操作和内存顺序从而实现无锁的并发。
2025-06-06 08:54:47
1450
原创 常见一致性哈希算法简析
在分布式系统中,负载均衡和数据分布是确保系统高效运行的关键。传统的Hash算法虽然能在一定程度上实现数据的均匀分布,但在节点增减时,需要重新分配所有数据,这会导致巨大的开销和潜在的性能问题。为了解决这个问题,一致性Hash算法应运而生。本文将详细介绍常见的几种一致性Hash算法的原理。
2025-05-23 09:16:48
821
原创 C++11:深入理解完美转发
本文将对C++11中完美转发特性进行详细分析,主要对什么是完美转发(概念),完美转发产生原因(动机)以及完美转发的原理(实现,主要包含万能引用,引用折叠以及std::forward函数),应用进行介绍。
2025-05-23 09:08:55
1065
原创 分布式 ID 生成的五种方法:优缺点与适用场景
在分布式系统中,生成全局唯一的id是一个常见的需求。由于分布式系统的特性(多节点,网络分区,时钟不同步等),传统的单机ID生成方式不再适用,所以一些分布式生成方式应运而生,本文将对常见的几种分布式ID生成方法的原理和应用进行介绍。
2025-05-16 09:09:43
888
原创 PostgreSQL技术内幕30:Heap Only Tuple(HOT)原理解析
在PostgreSQL中,当更新一条记录时,传统的做法是在数据页(page)中新增一条记录,并保留原来的记录,同时需要为新增的记录增加索引项。这种做法会导致以下问题:1.效率问题:增加索引项会消耗额外的系统资源,从而影响更新操作的效率;2.磁盘空间使用问题:随着索引项的增加,磁盘空间的占用也会相应增加。于是在PG 8.3版本引入了HOT技术,本文将对其实现原理和局限性进行详细的分析。
2025-05-09 09:10:55
1004
原创 分布式理论:常见分布式协议的概览与解析
开发分布式系统过程中最为关键的就是根据其不同的场景特点去选择合适的算法,而本文将介绍多种分布式一致性和共识算法,包含对常见共识算法(Raft,Paxos)和一致性算法(2PC,TCC,Gossip)的简要分析。
2025-05-02 09:02:41
1122
原创 PostgreSQL技术内幕29:事件触发器tag原理解析
在上一篇文章中中,我们介绍了PG中的两种触发器,即适合于DML的普通触发器和对于DDL的事件触发器,其中事件触发器与常规的 DML 触发器(响应行级别或语句级别操作)不同的地方在于事件触发器在 DDL 操作的生命周期中触发,触发时执行用户指定的存储过程或函数,可以用于监控或限制数据库结构的变更。 本文对于事件触发器中细节进行进一步的说明,也就是tag的原理。
2025-04-25 09:03:40
378
原创 分布式数据库:常见锁管理器的实现原理
在数据库并发控制中,常用的机制有封锁和快照隔离,而封锁的管理是数据库开发过程中必须考虑的问题。在单机数据库中,对于库表或行数据的封锁可以通过单机共享/排他锁实现,但其扩展到分布式数据库中,就需要一个统一的分布式锁服务去实现,让其能够对多个分布节点做统一的集群锁管理。本文将介绍一种常见的锁管理器实现,包括排队锁,锁升级,死锁处理等。
2025-04-18 10:53:24
479
原创 PostgreSQL技术内幕28:触发器实现原理
在PostgreSQL(简称PG)数据库中,触发器(Trigger)能够在特定的数据库数据变化事件(如插入、更新、删除等)或数据库事件(DDL)发生时自动执行预定义的操作。触发器的实现原理涉及多个方面,包括触发器的概念、触发器的创建、触发器的存储、触发器的执行、触发器的修改以及触发器函数的删除等。本文将对PG触发器的实现原理进行简要分析,以帮助读者更好地理解其工作机制。
2025-04-11 09:40:28
783
原创 SwissTable:一种高效和可扩展的哈希表数据结构
在软件开发领域,哈希表作为一种重要的数据结构,广泛应用于各种场景中,尤其是在后端开发中,高效的查找和插入操作是不可或缺的。近年来,SwissTable作为一种改进的哈希表实现,因其出色的性能和可扩展性而备受关注。本文将深入探讨SwissTable的工作原理、特点及其在实际应用中的优势。
2025-04-03 09:48:38
466
原创 PostgreSQL技术内幕27:autocommit功能实现原理解析
autocommit对于数据库操作来说非常重要,其可以很好的简化操作,保证可见性,而常见的实现方式包含客户端实现和服务端实现,PG采用的是psql客户端实现,相对比较简单,本文将对autocommit概念,优缺点,PG中使用方式,实现原理等内容进行详细介绍。
2025-03-28 09:05:31
1151
原创 异地多活架构演进详解
随着互联网公司的业务规模不断扩大,对于系统的并发能力,流量承载能力和故障恢复能力都有了更高的要求,而最为基本的就是系统的可用性,要做到这点就需要针对故障做容灾设计,其本质是提供冗余以避免单点故障造成系统不可用,本文将从容灾各个发展阶段:单机,主从,同城,两地三中心,异地双活,异地多活来进行详细的分析。
2025-03-21 09:13:10
1135
原创 PostgreSQL技术内幕26:PG聚合算子实现分析
聚合算子在聚合函数在数据分析、报告生成和统计计算中扮演着重要角色,通过对多行数据进行计算,将多个输入值压缩为单一输出值,如求和、平均值、计数等。本文将通过对PostgreSQL聚合算子的源码进行解析,深入了解其实现机制。
2025-03-14 09:09:54
804
原创 StarRocks高效聚合源码解析
聚合是数据分析中的一种常用的手段,其性能直接对于整个系统的分析来说有着非常重要的影响,本文将对starrocks中聚合实现做深入的分析,主要包括其实现策略以及采用的优化手段。
2025-03-07 12:28:29
1166
原创 常见容错机制以及实现原理:failover、failfast、failback、failsafe
在现代信息系统中,随着业务的不断扩展和对服务要求的提高,系统可用性变得越来越重要,为了系统能够在各种故障场景下继续运行,就需要提供对应的容错机制,本文将介绍常见的容错机制failover、failfast、failback、failsafe的概念和实现思路。
2025-02-28 09:05:03
1590
原创 分库分表详解(背景、概念及十二种方式)
随着互联网应用的不断发展,数据量和访问量都大幅的增加,传统的增加硬件资源的方式暴露出成本高,拓展能力受限的问题,分库分表可以将数据分散到多个节点,通过负载均衡和故障转移,提高并发处理能力和可用性,本文将介绍分库分表的概念及常见的拆分策略和方式。
2025-02-21 11:27:18
747
原创 PostgreSQL技术内幕25:时序数据库插件TimescaleDB
现今时序数据库的应用场景十分广泛,其通过保留时间序列的性质,记录下事务随时间变化的事实。本文将介绍时序数据库产生背景,概念等基础知识,以及对于PG中时序数据库插件TimescaleDB做原理和代码的剖析。
2025-02-14 09:12:32
2395
原创 存储可靠性:从基于磁盘的RAID到分布式纠删码(EC),多副本
在选择数据存储方案时,一个绕不开的话题就是数据存储的可靠性(面对故障时的应对能力),本文对磁盘的RAID技术和现在分布式存储常用的纠删码(EC)和多副本的原理和优缺点进行详细的介绍。
2025-02-07 13:20:28
1366
原创 PostgreSQL技术内幕24:定时任务调度插件pg_cron
pg_cron是PostgreSQL中的一个简单的基于cron的任务调度插件,本文将从其基础知识(Linux中Cron的语法)、pg_cron安装使用方式以及实现原理来对其进行详细的分析。
2025-01-30 22:05:03
1930
原创 PostgreSQL技术内幕23:PG统计信息的收集和应用
数据库统计信息是数据库管理系统(DBMS)中用于优化查询性能和提高数据库效率的重要元数据,其中包含很多关键信息,能够为优化器生成合理的查询计划提供数据支撑,本文将对PG统计信息收集方式,关键的统计信息以及其优化器使用原理方面进行介绍。
2025-01-24 10:00:29
894
原创 高性能定时器实现方式
在实际开发中,经常会有定时去执行一个任务或者到某一时间去执行某一特定任务的需求(如心跳检测,状态检查等),此时就需要定时器去进行唤醒和调度,本文将从设计和实现的角度介绍多种定时器原理,并对其复杂度进行分析。
2025-01-17 09:16:11
691
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人