摘要:
结构体赋值 例如: #include <stdio.h> #include <string.h> struct Inner { int x; char name[20]; }; struct Outer { int id; struct Inner inner; }; 初始化赋值(定义时): str
阅读全文
posted @ 2025-11-03 21:52
苏格拉底的落泪
阅读(19)
推荐(0)
摘要:
static用法 1. 在 C语言 中,static 关键字用于控制变量或函数的作用域和生命周期。当它修饰函数时,含义如下: static int add(int a, int b) { return a + b; } 上面的函数前加了 static,表示这是一个 静态函数(static funct
阅读全文
posted @ 2025-11-03 20:37
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
/* * 系统中的每一个物理页(physical page)都对应一个 struct page 结构, * 用于追踪该页当前的用途。注意,我们无法追踪哪些任务(task) * 正在使用这个页;但如果该页是一个 pagecache 页面, * 我们可以通过 rmap(reverse mapping)结
阅读全文
posted @ 2025-11-02 22:03
苏格拉底的落泪
阅读(6)
推荐(0)
摘要:
结构体struct file struct file 是内核中用于表示 一个已经打开的文件实例 的数据结构。系统中每当有文件被打开时,内核都会在内核空间创建一个对应的 struct file 对象,并在后续所有针对该文件的操作中传递它的指针。struct file 保存了文件会话级的状态,例如当前读
阅读全文
posted @ 2025-10-29 11:31
苏格拉底的落泪
阅读(15)
推荐(0)
摘要:
数据类型 在 Linux 内核中,用户空间常见的 int32_t 并不直接使用,而是用内核自己的类型名来表示。 内核类型 C标准类型 说明 u8 uint8_t 无符号 8 位 u16 uint16_t 无符号 16 位 u32 uint32_t 无符号 32 位 u64 uint64_t 无符号
阅读全文
posted @ 2025-10-27 15:46
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
struct super_block { struct list_head s_list; /* Keep this first */ dev_t s_dev; /* search index; _not_ kdev_t */ unsigned char s_blocksize_bits; unsi
阅读全文
posted @ 2025-10-24 10:27
苏格拉底的落泪
阅读(7)
推荐(0)
摘要:
内核类型 无符号类型: 内核类型 C标准类型 说明 u8 uint8_t 无符号8位 u16 uin16_t 无符号8位无符号8位 u32 uint32_t 无符号8位 u64 uint64_t 无符号8位
阅读全文
posted @ 2025-10-16 11:27
苏格拉底的落泪
阅读(5)
推荐(0)
摘要:
linux 同步机制之complete 用户线程(提交请求) Ceph 内核通信线程(网络回调) ─────────────────────────────── ─────────────────────────────── 1. init_completion(&req->completion)
阅读全文
posted @ 2025-10-15 10:14
苏格拉底的落泪
阅读(12)
推荐(0)
摘要:
网卡命令 ifup / ifdown 功能:启用或关闭网络接口。 依赖配置文件:在 RHEL/CentOS 系统,读取 /etc/sysconfig/network-scripts/ifcfg-*。 用法: ifup eth0 # 启用 eth0 ifdown eth0 # 关闭 eth0 限制:如
阅读全文
posted @ 2025-09-17 09:21
苏格拉底的落泪
阅读(20)
推荐(0)
摘要:
设计模式之PIMPL模式 参考资料 1. 设计模式之PIMPL模式
阅读全文
posted @ 2025-09-15 20:30
苏格拉底的落泪
阅读(3)
推荐(0)
摘要:
配置笔记本电脑安装centos7关闭盖子不休眠 struct workqueue_struct *my_wq; my_wq = alloc_workqueue("my_wq", WQ_UNBOUND | WQ_MEM_RECLAIM, 1); INIT_WORK(&my_work, my_work_
阅读全文
posted @ 2025-09-10 19:27
苏格拉底的落泪
阅读(10)
推荐(0)
摘要:
RDMA简介 目前有三种RDMA网络,分别是Infiniband、RoCE(RDMA over Converged Ethernet)、iWARP。其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输 ,技术先进,但是成本高昂。 而RoCE 和 iWARP都是基于以太网的R
阅读全文
posted @ 2025-09-10 19:13
苏格拉底的落泪
阅读(233)
推荐(0)
摘要:
参考资料 1. beegfs集群部署
阅读全文
posted @ 2025-08-28 21:10
苏格拉底的落泪
阅读(55)
推荐(0)
摘要:
调试方法 用 c++filt 还原符号名: echo "_ZN5hf3fsfuseRC..." | c++filt 这样能看到它到底是 hf3fs::fuse::RC::something,还是一个全局对象。 然后你就能判断: 如果它是一个类方法 → 确认实现文件是否编进了 .so。 如果它是个全局
阅读全文
posted @ 2025-08-20 09:25
苏格拉底的落泪
阅读(20)
推荐(0)
摘要:
share reservation原理 背景 在 NFS v4 协议中,每个 OPEN 操作除了指定读写权限外,还可以指定 share reservation(共享保留),告诉服务器:这个客户端打算 如何访问文件(读/写/读写);以及它 希望其他客户端是否被允许访问。这样做的目的是:避免多个客户端同
阅读全文
posted @ 2025-08-17 22:04
苏格拉底的落泪
阅读(11)
推荐(0)
摘要:
编译安装lizardfs 1. 编译fmt: git clone https://github.com/fmtlib/fmt.git cd fmt mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc)
阅读全文
posted @ 2025-08-14 21:56
苏格拉底的落泪
阅读(6)
推荐(0)
摘要:
利用iso镜像文件设置为本地yum源 进入yum配置文件所在路径“/etc/yum.repo.d”,将其他后缀名为“.repo”的文件进行备份,并且新建一个配置文件,例如“local.repo”。在“local.repo”中添加如下内容: [rhel-local] name=local baseur
阅读全文
posted @ 2025-08-14 21:35
苏格拉底的落泪
阅读(136)
推荐(0)
摘要:
C++中只用指针而无需完整类型定义教程 在 C++ 里,如果你只用指针来引用一个类型,而不直接使用这个类型的成员或实例,是可以不需要完整定义该类型的,这叫做前向声明(forward declaration)。 1. 例子: #include <iostream> // 前向声明(不需要包含完整头文件
阅读全文
posted @ 2025-08-12 21:59
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
移动多个主机到root-default: # 将指定主机移动到default根节点下 ceph osd crush move <hostname> root=default # 示例:将node1主机移动到default根节点 ceph osd crush move node1 root=defau
阅读全文
posted @ 2025-08-08 11:25
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
函数nfs4_op_open解析 typedef enum { CLAIM_NULL = 0, CLAIM_PREVIOUS = 1, CLAIM_DELEGATE_CUR = 2, CLAIM_DELEGATE_PREV = 3, CLAIM_FH = 4, CLAIM_DELEG_PREV_FH
阅读全文
posted @ 2025-08-07 22:16
苏格拉底的落泪
阅读(12)
推荐(0)
摘要:
struct fuse_lowlevel_ops解析-① void (*setattr)( fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set, struct fuse_file_info *fi ); setattr 的 to
阅读全文
posted @ 2025-08-06 20:54
苏格拉底的落泪
阅读(26)
推荐(0)
摘要:
folly::atomic_shared_ptr folly::atomic_shared_ptr<T> 是 Facebook 的 Folly 库提供的一个 线程安全的 std::shared_ptr 原子封装器。它弥补了标准 C++ 中 std::shared_ptr 不能直接进行原子读写的缺陷(
阅读全文
posted @ 2025-07-28 11:16
苏格拉底的落泪
阅读(44)
推荐(0)
摘要:
folly::partial #include <folly/Functional.h> #include <iostream> void print(int a, int b, int c) { std::cout << a << ", " << b << ", " << c << std::en
阅读全文
posted @ 2025-07-25 09:39
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
RDMA基础 参考资料 1. RDMA基本元素
阅读全文
posted @ 2025-07-16 15:48
苏格拉底的落泪
阅读(12)
推荐(0)
摘要:
函数posix_memalign 函数posix_memalign原型: #include <stdlib.h> int posix_memalign(void **memptr, size_t alignment, size_t size); 参数说明 memptr: 双重指针,用于存储分配的内存
阅读全文
posted @ 2025-07-16 10:20
苏格拉底的落泪
阅读(176)
推荐(0)
摘要:
match #[derive(Debug, Clone)] struct User { name: String, is_admin: bool, active: bool, } #[derive(Debug)] struct Request { action: String, require_ad
阅读全文
posted @ 2025-07-08 16:21
苏格拉底的落泪
阅读(8)
推荐(0)
摘要:
枚举 Option<T> 概览 enum Option<T> { Some(T), None, } Some(T):表示有值。 None:表示无值(空值、未定义、找不到等)。 fn find_even(numbers: &[i32]) -> Option<i32> { for &n in numbe
阅读全文
posted @ 2025-07-05 17:38
苏格拉底的落泪
阅读(5)
推荐(0)
摘要:
trait trait 可以类比其他语言中的 接口(interface) 或 抽象类。它定义了一组方法签名,但不实现具体逻辑,具体逻辑由实现该 trait 的类型提供。 trait TraitName { fn method(&self); } 然后用 impl 为类型实现这个 trait: str
阅读全文
posted @ 2025-07-05 16:36
苏格拉底的落泪
阅读(12)
推荐(0)
摘要:
生命周期 当函数签名中没有显式生命周期参数时,Rust 会根据以下三条规则自动推断: 1. 每个引用参数都有自己的生命周期参数。 例如,函数有两个引用参数,Rust 会假设它们有不同的生命周期: fn foo(x: &i32, y: &i32) -> i32 { ... } // 自动推断为: fn
阅读全文
posted @ 2025-07-05 14:40
苏格拉底的落泪
阅读(24)
推荐(0)
摘要:
数组 1. 显示初始化 let a: [i32; 3] = [1, 2, 3]; // 类型:[i32; 3] [i32; 3] 表示:长度为 3 的 i32 数组。 元素数量固定,不能动态改变。 2. 使用重复值初始化 let b = [0; 5]; // 等价于 [0, 0, 0, 0, 0]
阅读全文
posted @ 2025-07-05 14:06
苏格拉底的落泪
阅读(19)
推荐(0)
摘要:
元组结构体 // 普通结构体,字段有名字 struct Person { name: String, age: u32, } // 元组结构体,字段按位置访问 struct Color(u8, u8, u8); // 元组结构体(单字段),用于封装某个类型 struct Wrapper(Vec<i3
阅读全文
posted @ 2025-07-04 16:32
苏格拉底的落泪
阅读(19)
推荐(0)
摘要:
结构体 为什么会有多个 impl Engine? 组织代码:把一部分方法放一个 impl,另一部分放另一个 impl,比如基础方法和扩展方法分开写。 实现不同 trait:通常用 impl Engine 实现类型自身的方法,再用 impl Trait for Engine 实现某个 trait。 分
阅读全文
posted @ 2025-07-04 14:51
苏格拉底的落泪
阅读(7)
推荐(0)
摘要:
pub mod user { // 结构体是 pub 的 pub struct User { name: String, // 字段默认是私有的 } impl User { pub fn new(name: &str) -> Self { User { name: name.to_string(),
阅读全文
posted @ 2025-07-04 14:49
苏格拉底的落泪
阅读(11)
推荐(0)
摘要:
Box use std::ptr; struct MyStruct { value: i32, } impl MyStruct { fn new(val: i32) -> Self { Self { value: val } } fn print(&self) { println!("MyStruc
阅读全文
posted @ 2025-07-04 14:20
苏格拉底的落泪
阅读(8)
推荐(0)
摘要:
rdma命令 列出本机的 RDMA(IB 或 RoCE)设备信息 ibv_devinfo 输出: [root@openeuler ~]# ibv_devinfo hca_id: rxe0 transport: InfiniBand (0) fw_ver: 0.0.0 node_guid: 020c:
阅读全文
posted @ 2025-06-20 15:43
苏格拉底的落泪
阅读(60)
推荐(0)
摘要:
cmake -E 命令 功能说明 cmake -E make_directory dir 创建目录(跨平台的 mkdir) cmake -E copy file dest 拷贝文件 cmake -E copy_directory src dest 拷贝整个目录 cmake -E remove fil
阅读全文
posted @ 2025-06-10 21:31
苏格拉底的落泪
阅读(17)
推荐(0)
摘要:
参考资料 1. cephfs如何配置多主(多活) mds
阅读全文
posted @ 2025-05-23 09:47
苏格拉底的落泪
阅读(17)
推荐(0)
摘要:
成员函数指针 在 C++ 中,类成员指针(pointer-to-member)是指向类的成员(可以是数据成员或成员函数)的指针。它和普通指针不一样,必须通过对象或者对象指针来访问。 数据成员指针声明方式: 类型 类名::*指针名; 示例 #include <iostream> struct MyCl
阅读全文
posted @ 2025-05-22 14:07
苏格拉底的落泪
阅读(14)
推荐(0)
摘要:
centos7进入终端显示-bash-4.2 处理 解决方法: cp /etc/skel/.bashrc /root/ cp /etc/skel/.bash_profile /root/ 参考资料 1. Centos7 进入终端显示-bash-4.2 处理
阅读全文
posted @ 2025-05-14 21:43
苏格拉底的落泪
阅读(100)
推荐(0)
摘要:
DeepSeek 3FS集群部署 dnf install rdma-core-devel dnf install gperftools-devel dnf install python3-devel cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebI
阅读全文
posted @ 2025-05-07 14:12
苏格拉底的落泪
阅读(89)
推荐(0)