自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

咖啡不懂夜的黑

向往技术,尊重学术!

  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++内存序

std::atomic 的内存序(Memory Order)相关操作主要分为加载(load)、**存储(store)和读-修改-写(read-modify-write)**三类。内存序(Memory Order)是 C++11 引入的概念,用于控制多线程环境下对共享变量的读写操作顺序。data.store() 通常用于发布-订阅或标志位设置场景,常配合 memory_order_release 使用。3.缓存同步延迟 - 不同核心的缓存同步时机不确定。3.读-修改-写操作 (RMW)

2026-04-09 14:08:01 217

原创 C++数据结构及其底层原理

C++数据结构及底层原理。

2026-04-09 14:07:39 7

原创 浅析设计模式-23种设计模式剖析

23中设计模式讲解https://blog.csdn.net/A1342772/article/details/91349142代码:https://github.com/Waleon/DesignPatternshttps://github.com/librakyle/makefile

2026-04-09 14:07:15 357

原创 昇腾CANN架构使用心得

在昇腾CANN架构中,C语言API库(如AscendCL)调用昇腾CL设备端库的方式,取决于代码的运行形态(Device模式/Host模式),核心是本地直接调用或基于PCIe/网络的进程间通信(IPC),而非传统意义上的RPC协议。通过PCIe链路(主机与昇腾芯片通过PCIe直连,如服务器内插昇腾加速卡)或以太网(主机与远程昇腾设备通过网络连接),将请求发送到远程设备;这里的通信协议是CANN自定义的高效二进制协议,而非通用RPC(如gRPC),针对AI任务的张量数据传输做了优化(如数据压缩、批量传输);

2026-04-09 14:06:55 142

原创 Rule of Three/Five/Zero

Rule of Three/Five/Zero是C++中关于资源管理的核心准则,用于指导何时需要自定义拷贝构造函数、拷贝赋值运算符和析构函数(Rule of Three),何时需要扩展为移动构造函数和移动赋值运算符(Rule of Five),以及何时可以依赖编译器生成的默认实现(Rule of Zero)。)或标准库容器管理资源,避免手动实现任何特殊成员函数。编译器生成的默认行为即可满足需求,代码更安全简洁。遵循这些规则能有效避免资源泄漏、悬垂指针等问题,同时减少冗余代码。优先使用智能指针(如。

2026-04-09 10:39:12 211

原创 零拷贝技术原理

零拷贝(Zero-Copy)是一种操作系统优化技术,通过减少数据在内存中的重复拷贝和上下文切换,提高 I/O 性能。│ 类型 │ 描述 │ 特点 │。│ MAP_ANONYMOUS │ 匿名映射 │ 无文件关联,类似 malloc │。│ MAP_PRIVATE │ 私有映射 │ 写时复制,不影响原文件 │。│ MAP_SHARED │ 共享映射 │ 对映射区域的修改反映到文件 │。// 3. 映射文件到内存。

2026-04-07 13:39:37 216

原创 无锁队列(Lock-Free Queue)

│ memory_order_relaxed │ 无同步,仅原子性 │。│ memory_order_acquire │ 读操作,防止后续操作重排序到前面 │。│ memory_order_release │ 写操作,防止前面操作重排序到后面 │。│ 双指针 │ head 和 tail 指针分别指向队列的两端 │。│ 两阶段操作 │ 先通过 CAS 链接节点,再移动指针 │。4.1.读取 head、tail 和 head->next。

2026-04-07 10:37:09 338

原创 journalctl命令详解

journalctl -f -u nginx # 监控 nginx 服务日志。更强大,支持结构化存储、高级过滤和实时监控。以下是 journalctl。收集的系统日志(包括内核日志、服务日志、应用程序日志等)。dmesg # 直接查看内核日志。日志管理工具,用于查询和显示由。

2025-07-02 16:03:18 1472

原创 C++的前世今生-C++11

默认函数形式生成条件(未显式定义时)默认构造函数无任何构造函数析构函数总是生成拷贝构造函数无拷贝构造拷贝赋值运算符无拷贝赋值移动构造函数 (C++11)无拷贝/移动构造、拷贝赋值、析构移动赋值运算符 (C++11)无拷贝/移动赋值、拷贝构造、析构。

2025-06-23 22:22:01 1262

原创 C++程序的布局和内存分布

匿名映射是进程动态分配的内存,不与任何文件或设备关联,仅存在于 RAM 中。

2025-06-19 10:46:35 1277

原创 Valgrind实战-本地编译valgrind部署到生产环境

下载至编译服务器任意目录,笔者下载了最新的valgrind-3.25.1.tar.bz2。将valgrind-bin.tar.gz拷贝到生产环境任意目录。解压并配置环境变量路径。

2025-06-19 10:45:04 422

原创 TCP-滑动窗口

TCP滑动窗口术语窗口合拢:窗口左边沿向右边沿靠近窗口张开:窗口右边沿向右移动时将允许发送更多的数据窗口收缩:窗口右边沿向左移动详细解释:窗口合拢发生在数据被发送和确认时窗口张开发生在对端接收进程读取已经确认的数据并释放了TCP的接受缓存窗口收缩的使用场景 结合糊涂窗口综合征窗口的左边沿受对端发送的确认序号的控制,因此不可能向左边移动。如果接收到一个指示窗口左边沿向左移动的ACK,则它被认为是一个重复ACK,并被丢弃如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何

2020-06-03 21:48:21 419

原创 C++类的默认成员函数有几个?

C++类的默认函数在C++中,一个类有八个默认函数:默认构造函数;默认拷贝构造函数;默认析构函数;默认重载赋值运算符函数;默认重载取址运算符函数;默认重载取址运算符const函数;默认移动构造函数(C++11);默认重载移动赋值操作符函数(C++11)。只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个默认拷贝构造函数、一个默认重载赋值操作符函数和一个默认析构函数。这些函数只有在第一次被调用时,才会被编译器创建,当然这几个生

2020-05-30 03:18:35 911

原创 TCP协议

##TCP协议学习总结TCP头部解析: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...

2020-05-27 22:57:05 287

原创 计算每个名字最大可能的“漂亮度”

题目给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。代码:#include <iostream>#include <string>#include <vect...

2020-05-25 00:08:08 237

原创 C++ 虚函数和多态

多态的实现主要分为静态多态和动态多态静态多态主要是重载,在编译的时候就已经确定;动态多态是用虚函数机制实现的,在运行期间动态绑定。举个例子:一个父类类型的指针指向一个子类对象时候,使用父类的指针去调用子类中重写了的父类中的虚函数的时候,会调用子类重写过后的函数,在父类中声明为加了virtual关键字的函数,在子类中重写时候不需要加virtual也是虚函数。虚函数的实现:在有虚函数的类中,类的最开始部分是一个虚函数表的指针,这个指针指向一个虚函数表,表中放了虚函数的地址,实际的虚函数在代码段(.

2020-05-25 00:07:28 258

原创 c++中的四个智能指针

C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用:auto_ptr(c++98的方案,cpp11已经抛弃)  采用所有权模式。 auto_ptr< string> p1 (new string ("I reigned lonely as a cloud.”)); auto_ptr<string> p2; p2 = p1; //auto_ptr不会报

2020-05-25 00:06:50 472

原创 为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数

为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其析构函数如果是虚函数,就会浪费内存。因此C++默认的析构函数不是虚函数,而是只有当需要当作父类时,设置为虚函数。...

2020-05-25 00:06:23 5202 2

原创 c++中四种cast转换

  C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast为什么不使用C的强制转换?C的强制转换表面上看起来功能强大什么都能转,但是转化不够明确,不能进行错误检查,容易出错。1、const_cast  用于将const变量转为非const2、static_cast  用于各种隐式转换,比如非const转const,void*转指针等, static_cast能用于多态向上转化,如果向下转能成功但是不安全,结果未知;

2020-05-24 23:28:02 306

原创 C++和C的区别

设计思想上:C++是面向对象的语言,而C是面向过程的结构化编程语言语法上:C++具有封装、继承和多态三种特性C++相比C,增加多许多类型安全的功能,比如强制类型转换、C++支持范式编程,比如模板类、函数模板等...

2020-05-24 23:24:23 2519

原创 TCP头部解析

TCP头部解析: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Des

2020-05-24 19:20:56 922

原创 static关键字的作用 C++知识点

static关键字的作用全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。局部静态变量在局部变量之前加上关键字sta...

2020-05-24 19:15:58 200

原创 汽水瓶计算 C++实现

题目描述  有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输...

2020-04-27 23:21:19 661

原创 给定一个字符串描述的算术表达式,计算出结果值。

题目描述:给定一个字符串描述的算术表达式,计算出结果值。输入字符串长度不超过100,合法的字符包括”+, -, *, /, (, )”,”0-9”,字符串内容的合法性及表达式语法的合法性由做题者检查。本题目只涉及整型计算。输入描述:输入算术表达式输出描述:计算出结果值示例1输入400+5输出405代码实现:#include <i...

2020-04-26 22:31:44 4298

原创 翻转单词单词顺序 C/C++实现

要求:将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符解法1:#include <string>#include <iostream>using namespace std;void reverse(char *begin, char *en...

2020-04-22 01:45:26 1743

原创 找出字符串中第一个只出现一次的字符 C++实现

题目:找出字符串中第一个只出现一次的字符输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入:asdfasdfo输出o废话不多说,直接上代码:解法1:/*思路:每出现一次,就在对应数组中计数+1*/#include<iostream>#include<string>using nam...

2020-04-21 22:12:48 4841

原创 斐波那契数列 C++实现

斐波那契数列要求:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列定义如下:f(n)={              0                         n=0              1                         n=1f(n−2)+f(n−1)   n>1f(n)=\begin{cases}\>\&gt...

2020-04-15 22:43:51 6073 2

原创 把字符串转换成整数 C++实现

剑指offer面试题50:把字符串转换成整数解题注意点:1、判断标记非法输入,出0到9外其他输入;但是+和-属于合法输入2、判断空指针、空字符串3、考虑溢出(int 范围为0x7FFFFFFF~0x80000000)直接上代码吧:#include <iostream>using namespace std; enum Status{kValid = 0, kInval...

2020-04-13 00:08:17 656

原创 从尾到头打印单链表 C++实现

剑指offer面试题5:从尾到头打印链表题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。解法1:利用栈实现废话不多说,直接上代码:void Solution::printListRevers(ListNode *pHead){ if(!pHead) return; std::stack<ListNode *> s_Nodes; ListNode *...

2020-04-12 15:13:24 566

原创 替字符串中的换空格 C++实现

剑指offer面试题4:替换空格题目:请实现一个函数,把字符串中的空格替换成`%20`。例如,输入 “We are happy.”,则输出“We%20are%20happy.”。时间复杂度为O(n^2)的解法思路:从头到尾扫描字符串,每一次碰到空格字符的时候做替换,即把1个字符替换成3个字符;我们必须要把空格后面所有的字符向后移动两个字节,否则就有两个字符被覆盖了。基于如上思路,代码实现...

2020-04-12 15:12:21 529

原创 有序递增二维数组查找 C++实现

剑指offer面试题3:有序递增二维数组查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果大于要查找的数字,剔除这个数字所在的列;如果数字要小于要查找的数字,剔除这个数字所在行。也就...

2020-04-12 15:09:41 357

原创 赋值运算函数 C++实现

剑指offer面试题之赋值运算函数面试题1: 赋值运算符函数题目: 如下为类型CMyString的申明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char *pData = NULL); CMyString(const CMyString& str); ~CMyString(void); char *m_pDat...

2020-04-12 15:07:28 271

南京邮电大学离散数学课后答案(左孝凌)

南京邮电大学左孝陵版本离散数学课后答案全集。个人文件,请勿恶意转载,发表

2013-12-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除