- 博客(30)
- 收藏
- 关注

原创 Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
2025-04-09 15:21:34
1026

原创 提升 C++ std::string 操作效率:善用 pop_back()
pop_back() 函数是用于删除 std::string 对象的最后一个字符,实现很高效,本质上就是把要删除的最后一个字符置为null结束符,也就是置为: \0。
2024-10-15 16:05:33
1249
原创 【力扣题解】【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
265
原创 【力扣题解】【53. 最大子数组和】通过很好理解的滑动窗口来解决这道题
一年半以前,我居然以为这道题没办法使用滑动窗口来解决。现在也搞不明白当时为什么会说找不到解。所以后面采用了动态规划方法。这是当时的注释。
2025-02-16 18:38:45
246
原创 【力扣题解】【76. 最小覆盖子串】容易理解版
这是时隔1年4个月之后,再次写的题解,比第一次要清晰很多。我刚开始,就是用方法一做的,提交之后报超出内存限制;对方法一进行优化,得到方法二,提交之后就AC了。这是第二次做这道题,第一次的题解,是写给自己看的,有很多思考的过程,作为题解是不清晰的。这一次的题解,会更好理解。首先,我新增了两个成员函数,相当于把功能拆分开了,这样更容易我们去理解;其次,由于使用了其他函数,于是我把过程之中用到的变量,提到了类中,做成了成员变量,这样我就方便在其他成员函数之中使用。。
2025-02-13 11:09:53
307
原创 如何让力扣刷题这件事儿持续下去
对于力扣刷题,今天是有一些反思的。所谓做事拖延,不是拖延着做事,而是拖延着不开始做事。于是我细拆分出6个步骤,让刷题可以坚持下去。
2025-02-04 19:13:43
229
原创 提高 C++ 字符串性能:使用 reserve 方法预分配内存
reserve 方法是 std::string 类提供的一种功能,用于预分配内存。通过调用 reserve(size_t n),我们可以告诉字符串对象预留至少 n 个字符的空间,从而减少了性能开销。
2024-10-11 09:49:49
926
原创 读《程序是怎样跑起来的》
CPU的内部结构时钟会发出信号。比如:时钟信号是1GHz,代表时钟每秒产生10亿次信号。CPU根据时钟信号来执行指令,时钟每发出一次信号,CPU就执行一次指令。时钟信号的频率越高,CPU每秒运行的指令就越多。控制器,从内存中读取指令和数据到寄存器运算器,根据指令,对数据进行运算。控制器,根据运算结果控制计算机,比如将结果显示在屏幕上。机器语言CPU能直接识别和执行的只有机器语言,本质就是0和1。机器语言级别的程序是通过寄存器来处理的。汇编语言的助记符函数执行,为什么不是跳转指令,而是
2021-12-01 16:16:39
282
原创 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
870
原创 简单研究一下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
2258
1
原创 使用openssl AES ECB PKCS5Padding加解密遇到的问题(附源码示例)
使用openssl AES ECB PKCS5Padding加解密遇到的问题。
2021-01-13 20:29:51
3865
4
原创 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
872
原创 RabbitMQ生产者被流控,消费者速度为何降低
RabbitMQ生产者被流控,消费者速度为何降低生产环境中,本着尽可能接收下更多数据的原则,所以不对生产者速度进行控制(实际上也不能去控制生产者速度,因为这会导致更多的消息堆在内存中,从而可能导致进程崩溃)。当生产者速度过高导致流控时,RabbitMQ将阻塞生产者连接。主观上消费者速度应该至少保持不变,但实际观察发现,生产者和消费者的速度均受影响,且不平稳。查阅了相关资料,很少有关于标...
2018-06-08 00:54:08
9491
9
原创 RabbitMQ流控实测
RabbitMQ流控实测在虚拟机上安装并启动RabbitMQ服务端,使用C++客户端程序按设置速度生产消息,实测RabbitMQ流控场景。Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键相关知识回顾网上搜索了相关信息,了解到RabbitMQ有...
2018-06-06 13:51:57
3897
原创 SSH双机信任和免密码初探
在平常开发过程中,少不了的要使用ssh/scp等命令,在执行命令时经常发现会打印一写提示信息或者是需要进行交互的信息,但是一直以来都没有认真去了解过其具体过程,只止步于会用。今夜抽得一点闲暇时间,了解一下。SSH双机信任,顾名思义,通过SSH给主备双机建立互相信任的关系,信任关系一旦建立,使用ssh登录,scp拷贝等都不需要再输入密码,即实现免密,一旦实现免密,就可以很方便的通过ssh将命令发送到...
2018-06-02 11:19:44
383
原创 C++中public继承反思
在读11.6.5 iostream在设计方面的缺点章节时,作者陈硕提到了iostream在面向对象方面的设计缺陷:面向对象的public继承未满足继承非为复用,乃为被复用的Liskov替换原则。书中提到iostream的继承体系多次违反了Liskov替换原则,这些地方的继承是为了复用基类的代码,而Liskov原则提到:继承并不是为了复用代码。由此我想到我可能在最近的项目中做了一些XB事情。在最近的...
2018-06-02 11:18:07
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人