- 博客(25)
- 收藏
- 关注
原创 SSH无密码登录步骤
在本地Windows机器生成SSH密钥对,并将公钥上传至远程服务器,实现无需输入密码即可安全登录。按照此文档流程操作,即可成功配置无密码登录,并通过高级设置解决复杂的网络环境问题。仅以此篇记录vscode无法连接远程ssh的基础解决方式:无密码+开启TCP。如果遇到连接超时、不稳定或需要通过跳板机连接的情况,需要配置SSH客户端。若配置成功,此命令将直接登录,不再要求输入密码。即可连接,并应用所有高级设置。编辑本地SSH配置文件 (:配置完成后,只需执行。
2025-09-16 11:38:39
436
原创 Swift 中 Partition的奥秘--一致性哈希
概念比喻作用对象 (Object)书要存储的数据本身。分区 (Partition)书槽一个固定的中间层。它的数量不变,像一个个容器,把大量零散的对象分组装起来。节点 (Node)书架真正的物理存储设备,可以动态增减。通过引入一个固定不变的中间层(Partition),将“对象”和“节点”的动态映射关系解耦。对象 -> Partition的映射是静态的、永久的(因为分区数量不变)。Partition -> 节点的映射是动态的、可调整的。
2025-09-13 10:00:51
473
原创 ceph高可用的秘密武器--CRUSH算法
CRUSH是一个可扩展的、伪随机的、确定性的数据分布算法通过计算而非查表来确定对象位置,实现了去中心化。感知集群层级结构和权重,实现了自动的负载均衡和高可用性。依赖集群状态的副本(Cluster Map),客户端可以独立计算,使得Ceph集群不存在单点性能和瓶颈。正是CRUSH算法的存在,Ceph才能优雅地处理上千个节点的扩展、故障自动恢复以及数据重平衡。
2025-09-10 16:37:37
917
原创 SPDK底层调度--无锁队列
因为没有任何一扇“门”把其他顾客挡在外面。把叫号器+1。不断地看叫号器是不是叫到了自己的号。整个系统没有“阻塞”和“等待”,所有人都在“忙自己的事”,这就是“无锁”的精髓——通过协作而非加锁来避免冲突。无锁队列的核心就是利用CPU提供的原子操作(主要是CAS),让多个线程通过“尝试-失败-重试”的循环来竞争修改队列指针,而不是通过“获取锁-阻塞等待”的方式来串行化操作。它用CPU的计算周期换取了线程阻塞和调度的开销。在现代多核CPU上,对于竞争激烈的场景,这种交换通常是非常值得的,从而带来了巨大的性能提升。
2025-09-10 10:18:06
831
原创 纠删码的实现方式--‘解方程’
分块:将数据切分为k个块。编码:利用线性代数(在伽罗华域上),通过一个生成矩阵将k个数据块线性组合成n个块(包含原始数据块和校验块)。存储:将n个块分散存储。解码:当发生丢失时,利用存活下来的任何k个块,通过求解线性方程组(即对生成矩阵的子矩阵求逆)来恢复出所有原始数据。它的强大之处在于将数据冗余问题转化为了一个数学计算问题,并通过分布式存储打破了传统RAID的扩展性限制,从而成为现代云存储的基石技术。
2025-09-08 17:30:13
477
原创 数据完整性--纠删码为何打败RAID
数学上:RAID5/6是纠删码在特定参数(k, n, m)下的特例。EC使用的数学工具(如 Reed-Solomon 码)比RAID的简单异或(XOR)更通用、更强大。功能上:EC提供了无限的配置灵活性,允许在可靠性(可容忍的故障数)、存储效率(空间开销)和性能之间进行精细的、自定义的权衡。架构上:EC摆脱了RAID依赖于本地磁盘阵列的束缚,其思想可以完美地应用于跨节点、跨机架、跨数据中心的分布式存储系统,从而提供了远超传统RAID的扩展性和可靠性。因此,在现代大规模存储系统中,
2025-09-08 17:16:44
905
原创 CPU常见运算加速指令--指令集中的专业工具
它是什么?专门用于加速SHA系列哈希算法(如SHA-1, SHA-256)的指令集。比喻:一个摘要生成器。你把一本厚厚的小说(大量数据)塞进去,它瞬间就吐出一段独一无二的、固定长度的“摘要”(哈希值)。内容稍有改动,摘要就完全不同。干什么用?加速需要计算哈希值的场景。密码学:数字签名、证书验证、比特币/加密货币挖矿(大量使用SHA-256)。数据完整性:验证软件下载包、系统镜像是否被篡改(比如下载时提供的SHA256校验码)。身份验证:某些认证协议。效果。
2025-09-08 16:26:39
764
原创 从物理磁盘到卷再到文件系统的全流程示例
磁盘-> (分区) ->物理卷 (PV)->卷组 (VG)->逻辑卷 (LV)->文件系统 (FS)->挂载点。
2025-09-08 15:33:31
756
原创 C/C++ 类型转换的本质
在 C 和 C++ 中,**类型转换**是一种将数据从一种类型转变为另一种类型的操作。它的核心在于改变编译器对数据的解读方式,有时伴随值的实际变化,有时仅改变数据的解释方式而不改变底层的二进制表示。类型转换是程序开发中不可避免的操作,但它也带来了潜在的性能问题和隐患,因此理解其本质至关重要。
2024-12-20 15:16:28
606
原创 C++拷贝控制操作(三/五法则)
**三/五法则**的核心思想是: 如果一个类需要自定义拷贝构造函数、拷贝赋值运算符或析构函数,那么它很可能需要同时实现以下三或五种函数,以正确管理资源。
2024-12-20 14:43:38
489
原创 C++中调用拷贝构造函数的时机详解
拷贝构造函数是C++中用于**通过一个对象来初始化另一个对象**的重要机制。理解拷贝构造函数的调用时机,有助于避免隐式调用带来的性能问题或逻辑错误。
2024-12-20 13:53:27
906
原创 C++类模板中的静态成员
与普通类的静态成员有一些显著区别,尤其是在静态成员如何在模板实例间共享的问题上。(成员变量或成员函数)是类的所有对象共享的。类的所有实例都访问同一个静态成员变量,修改该静态成员会对所有对象产生影响。对于非特化版本,模板静态成员的初始化是模板实例化的一部分。但它们可以访问类的静态成员变量。通过类模板中的静态成员,C++提供了强大的功能,方便在泛型编程中管理全局信息和不同类型的状态。如果对类模板进行显式特化或部分特化,可以为特化版本提供不同的静态成员。类模板的每种实例化版本都会生成独立的静态成员变量。
2024-12-17 03:00:00
563
原创 C++类模板与友元介绍
C++ 的类模板和友元(friend)结合使用,可以实现灵活的访问控制。在类模板中,友元的定义和使用比普通类更复杂,因为模板涉及类型参数,友元关系需要根据具体的实例来确定。
2024-12-16 22:41:11
1111
原创 C++中的类模板与继承
在C++中,类模板与继承的结合是模板编程的重要特性之一。通过类模板,可以实现更灵活的代码复用,而结合继承则可以构建出强大的多态体系,支持泛型编程和类型参数化设计。
2024-12-16 21:31:00
1191
原创 C++模板的显式实例化(区别显示具体化)
在 C++ 中,模板实例化是指编译器根据模板定义和模板参数生成具体的类或函数代码。通常模板的实例化是**隐式**的,也就是编译器会在使用模板时自动生成对应的实例。然而,C++ 还允许**显式实例化**(Explicit Instantiation),以便控制模板实例化的行为和范围。
2024-12-16 21:08:27
2682
原创 如何将 C++ 模板应用于多文件编程
C++ 模板在使用中经常会面临一个问题:如何将模板的定义和实现分离到多个文件中?由于 C++ 编译器在编译模板代码时需要知道模板的完整定义,这使得模板的多文件分离和使用有一定复杂性。本文将详细介绍解决方法及注意事项。
2024-12-16 21:05:56
814
原创 C++ 模板的实例化
C++ 模板的**实例化**(Instantiation)是指根据模板的定义为具体的类型生成实际的代码。模板的实例化可以发生在**编译期**或**链接期**,从而生成具体的函数或类的定义。
2024-12-16 20:56:51
850
原创 C++ 模板中的非类型参数
C++ 模板不仅支持类型参数(`typename` 或 `class`),还支持**非类型参数**(Non-Type Template Parameters),即模板参数可以是某些固定的常量值,如整数、指针、引用或枚举等。这种机制允许我们通过编译期常量来进一步定制模板行为。
2024-12-16 20:51:36
1153
原创 C++ 模板的显式具体化
模板的**显式具体化**(Explicit Specialization)是指为模板的某些特定类型提供专门实现。与泛型模板相比,显式具体化使得我们可以为特定类型定义更高效或特殊的行为,同时保留其他类型的通用实现。
2024-12-16 20:46:33
415
原创 C++ 函数模板的实际参数类型推断分析
在 C++ 中,**函数模板的实参推断**(Template Argument Deduction)是指编译器根据调用时传递的实际参数类型,自动推断出模板参数的类型。这一机制使得模板函数的使用更简洁,同时减少了显式指定模板参数的需求。
2024-12-16 20:42:23
534
原创 C++ 函数模板的重载
**函数模板的重载**允许我们通过模板函数和普通函数,或多个模板函数,根据不同的调用参数选择适当的重载版本。这种机制结合了模板的灵活性和函数重载的多样性。
2024-12-16 20:31:59
785
原创 C++应该用成员函数还是全局函数(友元函数)的形式重载运算符
在 C++ 中,重载运算符时,可以选择将运算符重载为 **成员函数** 或 **全局函数(通常通过友元函数实现)**。两种方式各有优劣,具体选择取决于运算符的语义和操作数的需求。以下是对两种方法的比较与推荐:
2024-12-16 16:12:46
1282
原创 VMware启动报错&禁用 Device/Credential Guard的方法
【多图警告】VMware启动报错&禁用 Device/Credential Guard的方法三种方案,总有一种能够成功
2023-01-31 15:41:06
56692
36
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅