自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小坤的博客

专注 C++、Linux 后端,打造通俗易懂的技术分享。

  • 博客(43)
  • 收藏
  • 关注

原创 一个 C++ 老兵:刷知乎刷到技术焦虑

一位C++开发老兵分享了对技术焦虑的思考:刷知乎看到各种C++新特性时感到陌生与焦虑,但意识到实际工作中更需解决祖传代码问题。他认为老兵的价值在于经验直觉、填坑能力和架构预见性,而非追逐最新技术。建议以平和心态看待技术更新,将其视为提升效率的工具而非负担,强调能稳定运行的代码才是好代码。文章以幽默口吻为同行提供"心理按摩",鼓励大家专注解决实际问题而非盲目攀比新技术。

2025-12-23 13:06:40 446

原创 为什么在 C++ 里,连打印日志都不让人安心

《从一行崩溃的日志看C++的类型安全困境》摘要:文章通过一次线上事故案例,揭示了日志打印中隐藏的类型安全问题。作者分析了printf和iostream两种常见日志方式的缺陷:前者存在运行时风险,后者牺牲了表达效率。指出现代软件开发需要将日志纳入类型系统保护范围,C++20的std::format和第三方库fmt提供了解决方案。文章核心观点是:类型安全不应依赖程序员的记忆力,而应通过语言机制保障,这是提升系统稳定性的关键。

2025-12-21 10:00:27 649

原创 从「比特翻转」到「劣根性」?

周日下午,我把小孩送去书法班之后,在商场的瑞幸咖啡店里坐着,看一些文章和博客。阮一峰的周刊,是每周五发布的。每次我看最新一期周刊时,还喜欢顺带看一下往年回顾,也就是往年同一时间的周刊,一般放在周末看,因为时间更充裕点。在阅读「科技爱好者周刊(第 376 期):太空数据中心的争议」的时候,看到了「比特翻转」这个词。

2025-12-19 10:54:20 695

原创 10年C++经验不敢说精通,C++到底该怎么学?

C++ 原理?是什么?包括哪些内容呢?我列出了 7 大类,带着这些问题,我们一起探索 C++ 有哪些底层原理需要掌握。

2025-09-01 15:47:05 987 2

原创 别再迷路了!带你拆解 Libevent 源码包,看懂源码结构

本文对Libevent-2.1.12稳定版源码进行了系统性拆解。重点分析了源码目录结构,包括: 35个.c文件、23个.h文件、8个文件夹、28个构建配置文件,理解这些文件的结构和功能定位是深入阅读源码的基础。

2025-08-21 15:43:54 1131

原创 保姆级教程:手把手带你安装 RabbitMQ

本文提供了一份详细的RabbitMQ安装与配置指南,适用于Linux环境(如CentOS/RHEL)。从​​软件包下载​​、​​Erlang环境安装​​,到​​RabbitMQ服务部署​​,逐步讲解如何通过RPM包和Systemd管理服务。

2025-04-29 17:34:23 4418 2

原创 元宝:AI时代的第一个微信好友,能干活还能唠嗑

腾讯元宝,微信AI好友正式上线。你可以给元宝发送文字、语音、图片、网页或者文件,TA都可以帮你分析的头头是道。如果你跟TA说了悄悄话,TA也不会偷偷告述别人。

2025-04-22 21:19:20 706

原创 Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战

Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战

2025-04-09 15:21:34 1299

原创 提升 C++ std::string 操作效率:善用 pop_back()

pop_back() 函数是用于删除 std::string 对象的最后一个字符,实现很高效,本质上就是把要删除的最后一个字符置为null结束符,也就是置为: \0。

2024-10-15 16:05:33 1763

原创 提高 C++ 字符串性能:使用 reserve 方法预分配内存

reserve 方法是 std::string 类提供的一种功能,用于预分配内存。通过调用 reserve(size_t n),我们可以告诉字符串对象预留至少 n 个字符的空间,从而减少了性能开销。

2024-10-11 09:49:49 1662

原创 分析一个简单的汇编代码

分析一个C语言简单的汇编代码,涉及到汇编、寄存器等

2021-12-19 13:35:36 4061 1

原创 C++ 中 std::string 底层是如何使用内存的

本文深入解析了std::string的内存分配机制,重点分析了小字符串优化(SSO)的实现原理。通过拆解32字节的std::string结构,详细解释了其内部缓冲区、长度信息和容量存储的布局方式。文章指出SSO并非固定15字节,而是实现相关的,并列举了明确触发堆分配的三种情况。最后揭示了std::string从用户态内存池而非直接操作系统获取内存的完整路径,强调理解这一内存层级关系对性能优化和内存分析的重要性。文章还提供了关于reserve使用、字符串创建频率等实用建议。

2025-12-30 15:14:40 1007

原创 一个 C++ 类对象有多大?内存布局是怎样的?(上部)

从「一个C++类对象有多大」开始.........

2025-11-27 19:29:10 781

原创 Libevent 时间线记录:版本、作者、架构演变解析

我对开源项目 Libevent 比较感兴趣,我的项目中也使用到了 Libevent。一直以来,我都想多了解了解它。最近抽出来一些时间,在网上查找了大量的资料,做了梳理,肯定有不完善的地方,权当一个开始吧。

2025-08-04 12:17:14 1266

原创 C++ std::string 的 Copy-On-Write 技术在较高版本已被移除

C++ std::string 的 Copy-On-Write 技术在较高版本编译器已经被移除了,我们需要更新技术知识。

2025-07-29 11:56:18 1164

原创 在C++中,如果你使用auto做类型推导,注意“陷阱”:引用和const的丢失​

auto 推导默认丢弃引用和顶层 const,const auto& 实现零拷贝只读访问,auto 创建可修改的独立副本。性能关键场景严格区分两者使用。

2025-07-09 17:54:28 959

原创 在C++中,如果父类的析构函数是虚函数,那么子类的析构函数需要加virtual关键字吗?如果加了virtual关键字,是否需要再加 override关键字?

在C++中,父类的析构函数是虚函数,那子类的析构函数需要设置为虚函数吗,也就是说是否需要加virtual关键字?如果加了virtual关键字,是否需要加 override关键字?

2025-07-05 17:00:36 620

原创 【力扣题解】【56. 合并区间】可以合并,但不要立即存入结果

主要是了解,合并得到新区间之后,不要理解存入结果集之中,因为后续区间可能也可以合并进来。当无法合并时,才将之前的结果存入结果集。另外,除了常见的区间包含,还要考虑到一些不容易想到的区间包含情况。[1, 3] 和 [2, 4][1, 4] 和 [2, 3][1, 5] 和 [1, 4][1, 5] 和 [0, 5]public:// 边界校验// 先排序,排序之后,循环一遍就可以合并啦// 排序的时候,根据每个区间的开始点start来排序。

2025-02-21 15:38:07 318

原创 【力扣题解】【53. 最大子数组和】通过很好理解的滑动窗口来解决这道题

一年半以前,我居然以为这道题没办法使用滑动窗口来解决。现在也搞不明白当时为什么会说找不到解。所以后面采用了动态规划方法。这是当时的注释。

2025-02-16 18:38:45 336

原创 【力扣题解】【76. 最小覆盖子串】容易理解版

这是时隔1年4个月之后,再次写的题解,比第一次要清晰很多。我刚开始,就是用方法一做的,提交之后报超出内存限制;对方法一进行优化,得到方法二,提交之后就AC了。这是第二次做这道题,第一次的题解,是写给自己看的,有很多思考的过程,作为题解是不清晰的。这一次的题解,会更好理解。首先,我新增了两个成员函数,相当于把功能拆分开了,这样更容易我们去理解;其次,由于使用了其他函数,于是我把过程之中用到的变量,提到了类中,做成了成员变量,这样我就方便在其他成员函数之中使用。。

2025-02-13 11:09:53 374

原创 C++标准委员会网站长什么样子? 怎么看 C++11 标准的正式发布日期?

C++标准委员会官方网站。C++11的正式发布日期。

2025-02-12 15:48:22 688 1

原创 如何让力扣刷题这件事儿持续下去

对于力扣刷题,今天是有一些反思的。所谓做事拖延,不是拖延着做事,而是拖延着不开始做事。于是我细拆分出6个步骤,让刷题可以坚持下去。

2025-02-04 19:13:43 338

原创 我的C++开发环境:C++标准C++ 17

我个人的开发环境

2025-01-17 12:31:58 654

原创 rust语言入门初学者需要使用到的命令总结一下

rust语言入门初学者需要使用到的命令总结一下

2024-12-08 16:22:52 191

原创 说Redis是单线程其实不严谨以及一些思考

redis的一些思考

2022-07-05 23:26:41 578

原创 使用内联函数提升性能

C++的内联机制

2022-01-20 12:25:54 823

原创 初步研究一下linux系统调用

初步研究一下linux系统调用的机制

2021-12-18 18:46:24 732

原创 利用顺序存储链表节点提高性能

利用顺序存储链表节点提高性能,数组和链接的结合体。

2021-12-08 22:38:57 556

原创 读《程序是怎样跑起来的》

CPU的内部结构时钟会发出信号。比如:时钟信号是1GHz,代表时钟每秒产生10亿次信号。CPU根据时钟信号来执行指令,时钟每发出一次信号,CPU就执行一次指令。时钟信号的频率越高,CPU每秒运行的指令就越多。控制器,从内存中读取指令和数据到寄存器运算器,根据指令,对数据进行运算。控制器,根据运算结果控制计算机,比如将结果显示在屏幕上。机器语言CPU能直接识别和执行的只有机器语言,本质就是0和1。机器语言级别的程序是通过寄存器来处理的。汇编语言的助记符函数执行,为什么不是跳转指令,而是

2021-12-01 16:16:39 327

原创 libevent+多线程+pipe的死锁问题

libevent+多线程+pipe的死锁问题每个线程都是一个libevent实例。线程间通信使用的是管道机制,在写端调用write()时,直接写入8个字节的消息指针。读端调用read()时,每次读取8个字节。现有A、B、C三个线程,C线程会生产消息由A线程处理,A、B线程之间会互发消息各自进行处理。那么在业务高峰期处理大量数据时,可能会出现死锁问题。具体表现为:A线程当前正在处理一个消息,然后生成一个新的消息写入B线程,如果此时B线程的管道缓冲区满了,那么A线程调用write()写入B线程时,就会阻塞

2021-11-17 00:18:13 951

原创 简单研究一下c++ vector是否会栈溢出

简单研究一下c++ vector是否会栈溢出使用char数组复现问题我在linux环境下,简单复现了一下栈溢出的情况。首先使用ulimit -a | grep stack得到当前shell下应用程序的栈大小是8192K,也就是8M。在main函数中定义了一个9M空间的char数组。然后编译运行,预期运行时提示段错误。[root@wxk test]# ulimit -a | grep stackstack size (kbytes, -s) 8192[root@wxk te

2021-06-16 12:19:52 2377 1

原创 使用openssl AES ECB PKCS5Padding加解密遇到的问题(附源码示例)

使用openssl AES ECB PKCS5Padding加解密遇到的问题。

2021-01-13 20:29:51 4052 4

翻译 RabbitMQ的告警之二:可用磁盘空间告警

RabbitMQ的磁盘告警,以及可用磁盘空间限制值配置详解。

2021-01-12 21:27:48 2229

翻译 RabbitMQ的告警之一:内存告警

RabbitMQ的内存告警,以及内存阈值配置详解。

2021-01-11 21:47:24 5257

原创 使用curl命令下载文件,可能需要重定向

使用curl命令下载文件,若原链接需要跟随重定向,别忘了设置-L选项。

2021-01-11 17:55:25 3650

翻译 RabbitMQ的告警

RabbitMQ的告警的触发条件以及影响。

2021-01-10 18:35:43 2249

翻译 RabbitMQ的流量控制策略

解释了在计算机网络中流量控制的基本概念,以及RabbitMQ的4种流量控制策略。

2021-01-10 13:42:09 1466

原创 RabbitMQ流控测试,客户端代码(ack)

#include "amqp_tcp_socket.h"#include "amqp.h"#include "amqp_framing.h"#include <unistd.h>#include <string.h>#inc

2018-06-08 10:08:40 921

原创 RabbitMQ生产者被流控,消费者速度为何降低

RabbitMQ生产者被流控,消费者速度为何降低生产环境中,本着尽可能接收下更多数据的原则,所以不对生产者速度进行控制(实际上也不能去控制生产者速度,因为这会导致更多的消息堆在内存中,从而可能导致进程崩溃)。当生产者速度过高导致流控时,RabbitMQ将阻塞生产者连接。主观上消费者速度应该至少保持不变,但实际观察发现,生产者和消费者的速度均受影响,且不平稳。查阅了相关资料,很少有关于标...

2018-06-08 00:54:08 9644 9

原创 RabbitMQ流控实测

RabbitMQ流控实测在虚拟机上安装并启动RabbitMQ服务端,使用C++客户端程序按设置速度生产消息,实测RabbitMQ流控场景。Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键相关知识回顾网上搜索了相关信息,了解到RabbitMQ有...

2018-06-06 13:51:57 4012

空空如也

空空如也

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

TA关注的人

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