Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start Create a new post 1$ hexo new "My New Post" More info: Writing Run server 1$ hexo server More info: Server Generate static files 1$ hexo generate More info: Generating Deploy to remote sites 1$ hexo deploy More info: Deployment
C++基础知识
一、编译内存相关 1. C++程序编译步骤 编译程序分为四个步骤:处理、编译、汇编和链接。每个步骤都会生成对应的文件 graph LR A[test.c] --> | 预处理 -E | B[test.i] B --> | 编译 -S | C[test.s] C --> | 汇编 -c | D[test.o] D --> | 链接 | E[可执行二进制文件] 1234567891011121314# 1. 预处理 → main.igcc -E main.c -o main.i# 2. 编译成汇编 → main.sgcc -S main.c -o main.s# 3. 编译+汇编成目标文件 → main.ogcc -c main.c -o main.o# 4. 链接(默认完整流程)→ a.outgcc main.c# 或指定输出名gcc main.c -o myprogram 1.1 常用相关选项(辅助调试与分析) 选项 作用 典型使用场景 -o <file> 指定输出文件名 所有阶段通用,如 gcc -c main.c...
C++考试大纲
第一部分:C++语言核心与基础 1. C++程序基本框架与结构 基本框架 1234567#include <iostream> // 预处理指令int main(int argc, char* argv[]) { // 程序入口点 // 你的代码 std::cout << "Hello, World!" << std::endl; return 0; // 返回值给操作系统} 原理深度剖析: #include:在编译的预处理阶段,预处理器会找到指定的头文件,并将其内容原封不动地复制到#include指令所在的位置。这本质是一种文本替换。 main函数:是操作系统加载程序后执行的起点。argc和argv由操作系统填充,argc是参数个数,argv是一个指向字符串指针的数组,存储着具体的参数。返回值return 0;被传递给操作系统,表示程序正常退出(非0值通常表示错误)。 模块化与头文件保护 模块化:将声明(.h/.hpp)与定义(.cpp)分离。.cpp文件是独...
排序算法
排序算法 [!abstract] 排序算法全景 算法 平均时间 空间 稳定性 冒泡 O(n2)O(n^2)O(n2) O(1)O(1)O(1) ✅ 插入 O(n2)O(n^2)O(n2) O(1)O(1)O(1) ✅ 归并 O(nlogn)O(n\log n)O(nlogn) O(n)O(n)O(n) ✅ 快速 O(nlogn)O(n\log n)O(nlogn) O(logn)O(\log n)O(logn) ❌ 堆排 O(nlogn)O(n\log n)O(nlogn) O(1)O(1)O(1) ❌ code: sorting_algorithm 1. 问题分析 1.1 问题定义 问题:给定一个包含n个整数的无序数组,将其按升序排列。 示例: 输入:[64, 34, 25, 12, 22, 11, 90] 输出:[11, 12, 22, 25, 34, 64, 90] 1.2 排序算法分类 排序算法可以根据不同的特性进行分类: 按时间复杂度分类: 简单排序:O(n²) - 冒泡排序、插入排序 高效排序:O(n lo...
动态规划算法
动态规划 [!abstract] 核心思想 动态规划通过存储中间结果避免重复计算,将指数级复杂度(O(2n)O(2^n)O(2n))降至线性(O(n)O(n)O(n))。当问题同时满足「最优子结构」和「重叠子问题」时,DP 是最优解。 code: dynamic_programming 1. 问题分析 1.1 问题定义 问题:假设要爬n阶楼梯,每次可以爬1阶或2阶,问有多少种不同的方法可以爬到楼顶。 示例: n=1:只有1种方法(1) n=2:有2种方法(1+1, 2) n=3:有3种方法(1+1+1, 1+2, 2+1) 1.2 数学递推关系 1dp[n] = dp[n-1] + dp[n-2] 解释:到达第n阶楼梯,可以从第n-1阶爬1阶上来,或者从第n-2阶爬2阶上来。 2. 各算法实现详细解析 2.1 暴力递归算法 (ViolentRecursion) 1234567int32_t ViolentRecursion::ClimbStairs(uint32_t stairFloors){ if (stairFloors <= 2) ...
缓冲系统中内存序(memory_order)的使用及其作用
缓冲系统中内存序(memory_order)的使用及其作用 一、C++ 六种内存顺序模式 内存顺序模式 简要介绍 适用场景 memory_order_relaxed 仅保证原子操作的原子性,不提供同步和顺序约束。性能最高。 计数器自增/自减(如统计)、不需要同步的状态标志。 memory_order_consume 数据依赖顺序:当前线程中依赖此原子变量的操作不会被重排到该操作之前。 读取指针型数据(如链表节点),后续操作依赖该指针(场景罕见,通常用 acquire 替代)。 memory_order_acquire 获取操作:当前线程中所有后续读写不会被重排到该操作之前。 读取共享数据后需确保看到其他线程的修改(常与 release 配对)。 memory_order_release 释放操作:当前线程中所有先前读写不会被重排到该操作之后。 修改共享数据后需确保对其他线程可见(常与 acquire 配对)。 memory_order_acq_rel 获取-释放操作:同时具有 acquire 和 release 的语义。 读-修改-写操作(如 f...
高性能日志系统实现
实现代码:TinyOperateSystem:C++系统 - AtomGit | GitCode 阶段1:核心模块开发 阶段2:I/O 系统开发 阶段3:前端接口开 阶段4:支持系统开发 阶段5:集成与测试 阶段6:部署 关键时序图 sequenceDiagram par 并发处理 LogStream ->> LogStream: LogStream(LogLevel level, const char* file, int line) activate LogStream LogStream ->> FixedBuffer: Append(const char* buf, size_t len) LogStream ->> LogFormat: Default() activate LogFormat note over LogFormat: 增加 时间戳/LogLevel/文件名/线程号/信息 LogFormat ->> LogFormat: AddFormatter(std::shared_ptr<LogForm...
高性能日志系统设计
一、架构优化概览 graph TD A[前端API] --> B[线程本地缓冲] B --> C[无锁环形队列] C --> D[双缓冲交换区] D --> E[后端处理器] E --> F[文件输出] E --> G[控制台输出] E --> H[网络输出] I[崩溃处理器] -->|紧急刷新| D J[配置管理] -->|动态调整| A J -->|输出控制| E K[日志滚动] -->|文件管理| F L[性能监控] -->|实时反馈| C L -->|资源调控| E 二、核心组件设计 1. 分层架构优化 graph LR A[前端接口层] -->|零拷贝写入| B[缓冲管理层] B -->|批量提交| C[核心处理层] C -->|异步输出| D[输出层] E[支持系统] -->|配置注入| B E -->|崩溃处理...
高性能日志系统架构设计与技术选型
一、核心架构设计 1. 异步日志模型 1.1 生产者-消费者模式 1主线程 → 内存缓冲区 → 后台线程 → 磁盘 优势:主线程写入耗时<1μs,避免I/O阻塞 性能:实测吞吐125万条/秒(单线程) 1.2 无锁队列实现 核心技术:std::atomic + CAS操作 方案:Ring-Log双向循环链表 效果:线程竞争减少70% 2. 多级缓冲策略 2.1 双缓冲技术 graph LR A[前端缓冲] -->|写入| B[活跃区] C[后端缓冲] -->|刷盘| D[磁盘] B -->|交换| C 交换时机:缓冲区满或定时触发 代表方案:WLog 2.2 动态缓冲扩展 内存管理:预分配节点池 + 按需扩容 保护机制:内存上限约束(防OOM) 3. 模块化架构 graph TD F[前端] -->|格式化日志| B[缓冲层] B -->|批量处理| E[后端引擎] E --> F1[文件] E --> F2[网络] E --> F3[控制台] 前端:流式API(LOG(INFO) <...
个人博客进阶设置
个人博客进阶设置 阿里云 + Ubuntu 24.04 + Nginx + https + Hexo + Butterfly + local CDN 一、环境准备 1. 阿里云安全组端口配置 关闭4000端口 — hexo本地服务端口 开放443端口 — https 2. 申请域名 作者是在阿里云中租赁的域名 域名注册_域名查询_域名申请_域名购买_域名续费_国际域名-万网-阿里云品牌 3. 申请证书 作者是在阿里云中申请的证书 数字证书管理服务管理控制台 4. 下载证书 1mkdir /etc/nginx/cear 在官网下载证书后放在/etc/nginx/cear路径下 5. 备案 网站备案_ICP备案_备案迁移_App备案_小程序备案_备案-阿里云 二、Nginx配置 1. 新建Nginx配置 1touch /etc/nginx/sites-available/<domain_name> 2. 配置<domain_name> 1234567891011121314151617181920212223242526...